236 Commits
Author SHA1 Message Date
Will Pfleger 8a236dffea style: apply cargo fmt to persona_card.rs 2026-06-08 11:31:51 -04:00
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 953f0902dc feat: consume runtime metadata for env injection and overhaul runtime dropdown UX
Replace hardcoded GOOSE_MODE injection with a metadata-driven
default_env loop on KnownAcpRuntime, and inject GOOSE_MODEL via
model_env_var for runtimes that don't support ACP model switching.
This ensures goose agents respect PersonaRecord.model even without
a persona pack.

Redesign the AddChannelBotDialog runtime dropdown: defaults to "Use
persona defaults" (unset) instead of auto-selecting the first runtime.
Explicit selection overrides all personas. Per-persona runtime badges
on chips show the effective runtime with warning styling when overridden
or when a stored preference is unavailable.
2026-06-08 11:31:51 -04:00
Will Pfleger d8ee71e040 fix: suppress dead_code warnings on Phase 3 capability fields and remove stale conflict marker 2026-06-08 11:31:50 -04:00
Will Pfleger 05a9dc9110 fix: address code review findings from provider→runtime rename
localStorage key migration: useLastRuntime now reads the legacy
"sprout:last-runtime-provider" key as a fallback and clears it on
first write, preventing silent loss of saved runtime preference on
upgrade. Remaining stale local variable names (selectedProviderId,
acpProvidersQuery, etc.) renamed for consistency across 12 TS files.
Migration and template serde alias backward-compat tests added.
2026-06-08 11:31:50 -04:00
tlongwell-blockandGitHub 2ebe551741 fix: rename missed known_acp_provider_exact → known_acp_runtime_exact (#900) 2026-06-08 09:29:12 -04:00
Will PflegerandGitHub 0a6067ca1b refactor: rename ACP "provider" to "runtime" across the codebase (#783) 2026-06-07 14:40:59 -04:00
WesandGitHub 9bbb85b439 chore(release): release version 0.3.12 (#886) 2026-06-05 21:17:01 +00:00
klopez4212andGitHub 0a4783c6f8 Refine sidebar behavior and borders (#869) 2026-06-05 14:00:37 -07:00
Will PflegerandGitHub 5d7c748969 fix(presence): clear on disconnect, fix heartbeat/TTL, drop broken REST path (#877) 2026-06-05 13:28:00 -07:00
Will PflegerandGitHub 2f50011bdd docs(sprout-acp): add communication discipline rules to base prompt + deprecate --mention flag (#883) 2026-06-05 15:52:05 -04:00
bc53008676 Improve emoji naming and custom emoji UX (#878)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-06-05 18:51:46 +00:00
Will PflegerandGitHub f1c672fea5 chore: deprecate sprout-mcp — fill CLI gaps, remove crate and all references (#850) 2026-06-05 12:31:52 -04:00
WesandGitHub baf1f7705f chore(release): release version 0.3.11 (#865) 2026-06-04 17:34:15 -07:00
Will PflegerandGitHub 36d7dbd7ca feat: desktop-screenshot skill to stop agents uploading relay media to PRs (#862) 2026-06-04 18:35:10 -04:00
Will PflegerandGitHub f748f71268 fix(desktop): handle symlinked persona pack directories (#859) 2026-06-04 17:52:36 -04:00
WesandGitHub 249bec86cf chore(release): release version 0.3.10 (#849) 2026-06-04 09:04:52 -07:00
tlongwell-blockandGitHub 34ac3ba1d1 fix(desktop): harden relay mesh connect p-tag (#834) 2026-06-04 11:50:49 -04:00
Will PflegerandGitHub 3b78dc5690 feat(mobile+desktop): two-tier Slack-style app icon badge (#802) 2026-06-03 18:16:49 -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
9f0c22a43a desktop(mesh-llm): let a serving node route a different model (#833)
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co>
2026-06-03 14:30:46 -04:00
WesandGitHub b4f8f40333 chore(release): release version 0.3.9 (#832) 2026-06-03 10:45:22 -07:00
82ae85f79a fix: native arbitrary-file download + image context-menu flash (#830)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-03 09:59:57 -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
WesandGitHub 7c896d339d chore(release): release version 0.3.8 (#829) 2026-06-02 16:57:08 -07:00
dc6821667d chore(release): release version 0.3.7 (#825)
Signed-off-by: Mesh-LLM CI <ci@mesh-llm.local>
Co-authored-by: Mesh-LLM CI <ci@mesh-llm.local>
2026-06-02 14:56:23 -07:00
Will PflegerandGitHub 56c504a4c7 feat: code block rendering, syntax highlighting, and compose fixes (#803) 2026-06-02 14:43:08 -07: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 PflegerandGitHub 7a12e50518 Install sprout-cli skill at repo root + fix desktop clippy (#818) 2026-06-02 17:11:30 -04:00
Will PflegerandGitHub 2ea3fd88d2 fix(desktop): use public re-export path for ensure_client_node_for_model (#824) 2026-06-02 16:59:05 -04:00
Will PflegerandGitHub fb514c8918 refactor(desktop): feature-gate mesh-llm-sdk behind optional Cargo feature (#823) 2026-06-02 20:25:01 +00:00
b72eee365f fix(desktop): align workflow read/save commands to the frontend contract (#820)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-02 12:52:56 -07:00
Will PflegerandGitHub 5b572d6f5e fix(desktop): disable mesh-llm auto-build to prevent git config corruption (#819) 2026-06-02 18:49:41 +00:00
192388a3cb fix(desktop): clear clippy lints in agents/mesh_llm commands (#817)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-02 11:01:01 -07:00
tlongwell-blockandGitHub ede8ddb425 Sprout × mesh-llm: in-process mesh node (serve/consume) + relay admission (#798) 2026-06-02 10:28:20 -04:00
WesandGitHub 93183cb75d chore(release): release version 0.3.6 (#811) 2026-06-01 20:51:18 +00:00
2b052eb465 feat(media): support arbitrary file types with download cards (#810)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co>
2026-06-01 12:57:04 -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
WesandGitHub 995189c223 chore(release): release version 0.3.5 (#799) 2026-05-29 14:48:49 -07:00
Will PflegerandGitHub 7beb0f8e68 fix(desktop): reap orphaned agent processes on shutdown and restart (#787) 2026-05-29 18:18:55 +00:00
WesandGitHub 8fc27b6554 chore(release): release version 0.3.4 (#786) 2026-05-29 09:50:08 -07:00
Will PflegerandGitHub fa7febe40f fix(desktop): sync persona pack directory across worktree instances (#782) 2026-05-28 20:41:23 -04:00
WesandGitHub a28a0e6b42 chore(release): release version 0.3.3 (#781) 2026-05-28 16:51:47 -07:00
WesandGitHub c761a76ff2 fix(release): sync release tags during preflight (#780) 2026-05-28 16:29:25 -07:00
WesandGitHub 8da9acbad9 chore(release): release version 0.3.2 (#774) 2026-05-28 12:00:40 -07:00
WesandGitHub 9a10e6281e chore(release): release version 0.3.1 (#769) 2026-05-28 09:10:28 -07:00
WesandGitHub 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 PflegerandGitHub bcd903edcc feat(release): automate OSS release pipeline with just release (#757) 2026-05-27 19:25:09 -04:00
Will PflegerandGitHub 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