Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 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
5886f67
fix(lint): correct the recorded suppression count for the sticky-mode…
Oct 6, 2026
019344d
test(webview): seed the re-key entries through the write path
Oct 6, 2026
9971777
fix(webview): refresh pinned views when a profile is saved without ac…
Oct 6, 2026
0170600
test(webview): spy the real managers instead of replacing them
Oct 6, 2026
c3fb9e9
fix(webview): treat a view-local profile as a complete snapshot, not …
Oct 6, 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 @@ -109,6 +109,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 @@ -117,6 +126,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 @@ -648,6 +648,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