Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
435 commits
Select commit Hold shift + click to select a range
c40a67a
fix(webview): keep committed mode switches out of the reconcile rollback
easonliang28 Oct 13, 2026
ed668c4
fix(webview): keep committed mode switches out of the reconcile rollback
easonliang28 Oct 13, 2026
3f1b91c
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
03913bf
fix(webview): keep committed mode switches out of the reconcile rollback
easonliang28 Oct 13, 2026
94c5c76
fix(webview): commit the mode-switch guard at the activation write
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
1759c8e
fix(webview): commit the mode-switch guard at the activation write
easonliang28 Oct 13, 2026
c2ee9dc
fix(webview): announce aborted mode switches only while their commit …
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
9e20cc9
fix(webview): announce aborted mode switches only while their commit …
easonliang28 Oct 13, 2026
1c299d5
test(webview): exercise the real activation for the committed-switch …
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
786a1ce
test(webview): exercise the real activation for the committed-switch …
easonliang28 Oct 13, 2026
bb467f6
test(webview): repair duplicated re-pin comment in parallel-mode spec
easonliang28 Oct 13, 2026
3329a4b
test(webview): repair duplicated re-pin comment in parallel-mode spec
easonliang28 Oct 13, 2026
c0d0e27
test(webview): pin kept-switch task state and history on the committe…
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
0e9337f
test(webview): pin kept-switch task state and history on the committe…
easonliang28 Oct 13, 2026
f701452
Merge upstream main 58341d882 into vps2/f5-api-wiring
easonliang28 Oct 14, 2026
3e9889d
fix: clear newly-unused bindings surfaced by main unused-vars re-enable
easonliang28 Oct 14, 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
05c3f37
Merge upstream main 58341d882 into vps2/f6-e2e-viewstate
easonliang28 Oct 14, 2026
3f55e8f
fix: clear newly-unused bindings surfaced by main unused-vars re-enable
easonliang28 Oct 14, 2026
d6ab00c
chore: drop Stryker suppression comments per AGENTS.md policy
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
e3f1754
chore: drop Stryker suppression comments per AGENTS.md policy
easonliang28 Oct 14, 2026
73c8358
fix: keep launch-time profile repair from rebuilding foreign-profile …
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
dc8eef5
fix: re-point tracked tab through disposal on init failure and preser…
easonliang28 Oct 14, 2026
b1040f3
fix: exclude shared provider settings from getConfiguration when a vi…
easonliang28 Oct 15, 2026
49241f7
fix: exclude shared provider settings from getConfiguration when a vi…
easonliang28 Oct 15, 2026
5643599
test: provide toolCallId in the switch-mode callbacks double
easonliang28 Oct 15, 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
e26ef6c
test: provide toolCallId in the switch-mode callbacks double
easonliang28 Oct 15, 2026
2772e56
fix: validate setValues mode against custom modes carried in the same…
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
87d5a6f
fix: validate setValues mode against custom modes carried in the same…
easonliang28 Oct 15, 2026
c0cabfd
chore: retrigger CI (e2e-mock env timeout flake)
easonliang28 Oct 15, 2026
e3e1db4
fix: deregister the provider in a finally path and keep the shared pr…
easonliang28 Oct 15, 2026
c81c51c
fix: deregister the provider in a finally path
easonliang28 Oct 15, 2026
3209f8f
fix: harden provider disposal and keep the shared provider fallback
easonliang28 Oct 15, 2026
9014ada
fix: restore the shared provider fallback when a profile sets apiProv…
easonliang28 Oct 15, 2026
ad61006
fix: restore the shared provider fallback when a profile sets apiProv…
easonliang28 Oct 15, 2026
b10f7a1
fix: restore mode on registration failure and cover all disposal in f…
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
ca89786
fix: restore mode on registration failure and cover all disposal in f…
easonliang28 Oct 15, 2026
3c8282f
fix: read the prior mode through contextProxy in createTask
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
9408202
fix: read the prior mode through contextProxy in createTask
easonliang28 Oct 15, 2026
bf6beed
fix: roll back the shared mode and the view pin independently
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
e362466
fix: roll back the shared mode and the view pin independently
easonliang28 Oct 15, 2026
4d78040
fix(f5): exclude non-ApiKey credential fields from getConfiguration a…
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
8a9150b
fix(f6): validate test-API global-state keys, drop stale view-state l…
easonliang28 Oct 15, 2026
fbcd519
fix(f5): compensate the first shared write and exclude credential pat…
easonliang28 Oct 16, 2026
0bacabe
fix(f6): exclude credential path fields from the flattened configuration
easonliang28 Oct 16, 2026
cd5f076
fix(f5): settle every configuration write before rejecting setValues
easonliang28 Oct 16, 2026
3d656f0
fix(f6): refuse credential-bearing keys in the test global-state API
easonliang28 Oct 16, 2026
c1a91f3
chore: retrigger CI (workflow trigger missed)
easonliang28 Oct 16, 2026
712908c
chore: retrigger CI (workflow trigger missed)
easonliang28 Oct 16, 2026
7af314e
Merge upstream main 4f1dee18e into f5
easonliang28 Oct 16, 2026
f5ef758
Merge upstream main 4f1dee18e into f3
easonliang28 Oct 16, 2026
6a5f56b
Merge upstream main 4f1dee18e into f4
easonliang28 Oct 16, 2026
6f42165
Merge upstream main 4f1dee18e into f6
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
0fd3161
chore: untrack husky runtime artifacts
easonliang28 Oct 16, 2026
89e0499
chore: untrack husky runtime artifacts
easonliang28 Oct 16, 2026
7929587
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
1360563
fix(f5): relocate plaintext provider keys and keep view caches consis…
easonliang28 Oct 16, 2026
b179c9c
fix(f6): keep viewStates out of configuration round trip and guard mo…
easonliang28 Oct 16, 2026
c89a347
style: format pruned eslint suppressions
easonliang28 Oct 16, 2026
bf0ff21
fix: re-point closed-view pins on rename, undo half-finished renames,…
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
086bbb0
fix: re-point closed-view pins on rename, undo half-finished renames,…
easonliang28 Oct 16, 2026
32dacbf
chore: drop husky-generated LFS hook scripts under .husky/_ (regenera…
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
c50ef85
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
f46c106
fix(webview): harden rename re-points, view ids, global-state keys, l…
easonliang28 Oct 16, 2026
868a23e
fix(webview): harden rename re-points, view ids, global-state keys, a…
easonliang28 Oct 16, 2026
c69978c
fix(api): serialize setConfiguration, await mode writes before compen…
easonliang28 Oct 17, 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
5ef57e2
fix(api): persist parsed global-state values and build activation wri…
easonliang28 Oct 17, 2026
0ecff8b
Merge upstream main into f5 (row-9 refresh)
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
2675a7d
Merge upstream main into f6 (row-9 refresh)
easonliang28 Oct 17, 2026
8a0c72c
fix(webview): close rename compensation gaps and reject colliding tar…
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
0db5c79
fix(webview): close rename compensation gaps and reject colliding tar…
easonliang28 Oct 17, 2026
4a672a2
test(webview): repoint manager doubles for the profile read-back cont…
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
3a469b8
test(webview): repoint manager doubles for the profile read-back cont…
easonliang28 Oct 17, 2026
98a2f61
test(webview): assert the fallback storage key and payload
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
44d7a56
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
23a7104
Merge remote-tracking branch 'upstream/main' into vps2/f5-api-wiring
easonLiangWorldedtech Oct 22, 2026
58c5217
style: apply repo Prettier to the merge resolution
easonLiangWorldedtech Oct 22, 2026
17de4f5
Merge remote-tracking branch 'upstream/main' into vps2/f6-e2e-viewstate
easonLiangWorldedtech Oct 22, 2026
6aa8f9c
test(extension): name the private fileLog in the spy without a union-…
easonLiangWorldedtech Oct 22, 2026
29fb826
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
ff7b821
chore: drop accidental local tooling artifacts from the branch
easonLiangWorldedtech Oct 22, 2026
f156261
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
6cf405a
chore(knip): mark the test-only view-identity seams @internal
easonLiangWorldedtech Oct 22, 2026
b8d23fa
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
2e1ed86
chore: drop accidentally committed local merge/preflight transcripts
easonLiangWorldedtech Oct 22, 2026
d2f7da2
chore: drop accidentally committed local merge/preflight transcripts
easonLiangWorldedtech Oct 22, 2026
60cb846
fix(api, types): skip the headless readiness wait when no view exists…
easonLiangWorldedtech Oct 22, 2026
61d279c
fix(webview, task): wait for a timed-out mode switch and keep sibling…
easonLiangWorldedtech Oct 22, 2026
1c90e8b
fix(api): keep the readiness barrier when a webview already launched
easonLiangWorldedtech Oct 22, 2026
3140061
fix(api): report failed configuration compensation and prove the opti…
easonLiangWorldedtech Oct 22, 2026
89576d6
fix(api): dispose a new-tab provider whose task never started
easonLiangWorldedtech Oct 22, 2026
c13b80a
chore: remove committed local check transcripts
easonLiangWorldedtech Oct 22, 2026
cfd0bc9
fix(api): fail closed on a readiness timeout and report every compens…
easonLiangWorldedtech Oct 22, 2026
6534c28
style: apply prettier formatting to the new api specs
easonLiangWorldedtech Oct 22, 2026
b4911c6
fix(webview): keep the manager record id when restoring a failed prof…
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
4cf697b
Merge remote-tracking branch 'upstream/main' into vps2/f5-api-wiring
easonLiangWorldedtech Oct 26, 2026
f19dd84
Merge remote-tracking branch 'upstream/main' into vps2/f6-e2e-viewstate
easonLiangWorldedtech Oct 26, 2026
e6b39fa
Merge remote-tracking branch 'origin/vps2/f5-api-wiring' into vps2/f6…
easonLiangWorldedtech Oct 26, 2026
82859b4
fix(webview): port the F5 task re-pin into the F6 deletion path
easonLiangWorldedtech Oct 26, 2026
6160a47
fix(webview): restore the view-local overlays when a setValues write …
easonLiangWorldedtech Oct 26, 2026
e1bf7bf
Merge remote-tracking branch 'origin/vps2/f5-api-wiring' into vps2/f6…
easonLiangWorldedtech Oct 26, 2026
c9d7217
fix(webview): separate store generations and restore deleted-profile …
easonLiangWorldedtech Oct 26, 2026
987388b
fix(webview): restore the apiConfiguration overlay on deleted-profile…
easonLiangWorldedtech Oct 26, 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
9a99875
Merge upstream/main into vps2/f6-e2e-viewstate
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
ed0d4e1
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
b91e45b
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
ffeeec8
merge upstream/main (a4f774b17) into vps2/f6-e2e-viewstate
easonLiangWorldedtech Nov 2, 2026
615903c
test(webview): mark the unused view-state helpers as intentionally un…
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
3114d1d
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
7ce557f
fix(merge): keep the webviewHeartbeat case outside the webviewDidLaun…
easonLiangWorldedtech Nov 3, 2026
5b73d22
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
524a99e
merge upstream/main (3ee042d91) into vps2/f6-e2e-viewstate
easonLiangWorldedtech Nov 3, 2026
02d59c9
merge upstream/main (3ee042d91) into vps2/f4-cross-instance-reset
easonLiangWorldedtech Nov 3, 2026
3b94f99
test(merge): restore the visible-provider mock declaration the merge …
easonLiangWorldedtech Nov 3, 2026
9dd1e57
test(activate): declare retryWebviewRecovery on the provider double
easonLiangWorldedtech Nov 3, 2026
afb0fe9
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
a92d8b2
fix(webview): drop the duplicated dispose preamble the merge spliced in
easonLiangWorldedtech Nov 3, 2026
0dd791e
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
96e93e5
merge #1562 head 97a174f8a1 into vps2/f6-e2e-viewstate
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
b61788a
Merge branch 'vps2/f4-cross-instance-reset' (ba2e9dbdc, #1562) into v…
easonLiangWorldedtech Nov 5, 2026
7efab38
chore(core): drop the unread write tokens, durable records and genera…
easonLiangWorldedtech Nov 5, 2026
3bf117a
test(activate): drop order-dependent duplicates in the tab-panel suite
easonLiangWorldedtech Nov 5, 2026
7565af3
fix(webview): route the custom-mode writes through the provider
easonLiangWorldedtech Nov 5, 2026
71d7b57
docs(webview): name what the deleted-profile check covers
easonLiangWorldedtech Nov 5, 2026
cef38f5
fix(webview): keep a view's mode pin when a different mode is deleted
easonLiangWorldedtech Nov 5, 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 @@ -60,3 +60,10 @@ qdrant_storage/
plans/

roo-cli-*.tar.gz*
.merge-*
.zdt-*
.eslint-*.txt
.fix-commit*.txt
.prettier-check.txt
.suites*.txt
.tsc.txt
14 changes: 14 additions & 0 deletions apps/vscode-e2e/fixtures/modes.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,20 @@
}
]
}
},
{
"match": {
"userMessage": "Use the `switch_mode` tool to switch to debug mode."
},
"response": {
"toolCalls": [
{
"name": "switch_mode",
"arguments": "{\"mode_slug\":\"debug\",\"reason\":\"User requested to switch to debug mode.\"}",
"id": "call_modes_switch_002"
}
]
}
}
]
}
95 changes: 95 additions & 0 deletions apps/vscode-e2e/src/fixtures/view-state.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
import type { ChatCompletionRequest, ChatMessage, LLMock } from "@copilotkit/aimock"

const TASKS = ["A", "B", "C"] as const
const ROUNDS = 10

const MODE_SEQUENCES: Record<(typeof TASKS)[number], string[]> = {
A: ["ask", "debug", "architect", "orchestrator", "code", "ask", "debug", "architect", "orchestrator", "code"],
B: ["debug", "architect", "orchestrator", "code", "ask", "debug", "architect", "orchestrator", "code", "ask"],
C: ["architect", "orchestrator", "code", "ask", "debug", "architect", "orchestrator", "code", "ask", "debug"],
}

const markerFor = (taskName: (typeof TASKS)[number]) => `FOLLOWUP_MODE_ISOLATION_${taskName}`
const answerFor = (taskName: (typeof TASKS)[number], round: number) => `${taskName} follow-up round ${round}`
const callIdFor = (taskName: (typeof TASKS)[number], round: number) =>
`call_followup_mode_${taskName.toLowerCase()}_${String(round).padStart(2, "0")}`

const lastToolResultContains = (req: ChatCompletionRequest, toolCallId: string, expected: string[]) => {
const messages = Array.isArray(req?.messages) ? req.messages : []
const toolMessage = messages.filter((message: ChatMessage) => message?.role === "tool").at(-1)
const content = toolMessage?.content

return (
toolMessage?.tool_call_id === toolCallId &&
typeof content === "string" &&
expected.every((text) => content.includes(text))
)
}

const followupToolCall = (taskName: (typeof TASKS)[number], round: number) => ({
name: "ask_followup_question",
arguments: JSON.stringify({
question: `Task ${taskName}: choose mode for round ${round}`,
follow_up: [
{
text: answerFor(taskName, round),
mode: MODE_SEQUENCES[taskName][round - 1],
},
],
}),
id: callIdFor(taskName, round),
})

export const getFollowupModeIsolationPlan = () =>
TASKS.map((taskName) => ({
taskName,
marker: markerFor(taskName),
rounds: MODE_SEQUENCES[taskName].map((mode, index) => ({
round: index + 1,
answer: answerFor(taskName, index + 1),
mode,
})),
}))

export function addViewStateFixtures(mock: InstanceType<typeof LLMock>) {
for (const taskName of TASKS) {
mock.addFixture({
match: {
userMessage: markerFor(taskName),
},
response: {
toolCalls: [followupToolCall(taskName, 1)],
},
})

for (let round = 1; round < ROUNDS; round++) {
mock.addFixture({
match: {
predicate: (req) =>
lastToolResultContains(req, callIdFor(taskName, round), [answerFor(taskName, round)]),
},
response: {
toolCalls: [followupToolCall(taskName, round + 1)],
},
})
}

mock.addFixture({
match: {
predicate: (req) =>
lastToolResultContains(req, callIdFor(taskName, ROUNDS), [answerFor(taskName, ROUNDS)]),
},
response: {
toolCalls: [
{
name: "attempt_completion",
arguments: JSON.stringify({
result: `Task ${taskName} completed ${ROUNDS} follow-up mode switches.`,
}),
id: `call_followup_mode_${taskName.toLowerCase()}_complete`,
},
],
},
})
}
}
37 changes: 37 additions & 0 deletions apps/vscode-e2e/src/runTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ import { addUseMcpToolResultFixtures } from "./fixtures/use-mcp-tool"
import { addWriteToFileResultFixtures } from "./fixtures/write-to-file"
import { createScenarioWorkspace, removeScenarioWorkspace } from "./restart/scenarioWorkspace"
import { runRestartScenario } from "./restart/vscodeCoordinator"
import { toolResultContains } from "./fixtures/tool-result"
import { addViewStateFixtures } from "./fixtures/view-state"

function getCliFlagValue(flag: string) {
return process.argv.find((arg, index) => process.argv[index - 1] === flag)
Expand Down Expand Up @@ -143,6 +145,41 @@ async function main() {
addUseMcpToolResultFixtures(mock)
addWriteToFileResultFixtures(mock)
addDeepSeekV4Fixtures(mock)
addViewStateFixtures(mock)

// Model-agnostic predicate fixtures for the view-state suite's post-switch
// turns. They coexist with the legacy model-scoped regex fixture below
// (shared response id call_modes_post_switch_001) so the modes suite keeps
// its OpenRouter-scoped match while view-state runs under any default model.
mock.addFixture({
match: {
predicate: (req) => toolResultContains(req, "call_modes_switch_001", []),
},
response: {
toolCalls: [
{
name: "attempt_completion",
arguments: JSON.stringify({ result: "Switched to ❓ Ask mode as requested." }),
id: "call_modes_post_switch_001",
},
],
},
})

mock.addFixture({
match: {
predicate: (req) => toolResultContains(req, "call_modes_switch_002", []),
},
response: {
toolCalls: [
{
name: "attempt_completion",
arguments: JSON.stringify({ result: "Switched to 🪲 Debug mode as requested." }),
id: "call_modes_post_switch_002",
},
],
},
})

// The modes test (switch_mode → ask) triggers a second API call whose last
// user message starts with <environment_details> directly — no <user_message>
Expand Down
8 changes: 6 additions & 2 deletions apps/vscode-e2e/src/suite/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,16 @@ import Mocha from "mocha"
import { glob } from "glob"
import * as vscode from "vscode"

import { RooCodeEventName, type RooCodeAPI } from "@roo-code/types"
import { RooCodeEventName, type RooCodeAPI, type RooCodeTestOnlyApi } from "@roo-code/types"

// In the e2e host the extension activates in test mode, so the exports object
// carries the production-gated test-only surface on top of RooCodeAPI.
type E2eApi = RooCodeAPI & RooCodeTestOnlyApi

import { isCompletedAsk, waitFor } from "./utils"

export async function run() {
const extension = vscode.extensions.getExtension<RooCodeAPI>("ZooCodeOrganization.zoo-code")
const extension = vscode.extensions.getExtension<E2eApi>("ZooCodeOrganization.zoo-code")

if (!extension) {
throw new Error("Extension not found")
Expand Down
Loading
Loading