Taylor Ho
d1b7aeb538
fix: address review feedback — criticals + mediums
...
Critical fixes:
1. Null channelId guard — popover renders children-only (no popover
content) when channelId is null. Action handlers also early-return.
2. pickBotName fallback — safeBotName() wraps pickBotName with a
defensive fallback to persona.displayName or 'Agent'.
3. E2E test updates — tests now click through the quick-add popover's
'More options…' button before asserting on the full dialog.
4. Duplicate AddChannelBotDialog — removed the sidebar's own dialog
instance. Dialog state is now lifted to ChannelScreen and passed
down via props. Only one dialog instance exists (in ChannelMembersBar).
Medium fixes:
5. Discriminated union types — QuickAddAgentItem is now a proper
tagged union (RunningAvailableItem | RunningInChannelItem | PersonaItem).
No more optional agent?/persona? fields.
6. Extracted sortProviders utility — shared between ChannelMembersBar
and any future consumer. Single source of truth for provider ordering.
7. Emerald colors kept — matches existing presence pattern (bg-emerald-500)
used throughout the codebase. No design token exists for 'running' status.
8. Keyboard navigation — added arrow-key roving focus via onKeyDown handler
on the popover container, targeting [data-quick-add-item] buttons.
9. Eager queries — channel members query already gated by popover open state.
Other queries (agents, personas, providers) are globally cached by
ChannelMembersBar which is always mounted — no extra network cost.
2026-05-21 19:16:12 -07:00
tlongwell-block
4373a13fb3
fix(relay): avoid websocket writes in stall watchdog ( #697 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Dawn (sprout agent) <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co >
2026-05-21 12:56:12 -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
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
2392e6523a
fix(composer): use native ProseMirror inserts for autocomplete (mentions / channels / emoji) ( #618 )
...
Signed-off-by: Tyler Longwell <109685178+tlongwell-block@users.noreply.github.com >
Co-authored-by: Quinn (sprout agent) <96f056ad5f2305c8ddf637dc65d048aa4c12d7daeb8867690e34fca46b0ef64c@sprout-oss.stage.blox.sqprod.co >
2026-05-19 20:28:40 -04:00
tlongwell-block
2fed74bdcd
Show channels in command search ( #617 )
...
Signed-off-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mprnacetjua2xx3p5eddmhxyk6wv929ymm5py8kd2xfxurxahspqqlgyta <d8473ee32b973aa31a21a65adddcc4b69cc2a8a4dee8121ecd51926e0cddbc02@sprout-oss.stage.blox.sqprod.co >
2026-05-19 14:33:53 -04:00
thomaspblock
3973080dce
Refine conversation visual affordances ( #615 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-19 08:54:41 -04:00
Will Pfleger
50b350dc58
fix(desktop): worktree support — workspace boundary + shared identity ( #610 )
2026-05-18 19:11:34 -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
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 >
2026-05-14 10:07:15 -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
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
Wes
a05577fff7
fix(desktop): clean up channel management sidebar layout ( #509 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-08 17:14:14 +00:00
Wes
d7714d50fd
Onboarding cleanup: notifications + profile polish ( #508 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-08 16:14:37 +00:00
thomaspblock
5e7f588d82
Polish conversation view: composer overlay, blur, and spacing ( #507 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-08 08:50:47 -07: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
89f4b5de07
fix: bug sweep — profile, mentions, deep links, channel links, doctor page ( #480 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-05 12:08:22 -07:00
tlongwell-block
454781caae
Sprout speaks Nostr. Nothing else. ( #475 )
2026-05-05 12:03:06 -04: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
04605e1dc4
Show own status in sidebar footer, remove Recent Notes ( #450 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-02 00:42:30 +00:00
Wes
05ba08412c
fix(desktop): header UX polish and member list improvements ( #447 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-05-01 18:51:30 +00:00
Wes
28a4658ac2
feat: view open channels without joining ( #430 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-29 22:06:16 -07: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
36c97a6e2e
feat(desktop): first-run onboarding flow + Lilac accent ( #386 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-22 14:06:35 -07:00
Wes
d26fda9e4d
refactor(desktop): standardize UI with shadcn components ( #379 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-21 13:03:48 -07:00
Wes
60b51806dd
feat(desktop): improve new user defaults for presence and notifications ( #376 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-21 06:48:15 -07:00
Wes
28bf8bfeee
fix(desktop): remove stale sprout-admin prereq, add sidecar tooling ( #371 )
2026-04-20 12:30:37 -07:00
Taylor Ho
355c39538c
chore: improve thread panel inline replies and nesting behavior ( #339 )
2026-04-16 16:24:18 -07:00
Wes
3050531e7e
feat(home): add activity and agent feed sections with deep-linking ( #330 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-15 13:44:21 -07:00
Taylor Ho
fe673254e6
feat(composer): add rich text editor with formatting and mentions ( #310 )
2026-04-14 16:56:38 -07:00
thomaspblock
0f5f306364
feat(desktop): deterministic nested thread panels ( #308 )
2026-04-13 18:37:37 -07:00
Wes
423ed01ed8
Replace inline channel creation with dialog ( #312 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-13 15:58:56 -07:00
Wes
3ef19f2554
Fix flaky desktop smoke tests ( #294 )
2026-04-10 16:31:12 -07:00
Wes
e333371988
Add agent lifecycle controls to channel members sidebar ( #291 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-10 16:08:20 -07:00
Wes
b71f50400c
Improve ephemeral channel affordances and hide archived sidebar rows ( #286 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-09 18:08:57 -07:00
Wes
4d44f4741f
Restore chooser-based persona catalog flow ( #275 )
2026-04-08 21:04:09 -07:00
Taylor Ho
063ce331dd
feat: typing indicator avatars + stable name order ( #267 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-08 11:45:00 -10:00
Wes
7a1eb31492
[codex] Show recent notes in user popovers ( #270 )
2026-04-08 12:24:10 -07:00
Wes
7e4bcfb8c2
[codex] Reduce desktop release startup work ( #269 )
2026-04-08 11:13:14 -07:00
Wes
ef15e38730
[codex] hide archived channels from sidebar ( #260 )
2026-04-07 14:41:22 -07:00
Wes
e10d4529de
Add router-backed app navigation and skeleton loading states ( #259 )
2026-04-07 12:20:42 -07:00
Wes
35588a0594
Add desktop badge and notification ground work ( #257 )
2026-04-07 10:26:13 -07:00
Taylor Ho
41d56cfcbf
feat: adaptive IDE theme system (54 themes) ( #251 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-06 19:39:42 -07:00
Wes
9b0bba2810
[codex] Polish workflow and agent run history UX ( #253 )
2026-04-06 18:55:30 -07:00