From e55a14e4695ade1bb2763369dbf5498d0cec9889 Mon Sep 17 00:00:00 2001 From: GRayHook Date: Wed, 17 Jun 2026 12:55:07 +0700 Subject: [PATCH] =?UTF-8?q?Phase=2011:=20session=20on/off/reset=20toggle?= =?UTF-8?q?=20=E2=80=94=20SPEC=20=C2=A75.1,=20=C2=A77.1.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Persist sessionOverride via saveState and confirm the effective enabled layer after each toggle. Co-authored-by: Cursor --- src/commands.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/commands.ts b/src/commands.ts index e2e34e9..50815f1 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -100,7 +100,37 @@ async function handleSkillReinjectCommand( } const subcommand = trimmed.split(/\s+/)[0]; + if (subcommand === "on" || subcommand === "off" || subcommand === "reset") { + handleSessionToggle(subcommand, ctx, deps); + return; + } + if (ctx.hasUI) { ctx.ui.notify(`skill-reinject: unknown subcommand "${subcommand}"`, "warning"); } } + +function handleSessionToggle( + subcommand: "on" | "off" | "reset", + ctx: ExtensionCommandContext, + deps: SkillReinjectCommandDeps, +): void { + switch (subcommand) { + case "on": + deps.state.sessionOverride = true; + break; + case "off": + deps.state.sessionOverride = false; + break; + case "reset": + deps.state.sessionOverride = null; + break; + } + deps.persistState(); + if (!ctx.hasUI) { + return; + } + const settings = readSettings(ctx); + const enabledLine = formatEnabledLine(deps.state.sessionOverride, settings); + ctx.ui.notify(enabledLine, "info"); +}