npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7
134e0f75ea
feat(desktop): add custom date/time picker to Remind Me Later dialog
...
Add a "Custom date & time" section below the time presets in the
RemindMeLaterDialog, using native date and time inputs styled with the
existing Input component. The date picker defaults to today and prevents
selecting past dates. A "Set reminder" button creates the reminder at
the user-selected timestamp.
Also extends the screenshot spec to 6 tests: widens the action menu
screenshot clip, adds tests for the reminders panel with active and
fired/overdue reminders, and adds KIND_EVENT_REMINDER mock support to
the e2e bridge for seeding reminder data in tests.
Co-authored-by: Will Pfleger <wpfleger@block.xyz >
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
2026-06-11 15:33:58 -04:00
Will Pfleger
7388a58d76
style: fix biome formatting in AppShell.tsx
2026-06-11 15:32:27 -04:00
Will Pfleger
5b32804829
fix(desktop): add shared animation-wait helper and fix reminders screenshots
...
Radix UI components animate in via CSS transitions. Playwright's toBeVisible()
resolves mid-animation, producing greyed-out or partially-rendered screenshots.
- Create shared waitForAnimations(page) utility in tests/helpers/animations.ts
- Wire it into screenshot.mjs so the just desktop-screenshot path settles
animations automatically before capture
- Update reminders-screenshots.spec.ts to call waitForAnimations before every
page.screenshot(), add clip regions for focused captures
- Update AGENTS.md to reference the shared helper as mandatory
Co-authored-by: Will Pfleger <wpfleger@block.xyz >
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
2026-06-11 15:32:27 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7
16731e4135
test(desktop): add Playwright screenshot spec for reminders UI
...
Captures 4 screenshots verifying the NIP-ER reminder feature renders
correctly: sidebar nav item, message action menu, time-picker dialog,
and empty reminders panel. Registered in the smoke project.
Co-authored-by: Will Pfleger <wpfleger@squareup.com >
Signed-off-by: Will Pfleger <wpfleger@squareup.com >
2026-06-11 15:32:26 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7
757998cb03
feat(desktop): add NIP-ER reminder UI — create, view, and manage encrypted reminders
...
Implements the desktop client UI for kind:30300 event reminders (NIP-ER):
- Service layer (reminderService.ts): create, complete, snooze, and cancel
reminders as individual parameterized-replaceable events with NIP-44
encrypt-to-self. Each reminder has a random d-tag, not_before timestamp,
and encrypted content containing the target message reference and optional
note.
- "Remind me later" action: new menu item in MessageActionBar opens a dialog
with time presets (30min, 1hr, 3hr, tomorrow 9am, next Monday 9am) and an
optional note field.
- Reminders panel: accessible from sidebar (Bell icon), shows pending
reminders grouped by due status (overdue/today/upcoming) with
complete/snooze/cancel action buttons per row.
- Due-detection: local 60-second interval checks not_before against
Date.now() and fires toast notifications when reminders become due.
No relay scheduler dependency for v1 — purely client-side.
- RemindMeLaterProvider context avoids prop-threading through 4 intermediate
components; MessageRow uses the hook directly.
All reminder content is NIP-44 encrypted — never stored or transmitted in
plaintext. Completed/cancelled reminders get jittered 30-90 day expiration
tags for eventual relay-side cleanup.
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
2026-06-11 15:32:26 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7
275ad4be4a
feat(relay): add NIP-ER push scheduler, ingest relaxation, and NIP-11 advertisement
...
The relay now proactively delivers due reminders via Redis pub/sub.
Cross-pod dedup uses an atomic delivered_at claim (mirrors the reaper's
archived_at guard). Ingest relaxed to allow kind:30300 without
not_before (bookmarks/terminal states). max_not_before_delta enforced
to prevent unbounded-future scheduling abuse.
Schema: nullable not_before + delivered_at columns on events, partial
index for scheduler queries. NIP-11: supported_extensions ["nip-er"],
due_delivery_mode "push", max_not_before_delta advertised.
Spec (NIP-ER.md) amended: not_before optional on kind:30300, required
only for pending reminders that may become due.
Co-authored-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
2026-06-11 15:31:10 -04:00
Will Pfleger
f319f2fae5
style: fix formatting in e2e_event_reminder.rs
2026-06-11 15:25:04 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7
84b0dadee3
fix(relay): relax not_before to optional, add d-tag validation
...
The spec requires not_before on pending reminders only — terminal states
(done/cancelled) and bookmarks omit it. The validator incorrectly
required exactly one not_before on all kind:30300 events, blocking the
entire completion/cancellation lifecycle.
Also adds d-tag structure validation per spec: reject zero, empty, or
duplicate d tags.
Co-authored-by: Will Pfleger <will@pfleger.dev >
Signed-off-by: Will Pfleger <will@pfleger.dev >
2026-06-11 15:10:01 -04:00
npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7
0b3bed62bf
feat(relay): implement NIP-ER event reminder support (kind:30300)
...
Adds relay-side support for NIP-ER encrypted event reminders:
Write path (ingest):
- Register KIND_EVENT_REMINDER (30300) as parameterized replaceable,
global-only, and UsersWrite-scoped
- Validate not_before tag: exactly one, decimal digits only, no leading
zeros, range 0..=MAX_SAFE_INTEGER
- Reject expiration <= not_before when both are present and parseable
Read path (REQ/COUNT/bridge):
- AUTHOR_ONLY_KINDS array gates visibility — only the authenticated
event author may read kind:30300 events
- Exclusive author-only filters (kinds:[30300]) require authors=[self]
or get CLOSED/403
- Mixed-kind filters pass the gate but per-event filtering silently
omits other authors' reminders
- COUNT fast path disabled when author-only kinds are in play to
prevent leaking aggregate counts
Integration tests (e2e_event_reminder.rs):
- Write validation: valid, missing, duplicate, malformed not_before;
expiration ordering; edge cases (0, MAX_SAFE_INTEGER)
- Read filtering: author self-query, cross-user rejection (HTTP 403
and WS CLOSED), mixed-kind omission, replacement semantics
Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Will Pfleger <wpfleger@squareup.com >
Signed-off-by: Will Pfleger <wpfleger@squareup.com >
2026-06-11 15:10:01 -04:00
Will Pfleger
a101fd6ad3
chore(justfile): build git-credential-nostr in dev and staging recipes ( #980 )
...
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
2026-06-11 14:53:36 -04:00
Wes
824c55114e
Fix Buzz command migration for saved agents ( #979 )
2026-06-11 11:27:58 -07:00
Will Pfleger
63738139ba
fix(desktop): resolve effective model and prompt from persona in display path ( #972 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-06-11 13:29:38 -04:00
Wes
1bb8b8d547
docs: clean up remaining Buzz references ( #977 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-06-11 10:22:14 -07:00
Wes
9242b91f00
chore(release): release version 0.3.17 ( #976 )
v0.3.17
2026-06-11 10:10:34 -07:00
tlongwell-block
e4a0824c6a
fix(onboarding): skip onboarding when relay already has a profile ( #973 )
2026-06-11 13:09:43 -04:00
Wes
79bcee55cb
docs: finish Buzz rename cleanup ( #974 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-06-11 09:28:18 -07:00
Taylor Ho
6f3733d43b
fix(desktop): let channel members bypass mention agent gate ( #965 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-06-11 09:21:07 -07:00
Wes
8f580f308c
Rename desktop app to Buzz ( #960 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-06-11 15:06:24 +00:00
Taylor Ho
dcb2639b35
feat(desktop): open profile panel from MembersSidebar rows ( #962 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-06-11 07:42:24 -07:00
Taylor Ho
4e4dc723e4
feat(desktop): per-event notification sounds and alert controls ( #968 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-06-11 07:31:19 -07:00
Taylor Ho
1ca16c898c
fix(desktop): make header chrome zoom-correct and tidy split-pane ( #941 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-06-11 07:27:23 -07:00
tlongwell-block
8c8312932a
fix(desktop): rename SPROUT_ env vars to BUZZ_ for child agent processes ( #971 )
2026-06-11 10:13:52 -04:00
Taylor Ho
31b0665cff
fix(justfile): complete buzz rename in dev and staging recipes ( #966 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-06-11 01:06:29 -07:00
Will Pfleger
d99ad131f1
refactor: rename sprout backend to buzz ( #958 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
Signed-off-by: Will Pfleger <wpfleger@squareup.com >
Signed-off-by: Will Pfleger <wpfleger96@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub16v54tttfqacx9ycvc3k0ut0npj564ahcuajzy6qjvh57ntmsf4uq4806j2 <d32955ad69077062930cc46cfe2df30ca9aaf6f8e76422681265e9e9af704d78@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Will Pfleger <wpfleger96@gmail.com >
2026-06-10 19:29:51 -04:00
Will Pfleger
53e3f09485
fix(desktop): reap orphaned agent processes across instances ( #954 )
...
Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-06-10 17:38:39 -04:00
Wes
c5a54dcc39
Rename web app to Buzz ( #959 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-06-10 21:07:02 +00:00
tlongwell-block
510009c11d
fix(desktop): allow restarting saved relay-mesh agents from the UI ( #956 )
...
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
2026-06-10 16:56:02 -04:00
Will Pfleger
60c8c5036a
feat(acp): agent timeout resilience — idle margin, tool-call reset, death notices, keepalive ( #935 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub16v54tttfqacx9ycvc3k0ut0npj564ahcuajzy6qjvh57ntmsf4uq4806j2 <d32955ad69077062930cc46cfe2df30ca9aaf6f8e76422681265e9e9af704d78@sprout-oss.stage.blox.sqprod.co >
2026-06-10 16:54:16 -04:00
Wes
c63e018b05
Rename mobile app to Buzz ( #955 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-06-10 13:38:11 -07:00
Will Pfleger
929cc8861e
fix(desktop): repair team-persona mismatch and deduplicate legacy imports ( #949 )
...
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-06-10 15:47:36 -04:00
Will Pfleger
b792aa4704
fix(desktop): populate last_message_at in channel browser ( #951 )
...
Signed-off-by: Will Pfleger <wpfleger@squareup.com >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-06-10 12:23:44 -07:00
klopez4212
e5f0c32648
Kit/circular avatars ( #927 )
2026-06-10 19:53:45 +01:00
tlongwell-block
dbe973dacd
fix(relay): accept mesh signaling kinds (24620/24621) via POST /events ( #946 )
...
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co >
2026-06-10 14:51:38 -04:00
Will Pfleger
f49cdcdd30
feat(sprout-dev-mcp): add read_file tool and replace_all to str_replace ( #928 )
...
Co-authored-by: Will Pfleger <wpfleger@block.xyz >
Signed-off-by: Will Pfleger <wpfleger@block.xyz >
Co-authored-by: npub16v54tttfqacx9ycvc3k0ut0npj564ahcuajzy6qjvh57ntmsf4uq4806j2 <d32955ad69077062930cc46cfe2df30ca9aaf6f8e76422681265e9e9af704d78@sprout-oss.stage.blox.sqprod.co >
2026-06-10 17:28:53 +00:00
Will Pfleger
c28d14f460
chore(release): release version 0.3.16 ( #943 )
v0.3.16
2026-06-10 13:04:14 -04:00
Wes
34c8bdab1a
fix(desktop): land live presence updates for not-yet-cached pubkeys ( #947 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
2026-06-10 16:58:12 +00:00
Will Pfleger
5c0af0bc93
fix(release): make just release idempotent for re-runs ( #948 )
2026-06-10 12:50:18 -04:00
klopez4212
e9cd1c3926
Improve mentions for agents + people ( #942 )
2026-06-10 17:40:53 +01:00
Taylor Ho
384eb6cba4
feat: agent memory viewer (read-only) in profile panel ( #917 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Bart Simpson <bart@sprout.local >
2026-06-10 08:32:38 -07:00
Wes
2dc466fe0b
Fix channel visibility controls ( #940 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-06-10 07:46:43 -07:00
Taylor Ho
3e56331e9c
fix(delete): make agent-deleted messages disappear from desktop UI immediately ( #918 )
...
Signed-off-by: Taylor Ho <taylorkmho@gmail.com >
Co-authored-by: Bart <bart@sprout.local >
2026-06-09 23:02:13 -07:00
Wes
e08937cdde
Fix emoji message rendering ( #938 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co >
2026-06-09 20:52:37 -07:00
Will Pfleger
ba2fdbf697
refactor(desktop): consolidate packs into teams ( #852 )
2026-06-09 23:22:34 -04:00
tlongwell-block
384a34ec31
Update README.md wording
2026-06-09 22:37:36 -04:00
tlongwell-block
fe14daa5d6
Fix post-compact handoff context for OpenAI providers ( #931 )
...
Signed-off-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1t2tgm7d8f995uqvmnm8h88sg3wnpp9a5xysjf6dg3tjmgt3ltulqdp8ehr <5a968df9a7494b4e019b9ecf739e088ba61097b4312124e9a88ae5b42e3f5f3e@sprout-oss.stage.blox.sqprod.co >
2026-06-09 21:56:54 -04:00
Wes
98aa535935
chore(release): release version 0.3.15 ( #936 )
v0.3.15
2026-06-09 18:02:31 -07:00
Wes
877048d68f
fix: persona is source of truth at spawn + thread-depth conventions ( #930 )
...
Signed-off-by: Wes <wesbillman@users.noreply.github.com >
Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: Brain <21994759fc7a6fa6b965551d35cfd7897d262f2495467f2d78694ddcfa6a5c7e@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-06-09 23:58:45 +00:00
Will Pfleger
73cd8d082d
fix: skip avatar reconciliation for legacy agent records ( #933 )
...
Signed-off-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co >
2026-06-09 19:52:11 -04:00
Will Pfleger
165b9f7a5f
feat(desktop): add nest commit identity guidance with human sign-off ( #929 )
...
Signed-off-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co >
Signed-off-by: Will Pfleger <wpfleger@squareup.com >
Signed-off-by: Will Pfleger <pfleger.will@gmail.com >
Co-authored-by: npub1fgdl5qqnh3k3f2xkqrvt7cujalhm623x4s7fdjdj5yrtp5fzjl9qrjpucw <4a1bfa0013bc6d14a8d600d8bf6392efefbd2a26ac3c96c9b2a106b0d12297ca@sprout-oss.stage.blox.sqprod.co >
Co-authored-by: npub1mn7jgtj4w2pd0g0zeuhxsa6jy6p0rewxz4kujt98my82ahfmp72sxjexk7 <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@sprout-oss.stage.blox.sqprod.co >
2026-06-09 18:46:55 -04:00
Will Pfleger
9a98e60fc2
feat: provider/model selection for personas and runtime-aware env injection ( #794 )
2026-06-09 20:42:27 +00:00