npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 and Will Pfleger
e7d4de2294
fix(archive): use immediate tx for owner_p kind merge
...
Replace DEFERRED unchecked_transaction() with BEGIN IMMEDIATE via
execute_batch so the write lock is acquired before the SELECT.
With DEFERRED, two concurrent first-run seed hooks (observer + metric)
both read the empty owner_p snapshot, then race to write; the loser
receives SQLITE_BUSY_SNAPSHOT which busy_timeout does not retry, leaving
one kind silently absent until app restart.
With IMMEDIATE, the second caller blocks at BEGIN until the first
commits, then reads the committed row and merges its kind in. Both
callers succeed and the final row contains [24200, 44200].
Also fixes the inaccurate doc-comment that claimed DEFERRED gave an
exclusive write lock for the read-modify-write (it did not), and
replaces the mislabeled sequential-single-connection test with a real
two-connection WAL regression test using std::thread + Barrier that
exercises the actual concurrent write path.
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
2026-07-06 17:47:05 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 and Will Pfleger
617137a7d5
chore(archive): apply rustfmt
...
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
2026-07-06 17:45:15 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 and Will Pfleger
5f96c738d8
fix(archive): close TOCTOU race on shared owner_p row with atomic DB merge
...
Two concurrent seed hooks (observer 24200 + metric 44200) each fire on
first internal-build run with no prior owner_p row. The old TS-side
read-then-write merge raced: each hook read [] before the other had
written, so last writer clobbered the first kind.
Add store::merge_owner_p_kinds: reads existing kinds JSON, unions in
new_kind, and writes back under a single SQLite unchecked_transaction.
Concurrent callers serialize on the SQLite write lock — last writer
always reads the first writer's committed row.
Add merge_save_subscription_kinds Tauri command in archive/mod.rs (same
module as the other subscription commands; registered in lib.rs).
Both seed hooks and their deps interfaces now call this single command
with just their own kind, replacing the list+merge+create pattern.
tauriArchive.ts gains a mergeSaveSubscriptionKinds() binding.
Tests added:
- store.rs: create-when-none, adds-kind-to-existing, idempotent,
concurrent-interleave (observer writes first, metric second, both
kinds survive)
- useAgentMetricArchiveSeed.test.mjs: updated to new deps interface,
adds test_concurrent_seeds_both_kinds_survive (Promise.all interleave)
- useObserverArchiveSeed.test.mjs: symmetric update to new interface
File-size overrides bumped: archive/mod.rs +30 (command), store.rs
+110 (new fn + 4 tests — first override for store.rs).
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
2026-07-06 17:45:15 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 and Will Pfleger
52ec97fd9d
feat(archive): add agent turn-metric (kind 44200) local archive
...
Subscribe to all owned agents' turn-metric events (kind 44200) as a
special case of the #1442 local-save archive primitive. Mirrors the
observer-feed (24200) wiring but uses the persistent /query proof path
since the relay stores and #p-gates 44200 events.
Key design decisions:
- owner_p+44200 routes to the persistent bucket (relay is source of
truth); owner_p+24200 stays on the ephemeral path unchanged.
- Decrypt at ingest (NIP-44, agent→owner); store plaintext payload JSON
so token-usage calculators can read archive.db directly without the
owner key. Fail-closed: decrypt error → drop, never store ciphertext.
- owner_p filter arm added to plan_archive: {ids, #p, kinds}.
- Both seed hooks (observer + metric) now merge existing owner_p kinds
before upserting, preventing concurrent first-run seeds from clobbering
each other. Observer toggle likewise merges rather than stomping.
- Build-time flag BUZZ_BUILD_AGENT_METRIC_ARCHIVE_DEFAULT (presence
remap → BUZZ_DESKTOP_BUILD_AGENT_METRIC_ARCHIVE_DEFAULT=1); default
off for OSS, baked on for internal builds via buzz-releases.
- Separate toggle in LocalArchiveSettingsCard with its own enabled state.
- KIND_AGENT_TURN_METRIC = 44200 added to kinds.ts.
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
2026-07-06 17:45:15 -04:00
7110788077
feat(archive): add local-save archive with observer-feed default-on option ( #1442 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-06 17:41:56 -04:00
4c598dcef5
feat(desktop): add Slack-like Drafts inbox with persistence and image fix ( #1539 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-06 17:40:57 -04:00
Yoav Amit and GitHub
3729a65156
fix(setup): fix syntax error in seed-local-community.sh ( #1547 )
2026-07-06 14:24:03 -07:00
0e87998f8f
feat(desktop): add right-click context menu to workspace rail ( #1552 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-06 14:23:44 -07:00
e790c9828f
fix(desktop): restore saved window geometry on launch ( #1554 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-06 14:22:57 -07:00
3b43743e1f
feat(desktop): add typeahead search to persona model dropdown ( #1542 )
...
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-06 15:01:09 -04:00
346efe08b3
fix(desktop): publish new agent profiles to active relay ( #1546 )
...
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
2026-07-06 14:36:53 -04:00
Will Pfleger and GitHub
ccfdf45bc5
chore(desktop): use dot access for host header assignment ( #1548 )
2026-07-06 13:58:15 -04:00
c2ee4d1627
fix(onboarding): guard against webkit2gtk WAL race with explicit profile-event signal ( #1508 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-06 13:57:05 -04:00
Wes and GitHub
2eebeb54bc
chore(release): release Buzz Desktop version 0.3.44 ( #1544 )
v0.3.44
2026-07-06 10:50:05 -07:00
4343c6d55e
chore(desktop): move biome-ignore comments to assertion lines in pulse hooks ( #1545 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-06 13:45:28 -04:00
6abf614fd4
fix(desktop): keep thread-summary badges mounted through scrollback prepends ( #1533 )
...
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-06 12:59:37 -04:00
cfa2089831
refactor(shell): drop bundled PortableGit, add BUZZ_SHELL override + dialect hint ( #1536 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-06 12:54:50 -04:00
71265ca361
feat(nips,relay,acp): NIP-AM durable encrypted agent turn metrics (kind 44200) ( #1441 )
...
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co >
2026-07-06 16:35:10 +00:00
Wes and GitHub
8d64887316
chore(release): release Buzz Desktop version 0.3.43 ( #1538 )
v0.3.43
2026-07-06 16:14:54 +00:00
4d38f1cba1
fix(desktop): guard Linux .deb installs against auto-updater crash ( #1535 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-06 12:04:27 -04:00
ce901f7c1e
fix(desktop): sync agent relay profile when persona avatar changes ( #1512 )
...
Signed-off-by: Kenny Lopez <kenny@block.xyz >
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-06 16:30:16 +01:00
klopez4212 and GitHub
9e773f103a
feat(desktop): redesign appearance settings with mode-first theme picker ( #1528 )
2026-07-06 16:22:27 +01:00
d408370851
fix(deps): restore windows-* crates downgraded by chrono bump (fixes Windows Rust on main) ( #1532 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-06 08:15:40 -07:00
a8238cd670
chore(renovate): stop rebase churn between weekly sweeps ( #1530 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-06 07:53:33 -07:00
2a24765fd7
fix(deps): unversion isomorphic-git pnpm patch key ( #1529 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-07-06 07:53:18 -07:00
b66a53f5b5
chore(deps): update dependency @tanstack/react-virtual to v3.14.5 ( #1523 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 14:48:09 +00:00
f1b29140c6
chore(deps): update redis to v1.2.2 ( #1049 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 14:47:40 +00:00
klopez4212 and GitHub
232b6066c0
feat(desktop): restore section icon/emoji picker ( #1516 )
...
Signed-off-by: klopez4212 <klopez4212@gmail.com >
2026-07-06 15:33:11 +01:00
dc383c1993
chore(deps): update radix-ui-primitives monorepo ( #1524 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-06 14:29:50 +00:00
Mat Balez and GitHub
668d30b0cf
fix(desktop): stop Leave-channel dialog from freezing the app ( #1482 )
...
Signed-off-by: Mathieu Balez <mbalez@squareup.com >
2026-07-06 14:29:31 +00:00
d09d7dea55
perf: lazy-load avatars and message images ( #1517 )
...
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
2026-07-06 10:25:54 -04:00
74a30c3de8
Live thread-summary push: badge counts update on reply ingest ( #1521 )
...
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-06 10:25:32 -04:00
a255a77358
chore(deps): update all non-major dependencies ( #1163 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 14:19:20 +00:00
26d609cbe1
chore(deps): update rust crate anyhow to v1.0.103 ( #1525 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 14:16:37 +00:00
19d98319a8
chore(deps): update cashapp/activate-hermit digest to cea9af7 ( #1522 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 14:14:53 +00:00
3caa66d4f0
chore(deps): update rust crate chrono to v0.4.45 ( #1050 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 14:14:44 +00:00
8dea817fa9
chore(deps): update actions/cache digest to caa2961 ( #1341 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 14:14:38 +00:00
4b01040afb
chore(deps): pin dependencies ( #1162 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 14:14:06 +00:00
klopez4212 and GitHub
5b88e59565
feat(desktop): replace placeholder icon with actual app icon on welcome screen ( #1527 )
...
Signed-off-by: klopez4212 <klopez4212@gmail.com >
2026-07-06 06:55:58 -07:00
klopez4212 and GitHub
a1b5983e54
feat(desktop): enable native spellcheck in message composer ( #1515 )
2026-07-06 06:54:30 -07:00
6428005487
fix: let agent owners delete their agent's messages (relay kind:5 + desktop/mobile UX) ( #1519 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-06 06:45:57 -07:00
8174f2b0a0
chore(desktop): bring ChannelScreen back under the size gate ( #1520 )
...
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-05 21:25:16 -06:00
ee4c9ef139
fix(zoom) desktop chrome clearance under text zoom ( #1490 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-05 09:37:16 -07:00
caf644eda7
fix(activity panel): handle back navigation ( #1487 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-05 09:24:14 -07:00
6716cd31a5
Port channel windows to mobile ( #1518 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-07-05 09:04:54 -07:00
33886e3dec
perf: GIN index for e-tag containment + delta profile fetch (scroll-back ~2.1s/page) ( #1514 )
...
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-04 22:20:51 -04:00
62bb9fe8c8
GUI read-model overhaul: server-assembled channel windows (Correct™ pagination + relay-signed bounds) ( #1500 )
...
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1cc3ha7z055mu0rwwu7806t2wt8mj3pvu0uv5mfp2c50dahaqhczshdalg6 <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
2026-07-04 11:51:58 -04:00
c7a8b0babb
feat(desktop): show activity timestamps on demand ( #1506 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-04 08:40:49 -07:00
klopez4212 and GitHub
f35aeb7986
feat(reconnect): replace top banner with animated sidebar overlay ( #1510 )
2026-07-04 08:37:34 -07:00
20d3cdc22f
docs(nest-skill): explain agent-owned git repos and automatic auth ( #1437 )
...
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-03 20:47:01 -04:00