Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
bf30669
fix(activate): target title-bar commands to their click-origin instance
easonliang28 Sep 4, 2026
854af59
fix(activate): serialize overlapping openClineInNewTab calls and hard…
easonliang28 Sep 7, 2026
cbf0edb
test(activate): pin openClineInNewTab creation branches and strengthe…
easonliang28 Sep 7, 2026
6cc68ef
fix(activate): harden tab creation serialization and centralize title…
easonliang28 Sep 7, 2026
d7453eb
test(activate): pin tracked tab identity against the created panel
easonliang28 Sep 7, 2026
199d072
test(activate): pin the tracked tab panel passed to getInstanceForView
easonliang28 Sep 7, 2026
c1bf947
feat(provider): persist per-view view-state identity and durable view…
easonliang28 Sep 5, 2026
1e952c5
fix(provider): track in-flight view-state mutations per field and exc…
easonliang28 Sep 7, 2026
b16a9e5
fix(provider): restore previous view-state id when registration persi…
easonliang28 Sep 7, 2026
a3c6064
fix(provider): reject invalid view-state modes and sync profile mutat…
easonliang28 Sep 8, 2026
3aec562
fix(package): move command palette entries to the commandPalette menu…
easonliang28 Sep 8, 2026
016c221
fix(webview): sync view-local state with mode and profile mutations a…
easonliang28 Sep 8, 2026
2573858
fix(provider): close mode-switch abort window, drop bracket access, c…
easonliang28 Sep 14, 2026
8d13c64
test(provider): cover abort and pinned profile deletion guards
easonliang28 Sep 14, 2026
2ba6240
test(provider): assert profile settings write identity
easonliang28 Sep 14, 2026
56d797c
fix(provider): make mode switch cancellation atomic and preserve view…
easonliang28 Sep 15, 2026
6c9856d
fix(core/webview): purge deleted provider profile from the settings s…
easonliang28 Sep 15, 2026
67dbd22
test: replace double assertions with single structural casts in view-…
easonliang28 Sep 27, 2026
1004cbd
fix(webview): contain the abort rollback failure in handleModeSwitch
easonliang28 Sep 27, 2026
dfb8264
fix(webview): restore only the mode field when rolling back an aborte…
easonliang28 Sep 27, 2026
ce8b276
fix(activate): drop the CodeIndexManager lookup left by the rebase
Oct 5, 2026
0f02b9c
fix(core/webview): merge view-local state into getState for per-view …
easonliang28 Sep 6, 2026
3887f8e
fix(webview): rebuild F1b on main tip + own delta
Oct 5, 2026
b70e91e
fix(webview): rebuild F1c on the rebuilt F1b + own delta
Oct 5, 2026
dca1dd4
test(webview): F2c - parallelMode suite with viewStates pruning edges
Oct 5, 2026
7801a5a
chore(lint): correct the sticky-mode suppression count
Oct 5, 2026
0d3fe53
merge(upstream): take main into F2c and keep both sides of the test i…
Oct 6, 2026
eed9130
chore(lint): prune the suppression this merge earns
Oct 6, 2026
5e2cdbb
fix(view-state): keep a pinned view's settings consistent when anothe…
Oct 6, 2026
f02fb25
fix(view-state): treat a view overlay as the whole profile, and refre…
Oct 6, 2026
c5d56a8
fix(view-state): keep the provider fallback under an overlay and tigh…
Oct 6, 2026
24069f1
fix(settings): keep the shared setting and its per-view pin in step
Oct 7, 2026
b774ceb
Merge upstream/main into vps2-f2c
Oct 7, 2026
6aa71ca
test(webview): pass the focus tracker to every ClineProvider construc…
Oct 7, 2026
301f440
test(webview): cover the last four-argument ClineProvider constructions
Oct 7, 2026
63ab338
chore(activate,webview): address review nits on the merged branch
Oct 7, 2026
70f6904
fix(activate): drop the stale tab panel reference before replacing it
Oct 7, 2026
c2e14bd
fix(webview): refresh the acting view's overlay on a non-activating p…
Oct 7, 2026
b4a0735
test(webview): assert the acting view keeps its pin after a foreign save
Oct 7, 2026
a3d61ca
fix(webview): roll the shared viewStates cache back when the write re…
Oct 8, 2026
5be8bfd
test(webview): cover the token refresh for a view pinned to a non-act…
Oct 8, 2026
5814faa
fix(view-states): roll back to what storage holds, not to a stale cache
Oct 8, 2026
5ca2eff
fix(webview): make the temporary view-state key unique per provider
Oct 8, 2026
c6833ee
fix(webview): drop the deleted profile's overlay when re-pinning a view
Oct 8, 2026
2c7eb07
fix(webview): validate the client-supplied viewStateId and port the c…
easonLiangWorldedtech Oct 8, 2026
c4e38b9
test(webview): cover cross-view profile refresh and the sibling re-pi…
easonLiangWorldedtech Oct 8, 2026
657c109
fix(activate): dispose a half-built tab when creation rejects
easonLiangWorldedtech Oct 8, 2026
c788f52
fix(webview): serialize profile deletion and stop a cancelled run fro…
easonLiangWorldedtech Oct 8, 2026
55aba85
fix(webview): keep host-owned keys out of the generic updateSettings …
easonLiangWorldedtech Oct 8, 2026
60546d0
fix(webview): finish provider disposal even when a teardown step rejects
easonLiangWorldedtech Oct 8, 2026
6b51c54
fix(webview): roll back the shared provider keys too, and clear the r…
easonLiangWorldedtech Oct 8, 2026
f58f3a6
test(webview): drive the public mode switch after a profile deletion
easonLiangWorldedtech Oct 8, 2026
a3a01d6
test(config): cover the id branch of the profile not-found error
easonLiangWorldedtech Oct 8, 2026
b0cdef7
fix(webview): roll back every sibling view when one sibling's re-pin …
easonLiangWorldedtech Oct 8, 2026
3ac3272
test(webview): make the view-state persistence failure test fail on t…
easonLiangWorldedtech Oct 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
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 @@ -111,6 +111,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 @@ -119,6 +128,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 @@ -649,6 +649,7 @@ export interface WebviewMessage {
| "openRulesDirectory"
| "themeFixtureProbeResponse"
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