Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
272 commits
Select commit Hold shift + click to select a range
b80d59a
fix(webview): leave the surviving pin untouched in deleteProviderProfile
easonliang28 Sep 8, 2026
9004f5b
fix(webview): invalidate live sibling view state on reset and setting…
easonliang28 Sep 7, 2026
4f4f69a
fix(webview): sync view-local state with mode and profile mutations a…
easonliang28 Sep 8, 2026
93524f9
fix(core/webview): merge view-local state into getState for per-view …
easonliang28 Sep 6, 2026
36247ad
fix(core/webview): purge deleted provider profile from the settings s…
easonliang28 Sep 7, 2026
7f8c5f9
fix(core/webview): treat already-gone profile secrets as prunable on …
easonliang28 Sep 7, 2026
a440db1
fix(webview): sync view-local mode buffer on mode switch
easonliang28 Sep 8, 2026
31a1d80
fix(config): branch profile deletion on a typed not-found signal and …
easonliang28 Sep 8, 2026
364026d
fix(webview): send stable view-state id on launch and re-pin per-view…
easonliang28 Sep 6, 2026
ac6bcd5
fix(webview): keep view-state registration and storage writes failure…
easonliang28 Sep 7, 2026
54e39c6
fix(webview): apply extension-side normalization to persisted view-st…
easonliang28 Sep 7, 2026
9802cf9
fix(webview): re-pin to a valid global selection when the first liste…
easonliang28 Sep 8, 2026
dfcc3e7
fix(core/webview): keep shared provider settings out of the view-loca…
easonliang28 Sep 8, 2026
6ee970a
test(webview): add parallelMode spec with viewStates pruning edges an…
easonliang28 Sep 6, 2026
c268f43
test(webview): pin exact persisted view-state survivors and split the…
easonliang28 Sep 8, 2026
b8f5af8
fix(webview): isolate parallel mode and provider profile writes
easonliang28 Sep 6, 2026
01982d5
fix(api): route setConfiguration through ClineProvider.setValues
easonliang28 Sep 7, 2026
d337499
test(extension): add setValues to the api-configuration spec provider…
easonliang28 Sep 7, 2026
0df7399
fix(webview): leave the surviving pin untouched in deleteProviderProfile
easonliang28 Sep 8, 2026
065116c
fix(webview): sync the view-local buffer through wrapped apiConfigura…
easonliang28 Sep 8, 2026
b6194f7
Merge remote-tracking branch 'upstream/main' into vps2/f1a-view-identity
easonliang28 Sep 14, 2026
d2392d0
Merge remote-tracking branch 'upstream/main' into vps2/f1b-getstate-m…
easonliang28 Sep 14, 2026
c822ede
Merge remote-tracking branch 'upstream/main' into vps2/f1c-webview-id…
easonliang28 Sep 14, 2026
043ff74
fix(provider): close mode-switch abort window, drop bracket access, c…
easonliang28 Sep 14, 2026
cfc1593
Merge latest vps2/f1a-view-identity (CR walkthrough fixes)
easonliang28 Sep 14, 2026
0bf1040
test(provider): cover abort and pinned profile deletion guards
easonliang28 Sep 14, 2026
919e1ac
test(provider): assert profile settings write identity
easonliang28 Sep 14, 2026
a460bc4
Merge branch 'vps2/f1a-view-identity' into vps2/f1b-getstate-merge
easonliang28 Sep 14, 2026
58faafc
Merge branch 'vps2/f1b-getstate-merge' into vps2/f1c-webview-identity
easonliang28 Sep 14, 2026
b952f98
fix(core/webview): keep shared provider settings out of the view-loca…
easonliang28 Sep 15, 2026
942b1c6
Merge commit 'b952f98d2' into vps2/f1c-webview-identity
easonliang28 Sep 15, 2026
c94b427
fix(provider): make mode switch cancellation atomic and preserve view…
easonliang28 Sep 15, 2026
72656bd
Merge commit 'c94b42781' into vps2/f1b-getstate-merge
easonliang28 Sep 15, 2026
3474381
Merge commit '72656bddb' into vps2/f1c-webview-identity
easonliang28 Sep 15, 2026
c9e5aa9
fix(core/webview): purge deleted provider profile from the settings s…
easonliang28 Sep 15, 2026
ff1a724
Merge commit 'c9e5aa907' into vps2/f1b-getstate-merge
easonliang28 Sep 15, 2026
c0d009e
Merge commit 'ff1a72493' into vps2/f1c-webview-identity
easonliang28 Sep 15, 2026
ea65968
fix(webview): refresh the view-local buffer on profile mutation and h…
easonliang28 Sep 23, 2026
5a87f90
Merge branch 'main' into vps2/f2-durable-viewstates
easonliang28 Sep 23, 2026
e6f730a
fix(webview): narrow deletion activation, target the shared-list writ…
easonliang28 Sep 23, 2026
9bf83e3
Merge branch 'main' into vps2/f4-cross-instance-reset
easonliang28 Sep 23, 2026
2c267de
Merge remote-tracking branch 'upstream/main' into fix-pr-1546
easonliang28 Sep 27, 2026
74a4585
Merge remote-tracking branch 'upstream/main' into fix-pr-1550
easonliang28 Sep 27, 2026
af6b470
Merge remote-tracking branch 'upstream/main' into fix-pr-1552
easonliang28 Sep 27, 2026
825265f
Merge remote-tracking branch 'upstream/main' into fix-pr-1555
easonliang28 Sep 27, 2026
9747b62
test: replace double assertions with single structural casts in view-…
easonliang28 Sep 27, 2026
18587d5
fix(core/webview): clear buffered apiConfiguration overlay on profile…
easonliang28 Sep 27, 2026
9c9da36
Merge latest vps2/f1a-view-identity (single-cast test doubles)
easonliang28 Sep 27, 2026
7059313
test(webview): replace double assertions with single structural casts…
easonliang28 Sep 27, 2026
ad94239
test(webview): cover the direct-activation overlay clear
easonliang28 Sep 27, 2026
20f3cbd
Merge latest vps2/f1b-getstate-merge (single-cast test doubles)
easonliang28 Sep 27, 2026
f320b73
test(webview): replace double assertions in the launch suite with sin…
easonliang28 Sep 27, 2026
cec57b2
Merge commit 'f320b7387' into vps2/f2-durable-viewstates
easonliang28 Sep 27, 2026
832798b
test(webview): assert profile-mutation state semantics via the constr…
easonliang28 Sep 27, 2026
267bf35
test(webview): replace double assertions in the parallelMode spec wit…
easonliang28 Sep 27, 2026
47a9d44
Merge remote-tracking branch 'upstream/main' into vps2/f3-mode-profil…
easonliang28 Sep 27, 2026
830daec
Merge commit '267bf35e5' into vps2/f3-mode-profile-writes
easonliang28 Sep 27, 2026
3b1c6bf
test(webview): align profile-mutation specs with the cleared-buffer s…
easonliang28 Sep 27, 2026
84e5c52
test(webview): cover the handleModeSwitch rollback paths and corrupt-…
easonliang28 Sep 27, 2026
7154592
fix(webview): contain the abort rollback failure in handleModeSwitch
easonliang28 Sep 27, 2026
d47f14a
Merge branch 'vps2/f1a-view-identity' of https://github.com/easonLian…
easonliang28 Sep 27, 2026
3a24b1b
fix(webview): restore only the mode field when rolling back an aborte…
easonliang28 Sep 27, 2026
174dc68
Merge branch 'vps2/f1a-view-identity' of https://github.com/easonLian…
easonliang28 Sep 27, 2026
a14a38f
Merge remote-tracking branch 'upstream/main' into vps2/f4-cross-insta…
easonliang28 Sep 27, 2026
bbe4e8b
Merge branch 'vps2/f3-mode-profile-writes' of https://github.com/easo…
easonliang28 Sep 27, 2026
0d622de
fix: isolate sibling profile views across activation, delete, and tab…
easonliang28 Sep 28, 2026
ef139ae
test(webview): cover the sibling re-pin when a profile deletion early…
easonliang28 Sep 28, 2026
0535907
Merge remote-tracking branch 'origin/vps2/f3-mode-profile-writes' int…
easonliang28 Sep 28, 2026
00e9307
fix(webview): skip persistence for the launch-time re-pin activation
easonliang28 Sep 28, 2026
3ca9589
fix(tools): report switch_mode failure when the provider is released
easonliang28 Sep 28, 2026
bf0c438
fix(activate): log the focusInput drop when the tab panel has no live…
easonliang28 Sep 28, 2026
078643c
fix(webview): narrow the deletion fallback and de-duplicate the state…
easonliang28 Sep 28, 2026
66a6595
fix(webview): route the reset's durable viewStates clear through the …
easonliang28 Sep 28, 2026
bc81f30
fix(activate): make tab-panel tracking race-safe and keep hidden pane…
easonliang28 Sep 28, 2026
893df8a
test(activate): silence the equivalent StringLiteral mutant on the ca…
easonliang28 Sep 28, 2026
3037321
test(webview): pin the activation-list refresh and the sibling overla…
easonliang28 Sep 28, 2026
c9b08aa
test(activate): pin the history lookup to the re-pointed tracked panel
easonliang28 Sep 28, 2026
94e181e
test(webview): align the flat-provider buffer test with the overlay-d…
easonliang28 Sep 28, 2026
0c70f59
test(core): pin profile snapshot, delete re-pin, panel re-point, and …
easonliang28 Sep 28, 2026
4205376
fix(activate): register tab panel disposal before webview resolution
Sep 28, 2026
7fbfdd8
fix(activate): dispose the provider when tab webview resolution rejects
Sep 28, 2026
07f76c2
fix(webview): complete provider release when dispose cleanup rejects
Sep 28, 2026
60cb542
test(webview): cover the dispose() cleanup branches on the changed lines
Sep 28, 2026
d2faa7e
test(webview): cover the falsy entry in the dispose loop guard
Sep 28, 2026
ca61d20
merge: sync upstream/main into F3 + isolate dispose cleanup steps
easonliang28 Oct 12, 2026
4f60bbf
merge: sync upstream/main into F4 (cross-instance reset + settings im…
easonliang28 Oct 12, 2026
9c2bee3
fix(webview): validate the webview-supplied view state id before adop…
easonliang28 Oct 13, 2026
7e649e9
fix(webview): validate the webview-supplied view state id before adop…
easonliang28 Oct 13, 2026
fe00539
fix(webview): refresh pinned views on non-activating saves; treat the…
easonliang28 Oct 13, 2026
73c0b90
fix(webview): refresh pinned views on non-activating saves; treat the…
easonliang28 Oct 13, 2026
c6eac93
fix(webview): read the view overlay from the buffer, not the merged s…
easonliang28 Oct 13, 2026
28f4ba5
fix(webview): read the view overlay from the buffer, not the merged s…
easonliang28 Oct 13, 2026
a5a2f60
fix(webview): rebuild active task handlers when a pinned profile is s…
easonliang28 Oct 13, 2026
59744fd
fix(webview): rebuild active task handlers when a pinned profile is s…
easonliang28 Oct 13, 2026
b68744c
test: fix describe nesting, strengthen prune assertion, make stale-entry
easonliang28 Oct 13, 2026
4b28d3d
test: fix describe nesting, strengthen prune assertion, make stale-entry
easonliang28 Oct 13, 2026
390c0d4
fix: roll back task-side mode writes when the view mode pin write fails,
easonliang28 Oct 13, 2026
db6299d
fix: roll back task-side mode writes when the view mode pin write fails,
easonLiangWorldedtech Oct 13, 2026
574dfeb
fix(webview): make mode-switch failures atomic and scope profile-save…
easonliang28 Oct 13, 2026
08c6fcb
fix(webview): make mode-switch failures atomic and scope profile-save…
easonliang28 Oct 13, 2026
c820dd0
fix(webview): gate deleted-profile re-pin task writes on the task's o…
easonliang28 Oct 13, 2026
1849e73
fix(webview): gate deleted-profile re-pin task writes on the task's o…
easonliang28 Oct 13, 2026
0b08bb0
fix(webview): keep committed mode switches out of the reconcile rollback
easonliang28 Oct 13, 2026
c40a67a
fix(webview): keep committed mode switches out of the reconcile rollback
easonliang28 Oct 13, 2026
0d1e16a
fix(webview): keep committed mode switches out of the reconcile rollback
easonliang28 Oct 13, 2026
8fbce54
fix(webview): keep committed mode switches out of the reconcile rollback
easonliang28 Oct 13, 2026
9f62b84
fix(webview): commit the mode-switch guard at the activation write
easonliang28 Oct 13, 2026
3c454e5
fix(webview): commit the mode-switch guard at the activation write
easonliang28 Oct 13, 2026
8d33d13
fix(webview): announce aborted mode switches only while their commit …
easonliang28 Oct 13, 2026
47fc2ff
fix(webview): announce aborted mode switches only while their commit …
easonliang28 Oct 13, 2026
5ee6bcb
test(webview): exercise the real activation for the committed-switch …
easonliang28 Oct 13, 2026
612c6cc
test(webview): exercise the real activation for the committed-switch …
easonliang28 Oct 13, 2026
3329a4b
test(webview): repair duplicated re-pin comment in parallel-mode spec
easonliang28 Oct 13, 2026
6e583d0
test(webview): pin kept-switch task state and history on the committe…
easonliang28 Oct 13, 2026
1106fcb
test(webview): pin kept-switch task state and history on the committe…
easonliang28 Oct 13, 2026
9a1adca
Merge upstream main 58341d882 into vps2/f3-mode-profile-writes
easonliang28 Oct 14, 2026
7296009
fix: clear newly-unused bindings surfaced by main unused-vars re-enable
easonliang28 Oct 14, 2026
962c5da
Merge upstream main 58341d882 into vps2/f4-cross-instance-reset
easonliang28 Oct 14, 2026
fcd6b99
fix: clear newly-unused bindings surfaced by main unused-vars re-enable
easonliang28 Oct 14, 2026
1eb1397
chore: drop Stryker suppression comments per AGENTS.md policy
easonliang28 Oct 14, 2026
31cba71
chore: drop Stryker suppression comments per AGENTS.md policy
easonliang28 Oct 14, 2026
5dbfdb4
test: await serialized view-state writes and global-state seeds deter…
easonliang28 Oct 14, 2026
59ad1dd
fix: keep launch-time profile repair from rebuilding foreign-profile …
easonliang28 Oct 14, 2026
3eb9287
test: provide toolCallId in the switch-mode callbacks double
easonliang28 Oct 15, 2026
2168fb5
test: provide toolCallId in the switch-mode callbacks double
easonliang28 Oct 15, 2026
8967465
fix: report an error when the released provider cannot switch mode an…
easonliang28 Oct 15, 2026
315f51d
fix: validate setValues mode against custom modes carried in the same…
easonliang28 Oct 15, 2026
c81c51c
fix: deregister the provider in a finally path
easonliang28 Oct 15, 2026
3c2055d
fix: restore the previous mode when custom-mode registration fails
easonliang28 Oct 15, 2026
8f4591e
fix: restore the previous mode when custom-mode registration fails
easonliang28 Oct 15, 2026
af43b84
fix: read the prior mode through contextProxy in createTask
easonliang28 Oct 15, 2026
a92c4e9
fix: read the prior mode through contextProxy in createTask
easonliang28 Oct 15, 2026
a1a4593
fix: roll back the shared mode and the view pin independently
easonliang28 Oct 15, 2026
db61186
fix: roll back the shared mode and the view pin independently
easonliang28 Oct 15, 2026
fa29612
fix(f3): include the initial shared write in the setter rollback scope
easonliang28 Oct 15, 2026
d6330bf
fix(f4): keep live reset invalidation independent of the durable clear
easonliang28 Oct 15, 2026
f5ef758
Merge upstream main 4f1dee18e into f3
easonliang28 Oct 16, 2026
6a5f56b
Merge upstream main 4f1dee18e into f4
easonliang28 Oct 16, 2026
3211c95
test(f4): use a valid view type for the sibling instance
easonliang28 Oct 16, 2026
5160459
chore: untrack husky runtime artifacts
easonliang28 Oct 16, 2026
89e0499
chore: untrack husky runtime artifacts
easonliang28 Oct 16, 2026
f015cc8
fix(f3): keep view-state cache, pins, and mode writes consistent
easonliang28 Oct 16, 2026
a3e32f4
fix(f4): keep view-state cache, pins, and rename re-point consistent
easonliang28 Oct 16, 2026
c89a347
style: format pruned eslint suppressions
easonliang28 Oct 16, 2026
c80560c
fix: re-point closed-view pins on rename, undo half-finished renames,…
easonliang28 Oct 16, 2026
5430c06
fix: re-point closed-view pins on rename, undo half-finished renames,…
easonliang28 Oct 16, 2026
774d65f
chore: drop husky-generated LFS hook scripts under .husky/_ (regenera…
easonliang28 Oct 16, 2026
36dcc8d
chore: drop husky-generated LFS hook scripts under .husky/_ (regenera…
easonliang28 Oct 16, 2026
01506e9
fix(webview): hand the stored profile record to rename re-points, rol…
easonliang28 Oct 16, 2026
042de98
fix(webview): hand the stored profile record to rename re-points, rol…
easonliang28 Oct 16, 2026
eabeffa
fix(webview): build activation writes from the stored record and roll…
easonliang28 Oct 17, 2026
59062a7
fix(webview): build activation writes from the stored record and roll…
easonliang28 Oct 17, 2026
cd5d132
Merge upstream main into f3 (row-9 refresh)
easonliang28 Oct 17, 2026
84da1fb
Merge upstream main into f4 (row-9 refresh)
easonliang28 Oct 17, 2026
03b1801
fix(webview): close rename compensation gaps and reject colliding tar…
easonliang28 Oct 17, 2026
6532bad
fix(webview): close rename compensation gaps and reject colliding tar…
easonliang28 Oct 17, 2026
1d2313e
test(webview): repoint manager doubles for the profile read-back cont…
easonliang28 Oct 17, 2026
b248c1a
test(webview): repoint manager doubles for the profile read-back cont…
easonliang28 Oct 17, 2026
5fee410
fix(webview): protect sibling profiles from flat provider writes
easonliang28 Oct 17, 2026
a8d4421
test(extension): expect the saved-profile option in setValues calls
easonliang28 Oct 17, 2026
aa2da74
fix(provider): let the reset broadcast own the per-view state clear
easonliang28 Oct 17, 2026
8b544b8
fix(provider): serialize sibling overlay commits and align the save name
easonliang28 Oct 17, 2026
7db2ecd
fix(provider): fail closed on unverified profile saves and compensate…
easonliang28 Oct 17, 2026
6063622
fix(provider): fail closed on unverified profile saves and compensate…
easonliang28 Oct 17, 2026
6c80da1
fix(api): persist the profile record before refreshing shared and sib…
easonliang28 Oct 17, 2026
b7ce0b1
fix(api): roll the configuration round trip back as one transaction
easonliang28 Oct 17, 2026
ee13e84
test(api): teach the set-configuration double the transactional reads
easonliang28 Oct 17, 2026
1125397
fix(api): make the configuration rollback existence-aware and complete
easonliang28 Oct 17, 2026
6f571f6
fix(api): replay the restored profile to its pinned overlays
easonliang28 Oct 17, 2026
8d03bda
fix(api): make the overlay replay the last rollback refresh
easonliang28 Oct 17, 2026
d3ef740
fix(api): replay the previous profile's record to its pinned overlays
easonliang28 Oct 17, 2026
241cf49
Merge remote-tracking branch 'upstream/main' into vps2/f3-mode-profil…
easonLiangWorldedtech Oct 22, 2026
43339f5
style: apply repo Prettier to the merge resolution
easonLiangWorldedtech Oct 22, 2026
57bb768
Merge remote-tracking branch 'upstream/main' into vps2/f4-cross-insta…
easonLiangWorldedtech Oct 22, 2026
31c5381
style: apply repo Prettier to the merge resolution
easonLiangWorldedtech Oct 22, 2026
020a339
chore: drop accidental local tooling artifacts from the branch
easonLiangWorldedtech Oct 22, 2026
2626e1c
chore: drop accidental local tooling artifacts from the branch
easonLiangWorldedtech Oct 22, 2026
607131b
chore(knip): mark the test-only view-identity seams @internal
easonLiangWorldedtech Oct 22, 2026
4acc103
chore(knip): mark the test-only view-identity seams @internal
easonLiangWorldedtech Oct 22, 2026
6370bca
chore: drop accidentally committed local merge/preflight transcripts
easonLiangWorldedtech Oct 22, 2026
bd0b893
chore: drop accidentally committed local merge/preflight transcripts
easonLiangWorldedtech Oct 22, 2026
61d279c
fix(webview, task): wait for a timed-out mode switch and keep sibling…
easonLiangWorldedtech Oct 22, 2026
c13b80a
chore: remove committed local check transcripts
easonLiangWorldedtech Oct 22, 2026
c06092c
fix(api, package): hide the sidebar title-bar commands from the palet…
easonLiangWorldedtech Oct 22, 2026
75598a7
style: apply prettier formatting to the configuration spec
easonLiangWorldedtech Oct 22, 2026
fb508b0
test(api): drive the accepted and rejected hasConfig paths in setConf…
easonLiangWorldedtech Oct 22, 2026
fc4f9a4
chore: retrigger CI (compile and check-translations check-runs stayed…
easonLiangWorldedtech Oct 22, 2026
38a9b70
test(task): assert the delivery is pending while the settle is deferred
easonLiangWorldedtech Oct 22, 2026
1d55a60
fix(view): post the view re-pin and tighten the profile-write tests
easonLiangWorldedtech Oct 22, 2026
167534a
fix(activate): preserve the tab init error through cleanup
easonLiangWorldedtech Oct 22, 2026
266aaf1
Merge upstream/main into vps2/f3-mode-profile-writes
Nov 1, 2026
0acb592
Merge upstream/main into vps2/f4-cross-instance-reset
Nov 1, 2026
c77a8b9
chore(lint): prune the stale no-explicit-any suppressions after the m…
easonLiangWorldedtech Nov 2, 2026
5cbf406
chore(lint): prune the stale no-explicit-any suppressions after the m…
easonLiangWorldedtech Nov 2, 2026
2ff75cc
test(webview): import StringCache in the extension state spec
easonLiangWorldedtech Nov 2, 2026
0c2aeb9
merge upstream/main (a4f774b17) into vps2/f3-mode-profile-writes
easonLiangWorldedtech Nov 2, 2026
cc232b5
merge upstream/main (a4f774b17) into vps2/f4-cross-instance-reset
easonLiangWorldedtech Nov 2, 2026
4d20ce8
merge upstream/main (a4f774b17) into vps2/f4-cross-instance-reset
easonLiangWorldedtech Nov 2, 2026
230b69d
test(webview): import StringCache in the extension state spec
easonLiangWorldedtech Nov 2, 2026
9d914ac
fix(webview): handle the webviewHeartbeat message so the watchdog see…
easonLiangWorldedtech Nov 2, 2026
80bef8f
fix(webview): handle the webviewHeartbeat message so the watchdog see…
easonLiangWorldedtech Nov 2, 2026
cb1576a
fix(merge): keep the webviewHeartbeat case outside the webviewDidLaun…
easonLiangWorldedtech Nov 3, 2026
11d64e0
fix(merge): restore the postActions helper dropped by the upstream merge
easonLiangWorldedtech Nov 3, 2026
56d9493
fix(merge): keep the webviewHeartbeat case outside the webviewDidLaun…
easonLiangWorldedtech Nov 3, 2026
6f6f84e
merge upstream/main (3ee042d91) into vps2/f3-mode-profile-writes
easonLiangWorldedtech Nov 3, 2026
34560d5
test(merge): restore the visible-provider mock declaration the merge …
easonLiangWorldedtech Nov 3, 2026
02d59c9
merge upstream/main (3ee042d91) into vps2/f4-cross-instance-reset
easonLiangWorldedtech Nov 3, 2026
9dd1e57
test(activate): declare retryWebviewRecovery on the provider double
easonLiangWorldedtech Nov 3, 2026
fda1600
test(webview): drop unused scaffolding from the context spec
easonLiangWorldedtech Nov 3, 2026
c8fc899
fix(activate): restore the title-bar command handlers an earlier merg…
easonLiangWorldedtech Nov 3, 2026
a6efa5b
test(webview): drop unused scaffolding from the context spec
easonLiangWorldedtech Nov 3, 2026
5ccce92
fix(webview): make the profile rename check, save, and rollback one c…
easonLiangWorldedtech Nov 3, 2026
152fad9
fix(webview): close the load/dispose/delivery gaps and prove the in-f…
easonLiangWorldedtech Nov 3, 2026
906cb95
test(webview-ui): restore the stale-push task-identity coverage
easonLiangWorldedtech Nov 3, 2026
e1c2560
fix(webview): check the mode and delete custom modes inside the profi…
easonLiangWorldedtech Nov 3, 2026
de05ff0
fix(activate): share one in-flight tab creation and abort a shared wr…
easonLiangWorldedtech Nov 3, 2026
312e688
fix(webview): tolerate a pin that names a deleted profile in the sibl…
easonLiangWorldedtech Nov 3, 2026
d58af6a
test(webview): await the on-demand locale fetch instead of timing it
easonLiangWorldedtech Nov 4, 2026
770929c
fix(provider): classify profile lookups by presence, not by swallowed…
easonLiangWorldedtech Nov 4, 2026
4608faf
fix(provider): roll task history back when a mode switch fails after …
easonLiangWorldedtech Nov 4, 2026
1a1dd23
fix(provider): snapshot sibling overlays before the delete's shared w…
easonLiangWorldedtech Nov 4, 2026
ae7ff52
fix(provider): scope the shared rollback to keys this call wrote, and…
easonLiangWorldedtech Nov 4, 2026
7cd56ca
fix(provider): re-resolve the profile for a pin that moved during the…
easonLiangWorldedtech Nov 4, 2026
be3e140
fix(activate): re-run a pending tab creation whose provider was dispo…
easonLiangWorldedtech Nov 4, 2026
557f1c9
fix(webview): clear sign-out tokens through the provider so pinned vi…
easonLiangWorldedtech Nov 4, 2026
232949c
fix(activate): join the in-flight tab creation before reusing the tra…
easonLiangWorldedtech Nov 4, 2026
4770161
fix(webview): join the cross-instance profile section for the shared …
easonLiangWorldedtech Nov 4, 2026
ec2fb37
fix(webview-ui): mint a view id only through a callable crypto.random…
easonLiangWorldedtech Nov 4, 2026
f555d04
fix(webview): release pending diagnostics requests when teardown throws
easonLiangWorldedtech Nov 4, 2026
94bef37
fix(webview): snapshot sibling overlays before the shared settings write
easonLiangWorldedtech Nov 4, 2026
b0e1c67
fix(activate): close the failed tab when webview resolution rejects
easonLiangWorldedtech Nov 4, 2026
c79048c
fix(webview): close the profile-write and view-restore review threads…
easonLiangWorldedtech Nov 5, 2026
8cc8f33
Merge upstream/main (e943530c8, #2223) into vps2/f3-mode-profile-writes
easonLiangWorldedtech Nov 5, 2026
17890eb
Merge vps2/f3-mode-profile-writes (8cc8f3335, #1560) into vps2/f4-cro…
easonLiangWorldedtech Nov 5, 2026
cf80e4b
fix(extension,webview): keep host-owned view states out of the API wr…
easonLiangWorldedtech Nov 5, 2026
152e5e1
Merge vps2/f3-mode-profile-writes (cf80e4bbd, #1560) into vps2/f4-cro…
easonLiangWorldedtech Nov 5, 2026
97a174f
#1562 review round: serialise the record leg of setConfiguration, nar…
easonLiangWorldedtech Nov 5, 2026
057e866
fix(extension): read the prior mode mapping before the cross-instance…
easonLiangWorldedtech Nov 5, 2026
ce3b00a
fix(webview): run each provider release once and drop the dispose-tim…
easonLiangWorldedtech Nov 5, 2026
ba2e9db
fix(activate,extension): keep a live tab and the snapshot profile thr…
easonLiangWorldedtech Nov 5, 2026
10c6a54
fix(extension): only restore a profile record this call still owns
easonLiangWorldedtech Nov 5, 2026
d759d03
test(core): bring back the sibling-overlay case the f4 merge dropped
easonLiangWorldedtech Nov 7, 2026
0625de6
fix(extension): compare the rollback record with what the save stored
easonLiangWorldedtech Nov 7, 2026
0f52458
Merge upstream/main (73931fe8be253b93ec11103a0672c615e849f895) into v…
easonLiangWorldedtech Nov 7, 2026
be012f6
fix(api): roll back the profile write when the read-back after the sa…
easonLiangWorldedtech Nov 7, 2026
39a38b2
fix(api): judge profile compensation against the normalized record
easonLiangWorldedtech Nov 7, 2026
82f44f8
fix(webview): keep view-local profile credentials out of the shared s…
easonLiangWorldedtech Nov 7, 2026
3414aa6
fix(extension): hand siblings the profile record that landed
easonLiangWorldedtech Nov 7, 2026
82f0a98
test(extension): expect the landed profile record in the second argument
easonLiangWorldedtech Nov 8, 2026
c762f95
feat(webview): render the saved value in the [saveViewState] log line
Nov 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,10 @@ qdrant_storage/
plans/

roo-cli-*.tar.gz*
.merge-*
.zdt-*
.eslint-*.txt
.fix-commit*.txt
.prettier-check.txt
.suites*.txt
.tsc.txt
29 changes: 29 additions & 0 deletions packages/types/src/__tests__/global-settings.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,35 @@ describe("alwaysDenyUnapprovedCommands global setting", () => {
})
})

describe("viewStates global setting", () => {
it("parses a valid per-view record", () => {
const parsed = globalSettingsSchema.parse({
viewStates: {
"stable-view-1": { mode: "code", currentApiConfigName: "profile-a", updatedAt: 1730000000000 },
"stable-view-2": {},
},
})
expect(parsed.viewStates?.["stable-view-1"]).toEqual({
mode: "code",
currentApiConfigName: "profile-a",
updatedAt: 1730000000000,
})
expect(parsed.viewStates?.["stable-view-2"]).toEqual({})
expect(GLOBAL_SETTINGS_KEYS).toContain("viewStates")
})

it("rejects invalid field values inside a view entry", () => {
expect(() => globalSettingsSchema.parse({ viewStates: { v: { mode: 42 } } })).toThrow()
expect(() => globalSettingsSchema.parse({ viewStates: { v: { currentApiConfigName: 42 } } })).toThrow()
expect(() => globalSettingsSchema.parse({ viewStates: { v: { updatedAt: "soon" } } })).toThrow()
})

it("rejects non-object viewStates values", () => {
expect(() => globalSettingsSchema.parse({ viewStates: "not-a-record" })).toThrow()
expect(() => globalSettingsSchema.parse({ viewStates: { v: "not-an-entry" } })).toThrow()
})
})

describe("collapseCommandOutputByDefault global setting", () => {
it.each([true, false, undefined])("round-trips %s through the export/import schema", (value) => {
const settings = globalSettingsSchema.parse({ collapseCommandOutputByDefault: value })
Expand Down
5 changes: 5 additions & 0 deletions packages/types/src/__tests__/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
import { GLOBAL_STATE_KEYS } from "../index.js"

describe("GLOBAL_STATE_KEYS", () => {
it("should contain registered durable per-view state", () => {
expect(GLOBAL_STATE_KEYS).toContain("viewStates")
})

it("should contain provider settings keys", () => {
expect(GLOBAL_STATE_KEYS).toContain("autoApprovalEnabled")
})
Expand All @@ -13,6 +17,7 @@ describe("GLOBAL_STATE_KEYS", () => {

it("should not contain secret state keys", () => {
expect(GLOBAL_STATE_KEYS).not.toContain("openRouterApiKey")
expect(GLOBAL_STATE_KEYS).not.toContain("apiKey")
})

it("should contain OpenAI Compatible base URL setting", () => {
Expand Down
10 changes: 10 additions & 0 deletions packages/types/src/global-settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,15 @@ export const MAX_CHECKPOINT_TIMEOUT_SECONDS = 60
*/
export const DEFAULT_CHECKPOINT_TIMEOUT_SECONDS = 15

/**
* Persisted non-secret selections for a stable webview instance.
*/
export const viewStateSchema = z.object({
mode: z.string().optional(),
currentApiConfigName: z.string().optional(),
updatedAt: z.number().optional(),
})

/**
* GlobalSettings
*/
Expand All @@ -122,6 +131,7 @@ export const globalSettingsSchema = z.object({
currentApiConfigName: z.string().optional(),
listApiConfigMeta: z.array(providerSettingsEntrySchema).optional(),
pinnedApiConfigs: z.record(z.string(), z.boolean()).optional(),
viewStates: z.record(z.string(), viewStateSchema).optional(),

lastShownAnnouncementId: z.string().optional(),
customInstructions: z.string().optional(),
Expand Down
1 change: 1 addition & 0 deletions packages/types/src/vscode-extension-host.ts
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,7 @@ export interface WebviewMessage {
| "themeFixtureProbeResponse"
| "diagnosticsResponse"
text?: string
viewStateId?: string
taskId?: string
editedMessageContent?: string
tab?: "settings" | "history" | "mcp" | "modes" | "chat" | "marketplace" | "cloud"
Expand Down
8 changes: 8 additions & 0 deletions packages/types/src/vscode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,14 @@ export const commandIds = [
"popoutButtonClicked",
"settingsButtonClicked",

// Editor-tab (popped-out) surface variants of the title-bar buttons. The
// shared ids above target the sidebar click origin, so the tab surface
// needs its own ids (see registerCommands.ts getTabProvider).
"plusButtonClickedInTab",
"settingsButtonClickedInTab",
"marketplaceButtonClickedInTab",
"historyButtonClickedInTab",

"openInNewTab",

"newTask",
Expand Down
Loading
Loading