win32: console window appears for every child process spawned by background service
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- node.js, typescript
- Ambito
- backend
Direzione di ricerca
Inizia tracciando la creazione di processi del servizio per gli snapshot Git, lo strumento shell e rg; l’issue non indica i file pertinenti, quindi cerca il messaggio di log spawning process e le corrispondenti chiamate a spawn o execFile. Controlla come queste chiamate gestiscono le opzioni di Windows, quindi verifica che i processi figli del servizio vengano eseguiti senza finestre della console visibili. Il lavoro è completato quando i processi interessati non creano più finestre su Windows e continuano a funzionare normalmente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
On Windows, the background service spawns every child process (git, powershell, rg) with a new visible console window. Because the service runs console-less, Windows allocates a fresh console per spawn, so windows appear continuously during normal work.
Environment
- opencode version: 2.1.2 (
latestchannel, npm global install) - OS: Windows 11 Home Single Language, build 26300 (win32 x64)
- Terminal: Windows Terminal (
WT_SESSIONset),TERM=xterm-256color - Shell:
C:\WINDOWS\system32\cmd.exe(ComSpec) - Install/channel: npm global (
%APPDATA%\npm\opencode.cmd), not dev/beta - Active plugins: opencode-supervisor, opencode-auto-model, opencode-idle-compaction, github:steverova/kiro-provider, @xberg-io/opencode-liter-llm, @xberg-io/opencode-xberg, kibi-opencode
Reproduction
- On Windows 11, install and run opencode so the shared background service is active (
opencode service statusreturns a URL). - Open a workspace that is a git repository and start a session.
- Observe the desktop while the session runs, without invoking any tool manually.
Expected Behavior
Child processes spawned by the service run hidden. On Windows this means passing windowsHide: true (or CREATE_NO_WINDOW) to the spawn call, so no console window is allocated.
Actual Behavior
Each spawned process allocates its own console window, which appears on the desktop and steals focus. Windows are visible for git, powershell, and rg invocations. With continuous snapshot/diff activity this produces a near-constant stream of windows.
Evidence from %USERPROFILE%\.local\share\opencode\log\opencode.log — total spawning process records and breakdown by executable:
6887 total spawns
5190 git.EXE
1300 powershell.EXE
222 rg.exe
125 opencode.exe
Sample log line:
level=INFO msg="spawning process" command="C:\\Program Files\\Git\\cmd\\git.EXE" \
args="[\"--git-dir\",\"...snapshot...\",\"--work-tree\",\"E:\\...\",\"ls-files\",...]" role=server
Additional Context
Why this happens: the service is started detached and owns no console. Per Windows process creation semantics, a child created without CREATE_NO_WINDOW/DETACHED_PROCESS from a console-less parent gets a new console allocated, which is shown to the user.
Workaround applied: no user-side config disables the spawns. Setting Windows Terminal as the default terminal application (HKCU:\Console\%%Startup → DelegationConsole/DelegationTerminal = {E12CFF52-A866-4C77-9A90-F570A7AA2C6B}) consolidates the windows into tabs of one window, which reduces visual noise but does not stop the consoles from being created.
Suggested fix: set windowsHide: true on the spawn/execFile calls used by the service for git snapshotting, the shell tool, and rg. Node's child_process defaults this to false, which is what produces the visible window here.
Frequency: consistent, every session; scales with git snapshot activity.
- Lingua principale
- TypeScript
- Stelle
- 215k
- Fork
- 28.9k
- Merge medio
- 4h 21m
- PR unite (30g)
- 476
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di anomalyco/opencode
-
reproduced
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
anomalyco/opencode#58247 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
anomalyco/opencode#58216 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
pending close triaging
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
anomalyco/opencode#58181 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Opencde Github Actions Bot Cannot InstallForse già presa @zzz-creator l’ha presa oggi. Apertareproduced
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
anomalyco/opencode#57911 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
anomalyco/opencode#57855 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di anomalyco/opencode
Issue simili
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 82/100
source-cooperative/docs.source.coop#41 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Nimblesite/SharpLsp#468 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
solidjs-community/solid-primitives#1082 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno