Michael Neale
fc832f4d5d
fix(serverless): membership via direct kind:39002 (join/leave/add/remove) + CLI channel ops
...
In serverless mode there's no relay to process membership command kinds
(9021 join, 9022 leave, 9000/9001 add/remove member). The client now mutates
the replaceable kind:39002 member-list event directly (read-modify-write).
- desktop: join/leave/add/remove_channel_member publish 39002 directly
- sprout-sdk: build_channel_metadata_serverless (39000) +
build_channel_members_serverless (39002), shared builders
- sprout-cli: channels create/join/leave/add-member/remove-member serverless
branches (fixes agent replies + CLI parity with desktop)
Verified end-to-end against wss://relay.damus.io: create -> list -> send ->
read all round-trip with zero Sprout infrastructure.
2026-06-02 08:33:06 +10:00
Michael Neale
c508603543
feat(serverless): default public relays from deez mesh client
...
Add DEFAULT_PUBLIC_RELAYS (sourced from deez/crates/mesh-client
DEFAULT_RELAYS) as quick-pick chips when creating a serverless
workspace, in both the Add Workspace dialog and the Welcome screen.
- relay.damus.io, nos.lol, relay.nostr.band, nostr.land, nostr.wine
- chips one-tap fill the relay URL field (serverless mode only)
- DEFAULT_SERVERLESS_RELAY prefills when serverless is first enabled
2026-06-02 08:05:57 +10:00
Michael Neale
84f84931f1
feat(serverless): run channels, DMs, messages, and agents against a generic Nostr relay
...
Adds a 'serverless' workspace mode that points the desktop app at any generic
public Nostr relay (e.g. wss://relay.damus.io) with zero Sprout server
infrastructure — no Postgres, no HTTP /query|/events bridge, no NIP-98 auth.
Reuses Sprout's native event kinds (39000 channel metadata, 39002 membership,
kind 9 messages, h-tag scoping); 'serverless' is purely a transport + auth
concern, so the server-mode path is untouched.
Transport: reads/writes go over plain WebSocket (REQ/EOSE, EVENT/OK) instead
of the HTTP bridge; NIP-42 AUTH is answered only if the relay challenges.
Desktop backend:
- AppState.serverless flag + is_serverless(); apply_workspace gains a flag
- ws_relay.rs: query_relay_ws / submit_event_ws / publish_signed_event_ws
- relay.rs: query_relay/submit_event + agent profile sync branch to WS
- events.rs: build_channel_metadata_serverless (39000) + members (39002)
- create_channel/open_dm publish those events directly (DM ids = UUIDv5 over
sorted participants so both sides converge without a server)
- managed agents inherit SPROUT_SERVERLESS into the ACP subprocess env
Agents (full support, not a follow-up):
- sprout-acp: RestClient + HarnessRelay gain serverless mode; query/submit use
plain WS, NIP-42 handshake skipped on (re)connect; SPROUT_SERVERLESS env/arg
- sprout-cli: SproutClient serverless WS query/submit; --serverless flag,
to_ws_url helper, NetworkMsg error variant
- npub respond-to permissions are in-process and work unchanged
Frontend:
- Workspace.mode + workspaceMode()/isServerlessWorkspace() helpers
- relayClient.setServerless() skips the AUTH-wait on connect; late challenges
still answered so writes succeed on relays that require auth
- ServerlessContext/useIsServerless() hides search, pulse, projects, workflows
- Serverless toggle in the Add Workspace dialog and Welcome screen
Docs: docs/SPROUT_LITE_MODE.md updated with the implementation + testing steps.
2026-06-01 20:42:29 +10:00
thomaspblock
bc23620fcf
Fix desktop glass chrome and inbox previews ( #793 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-30 20:27:16 -07:00
Wes
995189c223
chore(release): release version 0.3.5 ( #799 )
2026-05-29 14:48:49 -07:00
Will Pfleger
10f37e4cab
feat(desktop): add standalone Playwright screenshot helper ( #795 )
2026-05-29 17:10:56 -04:00
Will Pfleger
85861f33fe
feat: add code block support to message composer ( #788 )
2026-05-29 11:38:10 -07:00
Will Pfleger
7beb0f8e68
fix(desktop): reap orphaned agent processes on shutdown and restart ( #787 )
2026-05-29 18:18:55 +00:00
Wes
8fc27b6554
chore(release): release version 0.3.4 ( #786 )
2026-05-29 09:50:08 -07:00
thomaspblock
d77b111b15
Update desktop navigation chrome and search ( #779 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-29 08:26:41 -07:00
tlongwell-block
5ee2cd0517
feat(desktop): reload webview on Cmd/Ctrl+R ( #785 )
2026-05-29 10:24:56 -04:00
Will Pfleger
fa7febe40f
fix(desktop): sync persona pack directory across worktree instances ( #782 )
2026-05-28 20:41:23 -04:00
Wes
a28a0e6b42
chore(release): release version 0.3.3 ( #781 )
2026-05-28 16:51:47 -07:00
Wes
c761a76ff2
fix(release): sync release tags during preflight ( #780 )
2026-05-28 16:29:25 -07:00
Will Pfleger
3f3ec64791
feat(desktop): thread-aware notifications with mutable follow/mute controls ( #761 )
2026-05-28 18:43:41 -04:00
Will Pfleger
03e678cfbc
fix(desktop): improve model picker message and runtime dropdown clarity ( #778 )
2026-05-28 18:21:12 -04:00
Wes
9db8f6ccb8
desktop: float unread indicator + fix sidebar scroll jump ( #777 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
2026-05-28 15:15:19 -07:00
Wes
8da9acbad9
chore(release): release version 0.3.2 ( #774 )
2026-05-28 12:00:40 -07:00
Wes
fec6a683ea
feat(sidebar): add More unread floating buttons ( #771 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
2026-05-28 11:05:02 -07:00
Taylor Ho
8eedec7403
chore: improve markdown spacing ( #766 )
2026-05-28 17:35:10 +00:00
Taylor Ho
835a44aad0
fix: prevent inline links rendering in 2-column grid layout ( #767 )
2026-05-28 17:34:35 +00:00
Wes
9a10e6281e
chore(release): release version 0.3.1 ( #769 )
2026-05-28 09:10:28 -07:00
Wes
30654e95f6
Polish desktop Pulse and Home views ( #764 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
2026-05-28 08:17:02 -07:00
Will Pfleger
bcd903edcc
feat(release): automate OSS release pipeline with just release ( #757 )
2026-05-27 19:25:09 -04:00
Will Pfleger
f42839c740
feat(desktop): worktree agent data sync, retired persona cleanup, mcp_command reconciliation ( #728 )
...
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
2026-05-27 16:46:16 -04:00
Wes
35821574c0
feat(desktop): redesign status UI with full emoji picker and presence sub-menu ( #760 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
2026-05-27 13:13:33 -07:00
Wes
8946653af8
fix(desktop): add support for deeplinking to channel/messages ( #759 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
2026-05-27 12:27:34 -07:00
Wes
11c8c0d4cf
fix(desktop): add top padding to forum view to clear overlay header ( #758 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
2026-05-27 12:26:28 -07:00
Wes
9823ff52e2
fix(desktop): clean ANSI escapes from agent log tail + drop dead AppHandle plumbing ( #756 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
2026-05-27 09:12:41 -07:00
Wes
f1e25b21da
feat(desktop): editable attachments + data-loss fix on message edit ( #755 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: summer <summer@sprout>
2026-05-26 19:59:06 -07:00
Will Pfleger
7df4681fee
feat(desktop): dock bounce, mark-as-read toggle, and bulk mark-all-read ( #753 )
2026-05-26 17:38:29 -07:00
Wes
ab71ade9e7
fix: prevent agent settings from being silently deleted on channel deletion ( #752 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-26 16:09:09 -07:00
Will Pfleger
b13db17faf
feat(desktop): two-layer agent prompts + dynamic AGENTS.md + MCP gating + harness-agnostic skill path ( #584 )
...
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
2026-05-26 17:46:30 -04:00
Wes
7ac0466e12
fix: agent management UI fixes (permissions, parallelism, form validation) ( #750 )
2026-05-26 13:39:49 -07:00
Wes
8a468a9876
fix: UI fixes for system message avatars and agents page ( #749 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-26 10:46:34 -07:00
renovate[bot]
e5c35bb59e
chore(deps): update rust crate serde_json to v1.0.150 ( #737 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
2026-05-23 23:53:59 +00:00
renovate[bot]
8d6a4a9ed2
fix(deps): update rust crate zip to v8 ( #692 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 20:39:18 +00:00
tlongwell-block
59f51a8ac7
feat(desktop): hide archived identities from discovery surfaces (NIP-IA) ( #734 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-23 13:58:01 -04:00
renovate[bot]
608e3af634
fix(deps): update dependency lucide-react to v1 ( #685 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 17:52:25 +00:00
renovate[bot]
20bac74bea
fix(deps): update rust crate rubato to v3 ( #689 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-23 13:32:53 -04:00
tlongwell-block
79399d9b8e
feat: NIP-IA identity archival (relay backend + desktop) ( #733 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-23 12:03:38 -04:00
renovate[bot]
3e7f21aff6
chore(deps): update dependency typescript to v6 ( #669 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-22 21:58:08 -04:00
Will Pfleger
9d55baefab
fix(desktop): find bundled sidecars in production DMG builds ( #731 )
2026-05-22 21:26:52 -04:00
Will Pfleger
839097112c
fix(deps): migrate Tailwind CSS from v3 to v4 ( #711 )
2026-05-22 20:45:47 -04:00
Will Pfleger
4269fd2720
Show all ACP runtimes with install status and one-click install ( #724 )
2026-05-22 20:33:35 -04:00
Will Pfleger
a65b7fc06f
fix(deps): migrate nostr crate from 0.36 to 0.44 ( #708 )
2026-05-22 17:17:11 -04:00
Will Pfleger
55190b18bd
Add sprout-cli agent skill to nest initialization ( #613 )
...
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
Co-authored-by: npub1rq35h4cfluqvg73mvmcqze6m69xqwuqdschdv8pp53prmnqaj6rsrkj0c2 <18234bd709ff00c47a3b66f001675bd14c07700d862ed61c21a4423dcc1d9687@sprout-oss.stage.blox.sqprod.co >
2026-05-22 11:28:43 -04:00
thomaspblock
441b6c4b1a
Fix inbox thread navigation highlights ( #720 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-21 22:17:52 -04:00
Will Pfleger
4e060bfec2
fix(deps): upgrade Vite v8 and @vitejs/plugin-react v6 ( #710 )
2026-05-21 19:03:59 -04:00
Taylor Ho
ee4ee5f850
fix: composer UX improvements (cursor, upload guard, scroll, paste, perf) ( #694 )
2026-05-21 22:53:10 +00:00