Will Pfleger
1872e406f5
fix: round-trip provider field through persona dialog state
...
- Add provider field to ParsedPersonaPreview Rust struct and thread it
through parse_png_persona, parse_json_persona, parse_md_persona, and
parse_zip_pack (md and pack set it to None; JSON reads llmProvider key)
- Add llmProvider key support in extract_sprout_fields and encode_persona_json
so exported persona cards carry the LLM inference provider
- Update export_persona_to_json to include provider in the serialized card
- Update all encode_persona_json call sites (tests + commands) for new param
TypeScript side was already correct in this branch:
- RawParsedPersonaPreview and ParsedPersonaPreview already had provider field
- parsePersonaFiles mapping already passed provider through
- personaDialogState.ts already threaded provider in edit/duplicate/import
- personaDialogState.test.mjs already had provider round-trip tests
All 573 JS tests pass. Rust build clean (no new warnings).
2026-06-08 11:31:51 -04:00
Will Pfleger
7cf61d55f9
feat: normalized config schema with PersonaRecord.provider and SPROUT_AGENT_MODEL
...
sprout-agent personas all failed because the desktop never injected
SPROUT_AGENT_PROVIDER or model env vars at spawn time, and the goose
config fallback only understood the old flat format. Extract goose
config compat into an isolated submodule, add support for the newer
active_provider + nested providers format, and wire a normalized
config schema so Sprout injects the right env vars for any runtime.
Key changes:
- PersonaRecord.provider captures the LLM provider independently
- SPROUT_AGENT_MODEL works as a universal model fallback
- provider_env_var and model_env_var always injected at spawn time
- Pack import now stores resolved env vars (was always empty)
- runtime_env_vars() emits runtime-appropriate vars (SPROUT_AGENT_*
vs GOOSE_*)
2026-06-08 11:31:51 -04:00
Will Pfleger and GitHub
0a6067ca1b
refactor: rename ACP "provider" to "runtime" across the codebase ( #783 )
2026-06-07 14:40:59 -04:00
0c225f4d7d
chore: simplify file-size check to a flat 1000-line limit ( #839 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-06-03 16:40:33 -07:00
d8b602a359
fix(desktop): robust emoji picker — unify picker + fix custom emoji in editing, status, reactions ( #837 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-06-03 15:13:25 -07:00
33cfc85293
Mesh-LLM v1: relay-gated direct-iroh inference between users (WAN) ( #822 )
...
Signed-off-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Max <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-06-03 10:49:09 -04:00
2349421304
feat: custom emoji — user-owned NIP-30 sets with a client-side union ( #816 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Signed-off-by: tlongwell-block <109685178+tlongwell-block@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 >
Co-authored-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-06-02 14:19:07 -07:00
Will Pfleger and GitHub
fb514c8918
refactor(desktop): feature-gate mesh-llm-sdk behind optional Cargo feature ( #823 )
2026-06-02 20:25:01 +00:00
tlongwell-block and GitHub
ede8ddb425
Sprout × mesh-llm: in-process mesh node (serve/consume) + relay admission ( #798 )
2026-06-02 10:28:20 -04:00
Will Pfleger and GitHub
247ac52391
feat(desktop): add user-defined channel sections to sidebar ( #789 )
2026-06-01 12:42:19 -07:00
d810608d85
feat(desktop): keyboard shortcuts — ⌘⇧N new channel + ↑-to-edit last message ( #809 )
...
Signed-off-by: npub1yxv5wk0u0fh6dwt925wntn7h397jvteyj4r87ttcd9xae7n2t3lqqj9jmm <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1yxv5wk0u0fh6dwt925wntn7h397jvteyj4r87ttcd9xae7n2t3lqqj9jmm <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-06-01 09:12:45 -07:00
39911e4285
fix(desktop): scope agent sweep to the owning app instance ( #808 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-06-01 15:49:41 +00:00
Will Pfleger and GitHub
7beb0f8e68
fix(desktop): reap orphaned agent processes on shutdown and restart ( #787 )
2026-05-29 18:18:55 +00:00
Will Pfleger and GitHub
fa7febe40f
fix(desktop): sync persona pack directory across worktree instances ( #782 )
2026-05-28 20:41:23 -04:00
Will Pfleger and GitHub
3f3ec64791
feat(desktop): thread-aware notifications with mutable follow/mute controls ( #761 )
2026-05-28 18:43:41 -04:00
Will Pfleger and GitHub
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 and GitHub
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
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 and GitHub
7df4681fee
feat(desktop): dock bounce, mark-as-read toggle, and bulk mark-all-read ( #753 )
2026-05-26 17:38:29 -07:00
Will Pfleger and GitHub
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
tlongwell-block and GitHub
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
Will Pfleger and GitHub
4269fd2720
Show all ACP runtimes with install status and one-click install ( #724 )
2026-05-22 20:33:35 -04:00
a96cb487f4
fix(desktop): project home read-state from the shared NIP-RS marker ( #631 )
...
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 >
2026-05-20 17:13:59 -04:00
Taylor Ho and GitHub
af08b0f0e8
fix: prevent agent proliferation when adding bots to channels ( #621 )
2026-05-20 12:08:34 -07:00
Mat Balez and GitHub
2da3402f10
[codex] Add copy button for rendered code blocks ( #619 )
...
Signed-off-by: Mat Balez <60949391+matbalez@users.noreply.github.com >
2026-05-20 14:25:03 +00:00
5370a75ca4
feat(relay): surface connection loss in the workspace header ( #623 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Dawn <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
2026-05-20 09:36:52 -04:00
c0eb5affcf
refactor(huddle): switch local TTS to Pocket TTS (Kyutai/sherpa-onnx) ( #607 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
Signed-off-by: npub1cc3ha7z055mu0rwwu7806t2wt8mj3pvu0uv5mfp2c50dahaqhczshdalg6 <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1cc3ha7z055mu0rwwu7806t2wt8mj3pvu0uv5mfp2c50dahaqhczshdalg6 <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
2026-05-18 14:28:27 -04:00
tlongwell-block and GitHub
3daf8d6ae1
feat(huddle): swap STT default to Parakeet TDT-CTC 110M (EN, int8) ( #562 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
2026-05-15 22:22:05 -04:00
tlongwell-block and GitHub
32347d117c
feat(desktop): per-persona and per-agent env var overrides ( #594 )
2026-05-15 10:43:00 -04:00
tlongwell-block and GitHub
3a3501c77b
fix(desktop): autofocus message composer on channel/thread open ( #572 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-14 20:35:44 -04:00
efbdc7bfd5
feat(desktop): persona-first agent UX + bug fixes ( #570 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-13 15:13:41 -07:00
tlongwell-block and GitHub
9a403d3e8a
fix: channel member search via NIP-50 + Typesense indexer fix for kind:0 ( #569 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-13 15:03:35 -04:00
8716aefa3c
fix(desktop): use resolve_command for ffmpeg discovery in sandboxed app ( #568 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-13 11:00:00 -07:00
tlongwell-block and GitHub
9c258e4beb
feat(desktop): GUI for agent respond-to gate (owner-only / anyone / allowlist) ( #557 )
2026-05-13 12:48:42 -04:00
ef5fdca792
feat(desktop): add Projects as first-class top-level view ( #546 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-12 10:51:09 -07:00
1b9f6169ee
feat(desktop): channel templates — reusable project settings ( #538 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-11 12:31:25 -07:00
tlongwell-block and GitHub
22f1e0b724
Launch sprout-agent from the desktop GUI ( #529 )
2026-05-11 12:36:53 -04:00
5fff9239fa
feat(desktop): notification sound + sender names in titles ( #501 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-07 17:25:29 -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
27bcd45cc9
Refresh built-in personas: Solo, Kit, Scout + Kit & Scout team ( #499 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-07 18:22:26 +00:00
f309446f22
Polish reply timeline interactions ( #477 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-07 09:43:47 -07:00
ec489c5b1a
feat(desktop): add keep awake while agents are active setting ( #484 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-05 13:14:00 -07:00
tlongwell-block and GitHub
454781caae
Sprout speaks Nostr. Nothing else. ( #475 )
2026-05-05 12:03:06 -04:00
Luis Padron and GitHub
f08d4f4034
ci(release): sign and notarize macOS build via apple-codesign-action ( #472 )
2026-05-04 12:06:47 -04:00
tlongwell-block and GitHub
8916825c45
feat(pairing): auto-detect NIP-43 relay and route target to /pair sidecar ( #470 )
2026-05-03 22:12:14 -04:00
35d0c2da5e
fix(ci): add ad-hoc code signing to OSS release build ( #466 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-03 12:15:19 -07:00
31e23cfc3b
fix(ci): add verbose output and fix release config double-merge ( #464 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-03 18:05:57 +00:00
Wes and GitHub
22cb8129e5
feat(desktop): add OSS release workflow and auto-updater support ( #461 )
2026-05-03 16:21:58 +00:00
f946e9b68a
feat: user profile panel with hover popover and click-to-expand ( #456 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-02 15:21:26 -07:00
e105c9ea5e
feat(desktop): add relay membership admin UI in settings ( #454 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-02 16:56:41 +00:00