fix(windows): hide startup fallback launcher with VBS#91249
Conversation
|
Focused Windows fallback change is up on the branch now. Local validation used Scope is intentionally narrow: Startup-folder fallback now writes the hidden |
|
Thanks for the context here. I did a careful shell check against current Close: current main already routes generated Windows gateway installs through the hidden launcher path, including the activation env used by the Startup-folder fallback, so this branch is now a conflicting duplicate with only secondary docs/test residue. Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. So I’m closing this as already implemented rather than keeping a duplicate issue open. Review detailsBest possible solution: Keep current main's generated service-env hidden-launcher implementation and handle any remaining Do we have a high-confidence way to reproduce the issue? No current-main failure path remains for the production gateway install route: source inspection shows generated gateway installs now carry the hidden-launcher marker into activation and fallback handling. The original base behavior was source-reproducible from the Is this the best way to solve the issue? Yes. Current main is the better solution now because it applies the hidden launcher at the generated service-env boundary and preserves caller-owned identity, rather than landing this older conflicted branch's lower-level unconditional fallback change. Security review: Security review cleared: No security or supply-chain concern was found in the PR diff; the WScript launcher default is tracked as compatibility and availability risk. AGENTS.md: found and applied where relevant. What I checked:
Likely related people:
Codex review notes: model internal, reasoning high; reviewed against 448b7c75b669; fix evidence: commit 31a0f97dd944, main fix timestamp 2026-06-25T08:25:09-07:00. |
|
Follow-up pushed on the existing branch. I restored explicit legacy |
|
Pushed a focused test fix for the command-support CI failure. The Startup fallback test helper now defaults to the new |
|
ClawSweeper applied the proposed close for this PR.
|
Summary
What problem does this PR solve?
cmd.exehop.start /min, Windows still flashes the terminal frame briefly at logon before minimizing it..vbslauncher by default so the gateway starts without the visible console flash.Why does this matter now?
What is the intended outcome?
cmd.exeframe.What is intentionally out of scope?
gateway.cmd)..vbsand legacy.cmdStartup entries.What does success look like?
.vbslauncher by default..cmdfallback entries.What should reviewers focus on?
resolveStartupEntryPath()now defaults the Startup-folder fallback to.vbs.activateScheduledTask()now always writes the hidden launcher for the Startup fallback path.Linked context
Which issue does this close?
Closes #70788
Which issues, PRs, or discussions are related?
Related #57682 for the same visible-console root cause on a different Windows launch path.
Was this requested by a maintainer or owner?
No maintainer request found; the issue is labeled
clawsweeper:queueable-fix,clawsweeper:fix-shape-clear, andclawsweeper:source-repro.Real behavior proof (required for external PRs)
Behavior or issue addressed: Windows Startup-folder fallback no longer generates a visible
cmd.exelaunch hop by default.Real environment tested: local source checkout on macOS/Linux using the production Windows fallback installer path under mocked
schtasksdenial and Windows env in the daemon Vitest suites.Exact steps or command run after this patch:
node scripts/run-vitest.mjs src/daemon/schtasks.startup-fallback.test.ts src/daemon/schtasks.install.test.ts src/daemon/schtasks.test.ts src/daemon/schtasks.stop.test.tsEvidence after fix:
Observed result after fix: the fallback install tests now assert that the installed Startup entry is the hidden VBS launcher by default, while stop/restart/runtime tests continue to pass against the same fallback lifecycle.
What was not tested: a live native Windows login session proving compositor-level
no visible flashbehavior. This environment does not provide an interactive Windows desktop.Proof limitations or environment constraints: the proof is limited to the production fallback-generation path and lifecycle tests, not a live Windows desktop login.
Tests and validation
Which commands did you run?
What regression coverage was added or updated?
.vbs.What failed before this fix, if known?
start "" /min cmd.exe /d /c ..., which still flashes a visible console frame before minimizing.If no test was added, why not?
Risk checklist
Did user-visible behavior change? (
Yes/No)Yes.
Did config, environment, or migration behavior change? (
Yes/No)No.
Did security, auth, secrets, network, or tool execution behavior change? (
Yes/No)No.
What is the highest-risk area?
.cmdStartup entries.How is that risk mitigated?
.vbsand legacy.cmdpaths, and the focused fallback lifecycle tests remain green after the default switch.Current review state
What is the next action?
What is still waiting on author, maintainer, CI, or external proof?
Which bot or reviewer comments were addressed?