Repository navigation
feat(identity): brand federated sign-in and return to the app - #2982
Conversation
Reuse the existing attempt-scoped close and macOS return handling while preserving current login-start, timeout and session contracts. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Reuse the standalone web sign-in shell, embedded cube artwork and Buzz mark while preserving callback verification copy, timeouts and guarded macOS return. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
🤖 Review round 1 (posted by Princess Donut, Taylor's AI agent, on Taylor's behalf). Reviewed head Verdict: no blockers. Timeout classification, cancel handling and sign-out cleanup still behave as they do on main. Failed and timed-out callbacks still release the attempt right away.
|
Replace only a consumed successful callback waiting to return focus. Keep pending handoffs protected and retire the preceding return permission when a renewal starts. Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
🤖 Carl (AI agent): Fixed the renewal failure in The regression fails before the fix and passes afterward. At this head, 19 callback/focus tests, 139 federated-session tests, and mandatory commit/push hooks pass. The description now explicitly states that the tab can close before verification finishes. Browser lookup remains unchanged; activation still runs on the main thread. Live macOS activation remains unverified. |
kazemek21
left a comment
There was a problem hiding this comment.
Kyle reviewed this PR and the Nexus review-tracker notes and approved with no comments.
Posted by Codex (gpt-6.1-sol) on behalf of kylez.
* origin/main: (47 commits) fix(relay): report a community's membership refusal once, not as raw 403s (#3012) test(browser): fix red main and two cross-PR flakes (#3015) feat(agent-activity): keep remote agent outcomes readable (#2913) test(solo): cover agent tagging behind a background read-state snapshot (#2941) fix(desktop): quit on SIGTERM, SIGINT and SIGHUP so agents stop with Buzz (#2905) feat(unread): opening a channel quiets its sidebar row (#2998) fix(goose): end the turn when a final send succeeds (#2997) fix(relay): report a community's refusal once, not as raw 403s (#2978) Give fast Builderlab models their own section and a bolt in the model picker (#2592) feat(dev): `just desktop me` keeps Keychain approvals across rebuilds (#3002) fix(relay): show one quiet reconnect toast after 30 s, above the composer (#2968) feat(memory): render rich markdown and navigable buzz links (#2981) fix(identity): never strand first run on a key another account holds (#2996) Let agent_create propose instructions (#2332) fix(unread): raise a local read floor over dropped marks, and halve save validation (#2977) Add Codex huddle auto-join and thinking presence (#2927) feat(claude): set up Claude from a button beside Harness (#2975) docs(plugins): document the decisions API in the authoring guide (#2994) fix(agent-harness): stop telling agents to use GitHub-flavored Markdown (#2639) feat(identity): brand federated sign-in and return to the app (#2982) ... Signed-off-by: Tyler Longwell <tlongwell@squareup.com> Co-authored-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> # Conflicts: # src/bundled/codex/voice.ts
Category: improvement
User Impact: Desktop sign-in now ends on a branded Buzz page that attempts to close and can return focus to the app on macOS.
Problem: The federated sign-in callback uses a separate plain card and leaves the user to close the browser tab and find Buzz.
Solution: Reuse the existing standalone sign-in shell, Buzz mark, font and cube artwork, with automatic tab close and guarded macOS return. Preserve the 600-second listener timeout and current login/session contracts.
Behavior change: The callback page attempts to close after three seconds even if native verification is still running; verification failures then appear in Buzz. macOS focus return waits for successful verification, and starting another sign-in cancels the previous return permission.
File changes
docs/buzz-help.md
Explain automatic close, conditional macOS focus return and the manual-close fallback.
docs/identity.md
Document verification and cancellation boundaries for returning to the app.
src-tauri/src/federated_identity/mod.rs
Capture the sign-in browser and retain its return permission through verified session installation, including renewal.
src-tauri/src/federated_identity/tests.rs
Cover guard retention through installation/renewal and stale-attempt cleanup without changing existing session assertions.
src-tauri/src/oauth_callback/README.md
Describe the shared branded page, close behavior and per-attempt return lifecycle.
src-tauri/src/oauth_callback/focus.rs
Reuse the existing guarded return owner with its timing, cancellation and expiry tests. Activation requires the captured browser to remain foreground and Buzz to remain visible and unminimized.
src-tauri/src/oauth_callback/mod.rs
Retain per-attempt return permission and share the embedded branded response assets and exact script/style CSP hashes.
src-tauri/src/oauth_callback/page.css
Reuse the light branded shell and keep responsive padding for enlarged text.
src-tauri/src/oauth_callback/page.html
Place the Buzz mark above the sign-in card beside the existing decorative artwork.
src-tauri/src/oauth_callback/tests.rs
Cover renewal during the return delay, independent server return permissions, branding, embedded assets, response privacy and the close script.
Reproduction
Validation
At
e6c02ac92ad0c2610a634d7a5c0cae2e6f5185af:1f1463635; the rendered page and its assets are unchanged by the renewal fix. They cover Chromium/WebKit layout, exact close timing, fallback, privacy and CSP.buzz-review-completed
Captures
Headless captures of the actual native loopback HTTP response with synthetic callback data; browser chrome is excluded.