Commit Graph
1137 Commits
Author SHA1 Message Date
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7andWill Pfleger 5a94a19202 fix(ci): rustfmt, missing OwnedAgent field, nest.rs file-size override
Three CI failures on head 30e25b4a:

Rustfmt: run `just fmt` — collapses no_p let in req.rs:1341, the
publish_event() call in main.rs:747, alpha-orders test use imports in
main.rs:1020, and reflowed lines in relay.rs + event.rs that fell
over the column limit.

E0063 OwnedAgent missing field: the branch was 25 commits behind main
after #887 (config-bridge) added model_overridden: bool to OwnedAgent.
The dream test dummy_agent() helper at lib.rs:4593 didn't set it. Fix:
add model_overridden: false, matching the adjacent field pattern.

nest.rs file-size override: dream-skill scaffolding (+76 lines) pushed
nest.rs to 1526 (gate-count) over the prior 1450 ceiling. Bumped the
override in desktop/scripts/check-file-sizes.mjs with a one-line
rationale comment noting the dream-skill addition mirrors the buzz-cli
seam already in the module; queued to split with the rest of the list.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-06-30 15:01:40 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7andWill Pfleger 7c7d3f0c34 chore: merge origin/main into duncan/dream-harness
Brings the branch current with main (25 commits) before CI green run.
Auto-merged — no conflicts.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-06-30 15:01:28 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7andWill Pfleger 30e25b4a41 fix(relay): gate KIND_DREAM_DUE on matching #p to prevent info leak
KIND_DREAM_DUE (24300) was absent from P_GATED_KINDS, so
p_gated_filters_authorized() never enforced #p-must-match-self for it.
Any authenticated relay user could subscribe with kinds:[24300],
#p:[victim_pubkey] and receive another agent's dream-due signals,
leaking "agent X is over memory budget and idle" to anyone who knows
an agent pubkey.

The kind's own doc already states "single-delivery to the authenticated
agent"; P_GATED_KINDS is the registry that makes the relay enforce it.

Fix: add KIND_DREAM_DUE to P_GATED_KINDS. Ephemeral kinds are included
in this list for filter-layer enforcement only and are never stored, so
no schema/migration/tsvector change is needed.

The ACP harness's own subscription (DREAM_SIGNAL_SUB_ID, #p=[self])
continues to be accepted — the self case is exactly what P_GATED_KINDS
allows through.

Test: dream_due_subscription_requires_matching_p_tag verifies:
- no #p  →  rejected
- #p:[other]  →  rejected
- #p:[self]  →  accepted
Confirmed: test fails without the registry add and passes with it.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-06-30 14:47:51 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7andWill Pfleger ef963a3353 fix(acp): wire dream-due subscription and fix idle gate
Addresses three Thufir pass-1 review findings:

[CRITICAL] ACP now subscribes to KIND_DREAM_DUE
The relay sweep emits KIND_DREAM_DUE as a global #p-tagged ephemeral event.
The old code relied on the membership subscription (hard-coded to only
KIND_MEMBER_ADDED_NOTIFICATION + KIND_MEMBER_REMOVED_NOTIFICATION) to deliver
it — a false assumption. The event was never received.

Fix: dedicate a DREAM_SIGNAL_SUB_ID subscription (kinds: [KIND_DREAM_DUE],
#p=[agent_pubkey], no #h). Infrastructure mirrors the existing membership and
observer-control subscriptions:
- DREAM_SIGNAL_SUB_ID = "dream-signal" const in relay.rs
- SubscribeDream RelayCommand variant
- dream_sub_active flag in BgState
- send_dream_subscribe() + build_dream_req_filter() helper functions
- Routing: forwards BuzzEvent { channel_id: Uuid::nil(), event } for
  KIND_DREAM_DUE events — nil sentinel is safe because lib.rs checks
  kind_u32 == KIND_DREAM_DUE before any code touches channel_id (continue)
- CLOSED handler resubscribes or triggers reconnect
- resubscribe_after_reconnect() restores dream sub after socket loss
- subscribe_dream_signals() public method on HarnessRelay
- Called in lib.rs right after subscribe_membership_notifications() at startup

No watermark/replay needed: dream-due events are ephemeral relay-initiated
signals. A missed one is safe — the relay sweep re-emits on the next interval.

[IMPORTANT] Honest idle gate comment with design rationale
The relay-side idle gate is intentionally a coarse pre-filter: no live presence
key = no heartbeat in 90s = probably idle. This is by design, not an oversight.
The real over-fire protection is agent-side: maybe_dispatch_dream() requires no
flushable queue work, no heartbeat in flight, and an idle agent in the pool;
dream runs at lowest priority and is preemptible via ControlSignal::Cancel.
A false "idle" from the relay costs nothing — the agent ignores it or runs a
preemptible low-priority turn.

The idle gate logic is extracted into agent_is_idle(presence: Option<&str>) -> bool
in buzz-relay/main.rs — a pure function that makes the binary decision testable
without a Redis integration harness.

No last_turn_ended_at column exists in the DB; a timestamp-based gate is not
implementable. Presence-TTL (90s) is the only available signal.

[IMPORTANT] Subscription filter tests + idle gate boundary tests
Six tests in relay::dream_subscription_tests pin the NIP-01 filter contract:
- KIND_DREAM_DUE is present in kinds
- Exactly one kind (no accidental broadening)
- #p contains the agent pubkey
- No #h (global, not channel-scoped)
- Different pubkeys produce different filters
- DREAM_SIGNAL_SUB_ID is distinct from MEMBERSHIP_NOTIF_SUB_ID and
  OBSERVER_CONTROL_SUB_ID

Four tests in relay::tests cover the idle gate:
- live "online" presence blocks
- live "away" presence blocks
- any non-None status blocks
- None (expired/absent) allows

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-06-30 14:34:52 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7andWill Pfleger 22009749e0 feat(acp): add dream memory consolidation — dispatch, skill, relay sweep
Implements the full dream consolidation system across four areas:

**1. Dispatch liveness (Thufir IMPORTANT #1)**
Extracts `maybe_dispatch_dream()` helper, called at four state-transition
points: after KIND_DREAM_DUE receipt, after heartbeat fires (idle gap),
after prompt result + drain, after panic recovery + drain. Removes the
old else-if chain that made dream reachable only when a heartbeat was
already in flight — fixing both starvation modes:
- Single-agent pool + fast heartbeat: dream now fires in the idle gap
  after heartbeat completes, not waiting for a concurrent heartbeat slot.
- Heartbeat disabled: dream fires immediately on dream-due receipt.
Guard: no flushable queue work, dream_pending, !dream_in_flight,
!heartbeat_in_flight, idle agent. Preserves pending > heartbeat > dream
priority.

**2. Skill distribution via Nest scaffolder (Will's requirement)**
Adds nest_dream_skill.md (include_str!'d as DREAM_SKILL_MD), written
to .agents/skills/dream/SKILL.md at Nest init, mirroring the buzz-cli
skill pattern (nest.rs:42-174). Includes NEST_DREAM_SKILL_VERSION=1
for refresh-on-bump, refresh_dream_skill_md_if_stale() with atomic
tempfile write, and dream skill symlinks in ensure_skill_symlinks() for
all known provider dirs (.goose/skills, .claude/skills, etc.).
This makes load_dream_prompt()'s cwd-relative read correct — the Nest
IS the cwd, and the scaffolder now guarantees the file.

**3. Missing prompt is startup-visible error (Thufir IMPORTANT #2)**
dispatch_dream() now logs tracing::error! (target: "dream") when the
prompt is None, returns the claimed agent, clears dream_pending so
it does not retry on every signal, and documents this as a
configuration error (missing SKILL.md). No more silent drop.

**4. Relay sweep + dream-due emission (Phase 3)**
In buzz-relay:
- Config: dream_memory_budget_bytes (default 65536, env
  BUZZ_DREAM_MEMORY_BUDGET_BYTES), dream_sweep_interval_secs (default
  300, env BUZZ_DREAM_SWEEP_INTERVAL_SECS). Set budget to 0 to disable.
- main.rs: spawns sweep task if budget > 0 and deployment_community
  is Some. Each interval: queries agents_over_memory_budget, idle-gates
  each via buzz_pubsub::presence::get_presence (no live Redis key = idle),
  builds KIND_DREAM_DUE ephemeral event tagged #p=[agent_pubkey], signs
  with relay keypair, publishes via pubsub.
- Staleness ceiling satisfied: presence TTL is 90s, default sweep is
  300s, so "no presence key" already implies > 90s silence.
In buzz-db: agents_over_memory_budget() aggregates SUM(LENGTH(content))
for non-tombstone kind:30174 engrams per community, returns agents
exceeding budget.

**5. Tests (Phase 4)**
Six unit tests in dream_dispatch_tests cover:
- Guard: dream_pending=false → no dispatch, agent not consumed.
- Guard: heartbeat_in_flight=true → blocked (priority order).
- Regression: heartbeat disabled → dream still dispatches.
- Guard: empty pool → pending preserved for next idle gap.
- Fix 3: missing prompt → pending cleared, agent returned, no task.
- Guard: dream_in_flight=true → no double dispatch.

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-06-30 14:09:51 -04:00
42ec17f137 fix(thread): stop mid-scroll content jump in live threads (#1397)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-30 10:04:34 -07:00
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
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
fdf29c457d fix(ci): restore E2E flakiness fixes for pgschema, docker-pull, and spec timing (#1396)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-30 15:46:06 +00:00
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
10aaa72f01 fix(buzz-acp): clear steer_rx on all run_prompt_task exit paths (#1391)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-30 11:41:17 -04:00
klopez4212andGitHub 0827171d5e Restore channel date divider rule (#1395) 2026-06-30 15:33:03 +00:00
klopez4212andGitHub 2fc5dd35b1 Speed up profile wave action (#1379) 2026-06-30 08:27:12 -07:00
klopez4212andGitHub 8d8fc6331f Restore visible links for rich previews (#1378) 2026-06-30 08:26:45 -07:00
09d8965ab6 Mobile channel list polish (#1367)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-06-30 08:25:16 -07:00
2f496debce style(desktop): unify corner radii to rounded-2xl (16px) (#1393)
Signed-off-by: Kenny Lopez <kennylopez@block.xyz>
Co-authored-by: npub1qmhy2ax8zfuwa935x3g9sczmqsnykvrj88gy5e9v7qw8ez6atpqssdvu6y <06ee4574c71278ee9634345058605b04264b307239d04a64acf01c7c8b5d5841@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Kenny Lopez <kennylopez@block.xyz>
2026-06-30 08:11:34 -07:00
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
2044ad76f3 fix(desktop): stop clipping the agent-activity row under the composer (#1371)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-30 08:03:37 -07:00
thomaspblockandGitHub 9b711f47a7 Constrain macOS overscroll to conversations (#1317)
Signed-off-by: Thomas Petersen <thomasp@squareup.com>
2026-06-30 10:58:57 -04:00
klopez4212andGitHub 945e9b879a Mobile appearance foundation (#1366) 2026-06-30 07:22:55 -07:00
Will PflegerandGitHub 325b3fdb0d chore(release): release Buzz Desktop version 0.3.38 (#1375) v0.3.38 2026-06-29 22:50:46 -04:00
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
2561cbd069 release(helm): buzz chart 0.1.1 (#1374)
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>
chart-v0.1.1
2026-06-29 20:24:49 -04:00
Jordan MecomandGitHub 29368cf17b Harden relay attack surfaces (#1369) 2026-06-29 20:17:52 -04:00
2722ce4226 ci(helm): publish chart to GHCR on chart-v* tags (#1372)
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@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-06-29 20:07:56 -04:00
Kalvin CandGitHub 15a73aa27f feat(buzz-agent): add databricks_v2 provider for AI Gateway v2 (#1311) 2026-06-29 15:46:02 -07:00
e6738c5015 refactor(desktop): centralize auxiliary panel shell (#1343)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
2026-06-29 16:19:48 -06:00
db1b617ab1 perf(desktop): stop typing from re-rendering the channel pane + timeline (#1364)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-29 21:30:10 +00:00
59be27ff3f fix(desktop): check PGID in orphan sweep and signal correct process groups (#1359)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-29 17:13:59 -04:00
c65989a61b feat(desktop): harness-agnostic config bridge (#887)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <wpfleger@block.xyz>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-29 16:51:32 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7andWill Pfleger 788ea86e79 feat(acp): add dream consolidation dispatch and preemption
Implement Phase 2 of the dream skill: harness-side dispatch logic for
memory consolidation turns. Dream is lowest-priority (pending work >
heartbeat > dream), preemptible by any inbound event, and follows the
heartbeat session lifecycle (reuse until invalidated on cancel).

Key additions:
- KIND_DREAM_DUE (24300) ephemeral event constant in buzz-core
- PromptSource::Dream variant with full match coverage
- Dream session management (create once, reuse, invalidate on cancel)
- dispatch_dream() with control_tx for preemption
- Dream-due event detection sets pending flag (dispatch on next tick)
- cancel_in_flight_dream() fires Cancel on any accepted inbound event
- Panic recovery clears dream_in_flight via is_dream on TaskMeta
- load_dream_prompt() reads .agents/skills/dream/SKILL.md at startup

Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
2026-06-29 16:49:25 -04:00
401bb51bf2 fix(acp): enable sandbox network access for Codex MCP subprocesses (#1363)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
2026-06-29 16:35:15 -04:00
cf57bcbea4 perf(desktop): don't block channel create on channel-list refetch (#1360)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-29 12:55:31 -07:00
c27b4251a9 refactor(desktop): split global styles and markdown renderers (#1361)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-06-29 12:49:36 -07:00
2612324fd9 feat(read-state): multi-slot splitting + no-op suppression for oversized blobs (#1309)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co>
2026-06-29 14:20:28 -04:00
50873ef98d fix: unconditionally replace CLI symlink on boot (#1357)
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co>
2026-06-29 14:12:02 -04:00
WesandGitHub 6ae8bdfbfd chore(release): release Buzz Desktop version 0.3.37 (#1355) v0.3.37 2026-06-29 17:30:45 +00:00
dc612c9af6 feat(chart): render extraManifests and serviceMonitor (#1348)
Signed-off-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: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
2026-06-29 13:26:40 -04:00
e567491a19 feat(buzz-acp): steering as the default mid-turn mention delivery (#1160)
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Co-authored-by: npub17jjz49l9jjmhhk7cac63j8yt9z555n9cw8vk7v5jz4vzw4ppld5qgj57cc <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Will Pfleger <pfleger.will@gmail.com>
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co>
2026-06-29 13:18:56 -04:00
+1 14fba21e57 Multi-tenant Buzz relay: community_id as a server-resolved key (comprehensive rewrite) (#1321)
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com>
Signed-off-by: npub1jh9wn95s0472h86ahapupaf7m6kx4v9sx2n0atj2hltcfer8k06s5n3pyf <95cae996907d7cab9f5dbf43c0f53edeac6ab0b032a6feae4abfd784e467b3f5@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Signed-off-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub17jjz49l9jjmhhk7cac63j8yt9z555n9cw8vk7v5jz4vzw4ppld5qgj57cc <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Mari <95cae996907d7cab9f5dbf43c0f53edeac6ab0b032a6feae4abfd784e467b3f5@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Sami <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Max <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Quinn <96f056ad5f2305c8ddf637dc65d048aa4c12d7daeb8867690e34fca46b0ef64c@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Dawn <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
Co-authored-by: Sami <sami@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co>
2026-06-29 12:39:02 -04:00
klopez4212andGitHub 92a5f1fc66 Disable persona start while runtime discovery runs (#1353) 2026-06-29 09:37:08 -07:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1c221eaafd chore(deps): update dependency @tanstack/react-virtual to v3.14.4 (#1342)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-29 16:35:27 +00:00
51b2613c0e Fix sidebar unread indicator placement (#1319)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-06-29 09:18:16 -07:00
7adbd05b45 fix(desktop): un-clip hover action bar's upward bleed under content-visibility (#1354)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-29 09:17:08 -07:00
klopez4212andGitHub b58f671b4e Allow Huddle between 2 humans in DM (#1347) 2026-06-29 16:49:16 +01:00
WesandGitHub 72dee87c8a chore(release): release Buzz Desktop version 0.3.36 (#1352) v0.3.36 2026-06-29 15:11:08 +00:00
klopez4212andGitHub a3c4f3f625 Polish agent runtime cards (#1327) 2026-06-29 14:58:23 +00:00
4d6196934e Rework desktop message-timeline scrolling: de-virtualize + native overflow-anchor (#1338)
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-29 07:56:48 -07:00
klopez4212andGitHub c1d6f3f291 Keep wave huddles pending for placeholder profiles (#1349) 2026-06-29 07:39:55 -07:00
klopez4212andGitHub e3fc0e0278 Polish profile hover cards (#1346) 2026-06-29 13:45:48 +00:00