npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
8b077fdb44
Wire mesh crate into relay startup behind BUZZ_MESH seam
...
- MeshRuntime (buzz-relay-mesh): iroh endpoint ownership, warm peer
dial/accept loops, per-peer control streams with gossip digest/delta
exchange, registry-driven reconcile, drain flag, status snapshot.
- boot_mesh (buzz-relay/mesh_boot.rs): BUZZ_MESH=off returns None with
zero binds/spawns/Redis I/O (mesh-off byte-identical); enabled boots
endpoint on BUZZ_MESH_BIND_ADDR, signs relay-key attestation into the
ready registry, spawns runtime. Misconfig while enabled is fatal.
- AppState.mesh via OnceLock set post-construction in main.rs; accessor
state.mesh() -> Option<&MeshHandle>. No AppState::new call sites touched.
- /_mesh status route on the health router; reports enabled:false when off.
- membership: has_peer/records/digest/delta_for; endpoint: ip_addrs().
cargo test -p buzz-relay-mesh: 30 passed; -p buzz-relay: 491 passed,
2 ignored; clippy both packages clean.
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-08 12:43:32 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
59a7ce3617
Merge perci/relay-mesh-directory: Redis fenced session directory
...
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
* origin/perci/relay-mesh-directory:
Add Redis fenced tunnel session directory
2026-07-08 11:12:25 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
c980af3619
Merge dawn/relay-mesh-audio: cross-pod huddle media over mesh datagrams
...
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
* origin/dawn/relay-mesh-audio:
feat(relay/audio): cross-pod huddle media over mesh datagrams
2026-07-08 11:10:03 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
dcaca90c47
Merge mari/relay-mesh-transport-impl: iroh endpoint + peer transport
...
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-08 11:09:52 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
c2cceda7da
Merge max/relay-mesh-membership: registry, gossip, status
...
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
* origin/max/relay-mesh-membership:
feat(mesh): add membership registry and gossip
2026-07-08 11:09:14 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
2cf5edb053
Merge sami/mesh-testbed: local k8s 3-replica testbed harness
...
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
* origin/sami/mesh-testbed:
feat(deploy): local docker-desktop k8s mesh testbed (3-replica HA)
2026-07-08 11:09:05 -04:00
npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr and Tyler Longwell
f7ad41c107
Add Redis fenced tunnel session directory
...
Co-authored-by: Tyler Longwell <tlongwell@squareup.com >
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
2026-07-08 11:08:18 -04:00
npub1jh9wn95s0472h86ahapupaf7m6kx4v9sx2n0atj2hltcfer8k06s5n3pyf and Tyler Longwell
b9feb446c0
Add iroh transport core for relay mesh
...
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-08 11:03:07 -04:00
npub17jjz49l9jjmhhk7cac63j8yt9z555n9cw8vk7v5jz4vzw4ppld5qgj57cc
39673d1e67
feat(deploy): local docker-desktop k8s mesh testbed (3-replica HA)
...
Baseline the mesh lanes redeploy onto: build image -> helm install
quickstart HA (3 replicas) -> 3/3 Ready. Repeatable via
deploy/local/build-and-deploy.sh; evidence dir per run.
Chart fixes for multi-replica quickstart:
- Bucket-init as a NORMAL resource (revision-suffixed), not a helm hook:
the relay's A3 S3 conformance probe is startup-fatal and does not
create the bucket, so a post-install hook deadlocks against --wait
(relay never Ready without the bucket) and a pre-install hook deadlocks
against MinIO (a normal resource). Running the Job alongside MinIO +
the Deployment lets its until-loop gate cleanly.
- Relay initContainer waits for the bucket before start, replacing the
transient CrashLoopBackOff with a deterministic gate.
Dockerfile: optional EXTRA_CA_CERTS + NPM_REGISTRY build-args for builds
behind a TLS-intercepting corporate proxy / registry mirror. No-op on
public CI (args unset).
HA values: replicaCount 3 + persistence.git.enabled=false (per-pod
emptyDir; the default single RWO PVC cannot multi-attach across pods).
Co-authored-by: npub17jjz49l9jjmhhk7cac63j8yt9z555n9cw8vk7v5jz4vzw4ppld5qgj57cc <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: npub17jjz49l9jjmhhk7cac63j8yt9z555n9cw8vk7v5jz4vzw4ppld5qgj57cc <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@sprout-oss.stage.blox.sqprod.co >
2026-07-08 11:02:39 -04:00
npub1cc3ha7z055mu0rwwu7806t2wt8mj3pvu0uv5mfp2c50dahaqhczshdalg6 and Tyler Longwell
2fd121c657
feat(relay/audio): cross-pod huddle media over mesh datagrams
...
MeshAudioRouter fences inbound media datagrams against a per-session
GenerationFloor (monotonic; stale generations dropped = the fence), then
delivers [peer_index][v2 hdr][Opus] to local room peers via Room's new
deliver_prefixed, skipping the author's own index. spawn_remote_peer_sink
models a cross-pod participant as an ordinary AudioPeer whose audio_tx sink
is drained onto the mesh, so Room stays transport-agnostic and broadcast_frame
is unchanged. Zero client-wire change: peer_index is relay-added routing
metadata, always the first payload byte in both directions.
Datagram half only; the HuddleControl remote-peer-registration stream path is
wired from handler.rs in a following change. 6 unit tests cover fence
monotonicity, per-session isolation, forget/reset, and drop-on-stale/empty.
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-08 11:01:37 -04:00
npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta
c40119b176
feat(mesh): add membership registry and gossip
...
Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-07-08 10:36:52 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
9a24af8aa9
feat(relay): mesh config seam — BUZZ_MESH / BUZZ_MESH_BIND_ADDR env parsing
...
Wires buzz-relay-mesh into buzz-relay: workspace + crate dependency, and
Config.mesh (buzz_relay_mesh::MeshConfig) resolved from env.
- BUZZ_MESH: on by default; 'off'/'false'/'0' is the incident kill
switch — the relay must behave exactly like a single-instance deploy.
- BUZZ_MESH_BIND_ADDR: UDP bind for the iroh endpoint, default
0.0.0.0:3478 (excluded from istio sidecar capture in k8s).
- registry_refresh fixed at 15s (ready-registry heartbeat; expiry 3x).
No behavior change yet: nothing constructs a mesh from this config —
AppState handle, /_mesh mount, and startup/drain wiring follow.
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-08 10:34:45 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
446a5a0f46
feat(mesh): typed fence-rejection taxonomy on MeshError
...
Adds NoActiveLease, OwnerMismatch, and FutureGeneration alongside
StaleGeneration so every fence-visible reject is a typed variant, never
a generic Transport(..) — Wren's chaos-gate ruling: live kill-9 /
partition / replay evidence must be unambiguous, and the harness
counters (mesh_fence_rejections_total{reason=...}) key off these.
Purely additive, non-serialized: the wire-level fence signal remains
GoodbyeReason::StaleGeneration in wire.rs — zero wire-shape change.
Field naming per Wren: NoActiveLease carries frame_owner_runtime_id
(the frame's *claimed* owner; no current owner exists by definition).
Consumed by the session-directory lane's validate_fenced_header().
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-08 10:34:15 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
93bec73809
fix(mesh): RuntimeId = boot-unique mesh endpoint key, not the relay signing key
...
Wren's contract-review blocker: the chart shares one BUZZ_RELAY_PRIVATE_KEY
Secret across all pods of a release, and that key is secp256k1 while iroh
endpoint ids are ed25519 — so 'runtime id = relay signing pubkey' would give
every pod the same runtime id (registry/lease collapse) and doesn't even
type-check against iroh. RuntimeId is now the ed25519 pubkey of a mesh
keypair generated fresh at process start: boot-unique by construction, and
identical to the iroh endpoint id so transport auth and ownership identity
stay one value. Deployment-identity binding moves out-of-band: the ready
registry record carries a relay-key-signed attestation of the runtime pubkey
(membership lane); peers accept connections only from attested endpoint ids.
Doc-only change; no wire shape or test change.
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-08 10:18:14 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
f29fd321f0
docs(mesh): pin Dawn's payload-layout ratification in the datagram contract
...
Doc-only: MeshDatagram.payload for realtime media is [peer_index: u8][client
frame] — peer_index is relay routing metadata allocated solely by the owner
pod; the media ciphertext stays NIP-44 end-to-end between clients. Ratified
in-thread (Dawn's design-lock post); no wire shape change.
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-08 10:10:44 -04:00
npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d and Tyler Longwell
5819fde839
feat(mesh): buzz-relay-mesh crate skeleton — frozen wire contract + relay seams
...
The contract every mesh lane builds against:
- wire.rs: ALPN buzz/mesh/1, WIRE_VERSION byte + postcard framing;
FencedHeader {session_id, generation, owner_runtime_id} on every
session-bearing frame (fencing law); MeshDatagram (realtime-media),
MeshStreamFrame (Hello/Data/Goodbye/Gossip) with u32-LE length-delimited
bi-stream framing; Profile {ReliableStream, RealtimeMedia, HuddleControl}.
- lib.rs: MeshConfig (BUZZ_MESH kill switch), MeshError taxonomy, and the
two relay seams — RelayMeshMembership (hints only) and RelayPeerTransport
(fenced bytes; size/version checks in transport, generation fencing in the
session layer at every hop).
Unit tests pin roundtrips, unknown-version rejection, and a 64B datagram
header overhead budget (Opus @20ms + header must clear the ~1200B QUIC
datagram floor).
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
Signed-off-by: Tyler Longwell <tlongwell@block.xyz >
2026-07-08 10:04:10 -04:00
5dce80aff5
feat(desktop): unified AgentRecord groundwork — record-first resolution + runtime materialization (Phase 1A.1) ( #1618 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-07 20:24:35 -07:00
d1f3194e73
fix(desktop): backfill edits for thread replies so edited replies survive refetch ( #1610 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-07 19:38:21 -07:00
36fd41c5ce
chore(desktop): clear desktop-tauri clippy backlog ( #1612 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-07-07 16:49:04 -07:00
Will Pfleger and GitHub
2a870f5f1f
docs(readme): add Getting started section routing install paths ( #1606 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
2026-07-07 17:36:08 -04:00
Will Pfleger and GitHub
e5f831d2c2
fix(desktop): restrict shared-agent sync to dev data dirs ( #1597 )
2026-07-07 17:35:15 -04:00
cc42a49799
feat(desktop): restart-required badge from spawn-time config hash ( #1602 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-07-07 13:53:58 -07:00
c5a541ee2d
feat(desktop): boot-time reconcile of managed agents to relay events ( #1601 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-07-07 13:53:41 -07:00
777babf393
feat(desktop): canonical <PubKey> component — hover to view/copy full keys, owner "you" labels ( #1589 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-07 13:35:15 -07:00
cdf982bdb3
fix(desktop): hydrate reactions for Inbox context messages ( #1596 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-07-07 12:29:56 -07:00
Will Pfleger and GitHub
7f1952d7de
fix: cleanup old screenshots that my agents committed ( #1598 )
2026-07-07 15:08:41 -04:00
75079c87ff
chore(release): release Buzz Desktop version 0.3.46 ( #1585 )
...
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
v0.3.46
2026-07-07 13:05:46 -04:00
Will Pfleger and GitHub
a3ee2c5693
fix(desktop): preserve agent model/provider when persona snapshot fields are blank ( #1583 )
2026-07-07 12:49:31 -04:00
Will Pfleger and GitHub
3c6c0d4478
feat(acp,desktop): identify and reap stale agent harness processes ( #1582 )
2026-07-07 12:49:16 -04:00
b394e95ef0
feat(desktop): active-draft badge, send-from-drafts confirm dialog, thread-deleted state ( #1581 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-07 12:48:57 -04:00
Will Pfleger and GitHub
b90e80443e
fix(desktop): treat baked build env vars as satisfying required agent config ( #1580 )
2026-07-07 12:30:31 -04:00
Will Pfleger and GitHub
683f7fec1c
feat(desktop): add "Copy image" to image right-click context menu ( #1579 )
2026-07-07 10:27:47 -06:00
dcbb3ff789
fix(nest): use buzz-dev symlink name for dev builds ( #1587 )
...
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-07 12:17:53 -04:00
49391d8071
fix(composer): address image-editor follow-up nits on #1491 ( #1565 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-07 08:38:38 -07:00
10444d248e
fix(desktop): render black static boot screen ( #1570 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-07 08:38:00 -07:00
426f044844
feat(agents): group activity tool bursts ( #1571 )
...
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-07 09:34:21 -06:00
thomaspblock and GitHub
c97263901f
feat(desktop): aggregated overview rail, commit detail page, and full breadcrumbs ( #1573 )
2026-07-07 08:29:29 -07:00
62def1459c
fix(desktop): fetch profiles for reaction actors and thread-reply authors ( #1550 )
...
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-07-07 08:19:49 -07:00
c258ffc4a8
refactor(desktop): unify EditAgentDialog styling with PersonaDialog ( #1540 )
...
Signed-off-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
2026-07-07 16:03:39 +01:00
564ead3856
feat(desktop): add 10-minute message grouping window ( #1578 )
...
Signed-off-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
2026-07-07 07:42:51 -07:00
d94561795a
feat(desktop): unify sidebar section actions into a per-section ⋮ menu ( #1577 )
...
Signed-off-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
2026-07-07 07:29:02 -07:00
ed84a87358
feat(desktop): emoji avatar picker for agents + reliable picker scroll ( #1576 )
...
Signed-off-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1n6taw59js7ztz8pt9vma9uqx6g3gcvrwg37nmx9m8lq88yla0tjqfy2ncn <9e97d750b28784b11c2b2b37d2f006d2228c306e447d3d98bb3fc07393fd7ae4@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub13fn4ahfnvaa2qwylvegdgeajqs0mph6v4qsw4jcqnw4mjh3hzh2quuucm5 <8a675edd33677aa0389f6650d467b2041fb0df4ca820eacb009babb95e3715d4@sprout-oss.stage.blox.sqprod.co >
2026-07-07 07:16:31 -07:00
1f5ba5bb27
fix(desktop): sync derived active-turn liveness in channel activity path ( #1492 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-07 03:59:23 +00:00
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
08e707eb57
feat(acp,buzz-agent): thread model name through NIP-AM kind 44200 emit path ( #1564 )
...
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-07-06 21:12:42 -04:00
04a9d10299
sync channel sort preferences across clients ( #1556 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-06 23:53:23 +00:00
2ef26ec210
fix desktop canvas header blur in split channel management ( #1558 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-06 16:46:31 -07:00
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
36ac5243ff
feat(channel list): add persistent channel sort toggle ( #1505 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
2026-07-06 16:31:22 -07:00
Will Pfleger and GitHub
5f7f774ea1
chore(release): release Buzz Desktop version 0.3.45 ( #1561 )
v0.3.45
2026-07-06 19:15:02 -04:00