Repository navigation
Description
Context
Following up on the 0.7.1 release notes ("Not verified on Windows, where all three were reported, nor with a real OpenCode 1.18"), here is the verification report from Windows 11 with OpenCode 1.18.35.
We encountered three interconnected issues during and after the update:
Issue 1: Updater leaves previous version running, causing daemon restart ping-pong (0.7.0 <-> 0.7.1)
Symptoms
Immediately after accepting the in-app update from 0.7.0 to 0.7.1, the UI cycled indefinitely between:
"Connecting to this PC: Restarting the daemon (0.7.0 -> 0.7.1)...""Disconnected from this PC. Its sessions keep running; connecting again in 8s..."
Root Cause
The Windows updater extracted v0.7.1 and launched it, but the existing v0.7.0 client instances (enowX.exe) were not terminated and remained in memory (two zombie processes found). Both versions competed over ~/.enowx-app/enowxd.sock:
- The 0.7.0 client saw a 0.7.1 daemon and downgraded/restarted it to 0.7.0.
- The 0.7.1 client saw a 0.7.0 daemon and upgraded/restarted it back to 0.7.1.
Log Evidence (enowxd.log)
2026-11-06T13:22:43+07:00 daemon.start version=0.7.1 pid=46476
2026-11-06T13:23:15+07:00 daemon.start version=0.7.0 pid=10400
2026-11-06T13:23:31+07:00 daemon.start version=0.7.1 pid=15528
2026-11-06T13:24:15+07:00 daemon.start version=0.7.0 pid=48244
Mitigation: Required manual taskkill /f /im enowX.exe /im enowx-daemon.exe before v0.7.1 could connect stably.
Issue 2: session create rejects new GOA if an exited session still has goa: true
Symptoms
When attempting to start GOD of Agents afresh via the modal ("Start GOD of Agents" -> OpenCode -> Start), the daemon threw:
session create: goa: GOD of Agents already runs on this host: session <old-id>
Root Cause
In ~/.enowx-app/sessions.json, a previous session from the day before was marked "goa": true with "exited": true. The daemon enforces single-GOA-per-host by checking the existence of goa: true, but does not verify whether that session has already exited (!session.Exited()).
Mitigation: The dead session had to be manually closed via enowx-app close <old-id> --yes.
Issue 3: Switching GOA from Claude to OpenCode leaves view trapped in blank Chat mode
Symptoms
After switching GOA to OpenCode, opening the GOD of Agents page showed a completely black/blank terminal area. Normal worker sessions (opened from the side panel) rendered their terminals correctly, but the GOA tab remained black.
Root Cause
- When GOA previously ran on Claude Code, the session view was set to Chat. This persisted in
~/.enowx-app/app.json:"chats": { "<goa-session-id>": true }
- When switching the session agent to OpenCode (
goa switch --agent opencode), OpenCode does not have a native Chat view (it is terminal-only). - The UI correctly hid the
[Chat | Terminal]toggle button from the header because OpenCode lacks chat capability. - However, the view renderer still evaluated
chats[sessionId] === trueand attempted to render the Chat view component instead of falling back to Terminal. - The user was left trapped on a black screen with no visible UI toggle to switch back.
Mitigation: Pressing Ctrl+K and running "Show the terminal" called showView(Terminal), which cleared the chats entry in app.json and immediately restored the OpenCode TUI.
Suggested Fixes
- Updater process cleanup (Windows): Ensure the updater aggressively terminates all running
enowX.exeprocesses before launching the new version, preventing socket conflicts. - GOA uniqueness check: In
session.create, ignore or auto-prune sessions whereexited === truewhen enforcing single-GOA constraints. - View capability fallback: When rendering a session, if
chats[id] === truebut!agent.hasChat, automatically reset the view toTerminalrather than rendering an empty chat component. - Switch cleanup: In
goa.switch, clear capability-specific view states (likechats) if the target agent does not support them.
Environment
- enowX: 0.7.0 -> 0.7.1
- OS: Windows 11 Pro (amd64)
- Agent tested: OpenCode 1.18.35
Activity
sicknewbie commentedon Nov 6, 2026
Follow-up: OpenCode as GOA on Windows fails to receive worker completion reports & causes stall warning flood
During further testing of OpenCode 1.18.35 running as GOA on Windows 11 (tested with
wz/deepseek-v4.1-flash), we identified an auto-wake/injection failure and a cascading stall spam issue:1. Worker completion reports are trapped in
goa-tell.json(OpenCode never wakes up)Observed Behavior
tf0604f1ato worker sessiond1c3fbb64d3band stated: "Saya kabari begitu selesai" (I'll update you once finished).Done..~/.enowx-app/goa-tell.json.Root Cause
asyncRewakehooks, OpenCode relies ondaemon/goa_inject.gotyping into an idle composer when sure it is empty.Goa · wz/deepseek-v4.1-flash).goa.md("A prompt the screen can't be sure of counts as a draft, so the line goes on waiting"), the report stays trapped ingoa-tell.json.2. Cascading Bug: Watchdog stall spam floods
goa-tell.jsonBecause OpenCode never receives the report, the task is never settled (
goa task <id> --status done).The stall watchdog then observes an unsettled task on an idle session and repeatedly logs stall warnings every few minutes.
In our
~/.enowx-app/goa-tell.json, 156 out of 174 entries were identical duplicate stall warnings for the same task (t64ea68d8):{"text":"[enowX GOA] Task t64ea68d8 \"Fitur Switch Dark/Light Mode Admin CCTVKU\" (session 5d866d3e5f17) isn't moving: idle: its agent isn't working on it, for 22h24m8s..."}Because
goa-tell.jsoncaps at 200 lines, this flood risks dropping or crowding out actual task reports.Suggested Fixes
⊙ 1 MCP /statusalready runs in OpenCode) to push turn completion events directly.goa-tell.jsonif a turn report for that task is already pending.Testing Request for Non-Claude Models
Could the team please verify and test GOA with models below Claude (e.g. DeepSeek V3/V4, Gemini 2.5/3.8 Flash, GLM, GPT-4o-mini) running under OpenCode? Many workflows rely on lightweight/cost-effective models for GOA delegation and coordination; ensuring that autonomous worker-to-GOA handoffs work cleanly outside Claude Code on Windows would make GOA truly reliable across all supported providers.
Keep two versions of the app from taking the daemon from each other
Let a new GOD of Agents start beside one that ended
Show the terminal for an agent without a chat