Repository navigation
fix(identity): let a stuck at-launch sign-in copy its link - #2453
Conversation
|
🤖 Test evidence at |
joahg
left a comment
There was a problem hiding this comment.
🤖 Read the sign-in link plumbing and the bounded open. The link is only the authorization URL (S256 challenge and loopback return_to), the command is allowlisted for the main webview only, and it is cleared with the callback. Looks safe.
51fc48b to
932ea46
Compare
|
🤖 Design review at Must-fix: make Copy ready before offering it. With a hung browser, someone can click Copy sign-in link during the five-second launch wait and receive “Couldn’t copy the sign-in link. Try again.” The screen already enables Copy, but native only stores the link after that wait. Make the URL available before enabling Copy, or keep the shared Button pending until it is available; normal preparation should not produce a recovery error. Evidence: enabled action and null-link error, link stored after the opener returns. This conflicts with the design guide’s available-action and state guidance. Verify the copy action while the opener is held pending. Limits: source review only; no screenshots supplied, tests run, or packaged sign-in/clipboard, keyboard, screen-reader, theme, width, long-name or enlarged-text checks performed. |
|
🤖 Could you add a screenshot or short video of the change to the PR? Design uses these for faster reviews. |
If the browser never shows the sign-in page, the at-launch screen stays on "Signing you in" with no way forward. Add "Copy sign-in link" so the page can be opened by hand, and stop a hung macOS `open` from holding sign-in: the launch runs on its own thread and the attempt goes on after 5s. A reported launch failure still ends the attempt with browser-unavailable. Co-authored-by: Fizz <6be7be23ec5bba868f3e1db5ec86013d76bd1a293dce5b435a192158fec13641@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Diem Nguyen <[email protected]>
Co-authored-by: Fizz <6be7be23ec5bba868f3e1db5ec86013d76bd1a293dce5b435a192158fec13641@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Diem Nguyen <[email protected]>
932ea46 to
808e1d9
Compare
|
🤖 Addressed in
Limits: there's no mock opener in the native tests, so the "copy while the opener is held" case isn't covered by an automated test. The order is in the code, and |
…y-unreads * origin/main: (24 commits) [1/2] feat(agents): add a recommended agent setup (core) (#3344) test(browser): survive the live-stream restart a page-clock jump causes (#3442) chore(renovate): hold rusqlite below 0.41 for mesh-llm (#3438) test(browser): serve the diffs and CLI reload fixtures outside the navigation budget (#3445) test(browser): play the draft clip at rate 0 instead of looping it before the Play click (#3446) fix(status): reopen a status whose preset deadlines coincide as Today (#3449) fix(messages): tolerate a cancelled reaction-name chunk load (#3450) fix(pairing): tolerate /proc/net/tcp rows printed twice or missed (#3451) test(browser): wait on the signal each test asserts in local-agent-activity and message-navigation (#3444) Expose native channel headings to Solo sources (#3523) test(browser-host): run the 100,000-channel broker scale check alone in the measurements lane (#3447) fix(solo): keep every contributed destination action (#3516) fix(identity): report an issuer that keeps rate-limiting an agent as a limit (#2365) fix(identity): let a stuck at-launch sign-in copy its link (#2453) fix(profiles): open avatar previews on hover in compact density (#3510) feat(solo): smooth chat recency reordering (#3502) Reject self-mentions that cannot wake another session (#3513) feat(status): offer don't clear for every status (#3515) Let plugin panels name their tab with panels.useTabTitle (#3251) fix(agents): report a conversation wake that fails before its turn starts (#2192) ... # Conflicts: # tests/browser/message-management.spec.mjs
* origin/main: (27 commits) [2/2] feat(agents): offer Automatic (Recommended) in Create agent and Identity (#3345) fix(solo): preserve and resume unsent chat drafts (#3525) fix(builderlab): give refused app sign-ins and Identity links a route to Organization sign-in (#3078) fix(agents): say why Import an agent can't import here, and link Manage plugins (#3073) [1/2] feat(agents): add a recommended agent setup (core) (#3344) test(browser): survive the live-stream restart a page-clock jump causes (#3442) chore(renovate): hold rusqlite below 0.41 for mesh-llm (#3438) test(browser): serve the diffs and CLI reload fixtures outside the navigation budget (#3445) test(browser): play the draft clip at rate 0 instead of looping it before the Play click (#3446) fix(status): reopen a status whose preset deadlines coincide as Today (#3449) fix(messages): tolerate a cancelled reaction-name chunk load (#3450) fix(pairing): tolerate /proc/net/tcp rows printed twice or missed (#3451) test(browser): wait on the signal each test asserts in local-agent-activity and message-navigation (#3444) Expose native channel headings to Solo sources (#3523) test(browser-host): run the 100,000-channel broker scale check alone in the measurements lane (#3447) fix(solo): keep every contributed destination action (#3516) fix(identity): report an issuer that keeps rate-limiting an agent as a limit (#2365) fix(identity): let a stuck at-launch sign-in copy its link (#2453) fix(profiles): open avatar previews on hover in compact density (#3510) feat(solo): smooth chat recency reordering (#3502) ... # Conflicts: # src-tauri/src/federated_identity/agent/tests.rs # src-tauri/src/federated_identity/mod.rs # src-tauri/src/federated_identity/protocol.rs
* origin/main: (133 commits) Expose ordinary chats without workspace headings (block#3530) [2/2] feat(agents): offer Automatic (Recommended) in Create agent and Identity (block#3345) fix(solo): preserve and resume unsent chat drafts (block#3525) fix(builderlab): give refused app sign-ins and Identity links a route to Organization sign-in (block#3078) fix(agents): say why Import an agent can't import here, and link Manage plugins (block#3073) [1/2] feat(agents): add a recommended agent setup (core) (block#3344) test(browser): survive the live-stream restart a page-clock jump causes (block#3442) chore(renovate): hold rusqlite below 0.41 for mesh-llm (block#3438) test(browser): serve the diffs and CLI reload fixtures outside the navigation budget (block#3445) test(browser): play the draft clip at rate 0 instead of looping it before the Play click (block#3446) fix(status): reopen a status whose preset deadlines coincide as Today (block#3449) fix(messages): tolerate a cancelled reaction-name chunk load (block#3450) fix(pairing): tolerate /proc/net/tcp rows printed twice or missed (block#3451) test(browser): wait on the signal each test asserts in local-agent-activity and message-navigation (block#3444) Expose native channel headings to Solo sources (block#3523) test(browser-host): run the 100,000-channel broker scale check alone in the measurements lane (block#3447) fix(solo): keep every contributed destination action (block#3516) fix(identity): report an issuer that keeps rate-limiting an agent as a limit (block#2365) fix(identity): let a stuck at-launch sign-in copy its link (block#2453) fix(profiles): open avatar previews on hover in compact density (block#3510) ... Signed-off-by: Joah Gerstenberg <[email protected]> # Conflicts: # src/bundled/codex/prompt.test.ts # src/bundled/goose/runtime.ts
Why
In at-launch organization builds, someone can get stuck on Signing you in to … when the browser never shows the sign-in page. Retrying with Open the sign-in page again goes through the same handoff, and the screen never shows the URL, so there's no way forward except Cancel or Not now.
On macOS,
tauri-plugin-openerruns/usr/bin/openand waits for it to exit. A failed launch already maps tobrowser-unavailable. So the stuck screen means one of two things:openreported success, or it is still waiting on a hung browser. In the second case,login()stays blocked insidebegin_federatedwhile it holds the sign-in operation lock, so retries queue up behind it.What
login()keeps the authorization URL it opened next to the pending callback inState.callback. A newfederated_identity_sign_in_linkcommand returns it while the attempt is pending, and it is cleared wherever the callback is. The signing-in screen gets a Copy sign-in link button that useswriteClipboardText. It shows a status line on success and the usual alert on failure.login()registers the callback and its link before it opens the browser, so Copy sign-in link works during the launch wait too.open_withinruns the opener on its own thread and waits up to 5s. A reported failure clears the callback and returnsbrowser-unavailable. A launch that is still pending after 5s lets the attempt go on, so retries aren't stuck behind it.build.rs,capabilities/default.json(main webview only),lib.rs, and the permission isolation test.docs/buzz-help.md.The URL now crosses IPC. It carries the S256 handoff challenge and the loopback
return_to. The handoff secret and the returned code stay native, and thebegin_federateddoc comment now says so.Screenshots
Signing-in screen, from
tests/fixtures/launch-sign-in.html(after: Copy clicked).Tests
federated_identity::tests: anopenfailure stops sign-in, while a hungopendoes not. The link is readable while pending and gone after cancel.LaunchSignIn.test.tsx: the copy button shows the alert when no link is available, then copies the link and shows the status line.pnpm check, Vitest forsrc/features/federated-identityandIdentitySettings,cargo clippy --all-targets -D warnings,cargo fmt --check. Fullcargo testpasses except two tests that SIGSEGV on this machine:converts_tiled_heic_without_croppingandonboarding_snapshot_is_kept_until_next_launch_restore. I confirmed the same segfaults on an earlier base (67175637a), so they aren't from this change.Deferred
login(). Before this change that wait had no limit.🤖 Generated with Claude Code