feat(desktop): make onboarding model defaults skippable - #3968
Conversation
Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 89c4c1d321
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
wpfleger96
left a comment
There was a problem hiding this comment.
🤖 hey @tellaho — thanks for this, the Skip path itself is really well built: genuinely zero-write, and the get_global_agent_config_set_call_count assertions would catch a write-then-rollback implementation, which is a nice test hook. Staging in refs also cleanly kills the autosave race class without the coalescer.
Requesting changes on two things (the main one is inline on handleComplete/handleBack):
- Next/Back swallow persistence failure and navigate anyway — see the inline comment for details and the suggested fix direction.
desktop/src/features/agents/AGENTS.mdneeds updating in the same PR — its "keep this file true" section says a config-persistence behavior diff without a matching AGENTS.md diff should be treated as incomplete, and rule 7 still describes this page as choosing and persistingpreferred_runtimebehind a Finish gate. This PR moved that model to staged-commit-on-navigate + zero-write Skip, so rule 7 and the acceptance-test description need to match.
Also worth riding along here: saveCoalescer.ts and its test are now dead code — this PR removes the only consumer but both files survive (I checked, zero references outside the pair). Deleting them in this PR avoids the next contributor re-adopting the pattern this PR just retired.
One low-stakes note, no action needed beyond fix 1: Back fires the commit and navigates immediately, so re-entering the config step can read pre-write state while the write is still in flight and briefly show the pre-edit config. Awaiting the durable write before navigating shrinks that window to nearly nothing, so it comes along for free.
Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
…onfig * origin/main: perf(relay): serve relay-membership checks from the read replica (#4124) chore(deps): bump nostr-relay-pool for RUSTSEC-2026-0224 (#4139) docs(nostr): document #h requirement for live reaction subscriptions (#3487) docs(chart): fix ArgoCD example for native OCI sources (full artifact repoURL + path) (#3426) docs(readme): clarify which release asset to download per platform (#3481) fix(relay): allow open relays to set their NIP-11 workspace icon (kind:9033) (#3998) docs: note that addressable channel events scope by d, not h (#4103) docs: fix stale kind count, quick-start numbering, and empty Further Reading (#2613) fix(desktop): keep thread-open affordance in archived channels (#4012) docs: add one-click Railway deploy for a hosted relay (#2733) fix(desktop): point Oh My Pi preset at omp.sh (#3516) fix(mesh): stop restarting a busy or loading shared-compute node (#3909) fix(desktop): preserve first huddle speech (#3962) feat(desktop): Agent Trading Cards — mintable agent-snapshot card PNGs with optional NIP-44 lock (#3278) fix(buzz-acp): thread cache-read tokens into NIP-AM kind:44200 events (#3999) feat(relay): accept kind:30621 multi-repo projects at ingest (#3171) fix(release): preserve main in desktop PR body (#3979) chore(release): release Buzz Desktop version 0.5.3 (#3972) fix(release): require exact-head approval for desktop tags (#3973) fix(release): make desktop tagging squash-safe (#3965) Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz> Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
|
@wpfleger96 Addressed your requested changes in
All 24 onboarding defaults E2Es pass and the full PR CI is green. The three inline threads were also replied to and resolved. — Generated by Ned, an AI coding agent |
wpfleger96
left a comment
There was a problem hiding this comment.
🤖 verified the fix commit (3f7555c) against each item from the last round:
- Next now awaits
set_global_agent_config, showsSaving…, advances only on success, and keeps the draft on-page with a retryable inline error — plus the new e2e rejection case (setGlobalAgentConfigErrors) covering fail-then-retry with call-count assertions - Back is now a zero-write path with session-draft restoration, which also eliminates the ungated-Back write and the re-entry race entirely — a cleaner resolution than the await-on-Back we suggested
desktop/src/features/agents/AGENTS.mdrule 7 and the acceptance-test description now match the staged-draft model, including the durability contract (drafts don't survive restart)saveCoalescer.ts+ its test are deleted with zero remaining references at head- both nits addressed: the "Settings → Agents" underline is gone, and
isSavingis now load-bearing (drives the Saving… state and disabled controls)
CI is green at 2efaebbd. Approving.
…gaps * origin/main: feat(desktop): make onboarding model defaults skippable (#3968) ci: add guarded desktop release cache prewarm (#4575) fix(mobile): recover stale relay sessions (#4372) chore(release): release Buzz Desktop version 0.5.4 (#4562) test(mobile): assert follow boundary semantics (#4559) docs(release): align desktop handoff instructions (#3988) fix: report agent usage per provider round, not once per turn (#4545) fix(desktop): harden Windows installs against Defender block and orphaned Node (#4382) feat(desktop): improve channel template discovery (#4549) fix(desktop): save key backups to authorized path (#4022) Add channel activity hover menu (#3935) feat(desktop): show saved Run on settings when editing an agent (#4539) Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
* origin/main: (62 commits) fix(desktop): clarify inherited agent parallelism (#4010) feat(desktop): make onboarding model defaults skippable (#3968) ci: add guarded desktop release cache prewarm (#4575) fix(mobile): recover stale relay sessions (#4372) chore(release): release Buzz Desktop version 0.5.4 (#4562) test(mobile): assert follow boundary semantics (#4559) docs(release): align desktop handoff instructions (#3988) fix: report agent usage per provider round, not once per turn (#4545) fix(desktop): harden Windows installs against Defender block and orphaned Node (#4382) feat(desktop): improve channel template discovery (#4549) fix(desktop): save key backups to authorized path (#4022) Add channel activity hover menu (#3935) feat(desktop): show saved Run on settings when editing an agent (#4539) fix(desktop): disambiguate provider API key labels and annotate mint key (#4406) fix(desktop): make OpenAI key re-enterable after first save in card mint dialog (#4140) fix(config-bridge): add harness-definition env tier and fix equal-value model override (#3580) Polish mobile composer and messaging UI (#3918) ci(linux): enable mesh-llm feature in Linux release and canary builds (#4524) fix(desktop): stop the create-agent provider config probe from erasing keystrokes (#4411) fix(mobile): recover and pace live subscriptions (#3053) ... Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz> Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
…onfig * origin/main: (76 commits) Polish Share Compute settings (#3735) fix(reactions): wrap long popover names (#3834) fix(desktop): clarify inherited agent parallelism (#4010) feat(desktop): make onboarding model defaults skippable (#3968) ci: add guarded desktop release cache prewarm (#4575) fix(mobile): recover stale relay sessions (#4372) chore(release): release Buzz Desktop version 0.5.4 (#4562) test(mobile): assert follow boundary semantics (#4559) docs(release): align desktop handoff instructions (#3988) fix: report agent usage per provider round, not once per turn (#4545) fix(desktop): harden Windows installs against Defender block and orphaned Node (#4382) feat(desktop): improve channel template discovery (#4549) fix(desktop): save key backups to authorized path (#4022) Add channel activity hover menu (#3935) feat(desktop): show saved Run on settings when editing an agent (#4539) fix(desktop): disambiguate provider API key labels and annotate mint key (#4406) fix(desktop): make OpenAI key re-enterable after first save in card mint dialog (#4140) fix(config-bridge): add harness-definition env tier and fix equal-value model override (#3580) Polish mobile composer and messaging UI (#3918) ci(linux): enable mesh-llm feature in Linux release and canary builds (#4524) ... Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz> Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
…al-agent-store * origin/main: Polish Share Compute settings (#3735) fix(reactions): wrap long popover names (#3834) fix(desktop): clarify inherited agent parallelism (#4010) feat(desktop): make onboarding model defaults skippable (#3968) ci: add guarded desktop release cache prewarm (#4575) fix(mobile): recover stale relay sessions (#4372) chore(release): release Buzz Desktop version 0.5.4 (#4562) test(mobile): assert follow boundary semantics (#4559) docs(release): align desktop handoff instructions (#3988) fix: report agent usage per provider round, not once per turn (#4545) fix(desktop): harden Windows installs against Defender block and orphaned Node (#4382) Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
…er-snapshots * origin/main: (29 commits) feat(agents): model-tuning parity in global Agent Defaults editor (#4578) Polish Share Compute settings (#3735) fix(reactions): wrap long popover names (#3834) fix(desktop): clarify inherited agent parallelism (#4010) feat(desktop): make onboarding model defaults skippable (#3968) ci: add guarded desktop release cache prewarm (#4575) fix(mobile): recover stale relay sessions (#4372) chore(release): release Buzz Desktop version 0.5.4 (#4562) test(mobile): assert follow boundary semantics (#4559) docs(release): align desktop handoff instructions (#3988) fix: report agent usage per provider round, not once per turn (#4545) fix(desktop): harden Windows installs against Defender block and orphaned Node (#4382) feat(desktop): improve channel template discovery (#4549) fix(desktop): save key backups to authorized path (#4022) Add channel activity hover menu (#3935) feat(desktop): show saved Run on settings when editing an agent (#4539) fix(desktop): disambiguate provider API key labels and annotate mint key (#4406) fix(desktop): make OpenAI key re-enterable after first save in card mint dialog (#4140) fix(config-bridge): add harness-definition env tier and fix equal-value model override (#3580) Polish mobile composer and messaging UI (#3918) ... Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz> Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Requested by Tyler (buzz-tui df272ea1): pull main into PR #4347 as a new commit on top, no rebase, no force. Conflict-free (predicted by merge-tree d2fb4d4 before merging; realized tree verified to match). Main freight is 8 commits (651f637..ede8d22), none touching the terminal lane: * commit 'ede8d22dd5b336f146e0a6d760fd9dff78a42613': feat(mobile): bring channel menus to desktop parity (#3940) feat(agents): model-tuning parity in global Agent Defaults editor (#4578) Polish Share Compute settings (#3735) fix(reactions): wrap long popover names (#3834) fix(desktop): clarify inherited agent parallelism (#4010) feat(desktop): make onboarding model defaults skippable (#3968) ci: add guarded desktop release cache prewarm (#4575) fix(mobile): recover stale relay sessions (#4372) Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz> Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
…roll-navigation * origin/main: feat(mobile): bring channel menus to desktop parity (#3940) feat(agents): model-tuning parity in global Agent Defaults editor (#4578) Polish Share Compute settings (#3735) fix(reactions): wrap long popover names (#3834) fix(desktop): clarify inherited agent parallelism (#4010) feat(desktop): make onboarding model defaults skippable (#3968) ci: add guarded desktop release cache prewarm (#4575) fix(mobile): recover stale relay sessions (#4372) chore(release): release Buzz Desktop version 0.5.4 (#4562) test(mobile): assert follow boundary semantics (#4559) docs(release): align desktop handoff instructions (#3988) fix: report agent usage per provider round, not once per turn (#4545) fix(desktop): harden Windows installs against Defender block and orphaned Node (#4382) feat(desktop): improve channel template discovery (#4549) fix(desktop): save key backups to authorized path (#4022) Add channel activity hover menu (#3935) Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz> Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
* origin/main: (323 commits) feat(desktop): redesign the Huddle experience (block#4281) feat(mobile): bring channel menus to desktop parity (block#3940) feat(agents): model-tuning parity in global Agent Defaults editor (block#4578) Polish Share Compute settings (block#3735) fix(reactions): wrap long popover names (block#3834) fix(desktop): clarify inherited agent parallelism (block#4010) feat(desktop): make onboarding model defaults skippable (block#3968) ci: add guarded desktop release cache prewarm (block#4575) fix(mobile): recover stale relay sessions (block#4372) chore(release): release Buzz Desktop version 0.5.4 (block#4562) test(mobile): assert follow boundary semantics (block#4559) docs(release): align desktop handoff instructions (block#3988) fix: report agent usage per provider round, not once per turn (block#4545) fix(desktop): harden Windows installs against Defender block and orphaned Node (block#4382) feat(desktop): improve channel template discovery (block#4549) fix(desktop): save key backups to authorized path (block#4022) Add channel activity hover menu (block#3935) feat(desktop): show saved Run on settings when editing an agent (block#4539) fix(desktop): disambiguate provider API key labels and annotate mint key (block#4406) fix(desktop): make OpenAI key re-enterable after first save in card mint dialog (block#4140) ... Co-authored-by: npub1h39jmnd4xkwvmcx5najarhdxjkysvd9x5w7vsg6xuwpr9y62whvsmt2ghj <bc4b2dcdb5359ccde0d49f65d1dda695890634a6a3bcc82346e38232934a75d9@buzz.block.builderlab.xyz> Co-authored-by: Smarty <bc4b2dcdb5359ccde0d49f65d1dda695890634a6a3bcc82346e38232934a75d9@buzz.block.builderlab.xyz> Signed-off-by: npub1h39jmnd4xkwvmcx5najarhdxjkysvd9x5w7vsg6xuwpr9y62whvsmt2ghj <bc4b2dcdb5359ccde0d49f65d1dda695890634a6a3bcc82346e38232934a75d9@buzz.block.builderlab.xyz> # Conflicts: # crates/buzz-cli/src/commands/repos.rs
…gent-instructions * origin/main: (42 commits) feat(desktop): redesign the Huddle experience (block#4281) feat(mobile): bring channel menus to desktop parity (block#3940) feat(agents): model-tuning parity in global Agent Defaults editor (block#4578) Polish Share Compute settings (block#3735) fix(reactions): wrap long popover names (block#3834) fix(desktop): clarify inherited agent parallelism (block#4010) feat(desktop): make onboarding model defaults skippable (block#3968) ci: add guarded desktop release cache prewarm (block#4575) fix(mobile): recover stale relay sessions (block#4372) chore(release): release Buzz Desktop version 0.5.4 (block#4562) test(mobile): assert follow boundary semantics (block#4559) docs(release): align desktop handoff instructions (block#3988) fix: report agent usage per provider round, not once per turn (block#4545) fix(desktop): harden Windows installs against Defender block and orphaned Node (block#4382) feat(desktop): improve channel template discovery (block#4549) fix(desktop): save key backups to authorized path (block#4022) Add channel activity hover menu (block#3935) feat(desktop): show saved Run on settings when editing an agent (block#4539) fix(desktop): disambiguate provider API key labels and annotate mint key (block#4406) fix(desktop): make OpenAI key re-enterable after first save in card mint dialog (block#4140) ... Signed-off-by: Alex Rosenzweig <arosenzweig@squareup.com>
…theme-config * origin/main: (81 commits) feat(mobile): sync per-group channel sorting (#4231) feat(mobile): add channel scroll navigation (#4239) feat(desktop): redesign the Huddle experience (#4281) feat(mobile): bring channel menus to desktop parity (#3940) feat(agents): model-tuning parity in global Agent Defaults editor (#4578) Polish Share Compute settings (#3735) fix(reactions): wrap long popover names (#3834) fix(desktop): clarify inherited agent parallelism (#4010) feat(desktop): make onboarding model defaults skippable (#3968) ci: add guarded desktop release cache prewarm (#4575) fix(mobile): recover stale relay sessions (#4372) chore(release): release Buzz Desktop version 0.5.4 (#4562) test(mobile): assert follow boundary semantics (#4559) docs(release): align desktop handoff instructions (#3988) fix: report agent usage per provider round, not once per turn (#4545) fix(desktop): harden Windows installs against Defender block and orphaned Node (#4382) feat(desktop): improve channel template discovery (#4549) fix(desktop): save key backups to authorized path (#4022) Add channel activity hover menu (#3935) feat(desktop): show saved Run on settings when editing an agent (#4539) ... Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz> Co-authored-by: Taylor Ho <taylorkmho@gmail.com> Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Category: improvement
User Impact: Users can skip default model configuration during onboarding and finish it later in Settings → Agents.
Problem: Requiring model defaults during onboarding can block users who are not ready to choose a harness, provider, or model. Skipping also needs to leave existing configuration untouched rather than persisting partial selections.
Solution: Stage onboarding edits locally and persist them only when users choose Next or Back. A delayed Skip action advances without any configuration write, while a footer hint points users to the settings location for completing setup later.
File changes
desktop/src/features/onboarding/ui/DefaultConfigStep.tsx
Adds the skip action and future-settings hint, and makes model configuration transactional so Skip discards staged changes while Next and Back preserve the intended save behavior.
desktop/src/testing/e2eBridge.ts
Exposes model-config setter call counts so tests can distinguish a true zero-write skip from a write-and-rollback implementation.
desktop/tests/e2e/onboarding-agent-defaults.spec.ts
Covers skipping during loading and after staged edits, verifies zero persistence calls, and confirms Next and Back still commit changes.
Reproduction steps