Commit Graph

84 Commits

Author SHA1 Message Date
Will Pfleger
6560d96ba5 feat(desktop): add cli_missing availability state for ACP providers
When the ACP adapter binary is found but the underlying CLI is missing
(e.g. codex-acp installed without codex), classify_provider now returns
CliMissing instead of Available. The adapter can't function without the
CLI, so Doctor shows an amber warning with an Install button that will
set up the missing CLI.
2026-05-22 19:35:44 -04:00
Will Pfleger
d4b9ac16d8 fix(desktop): clear resolve cache on re-run, per-provider concurrency, dynamic install hints
Re-run button now clears the binary resolve cache so it actually
re-probes the filesystem instead of returning stale cached results.

Replace global AtomicBool install guard with per-provider
Mutex<HashSet<String>> so concurrent installs for different providers
(e.g. claude + codex) can proceed in parallel.

Add codex CLI install command (npm install -g @openai/codex) so
clicking Install when both CLI and adapter are missing installs both.

Compute install_hint dynamically based on availability state so the
UI accurately describes what the Install button will do.
2026-05-22 19:26:15 -04:00
Will Pfleger
e10336d192 fix(desktop): address crossfire review findings for ACP provider consolidation
Fix CI-breaking missing `AcpAvailabilityStatus` import in tauri.ts,
eliminate zombie process leak on install timeout by saving PID before
thread move and sending SIGTERM, remove duplicate Map keys in
check-file-sizes.mjs that silently shadowed earlier entries, clean up
dead `MockAcpProvider` type from e2eBridge, and add missing
`classify_provider` test for the no-underlying-CLI code path.
2026-05-22 17:31:00 -04:00
Will Pfleger
3b26a0df99 refactor(desktop): consolidate ACP provider discovery and address review findings
The original implementation created a second parallel Tauri command
(discover_all_acp_providers) alongside the existing one to avoid
changing the return type. This produced two commands, two hooks, two
query keys, and two raw type converters. Consolidates into a single
command returning the full catalog, with a useAvailableAcpProviders
hook that type-narrows for callers needing non-null command/binaryPath.

Also fixes: pipe deadlock in install command (#1), UTF-8 truncation
panic (#2/#4), adds install concurrency guard (#11), exact provider ID
match (#15), error display stdout fallback (#5), success banner
suppression when already available (#12), misleading re-run text (#13),
IIFE refactor in PersonaDialog (#14), hidden internal query lift (#7),
configurable e2e mocks (#9), shared raw type exports (#8), and
classify_provider unit tests (#10).
2026-05-22 17:31:00 -04:00
tlongwell-block
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
af08b0f0e8 fix: prevent agent proliferation when adding bots to channels (#621) 2026-05-20 12:08:34 -07:00
Mat Balez
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
tlongwell-block
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
tlongwell-block
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
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
32347d117c feat(desktop): per-persona and per-agent env var overrides (#594) 2026-05-15 10:43:00 -04:00
tlongwell-block
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
Wes
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
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
Wes
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
9c258e4beb feat(desktop): GUI for agent respond-to gate (owner-only / anyone / allowlist) (#557) 2026-05-13 12:48:42 -04:00
Wes
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
Wes
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
22f1e0b724 Launch sprout-agent from the desktop GUI (#529) 2026-05-11 12:36:53 -04:00
Wes
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
Wes
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
Wes
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
thomaspblock
f309446f22 Polish reply timeline interactions (#477)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-07 09:43:47 -07:00
Wes
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
454781caae Sprout speaks Nostr. Nothing else. (#475) 2026-05-05 12:03:06 -04:00
Luis Padron
f08d4f4034 ci(release): sign and notarize macOS build via apple-codesign-action (#472) 2026-05-04 12:06:47 -04:00
tlongwell-block
8916825c45 feat(pairing): auto-detect NIP-43 relay and route target to /pair sidecar (#470) 2026-05-03 22:12:14 -04:00
Wes
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
Wes
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
22cb8129e5 feat(desktop): add OSS release workflow and auto-updater support (#461) 2026-05-03 16:21:58 +00:00
Wes
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
Wes
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
tlongwell-block
c9f287958d feat(desktop): wire git-credential-nostr into agent spawn path (#451) 2026-05-02 11:46:49 -04:00
Wes
56f5062b74 feat: add NIP-38 user status for desktop and mobile (#449)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-01 17:02:59 -07:00
Bradley Axen
7c2c556d72 feat: Add local ACP session observer (#412) 2026-04-29 04:21:58 +00:00
Wes
2a01ca590d Implement NIP-RS unread state sync (#420)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-28 20:54:09 -07:00
Wes
00a4aaba3d fix(desktop): key-based React remount for workspace switching (#415)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-28 18:13:12 +00:00
tlongwell-block
d1c84a621c feat(nip-oa): Owner Attestation — cryptographic proof of agent authorization (#406) 2026-04-28 09:29:15 -04:00
Wes
a9024c2c78 Add multi-workspace support to desktop app (#409)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-28 04:47:11 +00:00
Wes
c6c27481a3 fix(desktop): resolve agent command path for DMG builds (#372)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-20 13:16:20 -07:00
Wes
cca1d51012 Remove release pipeline from public repo (#360)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 06:55:09 -07:00
Wes
fc67dac4c6 feat: NIP-AB device pairing — Phase 2 (desktop + mobile UI) (#343)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 15:25:18 -07:00
tlongwell-block
70059efa4a perf(tts): reduce Kokoro time-to-first-audio with session warmup and threading (#342) 2026-04-16 17:37:38 -04:00
tlongwell-block
d99332e169 fix: cancel TTS on remote human speech in multi-participant huddles (#332) 2026-04-15 21:23:51 -04:00
tlongwell-block
dd6107d0d0 feat: Sprout Huddles — voice conversations with AI agents (#299) 2026-04-14 13:11:09 -04:00
thomaspblock
0f5f306364 feat(desktop): deterministic nested thread panels (#308) 2026-04-13 18:37:37 -07:00
Will Pfleger
ccecf7e362 Add edit dialog for managed agents with relay profile sync (#277) 2026-04-13 18:15:43 +00:00
tlongwell-block
d07385fe02 feat: Markdown-based persona packs (crate + ACP + desktop) (#297) 2026-04-11 13:32:14 -04:00
Wes
1211b0edc6 feat(desktop): add Pulse social notes surface (#296)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 17:09:38 -07:00
tlongwell-block
ff86e0cf49 feat: add Sprout nest — persistent agent workspace at ~/.sprout (#290) 2026-04-10 15:01:26 -04:00