Commit Graph

391 Commits

Author SHA1 Message Date
klopez4212
ed160c6869 Efficiency pass over the chat features
Four fixes from a branch-wide review of the hot paths:

- useChatWorkAutomation content-compares its snapshot: a fresh object
  per storage event re-ran every consumer effect and re-rendered the
  panel even when nothing changed.
- ChatMessageRow and ChatActivityTranscript are memoized: ChatDetail
  re-renders on every observer frame during a live turn, and every
  persisted message re-rendered its whole Markdown tree each time.
- The active-agent pubkey list is key-stabilized: the managed-agents
  30s refetch minted a fresh array identity that resubscribed the
  transcript store with an unchanged set.
- GitHub API commands share one reqwest client: the PR monitor polls
  on short intervals and built a new connection pool + TLS session
  cache per call.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 07:52:00 +01:00
klopez4212
527330a093 Keep the PR monitor live: gh token fallback, honest errors, poll gating
The monitor went stale-empty overnight because every failure path
compounded: the app usually launches without GITHUB_TOKEN in its env,
so all GitHub calls ran anonymous (60 req/h) while the panel polls
~180 req/h — rate-limited within minutes — and non-success responses
returned Ok(None), which the UI rendered as a confident "No checks /
0 open comments" instead of an error.

Three fixes: ambient_github_token falls back to `gh auth token`
(resolved once per process) so the desktop uses the CLI credential
that's actually on the machine; GitHub commands now return Err on
non-404 failures so React Query keeps the last good snapshot and
retries instead of overwriting it with nothing; and polling pauses
entirely while the drawer is closed — unless automation is armed,
which keeps watching in the background.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 07:51:58 +01:00
klopez4212
141adb7892 Preset card polish and PR discovery from the branch
Preset cards: taller cards with breathing room between the icon and the
text block; the agent picker no longer lists the welcome guide's
managed instance next to the Default agent row (the duplicate Fizz);
the invite search now goes through useUserSearchQuery — the same
normalized, cached path the channel invite uses — instead of a raw
searchUsers call whose un-lowercased query could miss on relay search.

Work panel: when no PR link was ever posted in the chat, the panel now
discovers the pull request from the branch itself — a new
find_github_pr_for_branch command reads the project's origin remote
(ssh or https GitHub URLs), asks the pulls API for the branch head, and
falls back to scanning open PRs for fork-headed branches. The panel
runs this only while it has a branch + project directory and no posted
link, polling slowly so a PR opened mid-conversation surfaces on its
own.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 07:51:56 +01:00
klopez4212
e787698a76 Expandable CI monitor with per-check runs and open-comment count
The CI chip in the chat work panel is now a dropdown: the summary row
keeps the aggregate state plus a chevron, and expanding it lists each
check run with its own pass/fail/pending icon, followed by the two
automation checkboxes (moved out of their standalone chip).

The comment count now shows review threads still awaiting the PR
author's reply instead of the raw total — REST can't see GitHub's
resolved bit, so replying is what clears a thread. New
fetch_github_pr_comment_state command groups review comments into
threads and counts the ones whose last word isn't the author's; the
address-comments automation nudges on rises in that count and re-arms
once it returns to zero.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 07:46:17 +01:00
klopez4212
1ee49bce2f CI monitor and automation toggles in the chat work panel
The work drawer becomes a PR monitor: a CI chip shows running (with
progress), failing (red, count), or passing (green) from the head
commit's check runs, alongside the PR's comment count — both polled
while the panel is mounted.

Two persisted per-chat checkboxes arm automation: "Auto-fix CI
failures" prompts the chat's agent to investigate and fix once a head
sha's checks settle red (one nudge per sha), and "Address comments &
resolve" prompts it to work through comments and replies, reply, and
resolve addressed threads whenever the comment count rises (watermarked
so it never repeats).

Adds fetch_github_check_summary and head sha/comment counts to the PR
fetch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 07:46:17 +01:00
klopez4212
f19c35e025 Chat stream polish, PR work panel, and branch e2e fixes
Chat stream:
- Activity markers span the full conversation column (matching the
  "Thought for Xs" row) instead of capping at 42rem.
- Own bubbles drop the redundant "You" header.

PR work panel: when the chat's agent posts a pull request, a module
docks top-right inside the chat area (conversation and composer shrink
to make room) showing the PR's source branch and the live PR card.
fetch_github_pull_request now returns head.ref for the branch chip.

Branch e2e repairs (both regressions pre-dated today):
- "Jump to latest" now re-asserts the bottom until row re-measurement
  settles — a smooth jump aimed at a stale scrollHeight landed short
  once grouped rows changed height estimates.
- Sidebar dnd gains a keyboard sensor with keyboard-aware collision
  detection, and channel-assignment drop zones are disabled while a
  section drag is active. The dnd e2e uses a viewport tall enough that
  auto-scroll can't move the drop target mid-drag.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 07:46:13 +01:00
klopez4212
7d5f97d742 Render rich GitHub PR cards in messages
PR links in messages now show a live card instead of the static
preview: repo and PR number, PR title, current status (open / draft /
merged / closed with a matching state icon), additions in green,
deletions in red, and the files-changed count. The whole card links to
the PR.

Details come from the GitHub REST API via a new Tauri command —
anonymous for public repos, with GITHUB_TOKEN/GH_TOKEN attached when
the shell that launched the app has one. Any fetch failure (rate
limit, private repo without a token, offline) falls back to the
existing compact card.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 07:46:11 +01:00
klopez4212
1eacdea1d8 Add request deadlines to the desktop relay HTTP bridge
The shared reqwest client had no timeout, so a stalled connection (e.g.
an expired VPN tunnel that blackholes packets) left relay bridge calls
pending forever — chat creation and message sends spun indefinitely with
no error surfaced. Relay requests now carry a 30s per-request deadline
and the shared client gets a 10s connect timeout (connect-phase only, so
media streaming stays unbounded).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 07:43:31 +01:00
klopez4212
fb548c6373 Add Chats mode 2026-07-07 07:43:31 +01:00
Will Pfleger
e3008b3604 fix(personas): remove goose runtime pin from Fizz built-in (#1566)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-07-06 23:36:32 -04:00
Taylor Ho
1aa87bb26b feat(composer): compose spoiler, annotation, and tooltip controls (#1491)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
2026-07-06 16:36:01 -07:00
Will Pfleger
5f7f774ea1 chore(release): release Buzz Desktop version 0.3.45 (#1561) 2026-07-06 19:15:02 -04:00
Will Pfleger
484bede759 fix(archive): atomic remove-kind path + split test modules (#1562)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co>
2026-07-06 18:45:05 -04:00
Will Pfleger
429f54b4f4 feat(archive): add agent turn-metric (kind 44200) local archive (#1555)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-07-06 22:30:22 +00:00
Will Pfleger
d8355d3188 feat(desktop,buzz-acp): add harness-agnostic config bridge and setup-listener mode (#1411)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-07-06 18:23:38 -04:00
Will Pfleger
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
Wes
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
Tyler
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
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
2eebeb54bc chore(release): release Buzz Desktop version 0.3.44 (#1544) 2026-07-06 10:50:05 -07:00
Wes
8d64887316 chore(release): release Buzz Desktop version 0.3.43 (#1538) 2026-07-06 16:14:54 +00:00
Will Pfleger
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
klopez4212
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
renovate[bot]
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
Tyler
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
Tyler
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
Wes
a038c6465f chore(release): release Buzz Desktop version 0.3.42 (#1479) 2026-07-03 09:16:52 -07:00
klopez4212
bbf8d8912a Customize macOS DMG installer (#1496) 2026-07-03 08:56:20 -07:00
thomaspblock
8e3c0ee958 feat(desktop): repository-first projects with git workflows (#1471)
Signed-off-by: Thomas Petersen <thomasp@squareup.com>
2026-07-03 08:11:33 -04:00
klopez4212
228122fddc Add agent catalog modal (#1302)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
2026-07-02 16:26:31 -07:00
Will Pfleger
3e282a2418 feat(buzz-agent): config parity — thinking effort, model switching, normalized token limits (#1470)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-07-02 22:52:38 +00:00
Will Pfleger
02ff06cac2 fix(relay-reconnect): resilient reconnect with fast-path, escalation, and polling (#1456)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-07-02 19:30:24 +00:00
Wes
5bfd5ca270 feat: per-community workspace icon set by admins, served via NIP-11 (#1463)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-07-02 11:58:42 -07:00
Taylor Ho
c48006fc3e fix(profile): consolidate agent profile runtime metadata (#1451)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub14vtk7pvazqrq9639qu7e560wnqtl0d53ca4gjuvq6jzf3k2el23qqlwa7f <ab176f059d100602ea25073d9a69ee9817f7b691c76a897180d48498d959faa2@sprout-oss.stage.blox.sqprod.co>
2026-07-02 10:13:15 -07:00
Tyler
7da936fff8 fix(read-path): reach complete threads, dense-second timelines, and all people in the GUI (#1418)
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
2026-07-02 10:36:11 -04:00
Wes
b32db5e0fd chore(release): release Buzz Desktop version 0.3.41 (#1435) 2026-07-01 12:46:57 -06:00
klopez4212
db2a970115 Update Buzz app icon (#1430) 2026-07-01 10:58:43 -07:00
Wes
461c24ab3f chore(release): release Buzz Desktop version 0.3.40 (#1414) 2026-06-30 17:16:32 -07:00
Will Pfleger
5784ff0f1a chore(release): release Buzz Desktop version 0.3.39 (#1410) 2026-06-30 18:52:02 -04:00
Will Pfleger
e8adc3383f fix: close cross-process keychain race and namespace dev-build nest (#1409)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-30 18:40:02 -04:00
Will Pfleger
f061ae9c87 fix(desktop): fold baked build env into in-process model discovery (#1376)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-30 17:43:28 -04:00
Will Pfleger
36f32291e7 test(desktop): gate keychain-write test behind --ignored (#1404)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-30 15:29:00 -04:00
Wes
34d61acc95 perf(desktop): stop beachballs on agents menu and thread open (#1402)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-06-30 12:26:46 -07:00
Taylor Ho
5cc09e6989 feat(desktop): rebuild agent activity feed around a classifier registry and twelve render classes (#1381)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub14vtk7pvazqrq9639qu7e560wnqtl0d53ca4gjuvq6jzf3k2el23qqlwa7f <ab176f059d100602ea25073d9a69ee9817f7b691c76a897180d48498d959faa2@sprout-oss.stage.blox.sqprod.co>
2026-06-30 12:19:06 -07:00
Wes
67c47de69c fix(ci): restore main to green — tauri fmt, personas.rs file-size split, Windows path test (#1399)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-30 09:47:49 -07:00
Will Pfleger
b74ed858ff fix(desktop): enable buzz-dev-mcp MCP server for Codex agents (#1394)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-30 12:08:56 -04:00
Will Pfleger
a7e1202cc5 fix(personas): persist pack-backed persona UI edits across reboot (#1392)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-30 11:44:41 -04:00
Will Pfleger
5a64ee4a69 fix(desktop): skip keychain write when blob contents are unchanged (#1377)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-30 11:09:14 -04:00
Will Pfleger
325b3fdb0d chore(release): release Buzz Desktop version 0.3.38 (#1375) 2026-06-29 22:50:46 -04:00
Will Pfleger
eacbbe880a feat(desktop): provider-agnostic model selection + databricks discovery (#1307)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co>
2026-06-29 22:41:07 -04:00