Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 12 additions & 0 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,15 @@ class ClaudeChatProvider {
data: this._draftMessage
});
}

// Restore the plan-mode toggle: its state only lives in the webview and
// would otherwise silently reset on every webview rebuild / VS Code restart.
if (this._context.workspaceState.get<boolean>('claude.planModeEnabled', false)) {
this._postMessage({
type: 'restorePlanMode',
data: true
});
}
}

private async _handleWebviewMessage(message: any) {
Expand Down Expand Up @@ -670,6 +679,9 @@ class ClaudeChatProvider {
case 'enableYoloMode':
this._enableYoloMode();
return;
case 'planModeChanged':
this._context.workspaceState.update('claude.planModeEnabled', !!message.enabled);
return;
case 'saveInputText':
this._saveInputText(message.text);
return;
Expand Down
14 changes: 14 additions & 0 deletions src/script.ts
Original file line number Diff line number Diff line change
Expand Up @@ -954,6 +954,7 @@ const getScript = (isTelemetryEnabled: boolean, opencreditsApiUrl: string = 'htt

function togglePlanMode() {
planModeEnabled = !planModeEnabled;
vscode.postMessage({ type: 'planModeChanged', enabled: planModeEnabled });
const switchElement = document.getElementById('planModeSwitch');
if (planModeEnabled) {
switchElement.classList.add('active');
Expand Down Expand Up @@ -1009,6 +1010,7 @@ const getScript = (isTelemetryEnabled: boolean, opencreditsApiUrl: string = 'htt

function cyclePlanMode() {
planModeEnabled = !planModeEnabled;
vscode.postMessage({ type: 'planModeChanged', enabled: planModeEnabled });
sendStats('Plan mode toggled', { enabled: planModeEnabled });
var switchElement = document.getElementById('planModeSwitch');
var toggleBtn = document.getElementById('planToggleBtn');
Expand Down Expand Up @@ -3560,6 +3562,18 @@ const getScript = (isTelemetryEnabled: boolean, opencreditsApiUrl: string = 'htt
inputField.style.height = Math.min(inputField.scrollHeight, 200) + 'px';
}
break;

case 'restorePlanMode':
// Plan mode state only lives in the webview; without this restore
// it silently resets on every webview rebuild / VS Code restart.
if (message.data && !planModeEnabled) {
planModeEnabled = true;
const planSwitchEl = document.getElementById('planModeSwitch');
const planBtnEl = document.getElementById('planToggleBtn');
if (planSwitchEl) planSwitchEl.classList.add('active');
if (planBtnEl) planBtnEl.classList.add('active');
}
break;

case 'output':
if (message.data.trim()) {
Expand Down