Claude: changes for issue #140 #142
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/Ponente!142
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/issue-140"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #140.
🤖 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.
✅ Verdict: approve — no blocking issues found.
Flips the default
AtProto:ProfileScopefromnonetogenericso every member can edit their profile out of the box, with a clean opt-out vianone. Traced the logic end to end and it holds together:ProfileScope.Parse:configured?.Trim().ToLowerInvariant()short-circuits correctly fornull, sonull/empty/whitespace all map to the newnull or ""case →Generic, while any set-but-unrecognized value still falls through toNone(fail-towards-less-permission is preserved). Verified against the updatedProfileScopeTests, which now correctly split "unset → Generic" from "opted-out or garbage → None".Profile.razor/ProfileService.LoadAsync: moved theprofile.networkhint out of the always-shown top-of-page slot into the branch that actually renders the fields, matchingdocs/brand.md's new "say it once, where it matters" voice guidance — it no longer shows in theNotConfigured/NeedsReauthorizationlocked states, which is correct since there are no fields to warn about there.NeedsReauthorization→.profile-locked+ a/login/start?...&returnUrl=%2Fprofilelink) is consistent withProfileService: dev login stores no token, sograntedisnull,CanWriteProfile(null)is false, and with the newGenericdefaultEditingConfiguredis true, landing exactly onNeedsReauthorizationas the test now expects.Program.csstartup log,Changelog(both locales),docs/auth.md,docs/brand.md, README, and all three compose/env surfaces (docker-compose.yml,deploy/docker-compose.prod.yml, both.env*.examplefiles) were updated in lockstep — no stale references to the old default or to the removedprofile.ledelocale key/CSS class found anywhere in the branch.docs/auth.md's callout that existing deployments keep the oldnonebehavior until their.envis edited and redeployed is self-aware and correctly scoped —deploy/README.md's existing "check.envagainst.examplefor keys added" guidance only catches new keys, not changed defaults for existing ones, which the doc text acknowledges.No correctness, security, or consistency issues found.
⏱ 1m 17s · 19 turns · tokens: 47.2k in / 6.1k out (+953.4k cache-read)
📜 Full session transcript
🤖 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.
✅ Verdict: approve — no blocking issues found.
This supersedes my previous approval of a
generic-default version of this PR — the branch has since been reworked around a new finding:scopes_supportedwas a red herring (it only lists the fixed, non-parameterized scopes; an unrecognized scope is silently dropped, not rejected), and a direct authorization-endpoint check shows the granularrepo:app.bsky.actor.profile blob:image/*pair is actually accepted by both bsky.social and the bundled PDS. This is consistent with what's publicly documented about atproto's OAuth scopes rollout (granular permissions have been rolling out to bsky.social and self-hosted PDS through 2025–2026), so the central factual claim holds up.Traced the new logic end to end:
ProfileScope.Parse:configured?.Trim().ToLowerInvariant()correctly short-circuitsnulltonull, and.Trim()reduces whitespace-only strings to"", so the newnull or "" => Granulararm covers unset/empty/whitespace, while any set-but-unrecognized value still falls through toNone— fail-towards-less-permission is preserved for typos, while "never configured" now gets the more useful default.ProfileScopeTestscorrectly splits this into two theories: opt-out/garbage →None, and null/""/whitespace →Granularwith the exact expectedRequestedstring.ProfileService/Profile.razor: with the new default, dev-login (which stores no token) now lands onNeedsReauthorizationrather thanNotConfigured, showing.profile-lockedplus a/login/start?...&returnUrl=%2Fprofilelink — verified this branch and the link-building code already exist inProfile.razor(from an earlier merged PR) and match exactly what the updatedprofile.spec.jsnow asserts.profile.networkhint move (top-of-page → directly above the editable fields, only rendered in the fully-editable branch) matchesdocs/brand.md's new voice section, and the oldprofile.ledekey/CSS class is fully removed with no leftover references anywhere in the tree.Program.cs's three-way startup log,Changelog(both locales),docs/auth.md,docs/brand.md, README, and all three compose/env surfaces were updated in lockstep — no stalenone-as-default or old "nothing accepts it yet" reasoning left anywhere in the repo outside what this diff changes.docs/auth.md's new callout that already-deployed stacks keep whatever their own.envsays until it's edited and redeployed is accurate and appropriately scoped.No correctness, security, or consistency issues found.
⏱ 1m 54s · 22 turns · tokens: 46.1k in / 7.2k out (+1466.5k cache-read)
📜 Full session transcript