Wes
4a977c588a
chore(release): release Buzz Desktop version 0.5.0 ( #3213 )
...
## Buzz Desktop release v0.5.0
### Changes since v0.4.26:
- feat(invites): add use-limited invite links
([#3141 ](https://github.com/block/buzz/pull/3141 ))
([`d500c2d5c`](d500c2d5cf ))
- fix(node): bump Buzz-supplied Node runtimes past OpenClaw's >=24.15.0
floor ([#3218 ](https://github.com/block/buzz/pull/3218 ))
([`98a7b1334`](98a7b13348 ))
- fix(desktop): preserve thread anchor through layout reflow
([#3212 ](https://github.com/block/buzz/pull/3212 ))
([`9810d8545`](9810d85459 ))
- feat(search): parse from:/in:/after:/before: and pass them in the
filter ([#2871 ](https://github.com/block/buzz/pull/2871 ))
([`cb2a265b5`](cb2a265b53 ))
- fix(desktop): fetch join policies through native networking
([#2862 ](https://github.com/block/buzz/pull/2862 ))
([`0019f8076`](0019f80765 ))
- fix(desktop): republish agent identity records when a persona rename
propagates ([#2607 ](https://github.com/block/buzz/pull/2607 ))
([`7ca0bbd94`](7ca0bbd946 ))
- fix(desktop): keep project Inbox previews compact
([#3193 ](https://github.com/block/buzz/pull/3193 ))
([`de1396050`](de13960505 ))
- Inbox refactor ([#2045 ](https://github.com/block/buzz/pull/2045 ))
([`2bd4c24b7`](2bd4c24b71 ))
- Fix composer selection formatting and drop overlay
([#3172 ](https://github.com/block/buzz/pull/3172 ))
([`99da5b7eb`](99da5b7ebb ))
- Refine pending message status
([#3153 ](https://github.com/block/buzz/pull/3153 ))
([`75588eaff`](75588eaff2 ))
- fix(desktop): recover full local storage on startup
([#3182 ](https://github.com/block/buzz/pull/3182 ))
([`174c38e4b`](174c38e4bd ))
- fix(desktop): keep collapsed table separators out of spoilers
([#3169 ](https://github.com/block/buzz/pull/3169 ))
([`4d8b676bb`](4d8b676bb2 ))
- feat(desktop): redesign agent runtime settings
([#3093 ](https://github.com/block/buzz/pull/3093 ))
([`d98da7389`](d98da7389e ))
- fix(desktop): use forward slashes for git credential.helper on Windows
([#3023 ](https://github.com/block/buzz/pull/3023 ))
([`899531684`](8995316844 ))
- chore(desktop): add AgentCreationPreview file-size override to unblock
main CI ([#3154 ](https://github.com/block/buzz/pull/3154 ))
([`b92a1f4bf`](b92a1f4bf4 ))
- fix(desktop): make the test loader work on Windows
([#2758 ](https://github.com/block/buzz/pull/2758 ))
([`8bb43d519`](8bb43d5191 ))
- fix(desktop): make lint and unit-test gates work on Windows
([#2943 ](https://github.com/block/buzz/pull/2943 ))
([`545bb46b8`](545bb46b82 ))
- feat(desktop): add search to agent emoji picker
([#2630 ](https://github.com/block/buzz/pull/2630 ))
([`313f793c8`](313f793c87 ))
- fix(desktop): keep identity key help dialog readable in dark mode
([#2854 ](https://github.com/block/buzz/pull/2854 ))
([`be275cfc6`](be275cfc6c ))
- feat(acp): title agent sessions from the agent and channel name
([#3028 ](https://github.com/block/buzz/pull/3028 ))
([`f2fe3b63c`](f2fe3b63c2 ))
- feat(git): use agent display name as git author name
([#3040 ](https://github.com/block/buzz/pull/3040 ))
([`18eef633d`](18eef633d8 ))
- fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote
DoS) ([#3135 ](https://github.com/block/buzz/pull/3135 ))
([`31e2de196`](31e2de1966 ))
- fix(desktop): read the newest pair-scoped harness log
([#3134 ](https://github.com/block/buzz/pull/3134 ))
([`654f38490`](654f384906 ))
- feat(desktop): handle project work from Inbox
([#3117 ](https://github.com/block/buzz/pull/3117 ))
([`c5c4f390b`](c5c4f390b6 ))
- fix(desktop): clarify identity key button when key exists
([#2357 ](https://github.com/block/buzz/pull/2357 ))
([`87b3fcd3c`](87b3fcd3c0 ))
- Restore Goose and Buzz Agent to onboarding harness selection
([#2731 ](https://github.com/block/buzz/pull/2731 ))
([`7fc0cc82d`](7fc0cc82db ))
- fix(desktop): render rich project work item content
([#3100 ](https://github.com/block/buzz/pull/3100 ))
([`afb272bb7`](afb272bb7b ))
- feat(acp): bring your own harness (BYOH) — generic ACP runtime seam +
settings gallery ([#2773 ](https://github.com/block/buzz/pull/2773 ))
([`95fdf9788`](95fdf97880 ))
- feat(desktop): use collective mesh routing for Auto
([#2825 ](https://github.com/block/buzz/pull/2825 ))
([`16d4ec335`](16d4ec335e ))
- fix(desktop): strip legacy baked team instructions from stored prompts
([#3035 ](https://github.com/block/buzz/pull/3035 ))
([`aee631448`](aee6314484 ))
- feat(agents): lower default agent parallelism from 24 to 10
([#3038 ](https://github.com/block/buzz/pull/3038 ))
([`5d8ede446`](5d8ede446f ))
- Polish community rail and mobile pairing
([#2972 ](https://github.com/block/buzz/pull/2972 ))
([`e6c90bb7c`](e6c90bb7c4 ))
- fix(desktop): remove bundled libsystemd from AppImage
([#2353 ](https://github.com/block/buzz/pull/2353 ))
([`a31fc4d2f`](a31fc4d2f3 ))
- fix(desktop): make agent definition authoritative for
model/provider/prompt ([#1968 ](https://github.com/block/buzz/pull/1968 ))
([`8c0e8cb16`](8c0e8cb165 ))
- chore(desktop): delete dead persona catalog UI cluster
([#2886 ](https://github.com/block/buzz/pull/2886 ))
([`8e67cf399`](8e67cf399d ))
- fix(desktop): surface install failures hidden by curl-pipe exit codes
([#2892 ](https://github.com/block/buzz/pull/2892 ))
([`166c6655e`](166c6655e8 ))
- Refactor managed-agent runtime into cohesive modules
([#2974 ](https://github.com/block/buzz/pull/2974 ))
([`74b63e184`](74b63e1846 ))
- fix(desktop): make Linux AppImage GStreamer work on non-Debian distros
([#2176 ](https://github.com/block/buzz/pull/2176 ))
([`cc6c4d347`](cc6c4d3471 ))
- refactor(desktop): remove Agent directory section from Agents page
([#2290 ](https://github.com/block/buzz/pull/2290 ))
([`5d1233e84`](5d1233e841 ))
- fix(desktop): enable arboard Wayland backend so Linux copies reach the
Wayland clipboard ([#2904 ](https://github.com/block/buzz/pull/2904 ))
([`ab7aa8b12`](ab7aa8b120 ))
- fix(desktop): supervise and re-arm relay-mesh runtime
([#2823 ](https://github.com/block/buzz/pull/2823 ))
([`aa51dab9d`](aa51dab9da ))
- fix(agents): run live Databricks discovery instead of the fallback
list ([#2890 ](https://github.com/block/buzz/pull/2890 ))
([`8eb6e3eb6`](8eb6e3eb60 ))
- fix(desktop): retire prepend mode on every reader wheel
([#2913 ](https://github.com/block/buzz/pull/2913 ))
([`07d0265cf`](07d0265cfc ))
- fix(desktop): consolidate prepend scroll correction
([#2855 ](https://github.com/block/buzz/pull/2855 ))
([`25e7864b3`](25e7864b35 ))
- fix(desktop): track concurrent agent turns up to the harness maximum
([#2882 ](https://github.com/block/buzz/pull/2882 ))
([`20bff5910`](20bff59102 ))
- fix(relay): preserve reconnect backoff
([#2759 ](https://github.com/block/buzz/pull/2759 ))
([`499c5d349`](499c5d349d ))
- refactor(relay): expose reconnect timing policy
([#2310 ](https://github.com/block/buzz/pull/2310 ))
([`2f0041595`](2f0041595d ))
- fix(desktop): clear stale working badges on agent stop/restart
([#2803 ](https://github.com/block/buzz/pull/2803 ))
([`a64cc71f6`](a64cc71f6c ))
- fix(desktop): surface agent rename relay profile sync failure as a
warning toast ([#2279 ](https://github.com/block/buzz/pull/2279 ))
([`5e3d2e484`](5e3d2e4849 ))
- fix(discovery): inject PATH into Codex adapter planning
([#2767 ](https://github.com/block/buzz/pull/2767 ))
([`6ab3835f3`](6ab3835f3f ))
**To release:** merge this PR. The tag and build will happen
automatically.
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
2026-07-28 07:21:38 -07:00
Will Pfleger
be13b4bb9c
fix(desktop): probe legacy Goose install dir on Windows ( #3248 )
...
Goose's pre-[#2680 ](https://github.com/block/buzz/pull/2680 ) Windows
installer unpacked the CLI to `%USERPROFILE%\goose\goose.exe`. That
directory is on no standard `PATH`, and `common_binary_paths()` never
probed it, so users who installed Goose with the legacy installer stayed
permanently undiscovered — the residual half of #2239 .
`resolve_command_uncached` finds binaries outside `PATH` only by
scanning `common_binary_paths()`, so adding the directory there is the
whole fix: Windows basename expansion already supplies
`goose.exe`/`.cmd`/`.bat`, and discovery, readiness probes, and spawn
all route through the same shared resolver. No Goose-specific resolution
path is introduced. The entry sits beside the existing Codex
`%LOCALAPPDATA%\Programs\OpenAI\Codex\bin` probe in the same
`#[cfg(windows)]` block.
The regression test is `#[cfg(windows)]` and is CI-reachable, not dead
code — the `desktop-build-windows` job runs `cargo test --manifest-path
desktop/src-tauri/Cargo.toml --target $env:TARGET` on `windows-latest`.
It asserts the probe list rather than planting a binary:
`common_binary_paths` is a process-lifetime `OnceLock`, so a test cannot
deterministically re-seed `USERPROFILE`, and planting an executable
under the real user profile is not an acceptable side effect. Verified
locally by widening the `cfg` to build on macOS — the test passes with
the probe and fails without it.
The `check-file-sizes.mjs` override for `managed_agents/discovery.rs`
moves 1835 → 1841, the exact post-`cargo fmt` gate count. Verified both
directions: 1841 passes, 1840 fails.
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
2026-07-27 21:30:21 -04:00
Tyler
31e2de1966
fix(deps): bump nostr to 0.44.6 for RUSTSEC-2026-0216 (NIP-44 remote DoS) ( #3135 )
...
## Summary
`cargo-deny` started failing on **every** PR and on `main` when
**RUSTSEC-2026-0216** was published mid-afternoon today. Nothing in the
tree changed — cargo-deny fetches the advisory DB at run time, so main's
own `Security` job passed at `00ecf2c` and then began failing on the
same commit.
```
error[vulnerability]: Remote Denial of Service via malformed NIP-44 v2 payload
Cargo.lock:432 nostr 0.44.3 — RUSTSEC-2026-0216
advisories FAILED, bans ok, licenses ok, sources ok
```
The `nostr` NIP-44 v2 decrypt path reads a 2-byte unpadded-length prefix
via `buffer[0..2]` **after** the HMAC check passes, without verifying
the decrypted buffer holds 2 bytes. A sender who holds the conversation
key — i.e. any DM sender — can craft a payload that decrypts to 0 or 1
bytes and panic the receiver. Remote DoS through any relay that delivers
the event. No key material, plaintext, or memory corruption.
Affects `0.26.0` through `0.44.4`. Fixed in `0.44.5`.
## The change
Lockfiles only, 6 insertions / 6 deletions. The manifest already
declares `nostr = "0.44"` — a caret range — so `0.44.6` needs no
`Cargo.toml` edit.
| Lockfile | Before | After |
|---|---|---|
| `Cargo.lock` | 0.44.3 | 0.44.6 |
| `desktop/src-tauri/Cargo.lock` | **0.44.4** | 0.44.6 |
**The desktop lockfile is the part worth reviewing.**
`desktop/src-tauri` is excluded from the root workspace
(`Cargo.toml:31`), and the `Security` job runs `cargo-deny check` at the
repo root — so it never sees that lockfile. It was pinning a vulnerable
*and* yanked `0.44.4` that no CI check would ever have flagged. Desktop
calls `nip44::decrypt` at `commands/identity.rs:495`. Credit to @Eva for
catching this; I'd have shipped the root-only fix and left it sitting
there.
**This isn't optional maintenance.** `0.44.0` through `0.44.4` are all
yanked on crates.io. `0.44.5` and `0.44.6` are the only live versions in
our range — staying put isn't an available option.
### On the two extra lines in the desktop lockfile
The desktop bump also repoints two existing dependency edges:
```
nostr-derive: syn 2.0.118 -> syn 1.0.109
tempfile: getrandom 0.4.3 -> getrandom 0.3.4
```
I checked these rather than waving them through: **no packages are added
or removed** — both versions were already present in the graph, so only
which edge points where changed. The resolution is stable across
repeated re-resolves, and a plain re-resolve without the bump produces
zero diff, so this isn't pre-existing lockfile staleness leaking in.
## Verification
At this commit, in a clean worktree off `origin/main`:
- `cargo-deny check advisories` → **`advisories ok`**, exit 0. The same
tree before the bump reported `advisories FAILED` with this advisory, so
the check is doing real work, not passing vacuously.
- `./scripts/run-tests.sh unit` → all five packages pass.
- `cargo test -p buzz-core` 229/229, `-p buzz-cli` 250/250, `-p
buzz-relay --lib` 750 pass / 1 fail — the sole failure
`api::mesh_demo::tests::demo_join_forwarded_arm_round_trips_echo` is
pre-existing and reproduces identically at unmodified `00ecf2c`.
- `desktop-tauri-test` passed in the pre-push hook, which exercises the
crate whose lockfile changed.
## Why not a `deny.toml` ignore
Considered and rejected. This is a reachable panic triggerable by any DM
sender, and buzz-acp agents decrypt DMs from arbitrary senders.
Suppressing it would ship a live remote-DoS to every agent and client in
order to make a dashboard green.
## Note on `spin`
The yanked `spin 0.9.8` / `0.10.0` warnings in the same job are **not**
what fails CI — the log has exactly one hard error, this one. They're
`warning[yanked]`, and warnings don't fail the build. `spin` is also
three levels transitive (`mesh-llm-host-runtime → mdns-sd → flume →
spin`) under a dev-dependency, so it isn't ours to bump. Left alone
deliberately.
## Follow-up
Unblocks #3128 (relay-admin ban gate), which has a zero dependency-file
delta and will inherit this cleanly once main is merged in.
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: npub1jmc9dt2lyvzu3h0kxlwxt5zg4fxp9476awyxw6gwxn72g6cw7exqs64whm <96f056ad5f2305c8ddf637dc65d048aa4c12d7daeb8867690e34fca46b0ef64c@buzz.block.builderlab.xyz >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-27 12:04:23 -04:00
Will Pfleger
95fdf97880
feat(acp): bring your own harness (BYOH) — generic ACP runtime seam + settings gallery ( #2773 )
...
## What
Implements a "bring your own harness" (BYOH) generic ACP mechanism —
replacing per-harness backend code with a data-driven 3-tier system:
- **Tier 1 (compiled-in builtins):** goose, claude, codex, buzz-agent —
unchanged behavior
- **Tier 2 (bundled presets):** cursor, omp, grok, opencode, kimi, amp,
hermes, openclaw, and any future additions — defined in
`PRESET_HARNESSES`, no code duplication, icons stay
TerminalSquare/bundled-asset-only
- **Tier 3 (user-defined custom):** JSON definitions saved to
`custom_harnesses/` under app data; managed via Settings → Agents UI
## Changes
### Core data model
- `HarnessDefinition` — id, label, command, args, env, install URL/hint
- `PRESET_HARNESSES` static table — single source of truth for all
presets; `preset_harness_ids()` derives reserved IDs (D-11: no
hand-maintained copy)
- `source: "builtin" | "preset" | "custom"` tagging on every catalog
entry
### Persistence (B-4, B-6)
- `save_custom_harness_to_dir(dir, definition, rename_old_id)` —
backup-swap atomic write (backs up target → .bak, commits temp → target,
restores .bak on failure, removes .bak on success); safe on Windows
where `fs::rename` over an existing file is "access denied"
- `save_and_warm` / `delete_and_warm` — hold `PERSIST_MUTEX` for the
write + registry-warm pair, eliminating the lost-update race (B-6) where
two concurrent saves could interleave their warm calls and leave a stale
registry snapshot
- Validate-before-mutate: both IDs and env validated before any
filesystem mutation
### Env validation boundary (B-3)
- `validate_harness_definition_pub` calls `validate_user_env_keys` on
definition env at save AND load
- Rejects malformed keys (BUZZ_AUTH_TAG=x forgery shape), reserved keys
(BUZZ_MANAGED_AGENT etc.), NUL bytes, oversized values
### TypeScript boundary (B-2 / Thufir CRITICAL)
- `RawAcpRuntimeCatalogEntry` now declares `definition_env?:
Record<string,string>` and `source: "builtin" | "preset" | "custom"`
- `fromRawAcpRuntimeCatalogEntry` maps `definition_env → definitionEnv`
(camelCase); absent field defaults to `{}`
- Edit form reads `entry.definitionEnv` — env no longer erased on
save-then-edit cycle
### Unified descriptor (Phase A / Thufir F4)
- `EffectiveHarnessDescriptor { command, args, env }` in `readiness.rs`
- `resolve_effective_harness_descriptor()` — single resolver used by
spawn, spawn_hash, summary, get_agent_models (both saved and unsaved),
and readiness
- No competing arg-resolution forms
### Other fixes
- B-5: stop freezing `runtime.defaultArgs` into `record.agent_args` on
normal create paths
- B-7: readiness exec-check — `MissingBinary` variant for custom
commands not found on PATH
- B-8: onboarding transition — `setTimeout(0)` removed, parent-owned
route intent via `navigateAfterComplete` prop
- C-9: collector-discriminating sweep tests with injectable filters
- C-10: `HarnessManagementCard` uses `harnessGalleryLogic` helpers
(killed duplicate filter/sort)
- D-11: `BUILTIN_IDS` derived from `PRESET_HARNESSES` (no
hand-maintained copy)
- D-12: `mobile/pubspec.lock` churn reverted
- D-13: false ownership fast-path comment fixed
- D-14: URL scheme validation for `installInstructionsUrl`
- D-15: OpenClaw Gateway env-locus README line
### Tests added
**B-4 persistence (6 tests):**
`save_to_dir_create_writes_file_and_loads_back`,
`save_to_dir_same_id_edit_replaces_content`,
`save_to_dir_backup_is_cleaned_up_after_same_id_edit`,
`save_to_dir_rename_removes_old_file_and_creates_new`,
`save_to_dir_rename_nonexistent_old_id_is_non_fatal`,
`save_to_dir_roundtrip_with_env_preserves_values`
**B-3 env validation (6 tests):**
`validate_rejects_malformed_key_with_equals_sign`,
`validate_rejects_reserved_key_buzz_managed_agent`,
`validate_rejects_reserved_key_case_insensitive`,
`validate_rejects_nul_byte_in_value`,
`validate_rejects_value_over_per_value_size_limit`,
`validate_accepts_well_formed_env`
**B-2 API boundary (4 TS tests in tauri.test.mjs):**
`fromRawAcpRuntimeCatalogEntry maps definition_env to definitionEnv`,
`defaults definitionEnv to {} when absent`, `preserves source preset`,
`env round-trips through edit payload shape`
## Preset catalog
| ID | Label | Command |
|----|-------|---------|
| `cursor` | Cursor | `cursor-agent acp` |
| `omp` | Oh My Pi | `omp acp` |
| `grok` | Grok Build | `grok agent --always-approve stdio` |
| `opencode` | OpenCode | `opencode acp` |
| `kimi` | Kimi Code | `kimi acp` |
| `amp` | Amp | `amp-acp` |
| `hermes` | Hermes Agent | `hermes-acp` |
| `openclaw` | OpenClaw | `openclaw acp` |
## Review-fix pass (2026-07-26, Eva)
Fixes from the three-way review (Wren / Dawn / Eva) in the
buzz-generic-acp-harnesses thread, pushed as new commits (no rewrite):
1. **installHint edit round-trip** — form seeding extracted to
`formValuesFromCatalogEntry` (single source of truth), input rendered,
full-definition lossless round-trip regression.
2. **Dangling-delete coherence** — delete allowed; confirm counts
referencing agents (direct pin + persona-inherited); summary rows render
`harness (deleted): <id>`; spawn errors become actionable sentences
(`user_facing_harness_error`); composed delete→summary→start test.
3. **Comma-in-args** — rejected at `validate_harness_definition` (shared
by save AND disk load), mirrored inline in the form.
4. **Registry publish race** — collision/dup filtering moved into
`load_custom_harnesses` (both loaders inherit shadowing rules);
discovery publishes by re-reading the dir under `persist_mutex` (lock
scoped to publish only); deterministic interleaving regressions for
save-during-discovery and delete-during-discovery.
5. **Mechanical** — discarded `belongs_to_us` sweep arg deleted,
`load_global_agent_config` hoisted out of the per-record summary loop,
duplicated doc paragraph + stray SAFETY comment removed.
6. **PGID test de-flaked** — leader kept alive through the assertion.
Known follow-up (filed in review, not blocking): file-size split-outs
queued in `check-file-sizes.mjs` entries.
## Gate table — head `bf53f1d60`
| Gate | Result |
|------|--------|
| `cargo test --lib` (desktop/src-tauri) | **1701 passed**, 0 failed, 14
ignored |
| desktop JS suite (`pnpm test`) | **3605 passed**, 0 failed |
| `tsc --noEmit` | clean |
| `biome check` + file-size/px/pubkey checks | clean |
| `cargo clippy --lib -- -D warnings` | clean |
| `cargo fmt --check` | clean |
PR head: `bf53f1d60e3cbd07392e1287b83bb37ba90d0d33` — includes merge of
origin/main (`c2a4ee711`, conflicts in agent_models composed with
#2890 's live Databricks discovery)
---------
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz >
Co-authored-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Dawn (sprout agent) <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz >
2026-07-26 20:06:20 -04:00
Mic Neale
16d4ec335e
feat(desktop): use collective mesh routing for Auto ( #2825 )
...
Uses MeshLLM built-in `mesh` collective intelligence / Mixture of Agents
when Buzz Auto sees two or more distinct physical models. With zero or
one model, Auto remains ordinary `auto`. This is an alternative way to
improve tool responses, accuracy, and resistance to hallucination when a
high-latency distributed mesh contains diverse models.
Models and members may come and go: collective routing enables only
after stable capacity, drops on confirmed contraction, and can recover
later. Mesh-specific failures retry once through ordinary Auto.
This update also pins MeshLLM to a v0.73.1-compatible backport of
[MeshLLM #1074 ](https://github.com/Mesh-LLM/mesh-llm/pull/1074 ), so
client-only Buzz nodes cannot enter model election or download a remote
provider model. Buzz preserves the selected local sharing model and
switches an existing client to sharing across a controlled app restart,
retaining one runtime and one `:9337` / `:3131` pair per machine.
Validation:
- Full local `just ci` passes on the cleaned branch.
- MeshLLM host-runtime suite: 1,568 passed, 0 failed; strict Clippy
passes.
- Buzz desktop Tauri suite with `mesh-llm`: 1,721 passed, 0 failed;
strict feature Clippy passes.
- Playwright covers client-to-share using the saved local model and no
destructive stop.
- Packaged two-machine testing proved single-model routing, dual-model
collective routing, tool-markup fallback, and runtime reuse.
- Packaged client-only recheck routed a real Mini Buzz turn through M5
while Mini stayed `is_client=true`, `is_host=false`, hosted no models,
and created no Gemma cache.
Builds on the recovery work merged in #2823 ; this PR does not duplicate
it.
---------
Signed-off-by: Michael Neale <michael.neale@gmail.com >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: Michael Neale <michael.neale@gmail.com >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-26 19:46:13 -04:00
Shawn Yeager
ab7aa8b120
fix(desktop): enable arboard Wayland backend so Linux copies reach the Wayland clipboard ( #2904 )
...
Fixes #2896
**Root cause:** `arboard = "3"` compiles with default features only
(`image-data`), so the Linux build has no Wayland backend. In a Wayland
session every copy lands on the XWayland clipboard; the compositor only
mirrors X11 selections while an XWayland window holds focus, and
arboard's clipboard client is windowless, so Wayland-native apps read
nothing. `set_text` still returns `Ok`, which is why the invite dialog
shows "Copied" with an empty clipboard.
**Fix:** enable arboard's `wayland-data-control` feature. Under Wayland
it uses the `zwlr-data-control` protocol; when `WAYLAND_DISPLAY` is
absent it falls back to X11 as before. The `wl-clipboard-rs` dependency
is target-gated inside arboard, so macOS and Windows builds are
unchanged.
**Verified:** `cargo check` passes on the desktop crate; wl-clipboard-rs
now resolves in the lockfile.
Signed-off-by: Shawn Yeager <shawn@shawnyeager.com >
2026-07-26 02:29:50 +00:00
Wes
0096d710ed
chore(release): release Buzz Desktop version 0.4.26 ( #2808 )
...
## Buzz Desktop release v0.4.26
### Changes since v0.4.25:
- Style mobile pairing QR codes
([#2775 ](https://github.com/block/buzz/pull/2775 ))
([`50655ac09`](50655ac097 ))
- Refine community management flows
([#2738 ](https://github.com/block/buzz/pull/2738 ))
([`384c72dee`](384c72dee6 ))
- docs: replace VPN-vendor references with generic wording
([#2805 ](https://github.com/block/buzz/pull/2805 ))
([`bcca885ba`](bcca885ba9 ))
- fix(desktop): explain macOS local network access
([#2263 ](https://github.com/block/buzz/pull/2263 ))
([`e527d74f0`](e527d74f06 ))
- fix(desktop): clarify CLI runtime setup
([#2680 ](https://github.com/block/buzz/pull/2680 ))
([`b8510ede1`](b8510ede1b ))
**To release:** merge this PR. The tag and build will happen
automatically.
2026-07-25 06:57:58 -07:00
Will Pfleger
e8105d1446
chore(release): release Buzz Desktop version 0.4.25 ( #2776 )
...
## Buzz Desktop release v0.4.25
### Changes since v0.4.24:
- fix(discovery): spawn PowerShell install commands natively on Windows
([#2750 ](https://github.com/block/buzz/pull/2750 ))
([`f3981dbfe`](f3981dbfef ))
- fix(desktop): use augmented PATH for model discovery subprocess
([#2753 ](https://github.com/block/buzz/pull/2753 ))
([`3bd3a014c`](3bd3a014c6 ))
- Improve huddle audio failure handling
([#2578 ](https://github.com/block/buzz/pull/2578 ))
([`fb4a801ad`](fb4a801adf ))
- fix(onboarding): show real install errors and fix concurrent install
state ([#2658 ](https://github.com/block/buzz/pull/2658 ))
([`9731cd818`](9731cd818b ))
- feat(node): add Windows managed Node.js fallback (win-x64 + win-arm64)
([#2661 ](https://github.com/block/buzz/pull/2661 ))
([`596386ee5`](596386ee55 ))
- fix(desktop): parse runtime team instructions section
([#2645 ](https://github.com/block/buzz/pull/2645 ))
([`269ef357f`](269ef357f7 ))
- Match create-channel template selector styling
([#2654 ](https://github.com/block/buzz/pull/2654 ))
([`72bbaece4`](72bbaece4b ))
- feat(desktop): make pull request reviews actionable
([#2510 ](https://github.com/block/buzz/pull/2510 ))
([`9081ab0ec`](9081ab0ec9 ))
- fix(desktop): shared-compute usability — share toggle, usage
indicator, model resync
([#2448 ](https://github.com/block/buzz/pull/2448 ))
([`9cc9652c7`](9cc9652c7d ))
- fix(desktop): refine focused thread dismissal targets
([#2644 ](https://github.com/block/buzz/pull/2644 ))
([`c86c4f59c`](c86c4f59c4 ))
- Clarify agent harness defaults in create flow
([#2601 ](https://github.com/block/buzz/pull/2601 ))
([`76aeae703`](76aeae7036 ))
- fix: expose community icon control on open relays
([#2640 ](https://github.com/block/buzz/pull/2640 ))
([`e341b09cb`](e341b09cb9 ))
**To release:** merge this PR. The tag and build will happen
automatically.
2026-07-24 19:03:31 -04:00
Mic Neale
9cc9652c7d
fix(desktop): shared-compute usability — share toggle, usage indicator, model resync ( #2448 )
...
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
Co-authored-by: Michael Neale <michael.neale@gmail.com >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz >
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-23 23:21:01 -07:00
Wes
710ed9fff5
chore(release): release Buzz Desktop version 0.4.24 ( #2627 )
2026-07-23 23:08:35 +00:00
Wes
b096b0a15a
fix(sharing): preserve agent/team snapshot tEXt chunks through media sanitization ( #2438 )
...
Signed-off-by: npub1cl47vfhsqpqy9pwndphpm36vcp7vvz5h2js4qpqm5yewzj7nutkq7xyw8c <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz >
Co-authored-by: npub1cl47vfhsqpqy9pwndphpm36vcp7vvz5h2js4qpqm5yewzj7nutkq7xyw8c <c7ebe626f000404285d3686e1dc74cc07cc60a9754a150041ba132e14bd3e2ec@buzz.block.builderlab.xyz >
2026-07-23 13:40:15 -07:00
Wes
acfbb1bb6a
chore(release): release Buzz Desktop version 0.4.23 ( #2429 )
2026-07-22 16:16:56 -07:00
Wes
e9188c03f6
chore(release): release Buzz Desktop version 0.4.22 ( #2220 )
2026-07-21 20:32:42 +00:00
Bradley Axen
e30f1d2006
chore(release): release Buzz Desktop version 0.4.21 ( #2209 )
...
Signed-off-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co >
2026-07-20 22:54:53 -07:00
Wes
ffd86458ae
chore(release): release Buzz Desktop version 0.4.20 ( #2170 )
...
Co-authored-by: Bradley Axen <baxen@squareup.com >
2026-07-20 10:43:22 -07:00
renovate[bot]
984645ecaa
chore(deps): update rust crate rustls to v0.23.42 ( #2151 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-20 14:37:50 +00:00
Wes
768cd4dbee
chore(release): release Buzz Desktop version 0.4.19 ( #2124 )
2026-07-19 11:16:28 -06:00
Wes
a73b7f7705
chore(release): release Buzz Desktop version 0.4.18 ( #2091 )
2026-07-18 15:52:27 -07:00
Wes
3afc518c70
chore(release): release Buzz Desktop version 0.4.17 ( #2082 )
2026-07-18 18:55:55 +00:00
Tyler
4cf5694075
fix(desktop): own native WebSocket lifecycle ( #2076 )
...
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-07-18 18:52:56 +00:00
Wes
7ba13bfa5d
chore(release): release Buzz Desktop version 0.4.16 ( #2061 )
2026-07-18 00:34:03 +00:00
Wes
812850e8b6
chore(release): release Buzz Desktop version 0.4.15 ( #2052 )
2026-07-17 16:12:45 -07:00
Wes
88684bb24f
chore(release): release Buzz Desktop version 0.4.14 ( #2036 )
2026-07-17 10:44:45 -07:00
Bradley Axen
5973e28995
fix(desktop): case-insensitive relay media origin match, release 0.4.13 ( #2023 )
...
Signed-off-by: npub1qvn3cujt28pg06ehlstrxyz6ayzp06t4uc7r566vxwwgrv24hglq9zju0n <03271c724b51c287eb37fc1633105ae90417e975e63c3a6b4c339c81b155ba3e@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: npub1zurdm6fx3kksz8f8d8y4js3mvjyu3rshlpqejr8wa8hta5tsqqeshmes7w <1706dde9268dad011d2769c959423b6489c88e17f841990ceee9eebed1700033@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qvn3cujt28pg06ehlstrxyz6ayzp06t4uc7r566vxwwgrv24hglq9zju0n <03271c724b51c287eb37fc1633105ae90417e975e63c3a6b4c339c81b155ba3e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1zurdm6fx3kksz8f8d8y4js3mvjyu3rshlpqejr8wa8hta5tsqqeshmes7w <1706dde9268dad011d2769c959423b6489c88e17f841990ceee9eebed1700033@sprout-oss.stage.blox.sqprod.co >
2026-07-16 22:25:38 -07:00
Bradley Axen
76298a5e2b
fix(desktop): restore public relay media previews in 0.4.12 ( #2014 )
...
Signed-off-by: npub1qvn3cujt28pg06ehlstrxyz6ayzp06t4uc7r566vxwwgrv24hglq9zju0n <03271c724b51c287eb37fc1633105ae90417e975e63c3a6b4c339c81b155ba3e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qvn3cujt28pg06ehlstrxyz6ayzp06t4uc7r566vxwwgrv24hglq9zju0n <03271c724b51c287eb37fc1633105ae90417e975e63c3a6b4c339c81b155ba3e@sprout-oss.stage.blox.sqprod.co >
2026-07-17 03:13:59 +00:00
Bradley Axen
64c63daf02
chore(release): release Buzz Desktop version 0.4.11 ( #2010 )
...
Signed-off-by: npub1k766u8wq088nkr9vy94uqlh9kmw5956g593a7xk7cks7frhgctmsr00p27 <b7b5ae1dc079cf3b0cac216bc07ee5b6dd42d348a163df1adec5a1e48ee8c2f7@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1k766u8wq088nkr9vy94uqlh9kmw5956g593a7xk7cks7frhgctmsr00p27 <b7b5ae1dc079cf3b0cac216bc07ee5b6dd42d348a163df1adec5a1e48ee8c2f7@sprout-oss.stage.blox.sqprod.co >
2026-07-16 20:50:03 -04:00
Wes
249492685c
chore(release): release Buzz Desktop version 0.4.10 ( #1997 )
2026-07-16 14:41:42 -07:00
Tyler
74f3f29758
feat(desktop): ensure starter channels during onboarding ( #1937 )
...
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co >
2026-07-16 15:40:48 -04:00
Wes
73b885c5d7
chore(release): release Buzz Desktop version 0.4.9 ( #1986 )
2026-07-16 12:06:57 -07:00
Wes
a1626f96ce
fix(desktop): preserve relaunch through mesh shutdown ( #1966 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-07-16 10:57:13 -07:00
Wes
b1ff68246f
chore(release): release Buzz Desktop version 0.4.8 ( #1973 )
2026-07-16 10:16:33 -07:00
Wes
974703ad86
chore(release): release Buzz Desktop version 0.4.7 ( #1955 )
2026-07-16 08:13:52 -07:00
Wes
e1865cb7f7
fix(desktop): stop marking users away while active on the machine ( #1942 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-15 21:47:15 -07:00
Tyler
0722346b1f
Add Buzz-managed Node runtime for agent installs ( #1930 )
...
Signed-off-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co >
2026-07-15 23:11:44 -04:00
Wes
371ab872e1
chore(release): release Buzz Desktop version 0.4.6 ( #1911 )
2026-07-15 11:18:58 -07:00
Michael Neale
54638ff4bb
mesh: upgrade runtime, enforce membership, add shared compute provider ( #1656 )
2026-07-15 10:10:29 -04:00
Will Pfleger
a2fd5f8139
chore(release): release Buzz Desktop version 0.4.5 ( #1889 )
2026-07-14 22:22:21 -04:00
Wes
8ed4405080
chore(release): release Buzz Desktop version 0.4.4 ( #1873 )
2026-07-14 21:55:28 +00:00
Wes
8b2dd6d51a
chore(release): release Buzz Desktop version 0.4.3 ( #1868 )
2026-07-14 12:57:11 -07:00
Will Pfleger
9c4ed39382
chore(release): release Buzz Desktop version 0.4.2 ( #1798 )
2026-07-13 18:04:15 -04:00
renovate[bot]
f1f5002a97
chore(deps): update rust crate nostr to v0.44.4 ( #1789 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-13 08:36:47 -07:00
Will Pfleger
188ad63777
chore(release): release Buzz Desktop version 0.4.1 ( #1740 )
2026-07-12 22:40:01 -04:00
Will Pfleger
13dded7195
chore(release): release Buzz Desktop version 0.4.0 ( #1730 )
2026-07-10 20:20:51 +00:00
klopez4212
cdba2a08e1
Polish Buzz sidebar theme ( #1671 )
...
Signed-off-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
2026-07-09 08:10:24 -07:00
Wes
75079c87ff
chore(release): release Buzz Desktop version 0.3.46 ( #1585 )
...
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
2026-07-07 13:05:46 -04:00
Will Pfleger
683f7fec1c
feat(desktop): add "Copy image" to image right-click context menu ( #1579 )
2026-07-07 10:27:47 -06:00
Will Pfleger
5f7f774ea1
chore(release): release Buzz Desktop version 0.3.45 ( #1561 )
2026-07-06 19:15:02 -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
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