Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
3396c9e
fix(activate): target title-bar commands to their click-origin instance
easonliang28 Sep 4, 2026
a143267
ci: re-trigger PR review-state labeler reconciliation (no-op commit)
easonliang28 Sep 7, 2026
723d871
fix(activate): serialize overlapping openClineInNewTab calls and hard…
easonliang28 Sep 7, 2026
c3027c8
test(activate): pin openClineInNewTab creation branches and strengthe…
easonliang28 Sep 7, 2026
00eb15f
fix(activate): harden tab creation serialization and centralize title…
easonliang28 Sep 7, 2026
ae038ab
test(activate): pin tracked tab identity against the created panel
easonliang28 Sep 7, 2026
99662bd
test(activate): pin the tracked tab panel passed to getInstanceForView
easonliang28 Sep 7, 2026
7be370a
feat(provider): persist per-view view-state identity and durable view…
easonliang28 Sep 5, 2026
8c13975
fix(provider): track in-flight view-state mutations per field and exc…
easonliang28 Sep 7, 2026
dc2e9cd
fix(provider): restore previous view-state id when registration persi…
easonliang28 Sep 7, 2026
d677e7b
fix(provider): reject invalid view-state modes and sync profile mutat…
easonliang28 Sep 8, 2026
20c3892
fix(package): move command palette entries to the commandPalette menu…
easonliang28 Sep 8, 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
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 @@ -99,6 +99,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 @@ -107,6 +116,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 @@ -647,6 +647,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