Michael Neale
2a947e383d
Merge branch 'main' into micn/serverless-mode
...
* main: (128 commits)
perf(timeline): gate heavy message render behind useDeferredValue (#1022 )
Add animated profile avatars (#1031 )
Polish direct message and members modals (#1054 )
Polish huddles UI (#1041 )
Fix video review comments in threads (#1056 )
Polish message reaction tray (#1002 )
Refine app loading skeletons (#1001 )
Polish channel modal forms (#1000 )
Normalize desktop icon sizing (#999 )
Add shared skeleton loader primitives (#998 )
chore(scripts): update post-screenshots repo name to block/buzz (#1042 )
docs: fix stale sprout repo references in RELEASING.md (#1043 )
chore(release): release version 0.3.23 (#1040 )
fix(release): publish manifest from successful platforms (#1039 )
chore(release): release version 0.3.22 (#1038 )
chore(release): release version 0.3.21 (#1037 )
fix(release): use signed NSIS installer for updates (#1036 )
handoff: pass full session history to summarizer (#1033 )
feat(emoji): latest-set-wins union for custom emoji across desktop, mobile, and CLI (#989 )
Fix relay NIP-11 software URL (#1030 )
...
# Conflicts:
# Cargo.lock
# crates/buzz-acp/src/config.rs
# crates/buzz-acp/src/relay.rs
# crates/buzz-acp/src/serverless_relay.rs
# crates/buzz-cli/src/client.rs
# crates/buzz-cli/src/commands/channels.rs
# crates/buzz-cli/src/commands/mem.rs
# crates/buzz-cli/src/lib.rs
# desktop/scripts/check-file-sizes.mjs
# desktop/src-tauri/Cargo.lock
# desktop/src-tauri/src/commands/messages.rs
# desktop/src-tauri/src/commands/mod.rs
# desktop/src-tauri/src/events.rs
# desktop/src-tauri/src/lib.rs
# desktop/src-tauri/src/managed_agents/runtime.rs
# desktop/src-tauri/src/relay.rs
# desktop/src/app/AppShell.tsx
# desktop/src/app/AppTopChrome.tsx
# desktop/src/features/messages/hooks.ts
# desktop/src/features/sidebar/ui/AppSidebar.tsx
# desktop/src/features/workspaces/ui/AddWorkspaceDialog.tsx
# desktop/src/features/workspaces/ui/WelcomeSetup.tsx
# desktop/src/features/workspaces/workspaceStorage.ts
# desktop/src/shared/api/tauri.ts
# justfile
2026-06-16 13:09:55 +10:00
d99ad131f1
refactor: rename sprout backend to buzz ( #958 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
Signed-off-by: Will Pfleger <wpfleger@squareup.com >
Signed-off-by: Will Pfleger <wpfleger96@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub16v54tttfqacx9ycvc3k0ut0npj564ahcuajzy6qjvh57ntmsf4uq4806j2 <d32955ad69077062930cc46cfe2df30ca9aaf6f8e76422681265e9e9af704d78@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Will Pfleger <wpfleger96@gmail.com >
2026-06-10 19:29:51 -04:00
Michael Neale
15f038748f
Merge remote-tracking branch 'origin/main' into micn/serverless-mode
...
* origin/main:
chore(release): release version 0.3.12 (#886 )
Show hover cards for inline message emoji (#885 )
Fix monotonic read-state merges (#884 )
Refine sidebar behavior and borders (#869 )
fix(presence): clear on disconnect, fix heartbeat/TTL, drop broken REST path (#877 )
fix(cli): publish ephemeral events over WebSocket via sprout-ws-client (#876 )
docs(sprout-acp): add communication discipline rules to base prompt + deprecate --mention flag (#883 )
Polish thread summaries and reactions (#881 )
feat(cli): add emoji export and import subcommands (#882 )
Polish message row hover states (#880 )
Improve emoji naming and custom emoji UX (#878 )
docs: add ecosystem section to CONTRIBUTING.md, fix stale release info (#873 )
fix(relay): wire custom filter fields through HTTP bridge (#864 )
chore: deprecate sprout-mcp — fill CLI gaps, remove crate and all references (#850 )
Fix custom emoji status in profile popover (#874 )
fix(agent): gate handoff on provider token usage, not byte estimate (#821 )
docs: add VISION_MESH.md — the compute-commons vision (#867 )
fix(desktop): simplify profile popover header (#853 )
fix(desktop): remove thread comment hover outline (#861 )
feat(desktop): always show channel section search/add buttons (#856 )
# Conflicts:
# crates/sprout-cli/src/client.rs
# desktop/src/app/AppShell.tsx
# justfile
2026-06-06 15:21:14 +10:00
Will Pfleger and GitHub
ef98ae942a
fix(cli): publish ephemeral events over WebSocket via sprout-ws-client ( #876 )
2026-06-05 16:26:30 -04:00
Will Pfleger and GitHub
f1c672fea5
chore: deprecate sprout-mcp — fill CLI gaps, remove crate and all references ( #850 )
2026-06-05 12:31:52 -04:00
Michael Neale
cc9b0b22c4
refactor(serverless): back agent relay layer with nostr-relay-pool
...
The serverless agent path hand-rolled multi-relay subscribe/reconnect/
resubscribe/dedup in relay.rs — reimplementing what nostr-relay-pool
(rust-nostr) already does, with gaps that caused the agent to miss
messages when a single relay 502'd mid-session.
Replace the serverless backend with nostr-relay-pool's RelayPool, which
provides the standard Nostr client model used by damus/0xchat/nostr-tools:
- persistent REQ per relay, fanned out across all relays
- auto-reconnect (default) with jittered backoff
- auto-resubscribe on reconnect (relays replay stored events on REQ)
- merge + dedup across relays (Event notification = first-seen only)
HarnessRelay now dispatches to ServerlessRelay when serverless; server
mode (NIP-42 AUTH + HTTP bridge) is unchanged. RestClient and the typing/
presence publisher share the pool. Subscription IDs match the server-mode
scheme so event routing is identical.
Proven: e2e_agent_responds passes 3x consecutively (~3s each) against live
public relays, surviving damus 503s via nos.lol.
- 272 unit tests pass, clippy clean
2026-06-03 07:16:12 +10:00
Michael Neale
b93eb61570
feat(serverless): agents receive NIP-17 encrypted messages (sprout-acp)
...
The agent harness now subscribes to its own gift-wrap inbox (kind 1059,
#p = agent) alongside membership notifications, unwraps each, recovers
the inner kind-9 rumor (verified sender + h tag), and forwards it as a
normal SproutEvent. The respond-to allowlist gate and rule matching run
unchanged — so an agent in an encrypted private channel only responds to
blessed npubs, exactly as on the Sprout server.
- send_gift_wrap_subscribe (mirrors observer-control), tied to membership
sub (active + reconnect restore)
- dispatch: 1059 on GIFT_WRAP_SUB_ID -> UnwrappedGift -> rumor_to_event
- rumor_to_event: UnsignedEvent -> Event (seal already verified sender;
pipeline never reads .sig)
- nip59 enabled workspace-wide; unit test covers unwrap->channel event
2026-06-02 10:15:56 +10:00
efa93c4383
chore(deps): update rust crate sqlx to 0.9 ( #740 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Will Pfleger <wpfleger@block.xyz >
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
2026-05-25 21:32:34 +00:00
tlongwell-block and GitHub
86f4c5d9a9
docs: fix stale claims, remove counts, purge LiveKit references ( #742 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-24 13:09:34 -04:00
Will Pfleger and GitHub
a65b7fc06f
fix(deps): migrate nostr crate from 0.36 to 0.44 ( #708 )
2026-05-22 17:17:11 -04:00
Will Pfleger and GitHub
d0d2670fe2
fix(deps): upgrade redis 1.0 and deadpool-redis 0.23 together ( #703 )
2026-05-21 17:55:44 -04:00
tlongwell-block and GitHub
70cb53e2c7
Add Sprig all-in-one agent binary ( #605 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
2026-05-17 13:31:58 -04:00
tlongwell-block and GitHub
082414bf3f
feat: sprout-agent + sprout-dev-mcp — minimal ACP coding agent ( #493 )
2026-05-10 22:33:58 -04:00
Bradley Axen and GitHub
c6da3a72ab
Add countdown bot reference example ( #516 )
2026-05-08 15:39:40 -07:00
0dcfa86f84
chore: remove dead API token references from GUI, docs, and config ( #498 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-07 19:07:44 +00:00
3a12369491
feat: serve web UI from relay + repos page redesign ( #479 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-05 19:20:13 +00:00
tlongwell-block and GitHub
15bd9ba2ac
feat: sprout-pair-relay — ephemeral sidecar for NIP-AB device pairing ( #467 )
2026-05-03 21:07:36 -04:00
tlongwell-block and GitHub
1feb18e2e0
feat(git-sign-nostr): implement NIP-GS git object signing with Nostr keys ( #459 )
2026-05-03 10:05:30 -04:00
tlongwell-block and GitHub
121737f93f
NIP-34 git transport: Smart HTTP hosting with NIP-98 auth ( #419 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
2026-04-29 18:04:59 -04:00
tlongwell-block and GitHub
b8d6a5cf8b
feat: NIP-AB device pairing — Phase 1 (core library + CLI) ( #333 )
2026-04-16 14:56:36 -04:00
tlongwell-block and GitHub
811c8f3f07
Replace LiveKit with WebSocket Opus audio relay ( #326 )
2026-04-15 15:02:27 -04:00
4c6c897d11
fix(ci): build relay with optimized profile to fix flaky e2e tests ( #307 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 11:04:46 -07:00
tlongwell-block and GitHub
d07385fe02
feat: Markdown-based persona packs (crate + ACP + desktop) ( #297 )
2026-04-11 13:32:14 -04:00
7a9218ba54
Update all non-major dependencies ( #248 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Wes <wesb@block.xyz >
2026-04-08 11:55:11 -07:00
tlongwell-block and GitHub
1dcba0a200
feat(acp): reliability hardening — bulletproof the harness agents live in ( #200 )
2026-03-27 18:25:18 -04:00
tlongwell-block and GitHub
25ed2dcc23
feat: event-first refactor — unified ingest pipeline, SDK, client migrations ( #162 )
2026-03-24 13:38:36 -04:00
tlongwell-block and GitHub
4c9b8aae9c
feat: sprout-cli — agent-first CLI with full MCP parity (48 commands) ( #158 )
2026-03-21 21:23:32 -04:00
6093fc6066
feat: migrate from MySQL to Postgres with pgschema ( #114 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
Co-authored-by: Tyler Longwell <tlongwell@squareup.com >
2026-03-19 12:35:22 -04:00
tlongwell-block and GitHub
7fd9f7ae78
feat(metrics): Prometheus observability + CAKE container contract ( #88 )
2026-03-17 19:00:44 -04:00
tlongwell-block and GitHub
2b08ad80d0
feat: Blossom-compatible media upload (sprout-media crate + relay + desktop) ( #66 )
2026-03-15 15:17:10 -04:00
tlongwell-block and GitHub
f84da74d3f
feat: self-service token minting via NIP-98 HTTP Auth ( #37 )
2026-03-12 10:11:56 -04:00
4ecb5d3be2
feat: add sprout-acp harness — bridges Sprout events to ACP agents ( #10 )
...
Co-authored-by: Tyler Longwell <tlongwell@block.xyz >
2026-03-10 22:53:32 -04:00
Wes and GitHub
629c99fd2f
feat: add desktop app ( #3 )
2026-03-09 13:02:11 -07:00
tlongwell-block and GitHub
058c4b92a9
Initial release — Sprout Nostr relay with enterprise extensions ( #2 )
2026-03-09 15:15:25 -04:00