fix(desktop): clarify identity key button when key exists - #2357
Conversation
|
button label switches to "continue with existing identity key" once a key is already loaded. |
c4c2350 to
1f52a11
Compare
Signed-off-by: Taksh <takshkothari09@gmail.com>
1f52a11 to
178adad
Compare
wesbillman
left a comment
There was a problem hiding this comment.
The behavior change makes sense: after the first successful getIdentity() call, backing out preserves selectedPubkey, and this CTA reopens the same key rather than creating another one.
Before merging, please update the existing E2E coverage in desktop/tests/e2e/onboarding-backup.spec.ts. The test at lines 80–91 currently backs out from the backup screen and explicitly expects Create a new identity key; it should instead assert the new label. That also directly covers the regression described in #2318.
Two copy suggestions:
- View existing identity key describes the immediate action more precisely than Continue with existing identity key, since the CTA opens the backup/key display again.
- The pending label should ideally be Loading identity…, not Saving identity…, because this path calls
get_identity.
|
🤖 Comment from Morgan's AI agent, reviewed by Morgan. Thanks for the fix — the back-out case is real and worth solving. But I'd suggest a different shape for the returning state, because the current copy has two problems: 1. The two buttons clash. "Continue with existing identity key" and "Use an existing key" read as near-synonyms to a fresh user. The distinction (the key this app just generated vs. a key you're bringing from elsewhere) lives entirely in our heads, not on the screen. 2. "Existing" overstates what happened. The user hasn't set up an existing identity anywhere — they just backed out one step. Copy that implies a verified prior identity promises more than the moment warrants. Proposal — reframe the returning state as continuing setup, not a key choice: Once the user has clicked through to the backup screen, the landing screen isn't really a fork anymore — they already picked a path. So when they come back:
This avoids two buttons competing over the word "existing," and "Continue setup" matches the user's actual mental state: they were mid-setup and want to keep going. One mechanical note regardless of copy direction: the existing test at |
Use Continue setup / Use a different key instead after backing out of backup, switch the pending label to Loading identity…, and assert the new labels in the onboarding-backup E2E. Signed-off-by: Taksh <takshkothari09@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
good catch — switched to continue setup / use a different key instead, loading identity… for the pending label, and updated the e2e assertion |
|
Thank you, @Chessing234! |
* origin/main: (22 commits) feat(mobile): bring message actions to desktop parity (block#3070) feat(git): use agent display name as git author name (block#3040) fix(security): enforce durable community ban on NIP-43 relay-admin kinds 9030-9033 (block#3128) chore(deps): update react monorepo to v19.2.8 (block#3064) fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) (block#3135) docs(contributing): set PR expectations and require UI screenshots (block#3140) fix(desktop): read the newest pair-scoped harness log (block#3134) fix(security): authorize kind:9000 role changes in both directions (block#3017) feat(desktop): handle project work from Inbox (block#3117) fix(desktop): clarify identity key button when key exists (block#2357) Restore Goose and Buzz Agent to onboarding harness selection (block#2731) fix(mobile): mitigate message-post delay with optimistic rendering (block#3037) fix(desktop): render rich project work item content (block#3100) chore(deps): update radix-ui-primitives monorepo (block#3063) chore(deps): update dependency @tanstack/react-virtual to v3.14.8 (block#3057) feat(acp): bring your own harness (BYOH) — generic ACP runtime seam + settings gallery (block#2773) feat(desktop): use collective mesh routing for Auto (block#2825) fix(desktop): strip legacy baked team instructions from stored prompts (block#3035) Refine mobile community switching and discovery (block#2967) feat(agents): lower default agent parallelism from 24 to 10 (block#3038) ...
* origin/main: feat(desktop): add search to agent emoji picker (#2630) fix(desktop): keep identity key help dialog readable in dark mode (#2854) feat(acp): title agent sessions from the agent and channel name (#3028) feat(mobile): bring message actions to desktop parity (#3070) feat(git): use agent display name as git author name (#3040) fix(security): enforce durable community ban on NIP-43 relay-admin kinds 9030-9033 (#3128) chore(deps): update react monorepo to v19.2.8 (#3064) fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) (#3135) docs(contributing): set PR expectations and require UI screenshots (#3140) fix(desktop): read the newest pair-scoped harness log (#3134) fix(security): authorize kind:9000 role changes in both directions (#3017) feat(desktop): handle project work from Inbox (#3117) fix(desktop): clarify identity key button when key exists (#2357) Restore Goose and Buzz Agent to onboarding harness selection (#2731) fix(mobile): mitigate message-post delay with optimistic rendering (#3037) fix(desktop): render rich project work item content (#3100) chore(deps): update radix-ui-primitives monorepo (#3063) chore(deps): update dependency @tanstack/react-virtual to v3.14.8 (#3057) Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz>
* origin/main: (102 commits) chore(desktop): add AgentCreationPreview file-size override to unblock main CI (block#3154) fix(cli,relay): resolve agents by verified owner (block#2615) fix(desktop): make the test loader work on Windows (block#2758) fix(desktop): make lint and unit-test gates work on Windows (block#2943) feat(mobile): refactor Activity behavior and ui (block#2889) feat(desktop): add search to agent emoji picker (block#2630) fix(desktop): keep identity key help dialog readable in dark mode (block#2854) feat(acp): title agent sessions from the agent and channel name (block#3028) feat(mobile): bring message actions to desktop parity (block#3070) feat(git): use agent display name as git author name (block#3040) fix(security): enforce durable community ban on NIP-43 relay-admin kinds 9030-9033 (block#3128) chore(deps): update react monorepo to v19.2.8 (block#3064) fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) (block#3135) docs(contributing): set PR expectations and require UI screenshots (block#3140) fix(desktop): read the newest pair-scoped harness log (block#3134) fix(security): authorize kind:9000 role changes in both directions (block#3017) feat(desktop): handle project work from Inbox (block#3117) fix(desktop): clarify identity key button when key exists (block#2357) Restore Goose and Buzz Agent to onboarding harness selection (block#2731) fix(mobile): mitigate message-post delay with optimistic rendering (block#3037) ...
* origin/main: (102 commits) chore(desktop): add AgentCreationPreview file-size override to unblock main CI (block#3154) fix(cli,relay): resolve agents by verified owner (block#2615) fix(desktop): make the test loader work on Windows (block#2758) fix(desktop): make lint and unit-test gates work on Windows (block#2943) feat(mobile): refactor Activity behavior and ui (block#2889) feat(desktop): add search to agent emoji picker (block#2630) fix(desktop): keep identity key help dialog readable in dark mode (block#2854) feat(acp): title agent sessions from the agent and channel name (block#3028) feat(mobile): bring message actions to desktop parity (block#3070) feat(git): use agent display name as git author name (block#3040) fix(security): enforce durable community ban on NIP-43 relay-admin kinds 9030-9033 (block#3128) chore(deps): update react monorepo to v19.2.8 (block#3064) fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) (block#3135) docs(contributing): set PR expectations and require UI screenshots (block#3140) fix(desktop): read the newest pair-scoped harness log (block#3134) fix(security): authorize kind:9000 role changes in both directions (block#3017) feat(desktop): handle project work from Inbox (block#3117) fix(desktop): clarify identity key button when key exists (block#2357) Restore Goose and Buzz Agent to onboarding harness selection (block#2731) fix(mobile): mitigate message-post delay with optimistic rendering (block#3037) ...
* origin/main: (22 commits) chore(desktop): add AgentCreationPreview file-size override to unblock main CI (block#3154) fix(cli,relay): resolve agents by verified owner (block#2615) fix(desktop): make the test loader work on Windows (block#2758) fix(desktop): make lint and unit-test gates work on Windows (block#2943) feat(mobile): refactor Activity behavior and ui (block#2889) feat(desktop): add search to agent emoji picker (block#2630) fix(desktop): keep identity key help dialog readable in dark mode (block#2854) feat(acp): title agent sessions from the agent and channel name (block#3028) feat(mobile): bring message actions to desktop parity (block#3070) feat(git): use agent display name as git author name (block#3040) fix(security): enforce durable community ban on NIP-43 relay-admin kinds 9030-9033 (block#3128) chore(deps): update react monorepo to v19.2.8 (block#3064) fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) (block#3135) docs(contributing): set PR expectations and require UI screenshots (block#3140) fix(desktop): read the newest pair-scoped harness log (block#3134) fix(security): authorize kind:9000 role changes in both directions (block#3017) feat(desktop): handle project work from Inbox (block#3117) fix(desktop): clarify identity key button when key exists (block#2357) Restore Goose and Buzz Agent to onboarding harness selection (block#2731) fix(mobile): mitigate message-post delay with optimistic rendering (block#3037) ...
* origin/main: (22 commits) chore(desktop): add AgentCreationPreview file-size override to unblock main CI (block#3154) fix(cli,relay): resolve agents by verified owner (block#2615) fix(desktop): make the test loader work on Windows (block#2758) fix(desktop): make lint and unit-test gates work on Windows (block#2943) feat(mobile): refactor Activity behavior and ui (block#2889) feat(desktop): add search to agent emoji picker (block#2630) fix(desktop): keep identity key help dialog readable in dark mode (block#2854) feat(acp): title agent sessions from the agent and channel name (block#3028) feat(mobile): bring message actions to desktop parity (block#3070) feat(git): use agent display name as git author name (block#3040) fix(security): enforce durable community ban on NIP-43 relay-admin kinds 9030-9033 (block#3128) chore(deps): update react monorepo to v19.2.8 (block#3064) fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) (block#3135) docs(contributing): set PR expectations and require UI screenshots (block#3140) fix(desktop): read the newest pair-scoped harness log (block#3134) fix(security): authorize kind:9000 role changes in both directions (block#3017) feat(desktop): handle project work from Inbox (block#3117) fix(desktop): clarify identity key button when key exists (block#2357) Restore Goose and Buzz Agent to onboarding harness selection (block#2731) fix(mobile): mitigate message-post delay with optimistic rendering (block#3037) ...
## Buzz Desktop release v0.5.0 ### Changes since v0.4.26: - feat(invites): add use-limited invite links ([#3141](#3141)) ([`d500c2d5c`](d500c2d)) - fix(node): bump Buzz-supplied Node runtimes past OpenClaw's >=24.15.0 floor ([#3218](#3218)) ([`98a7b1334`](98a7b13)) - fix(desktop): preserve thread anchor through layout reflow ([#3212](#3212)) ([`9810d8545`](9810d85)) - feat(search): parse from:/in:/after:/before: and pass them in the filter ([#2871](#2871)) ([`cb2a265b5`](cb2a265)) - fix(desktop): fetch join policies through native networking ([#2862](#2862)) ([`0019f8076`](0019f80)) - fix(desktop): republish agent identity records when a persona rename propagates ([#2607](#2607)) ([`7ca0bbd94`](7ca0bbd)) - fix(desktop): keep project Inbox previews compact ([#3193](#3193)) ([`de1396050`](de13960)) - Inbox refactor ([#2045](#2045)) ([`2bd4c24b7`](2bd4c24)) - Fix composer selection formatting and drop overlay ([#3172](#3172)) ([`99da5b7eb`](99da5b7)) - Refine pending message status ([#3153](#3153)) ([`75588eaff`](75588ea)) - fix(desktop): recover full local storage on startup ([#3182](#3182)) ([`174c38e4b`](174c38e)) - fix(desktop): keep collapsed table separators out of spoilers ([#3169](#3169)) ([`4d8b676bb`](4d8b676)) - feat(desktop): redesign agent runtime settings ([#3093](#3093)) ([`d98da7389`](d98da73)) - fix(desktop): use forward slashes for git credential.helper on Windows ([#3023](#3023)) ([`899531684`](8995316)) - chore(desktop): add AgentCreationPreview file-size override to unblock main CI ([#3154](#3154)) ([`b92a1f4bf`](b92a1f4)) - fix(desktop): make the test loader work on Windows ([#2758](#2758)) ([`8bb43d519`](8bb43d5)) - fix(desktop): make lint and unit-test gates work on Windows ([#2943](#2943)) ([`545bb46b8`](545bb46)) - feat(desktop): add search to agent emoji picker ([#2630](#2630)) ([`313f793c8`](313f793)) - fix(desktop): keep identity key help dialog readable in dark mode ([#2854](#2854)) ([`be275cfc6`](be275cf)) - feat(acp): title agent sessions from the agent and channel name ([#3028](#3028)) ([`f2fe3b63c`](f2fe3b6)) - feat(git): use agent display name as git author name ([#3040](#3040)) ([`18eef633d`](18eef63)) - fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) ([#3135](#3135)) ([`31e2de196`](31e2de1)) - fix(desktop): read the newest pair-scoped harness log ([#3134](#3134)) ([`654f38490`](654f384)) - feat(desktop): handle project work from Inbox ([#3117](#3117)) ([`c5c4f390b`](c5c4f39)) - fix(desktop): clarify identity key button when key exists ([#2357](#2357)) ([`87b3fcd3c`](87b3fcd)) - Restore Goose and Buzz Agent to onboarding harness selection ([#2731](#2731)) ([`7fc0cc82d`](7fc0cc8)) - fix(desktop): render rich project work item content ([#3100](#3100)) ([`afb272bb7`](afb272b)) - feat(acp): bring your own harness (BYOH) — generic ACP runtime seam + settings gallery ([#2773](#2773)) ([`95fdf9788`](95fdf97)) - feat(desktop): use collective mesh routing for Auto ([#2825](#2825)) ([`16d4ec335`](16d4ec3)) - fix(desktop): strip legacy baked team instructions from stored prompts ([#3035](#3035)) ([`aee631448`](aee6314)) - feat(agents): lower default agent parallelism from 24 to 10 ([#3038](#3038)) ([`5d8ede446`](5d8ede4)) - Polish community rail and mobile pairing ([#2972](#2972)) ([`e6c90bb7c`](e6c90bb)) - fix(desktop): remove bundled libsystemd from AppImage ([#2353](#2353)) ([`a31fc4d2f`](a31fc4d)) - fix(desktop): make agent definition authoritative for model/provider/prompt ([#1968](#1968)) ([`8c0e8cb16`](8c0e8cb)) - chore(desktop): delete dead persona catalog UI cluster ([#2886](#2886)) ([`8e67cf399`](8e67cf3)) - fix(desktop): surface install failures hidden by curl-pipe exit codes ([#2892](#2892)) ([`166c6655e`](166c665)) - Refactor managed-agent runtime into cohesive modules ([#2974](#2974)) ([`74b63e184`](74b63e1)) - fix(desktop): make Linux AppImage GStreamer work on non-Debian distros ([#2176](#2176)) ([`cc6c4d347`](cc6c4d3)) - refactor(desktop): remove Agent directory section from Agents page ([#2290](#2290)) ([`5d1233e84`](5d1233e)) - fix(desktop): enable arboard Wayland backend so Linux copies reach the Wayland clipboard ([#2904](#2904)) ([`ab7aa8b12`](ab7aa8b)) - fix(desktop): supervise and re-arm relay-mesh runtime ([#2823](#2823)) ([`aa51dab9d`](aa51dab)) - fix(agents): run live Databricks discovery instead of the fallback list ([#2890](#2890)) ([`8eb6e3eb6`](8eb6e3e)) - fix(desktop): retire prepend mode on every reader wheel ([#2913](#2913)) ([`07d0265cf`](07d0265)) - fix(desktop): consolidate prepend scroll correction ([#2855](#2855)) ([`25e7864b3`](25e7864)) - fix(desktop): track concurrent agent turns up to the harness maximum ([#2882](#2882)) ([`20bff5910`](20bff59)) - fix(relay): preserve reconnect backoff ([#2759](#2759)) ([`499c5d349`](499c5d3)) - refactor(relay): expose reconnect timing policy ([#2310](#2310)) ([`2f0041595`](2f00415)) - fix(desktop): clear stale working badges on agent stop/restart ([#2803](#2803)) ([`a64cc71f6`](a64cc71)) - fix(desktop): surface agent rename relay profile sync failure as a warning toast ([#2279](#2279)) ([`5e3d2e484`](5e3d2e4)) - fix(discovery): inject PATH into Codex adapter planning ([#2767](#2767)) ([`6ab3835f3`](6ab3835)) **To release:** merge this PR. The tag and build will happen automatically. Signed-off-by: Wes <wesbillman@users.noreply.github.com>
## Summary - backing out of the backup step and clicking the CTA again reuses the existing key - the button still said "Create a new identity key", which is misleading for a security-sensitive action - when a key is already loaded, label it "Continue with existing identity key" Closes block#2318 ## Test plan - [ ] first-run: button still says "Create a new identity key" - [ ] create key → backup → back: button says "Continue with existing identity key" and shows the same key Made with [Cursor](https://cursor.com) --------- Signed-off-by: Taksh <takshkothari09@gmail.com> Co-authored-by: Cursor <cursoragent@cursor.com>
## Buzz Desktop release v0.5.0 ### Changes since v0.4.26: - feat(invites): add use-limited invite links ([block#3141](block#3141)) ([`d500c2d5c`](block@d500c2d)) - fix(node): bump Buzz-supplied Node runtimes past OpenClaw's >=24.15.0 floor ([block#3218](block#3218)) ([`98a7b1334`](block@98a7b13)) - fix(desktop): preserve thread anchor through layout reflow ([block#3212](block#3212)) ([`9810d8545`](block@9810d85)) - feat(search): parse from:/in:/after:/before: and pass them in the filter ([block#2871](block#2871)) ([`cb2a265b5`](block@cb2a265)) - fix(desktop): fetch join policies through native networking ([block#2862](block#2862)) ([`0019f8076`](block@0019f80)) - fix(desktop): republish agent identity records when a persona rename propagates ([block#2607](block#2607)) ([`7ca0bbd94`](block@7ca0bbd)) - fix(desktop): keep project Inbox previews compact ([block#3193](block#3193)) ([`de1396050`](block@de13960)) - Inbox refactor ([block#2045](block#2045)) ([`2bd4c24b7`](block@2bd4c24)) - Fix composer selection formatting and drop overlay ([block#3172](block#3172)) ([`99da5b7eb`](block@99da5b7)) - Refine pending message status ([block#3153](block#3153)) ([`75588eaff`](block@75588ea)) - fix(desktop): recover full local storage on startup ([block#3182](block#3182)) ([`174c38e4b`](block@174c38e)) - fix(desktop): keep collapsed table separators out of spoilers ([block#3169](block#3169)) ([`4d8b676bb`](block@4d8b676)) - feat(desktop): redesign agent runtime settings ([block#3093](block#3093)) ([`d98da7389`](block@d98da73)) - fix(desktop): use forward slashes for git credential.helper on Windows ([block#3023](block#3023)) ([`899531684`](block@8995316)) - chore(desktop): add AgentCreationPreview file-size override to unblock main CI ([block#3154](block#3154)) ([`b92a1f4bf`](block@b92a1f4)) - fix(desktop): make the test loader work on Windows ([block#2758](block#2758)) ([`8bb43d519`](block@8bb43d5)) - fix(desktop): make lint and unit-test gates work on Windows ([block#2943](block#2943)) ([`545bb46b8`](block@545bb46)) - feat(desktop): add search to agent emoji picker ([block#2630](block#2630)) ([`313f793c8`](block@313f793)) - fix(desktop): keep identity key help dialog readable in dark mode ([block#2854](block#2854)) ([`be275cfc6`](block@be275cf)) - feat(acp): title agent sessions from the agent and channel name ([block#3028](block#3028)) ([`f2fe3b63c`](block@f2fe3b6)) - feat(git): use agent display name as git author name ([block#3040](block#3040)) ([`18eef633d`](block@18eef63)) - fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) ([block#3135](block#3135)) ([`31e2de196`](block@31e2de1)) - fix(desktop): read the newest pair-scoped harness log ([block#3134](block#3134)) ([`654f38490`](block@654f384)) - feat(desktop): handle project work from Inbox ([block#3117](block#3117)) ([`c5c4f390b`](block@c5c4f39)) - fix(desktop): clarify identity key button when key exists ([block#2357](block#2357)) ([`87b3fcd3c`](block@87b3fcd)) - Restore Goose and Buzz Agent to onboarding harness selection ([block#2731](block#2731)) ([`7fc0cc82d`](block@7fc0cc8)) - fix(desktop): render rich project work item content ([block#3100](block#3100)) ([`afb272bb7`](block@afb272b)) - feat(acp): bring your own harness (BYOH) — generic ACP runtime seam + settings gallery ([block#2773](block#2773)) ([`95fdf9788`](block@95fdf97)) - feat(desktop): use collective mesh routing for Auto ([block#2825](block#2825)) ([`16d4ec335`](block@16d4ec3)) - fix(desktop): strip legacy baked team instructions from stored prompts ([block#3035](block#3035)) ([`aee631448`](block@aee6314)) - feat(agents): lower default agent parallelism from 24 to 10 ([block#3038](block#3038)) ([`5d8ede446`](block@5d8ede4)) - Polish community rail and mobile pairing ([block#2972](block#2972)) ([`e6c90bb7c`](block@e6c90bb)) - fix(desktop): remove bundled libsystemd from AppImage ([block#2353](block#2353)) ([`a31fc4d2f`](block@a31fc4d)) - fix(desktop): make agent definition authoritative for model/provider/prompt ([block#1968](block#1968)) ([`8c0e8cb16`](block@8c0e8cb)) - chore(desktop): delete dead persona catalog UI cluster ([block#2886](block#2886)) ([`8e67cf399`](block@8e67cf3)) - fix(desktop): surface install failures hidden by curl-pipe exit codes ([block#2892](block#2892)) ([`166c6655e`](block@166c665)) - Refactor managed-agent runtime into cohesive modules ([block#2974](block#2974)) ([`74b63e184`](block@74b63e1)) - fix(desktop): make Linux AppImage GStreamer work on non-Debian distros ([block#2176](block#2176)) ([`cc6c4d347`](block@cc6c4d3)) - refactor(desktop): remove Agent directory section from Agents page ([block#2290](block#2290)) ([`5d1233e84`](block@5d1233e)) - fix(desktop): enable arboard Wayland backend so Linux copies reach the Wayland clipboard ([block#2904](block#2904)) ([`ab7aa8b12`](block@ab7aa8b)) - fix(desktop): supervise and re-arm relay-mesh runtime ([block#2823](block#2823)) ([`aa51dab9d`](block@aa51dab)) - fix(agents): run live Databricks discovery instead of the fallback list ([block#2890](block#2890)) ([`8eb6e3eb6`](block@8eb6e3e)) - fix(desktop): retire prepend mode on every reader wheel ([block#2913](block#2913)) ([`07d0265cf`](block@07d0265)) - fix(desktop): consolidate prepend scroll correction ([block#2855](block#2855)) ([`25e7864b3`](block@25e7864)) - fix(desktop): track concurrent agent turns up to the harness maximum ([block#2882](block#2882)) ([`20bff5910`](block@20bff59)) - fix(relay): preserve reconnect backoff ([block#2759](block#2759)) ([`499c5d349`](block@499c5d3)) - refactor(relay): expose reconnect timing policy ([block#2310](block#2310)) ([`2f0041595`](block@2f00415)) - fix(desktop): clear stale working badges on agent stop/restart ([block#2803](block#2803)) ([`a64cc71f6`](block@a64cc71)) - fix(desktop): surface agent rename relay profile sync failure as a warning toast ([block#2279](block#2279)) ([`5e3d2e484`](block@5e3d2e4)) - fix(discovery): inject PATH into Codex adapter planning ([block#2767](block#2767)) ([`6ab3835f3`](block@6ab3835)) **To release:** merge this PR. The tag and build will happen automatically. Signed-off-by: Wes <wesbillman@users.noreply.github.com>
## Buzz Desktop release v0.5.0 ### Changes since v0.4.26: - feat(invites): add use-limited invite links ([#3141](block/buzz#3141)) ([`a1a21319c`](block/buzz@a1a2131)) - fix(node): bump Buzz-supplied Node runtimes past OpenClaw's >=24.15.0 floor ([#3218](block/buzz#3218)) ([`c1cc8d9d1`](block/buzz@c1cc8d9)) - fix(desktop): preserve thread anchor through layout reflow ([#3212](block/buzz#3212)) ([`c3e816140`](block/buzz@c3e8161)) - feat(search): parse from:/in:/after:/before: and pass them in the filter ([#2871](block/buzz#2871)) ([`f19d7bbf8`](block/buzz@f19d7bb)) - fix(desktop): fetch join policies through native networking ([#2862](block/buzz#2862)) ([`dfe141fd5`](block/buzz@dfe141f)) - fix(desktop): republish agent identity records when a persona rename propagates ([#2607](block/buzz#2607)) ([`d3b18b48c`](block/buzz@d3b18b4)) - fix(desktop): keep project Inbox previews compact ([#3193](block/buzz#3193)) ([`31663bffc`](block/buzz@31663bf)) - Inbox refactor ([#2045](block/buzz#2045)) ([`e5c883c25`](block/buzz@e5c883c)) - Fix composer selection formatting and drop overlay ([#3172](block/buzz#3172)) ([`9d46311fb`](block/buzz@9d46311)) - Refine pending message status ([#3153](block/buzz#3153)) ([`4f3794b0a`](block/buzz@4f3794b)) - fix(desktop): recover full local storage on startup ([#3182](block/buzz#3182)) ([`ffdaacefd`](block/buzz@ffdaace)) - fix(desktop): keep collapsed table separators out of spoilers ([#3169](block/buzz#3169)) ([`8c50f64a6`](block/buzz@8c50f64)) - feat(desktop): redesign agent runtime settings ([#3093](block/buzz#3093)) ([`293d57357`](block/buzz@293d573)) - fix(desktop): use forward slashes for git credential.helper on Windows ([#3023](block/buzz#3023)) ([`fa4a3190e`](block/buzz@fa4a319)) - chore(desktop): add AgentCreationPreview file-size override to unblock main CI ([#3154](block/buzz#3154)) ([`cba753e4c`](block/buzz@cba753e)) - fix(desktop): make the test loader work on Windows ([#2758](block/buzz#2758)) ([`8c5c0b078`](block/buzz@8c5c0b0)) - fix(desktop): make lint and unit-test gates work on Windows ([#2943](block/buzz#2943)) ([`35391d5d9`](block/buzz@35391d5)) - feat(desktop): add search to agent emoji picker ([#2630](block/buzz#2630)) ([`cc560186a`](block/buzz@cc56018)) - fix(desktop): keep identity key help dialog readable in dark mode ([#2854](block/buzz#2854)) ([`329f2176c`](block/buzz@329f217)) - feat(acp): title agent sessions from the agent and channel name ([#3028](block/buzz#3028)) ([`f5b3743d9`](block/buzz@f5b3743)) - feat(git): use agent display name as git author name ([#3040](block/buzz#3040)) ([`11fdc3dea`](block/buzz@11fdc3d)) - fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) ([#3135](block/buzz#3135)) ([`79895680d`](block/buzz@7989568)) - fix(desktop): read the newest pair-scoped harness log ([#3134](block/buzz#3134)) ([`07bfb3139`](block/buzz@07bfb31)) - feat(desktop): handle project work from Inbox ([#3117](block/buzz#3117)) ([`068e33717`](block/buzz@068e337)) - fix(desktop): clarify identity key button when key exists ([#2357](block/buzz#2357)) ([`efc097d6a`](block/buzz@efc097d)) - Restore Goose and Buzz Agent to onboarding harness selection ([#2731](block/buzz#2731)) ([`1eb717304`](block/buzz@1eb7173)) - fix(desktop): render rich project work item content ([#3100](block/buzz#3100)) ([`a5e457d82`](block/buzz@a5e457d)) - feat(acp): bring your own harness (BYOH) — generic ACP runtime seam + settings gallery ([#2773](block/buzz#2773)) ([`84701fecc`](block/buzz@84701fe)) - feat(desktop): use collective mesh routing for Auto ([#2825](block/buzz#2825)) ([`6c0e93e1f`](block/buzz@6c0e93e)) - fix(desktop): strip legacy baked team instructions from stored prompts ([#3035](block/buzz#3035)) ([`02227d761`](block/buzz@02227d7)) - feat(agents): lower default agent parallelism from 24 to 10 ([#3038](block/buzz#3038)) ([`8baed7af9`](block/buzz@8baed7a)) - Polish community rail and mobile pairing ([#2972](block/buzz#2972)) ([`4c47d7af5`](block/buzz@4c47d7a)) - fix(desktop): remove bundled libsystemd from AppImage ([#2353](block/buzz#2353)) ([`05394d35c`](block/buzz@05394d3)) - fix(desktop): make agent definition authoritative for model/provider/prompt ([#1968](block/buzz#1968)) ([`50a3dd7c4`](block/buzz@50a3dd7)) - chore(desktop): delete dead persona catalog UI cluster ([#2886](block/buzz#2886)) ([`7575f8d1c`](block/buzz@7575f8d)) - fix(desktop): surface install failures hidden by curl-pipe exit codes ([#2892](block/buzz#2892)) ([`806feb9ed`](block/buzz@806feb9)) - Refactor managed-agent runtime into cohesive modules ([#2974](block/buzz#2974)) ([`b1a983734`](block/buzz@b1a9837)) - fix(desktop): make Linux AppImage GStreamer work on non-Debian distros ([#2176](block/buzz#2176)) ([`53e1752d3`](block/buzz@53e1752)) - refactor(desktop): remove Agent directory section from Agents page ([#2290](block/buzz#2290)) ([`f756b5828`](block/buzz@f756b58)) - fix(desktop): enable arboard Wayland backend so Linux copies reach the Wayland clipboard ([#2904](block/buzz#2904)) ([`3f2f3964e`](block/buzz@3f2f396)) - fix(desktop): supervise and re-arm relay-mesh runtime ([#2823](block/buzz#2823)) ([`c9607bd0f`](block/buzz@c9607bd)) - fix(agents): run live Databricks discovery instead of the fallback list ([#2890](block/buzz#2890)) ([`7d64ca7a8`](block/buzz@7d64ca7)) - fix(desktop): retire prepend mode on every reader wheel ([#2913](block/buzz#2913)) ([`dba1ba5ae`](block/buzz@dba1ba5)) - fix(desktop): consolidate prepend scroll correction ([#2855](block/buzz#2855)) ([`797933e4d`](block/buzz@797933e)) - fix(desktop): track concurrent agent turns up to the harness maximum ([#2882](block/buzz#2882)) ([`3115a39a0`](block/buzz@3115a39)) - fix(relay): preserve reconnect backoff ([#2759](block/buzz#2759)) ([`cd949e75a`](block/buzz@cd949e7)) - refactor(relay): expose reconnect timing policy ([#2310](block/buzz#2310)) ([`94c91f110`](block/buzz@94c91f1)) - fix(desktop): clear stale working badges on agent stop/restart ([#2803](block/buzz#2803)) ([`da2580e51`](block/buzz@da2580e)) - fix(desktop): surface agent rename relay profile sync failure as a warning toast ([#2279](block/buzz#2279)) ([`4d91195e9`](block/buzz@4d91195)) - fix(discovery): inject PATH into Codex adapter planning ([#2767](block/buzz#2767)) ([`795f2d12e`](block/buzz@795f2d1)) **To release:** merge this PR. The tag and build will happen automatically. Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Summary
Closes #2318
Test plan
Made with Cursor