Commit Graph

468 Commits

Author SHA1 Message Date
Matt Toohey
5646d47358 fix(desktop): stop onboarding fallback from rewriting saved model config
Resolve both review findings on the config-page fallback added in
0d64ab15:

The installed-only fallback could silently rewrite the user's saved
model settings. With no stored harness selection, a persisted
preferred runtime that is no longer installed (e.g. Claude logged out
since onboarding) was excluded from the fallback list, so the page
resolved a different harness and the reconcile effect persisted a
reset config on open, with no user interaction. The fallback now also
includes the persisted preferred runtime, matching the Settings
defaults editor which lists harnesses regardless of install state, so
the reconcile effect resolves it as selected and stays a no-op.

The fallback also only triggered when the stored selection was empty,
so a stored selection whose ids had all dropped out of the runtime
catalog landed on the error surface instead. The fallback now triggers
whenever the catalog intersection is empty, reserving the error state
for query failures or zero usable harnesses.

Both cases are covered by new Playwright specs (verified to fail
against the previous component): one asserts a logged-out preferred
harness stays listed and selected with the saved config untouched, the
other asserts a stale stored selection falls back to installed
harnesses instead of erroring.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Matt Toohey <contact@matttoohey.com>
2026-07-21 11:40:34 -07:00
Matt Toohey
0d64ab158c fix(desktop): keep model settings populated when onboarding reopens
Going Back from the first-community screen reopens machine onboarding
directly on the "Configure your default model settings" page, but that
remount reset the harness selection made on the setup step — it lived
only in MachineOnboardingFlow state. DefaultConfigStep filtered the
runtime catalog against the now-empty selection, leaving the default
harness dropdown with no value and no options, and the model fields
empty.

Persist the setup step's harness selection to localStorage whenever it
is saved, restore it when the flow reopens on the config page, and fall
back to listing every installed harness (instead of an empty dropdown)
for installs that completed onboarding before the selection was
persisted. The config surface now also shows its error state whenever
no runtime resolves after loading, rather than only when a selection
was present.

Covered by unit tests for the new storage helpers and by extending the
back-navigation Playwright spec to assert the dropdowns stay populated
(plus a new spec for the no-stored-selection fallback).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Matt Toohey <contact@matttoohey.com>
2026-07-21 11:10:37 -07:00
morgmart
9cd13f3d5a Restore npub copy option for private community joins (#2232) 2026-07-21 16:43:21 +00:00
thomaspblock
c11b7b611e feat(desktop): browse immutable repository tags (#2231) 2026-07-21 18:11:28 +02:00
thomaspblock
001184395e fix(desktop): keep project branches after reload (#2214) 2026-07-21 13:28:37 +02:00
thomaspblock
166f27be4b fix(git): make project branch workflows reliable (#2213) 2026-07-21 12:58:39 +02:00
thomaspblock
b2c38c775b feat(desktop): manage project branches (#2212) 2026-07-21 10:16:02 +02:00
Bradley Axen
e315c4982f fix(desktop): clarify data deletion action (#2208)
Signed-off-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
2026-07-20 22:30:54 -07:00
morgmart
6ab45d75de Simplify first-community onboarding choices (UI only) (#2194) 2026-07-20 19:19:52 -07:00
Wes
d538111b51 Fix persisted agent defaults display (#2182)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Signed-off-by: npub1gjuws2a2dc8z2nszprtg7v6u9q7ffeah3hgl5yx45jwn7y7aqs6s5e9xj6 <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-07-20 15:45:34 -07:00
Wes
9ed843a0ac fix(desktop): avoid forwarding click event as channel callback (#2174)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-07-20 14:44:08 -07:00
morgmart
8c77a0cf8f Polish agent defaults surfaces: app dropdowns + collapsed Advanced env vars (#2184) 2026-07-20 12:00:04 -07:00
Bradley Axen
8a65d81fab fix(desktop): modal sign-in + branded communities onboarding page (#2147)
Signed-off-by: Bradley Axen <baxen@squareup.com>
Signed-off-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
2026-07-20 09:59:40 -07:00
Wes
9ab52d4f84 test(desktop): model membership relay in invite QR spec (#2178)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-07-20 09:36:29 -07:00
Bradley Axen
a4dfead21a fix(desktop): prefer live agent mentions (#2149)
Signed-off-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
2026-07-20 08:58:48 -07:00
Bradley Axen
9fb1a90b66 fix(desktop): close focused threads on Escape (#2154)
Signed-off-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
2026-07-20 08:58:28 -07:00
Kalvin C
fc1db46937 fix: skip membership lookup for open relays (#2107)
Signed-off-by: npub1ntr8jjcqq6gt06q5avvqttfjgpwshmra22pcmcagdnukw4ja4nqqsa9g54 <9ac6794b000690b7e814eb1805ad32405d0bec7d52838de3a86cf967565dacc0@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Co-authored-by: npub1ntr8jjcqq6gt06q5avvqttfjgpwshmra22pcmcagdnukw4ja4nqqsa9g54 <9ac6794b000690b7e814eb1805ad32405d0bec7d52838de3a86cf967565dacc0@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1dccv64krpcpse5cmkzfeh998cftungyatw3djt8jwdw6g43f7fyqzzmrf7 <6e30cd56c30e030cd31bb0939b94a7c257c9a09d5ba2d92cf2735da45629f248@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
2026-07-20 15:35:40 +00:00
Tyler
144b4f6c8d fix(desktop): make invite QR downloadable (#2168)
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co>
2026-07-20 15:29:22 +00:00
Tyler
4d58deafaa Archive managed agents when deleted (#2135)
Signed-off-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub12gtutshhh76rx0jx697f32f9tffd4hhp3hx58fp4x6u4uemkm7sqf8f757 <5217c5c2f7bfb4333e46d17c98a9255a52dadee18dcd43a43536b95e6776dfa0@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
2026-07-20 08:03:57 -07:00
thomaspblock
8024ce72ef fix(desktop): mask composer rounded corners (#2165) 2026-07-20 13:58:56 +02:00
thomaspblock
4fe3835e76 feat(desktop): add PR merge conflict recovery (#2164) 2026-07-20 13:41:33 +02:00
thomaspblock
6ecc89468d fix(desktop): mask scrolled content behind channel and thread composers (#2163)
Signed-off-by: Thomas Petersen <thomasp@squareup.com>
2026-07-20 13:37:35 +02:00
thomaspblock
73ac59a033 feat(desktop): add inline PR diff comments (#2162) 2026-07-20 12:29:46 +02:00
thomaspblock
de2220a70e feat(desktop): add commit-scoped PR review decisions (#2161) 2026-07-20 11:27:47 +02:00
thomaspblock
ba07de3670 fix(desktop): batch project work item queries (#2160) 2026-07-20 08:45:48 +02:00
thomaspblock
ac8c526122 feat(desktop): make missing project checkouts actionable (#2159) 2026-07-20 08:15:50 +02:00
morgmart
a6432ab133 Fix harness default model states in onboarding (#2156) 2026-07-19 21:49:19 -07:00
thomaspblock
7f769b2439 fix(desktop): align inbox layout and draft details (#2143)
Approved
2026-07-20 00:53:53 +02:00
Bradley Axen
9a251fbef1 fix(desktop): scope Emacs keys to lines (#2127)
Signed-off-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
2026-07-19 15:37:23 -07:00
cynfria
e84f3fe8ed feat(desktop): add fuzzy onboarding cards (#2141)
Signed-off-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
2026-07-19 14:18:32 -07:00
cynfria
1342fc564a Add back action to community profile onboarding (#2136)
Signed-off-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
2026-07-19 14:18:19 -07:00
morgmart
916c67d1d4 fix(desktop): restore channel header hidden behind shared backdrop (#2139) 2026-07-19 22:24:35 +02:00
morgmart
c5db094350 refactor(desktop): rename agent config files to agent-config family (#2140) 2026-07-19 13:12:24 -07:00
thomaspblock
ed432f91d9 feat(desktop): complete project git workflows (#2119) 2026-07-19 22:09:56 +02:00
Bradley Axen
cd0e7402d7 Add owned community onboarding (#2123)
Signed-off-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub1rf6fvdj6ut0c4kcmjv4p5mmgh89nj58n69uu3fz3cvk3jn500hqs7emz79 <1a7496365ae2df8adb1b932a1a6f68b9cb3950f3d179c8a451c32d194e8f7dc1@sprout-oss.stage.blox.sqprod.co>
2026-07-19 12:44:18 -07:00
klopez4212
2b0f5e9f80 Improve agent runtime settings (#2026) 2026-07-19 19:01:38 +00:00
cynfria
d04a4c978a fix(desktop): refine onboarding copy (#2130)
Signed-off-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
2026-07-19 11:42:35 -07:00
Tyler
a1e977cd1b fix(ui): relabel agent owner attribution from "owned by" to "managed by" (#2133)
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
2026-07-19 14:39:59 -04:00
cynfria
3881bff619 remove relay field from invite link step (#2131)
Signed-off-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
2026-07-19 11:26:53 -07:00
cynfria
46a63a864b Polish onboarding avatar capture (#2118)
Signed-off-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-07-19 11:14:06 -07:00
cynfria
31090b186f Polish onboarding runtime error states (#2116)
Signed-off-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-07-19 16:15:39 +00:00
Pavlenex
cab47905a8 feat(desktop): add tooltips to channel header actions (#2115)
Signed-off-by: Pavlenex <36959754+pavlenex@users.noreply.github.com>
2026-07-19 09:09:13 -07:00
morgmart
2d0bd6ec4a feat(desktop): add focused thread mode (#2108)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-19 09:55:39 -06:00
cynfria
b6aa71789d Align intro-to-your-team onboarding (#2102)
Signed-off-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: npub19x6jnl6rhepymwyl2xlltz3ce7rfg2ktllle3g2vu59n3s490k8s9n40l3 <29b529ff43be424db89f51bff58a38cf86942acbffff98a14ce50b38c2a57d8f@sprout-oss.stage.blox.sqprod.co>
2026-07-19 09:45:33 -06:00
morgmart
af4b7087dc Open community creation signup from desktop (#2110) 2026-07-18 20:44:23 -07:00
Tyler
da2e2592a3 fix(desktop): stop DMs from firing duplicate desktop notifications (#2105)
Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@sprout-oss.stage.blox.sqprod.co>
Co-authored-by: Tyler Longwell <tlongwell@block.xyz>
2026-07-18 23:16:00 -04:00
cynfria
c81806d1c8 Polish community profile onboarding UI (#2088)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-07-18 18:45:08 -07:00
morgmart
d011c3f747 test(desktop): fix Escape-before-mount race in channel browser e2e (#2101)
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-18 20:04:57 -04:00
Wes
836cf5f6ed Remove additional agents gallery (#2098)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-07-18 16:37:52 -07:00
Wes
775cf672d1 fix(desktop): recover first community joins (#2087)
Signed-off-by: Wes <wesbillman@users.noreply.github.com>
Co-authored-by: Pinky <44b8e82baa6e0e254e0208d68f335c283c94e7b78dd1fa10d5a49d3f13dd0435@sprout-oss.stage.blox.sqprod.co>
2026-07-18 15:31:17 -07:00