Will Pfleger
7ee7d88989
fix(desktop): address review findings for nest AGENTS.md regeneration
...
Fixes identified by crossfire review (Codex + Gemini) and plan author:
- Use tempfile::NamedTempFile for atomic writes instead of deterministic
.tmp path that races under concurrent regeneration triggers
- Enforce ordered BEGIN/END marker search with line-start anchoring to
prevent inverted slicing when markers are out of order or mid-line
- Strip orphan BEGIN markers before appending new managed section
- Escape pipe and newline characters in agent/persona names to prevent
Markdown table corruption
- Rename "Role" column to "Persona" (display_name is a name, not a role)
- Move regenerate_nest_context calls outside lock scope in all mutation
hooks to reduce lock hold time and eliminate future deadlock risk
- Add 7 adversarial unit tests: marker ordering, orphan cleanup,
duplicates, code-block false positives, pipe/newline escaping,
idempotency
2026-05-15 15:49:11 -04:00
Will Pfleger
7f80210675
fix: gate test-only imports behind #[cfg(test)] in nest.rs
...
BackendKind and RespondTo are only used in test helper constructors.
2026-05-15 15:47:34 -04:00
Will Pfleger
78b4334a93
feat(desktop): dynamic nest AGENTS.md regeneration
...
AGENTS.md in ~/.sprout is now dynamically regenerated whenever personas,
agents, or workspace config changes. Agents discover their teammates on
every fresh session via a managed section demarcated by HTML comment
markers. User edits outside the markers are preserved across
regenerations.
2026-05-15 15:47:34 -04:00
tlongwell-block
7171d4954d
fix(relay,desktop): only advertise NIP-43 when enforced; probe pairing by supported_nips ( #601 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
2026-05-15 15:11:37 -04:00
tlongwell-block
7763072ef9
fix(desktop): derive unread state from NIP-RS + relay catch-up only ( #599 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-15 14:46:33 -04:00
tlongwell-block
4cbcfa86ee
docs(testing): rewrite TESTING.md for current API and CLI-first workflow ( #597 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
2026-05-15 18:11:04 +00:00
tlongwell-block
9e94a7c475
fix(agent): fix OpenAI-compat request body serialization and max_tokens ( #595 )
2026-05-15 11:07:14 -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
13dc0df688
fix(desktop): stop pinning agents to deprecated SPROUT_ACP_TURN_TIMEOUT ( #592 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-14 21:51:38 -04:00
tlongwell-block
5cdb3062ed
fix(desktop): populate member_count in get_channels so channel browser shows real counts ( #548 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-14 20:38:01 -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
Will Pfleger
1d8a130b32
refactor(cli): restructure flat commands into 12 subcommand groups ( #585 )
2026-05-14 19:13:49 -04:00
Will Pfleger
01a3df7f1f
feat(sdk): add builder functions for workflows, DMs, and presence ( #589 )
v0.0.16
2026-05-14 18:49:57 -04:00
Wes
4425f1f713
feat(desktop): add message more-actions dropdown menu ( #590 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-14 15:31:55 -07:00
Wes
586b3678d9
fix(mobile): preserve channel list across background/resume reconnection ( #588 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-14 21:24:54 +00:00
thomaspblock
8a2d24e4fd
Redesign Home as an inbox ( #582 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-14 13:35:17 -07:00
tlongwell-block
1858e98d5e
fix(desktop): drive unread badges from live subscription, not refetched lastMessageAt ( #581 )
...
Signed-off-by: Tyler Longwell <tlongwell@squareup.com >
2026-05-14 13:25:24 -04:00
thomaspblock
9e76a08a47
fix(desktop): refine header scaling and shadow ( #573 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
v0.0.15
2026-05-14 10:07:15 -07:00
thomaspblock
b74ec95b8e
fix(desktop): keep day dividers below header ( #574 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-14 09:58:21 -07:00
thomaspblock
aad564b130
Move agent activity below composer ( #579 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Wes <wesb@block.xyz >
2026-05-14 09:46:52 -07:00
tlongwell-block
bda98da771
docs(nips): NIP-AE — Agent Engrams ( #575 )
...
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-14 12:10:56 -04:00
tlongwell-block
1b87a0905f
refactor: extract shared @mention resolver into sprout-sdk ( #580 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: npub1cc3ha7z055mu0rwwu7806t2wt8mj3pvu0uv5mfp2c50dahaqhczshdalg6 <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Dawn <dawn@sprout.local >
2026-05-14 11:38:52 -04:00
Matt Toohey
2ee7356424
fix: add default-run to sprout-relay so cargo run -p sprout-relay works ( #577 )
...
Signed-off-by: Matt Toohey <contact@matttoohey.com >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-14 08:34:23 -07:00
Matt Toohey
f0549b5038
feat(desktop): channel hover state and right-click mark-unread context menu ( #578 )
...
Signed-off-by: Matt Toohey <contact@matttoohey.com >
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-14 08:33:57 -07:00
tlongwell-block
b176b52b70
fix(mobile): show ephemeral (TTL) channels in the channel list ( #571 )
...
Signed-off-by: Dawn <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: npub1cc3ha7z055mu0rwwu7806t2wt8mj3pvu0uv5mfp2c50dahaqhczshdalg6 <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Dawn <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
v0.0.14
2026-05-13 15:15:18 -07: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 >
v0.0.13
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
thomaspblock
5db47a84b1
feat(desktop): add neutral accent color ( #563 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-13 08:34:56 -07:00
thomaspblock
5e6083ef9e
fix(desktop): inline update control in header ( #561 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-13 08:34:26 -07:00
tlongwell-block
8d5abb7a09
chore(acp): raise default idle timeout from 320s to 620s ( #566 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-13 11:04:53 -04:00
tlongwell-block
e427581ca3
fix(cli): derive thread root from parent event tags ( #564 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-13 09:54:43 -04:00
tlongwell-block
90063cf5f0
fix: skip empty assistant turns instead of placeholder space ( #560 )
2026-05-13 09:40:41 -04:00
tlongwell-block
80b79c4f75
agent: raise default SPROUT_AGENT_MAX_OUTPUT_TOKENS to 32768 ( #565 )
...
Co-authored-by: Tyler Longwell <tlongwell-block@users.noreply.github.com >
2026-05-13 13:03:56 +00:00
tlongwell-block
cacfe6b84e
fix(nip11): advertise auth_required: true to match actual enforcement ( #556 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
2026-05-12 20:08:53 -04:00
Wes
8004bafaff
fix(desktop): resolve unarchive revert and stale member list bugs ( #558 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-12 16:55:25 -07:00
tlongwell-block
69734bff00
fix: Anthropic rejects empty text blocks in assistant history ( #559 )
2026-05-12 19:41:50 -04:00
Wes
f41b9736ac
fix(desktop): resolve O(n²) render cascade in activity sidebar ( #555 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-12 15:48:05 -07:00
Wes
809275795a
feat(web): browse git repos in-browser via isomorphic-git ( #554 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
v0.0.12
2026-05-12 15:05:57 -07:00
tlongwell-block
a33d73bf6d
agent: make max_sessions default unlimited ( #547 )
2026-05-12 17:32:19 -04:00
tlongwell-block
08e00a6f0a
fix(relay): auto-create git_repo_path so kind:30617 init can't silently fail ( #545 )
2026-05-12 16:40:38 -04:00
Wes
78508ea6cb
fix(desktop): editor bug fixes — codeblock escaping, thread edit leak, channel links, and edit cancel ( #553 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-12 19:35:10 +00:00
tlongwell-block
61c30add40
feat(desktop): multi-select in the paperclip file picker ( #551 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-12 15:01:48 -04:00
tlongwell-block
effa24f06c
fix(desktop): forward cache headers in media proxy ( #549 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-12 14:40:07 -04:00
tlongwell-block
afe072fa42
docs(agents): prefer Nostr events over new REST endpoints ( #550 )
...
Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com >
2026-05-12 14:39:19 -04:00
tlongwell-block
385e1716b7
agent+acp: preserve session on retriable agent errors ( #544 )
2026-05-12 13:57:02 -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
tlongwell-block
6b4f9f05d4
cli: add display name lookup to get-users ( #543 )
2026-05-11 20:41:02 -04:00
Wes
11778f4250
feat(desktop): image download, drag-drop prevention, and drop zone indicator ( #542 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
v0.0.11
2026-05-11 23:26:12 +00:00