Claude: changes for issue #65 #66

Merged
Grandiras merged 1 commit from claude/issue-65 into main 2026-07-29 17:32:02 +00:00
Collaborator

Closes #65.

Closes #65.
Say "username" where a member reads it, keep "handle" on the wire
All checks were successful
CI / build (pull_request) Successful in 42s
c587f21077
"Handle" is a word the protocol taught. The field it names is the one
every other site on the internet calls a username, so a first-time
visitor has to learn our vocabulary before the sign-in form makes sense
— and learns nothing they can use once they have. Same split the app
already makes between "Atmosphere" and "AT Protocol", one layer down.

So the copy changes and nothing under it does. `Member.Handle`,
`HandleResolver`, `HandleExamples`, the `handle` form field and query
string, the `#atproto-handle`/`#signup-handle`/`#request-handle` ids and
the SDK's `HandleLabel` parameter all keep the protocol's word: renaming
them would put a second name on the wire and break step with ATProtoNet
for nothing. Translation keys follow the copy (`login.username.hint`,
`admin.members.username`), because a key is read beside the string it
names.

Both locales move together — German gets "Benutzername" — and the admin
notification mail's "Handle:" column becomes "Username:".

`TranslationTests.No_copy_calls_an_account_name_a_handle` fails the
build on \bhandles?\b in any translation in either locale, so the word
cannot creep back in through a new string; the word boundaries are what
keep "unhandled" and German "Behandle" out of it.

Filed upstream as ATProto.NET#80: `LoginForm`'s default label is still
"Handle", which is why Login.razor passes HandleLabel at all.
Author
Collaborator

🤖 Reviewing this PR — follow along in the action run; the reply will link the full session transcript.

📜 Live transcript — updating every ~5 minutes while the task runs.

🤖 Reviewing this PR — follow along in [the action run](https://git.grandiras.net/Grandiras/claude-bot/actions/runs/163); the reply will link the full session transcript. 📜 [Live transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-66/run-163.md) — updating every ~5 minutes while the task runs.
claude-reviewer left a comment

Verdict: approve — no blocking issues found.

Clean, mechanical rename of user-facing "handle" copy to "username" (English) / "Benutzername" (German), matching the new CLAUDE.md rule that this is a copy-only distinction — Member.Handle, CSS class names (.board-user-handle, .handle-ghost, .request-handle), form field ids/names, and the SDK's HandleLabel parameter are correctly left untouched.

Verified:

  • Mailer.cs's Username: replacement keeps the same 11-column alignment as the other fields in that plain-text block.
  • The new No_copy_calls_an_account_name_a_handle regex test (\bhandles?\b) correctly avoids false positives on "handled"/"unhandled"/German "Behandle".
  • No other e2e spec asserts the now-changed literal English/German copy besides the one already updated in i18n.spec.js; other tests referencing "handle" only touch CSS classes, query params, or code identifiers, not rendered copy.
  • No leftover "Handle" strings found in other Razor pages' user-visible text (only class names, doc comments, and code identifiers remain, consistent with the stated scope).

⏱ 0m 56s · 11 turns · tokens: 59.7k in / 3.8k out (+806.1k cache-read)
📜 Full session transcript

✅ **Verdict: approve** — no blocking issues found. Clean, mechanical rename of user-facing "handle" copy to "username" (English) / "Benutzername" (German), matching the new CLAUDE.md rule that this is a copy-only distinction — `Member.Handle`, CSS class names (`.board-user-handle`, `.handle-ghost`, `.request-handle`), form field ids/names, and the SDK's `HandleLabel` parameter are correctly left untouched. Verified: - `Mailer.cs`'s `Username: ` replacement keeps the same 11-column alignment as the other fields in that plain-text block. - The new `No_copy_calls_an_account_name_a_handle` regex test (`\bhandles?\b`) correctly avoids false positives on "handled"/"unhandled"/German "Behandle". - No other e2e spec asserts the now-changed literal English/German copy besides the one already updated in `i18n.spec.js`; other tests referencing "handle" only touch CSS classes, query params, or code identifiers, not rendered copy. - No leftover "Handle" strings found in other Razor pages' user-visible text (only class names, doc comments, and code identifiers remain, consistent with the stated scope). --- ⏱ 0m 56s · 11 turns · tokens: 59.7k in / 3.8k out (+806.1k cache-read) 📜 [Full session transcript](https://git.grandiras.net/Grandiras/claude-bot/src/branch/claude-logs/transcripts/Grandiras/Ponente/pr-66/run-163.md) <!-- claude-verdict:approve --> <!-- claude-reviewed-head:c587f210779ebbfaedf62b8f9a8d3f901ed92292 -->
Grandiras referenced this pull request from a commit 2026-07-29 17:32:02 +00:00
Grandiras deleted branch claude/issue-65 2026-07-29 17:32:02 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Grandiras/Ponente!66
No description provided.