fix: prevent terminal autostart after close

This commit is contained in:
Federico Jaramillo Martinez
2026-05-21 09:31:33 +02:00
parent 9d4a0179d1
commit d693aa06d7
+11 -1
View File
@@ -37,6 +37,7 @@ export class TerminalPanel extends LitElement {
private suppressTerminalInput = false; private suppressTerminalInput = false;
private observedCwd: string | undefined; private observedCwd: string | undefined;
private loadedCwd: string | undefined; private loadedCwd: string | undefined;
private autoStartConsumedCwd: string | undefined;
override connectedCallback(): void { override connectedCallback(): void {
super.connectedCallback(); super.connectedCallback();
@@ -65,6 +66,7 @@ export class TerminalPanel extends LitElement {
if (cwd !== this.observedCwd) { if (cwd !== this.observedCwd) {
this.observedCwd = cwd; this.observedCwd = cwd;
this.loadedCwd = undefined; this.loadedCwd = undefined;
this.autoStartConsumedCwd = undefined;
this.terminals = []; this.terminals = [];
this.selectedId = undefined; this.selectedId = undefined;
this.disposeTerminalView(); this.disposeTerminalView();
@@ -99,10 +101,11 @@ export class TerminalPanel extends LitElement {
this.error = undefined; this.error = undefined;
try { try {
if (this.workspace === undefined) return; if (this.workspace === undefined) return;
const shouldAutoStart = this.consumeAutoStart();
const terminals = await terminalsApi.terminals(this.workspace.projectId, this.workspace.id); const terminals = await terminalsApi.terminals(this.workspace.projectId, this.workspace.id);
this.terminals = terminals; this.terminals = terminals;
this.selectPreferredLoadedTerminal({ replaceUrl: true }); this.selectPreferredLoadedTerminal({ replaceUrl: true });
if (terminals.length === 0 && this.autoStart) await this.startTerminal(); if (terminals.length === 0 && shouldAutoStart) await this.startTerminal();
} catch (error) { } catch (error) {
this.error = error instanceof Error ? error.message : String(error); this.error = error instanceof Error ? error.message : String(error);
} finally { } finally {
@@ -115,6 +118,13 @@ export class TerminalPanel extends LitElement {
this.selectPreferredLoadedTerminal({ replaceUrl: true }); this.selectPreferredLoadedTerminal({ replaceUrl: true });
} }
private consumeAutoStart(): boolean {
const cwd = this.workspace?.path;
if (!this.autoStart || cwd === undefined || this.autoStartConsumedCwd === cwd) return false;
this.autoStartConsumedCwd = cwd;
return true;
}
private shouldReloadForRequestedTerminal(): boolean { private shouldReloadForRequestedTerminal(): boolean {
const cwd = this.workspace?.path; const cwd = this.workspace?.path;
return this.visible return this.visible