Fix Windows agent recovery and terminal rendering#221
Merged
DeadWaveWave merged 11 commits intomainfrom May 2, 2026
Merged
Conversation
dd0015a to
fdc7316
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
💡 Change Scope
📝 What Does This PR Do?
Fixes the Windows-native Agent/terminal regressions around real Agent startup, task/restart recovery, terminal sizing, and OpenCode WebGL rendering:
pnpm devAgent launch, restored Agent input, and OpenCode WebGL layout.🏗️ Large Change Spec (Required if "Large Change" is checked)
1. Context & Business Logic
Windows terminal nodes had multiple overlapping failure modes: Agent providers could fail to start or restore, task-launched Claude could lose its session binding after restart, terminal content could diverge from node size, and OpenCode WebGL could leave stale side/scroll residue when React Flow transforms moved the node. The intended behavior is that restored/runtime Agent sessions keep their durable identity, terminal geometry is committed from the mounted terminal measurement when needed, and OpenCode remains WebGL-backed without stale local renderer frames.
2. State Ownership & Invariants
3. Verification Plan & Regression Layer
pnpm devAgent launch scripts for Codex, Claude Code, OpenCode; restored Agent cold-restart scripts for Codex/OpenCode; OpenCode WebGL visual layout script with screenshots.✅ Delivery & Compliance Checklist
pnpm pre-commitis completely green.CLA.md).DEVELOPMENT.mdarchitectural boundaries.📸 Screenshots / Visual Evidence
Generated locally by the Windows visual smoke scripts (not committed per repo policy):
artifacts/debug-opencode-webgl-layout/2026-05-02T05-04-15-703Z/new-opencode-node-after-drag.pngartifacts/debug-restored-agent-input/codex-run-01/restored-after-type-and-enter.pngartifacts/debug-restored-agent-input/opencode-run-01/restored-after-type-and-enter.pngValidation run on Windows native PowerShell, not WSL:
pnpm pre-commitpnpm checkpnpm exec vitest run tests/unit/terminalNode/presentationConvergenceRepair.spec.ts tests/unit/terminalNode/webglRenderSurfaceAlignment.spec.ts tests/unit/contexts/terminalNode.webglRenderSurfaceAlignment.spec.ts tests/unit/terminalNode/runtimeRendererHealth.spec.ts tests/unit/terminalNode/webglSynchronousRedrawPatch.spec.ts tests/unit/contexts/terminalNode.preferred-renderer.spec.ts tests/unit/terminalNode/terminalGeometrySync.spec.ts$env:OPENCOVE_DEV_AGENT_PROVIDER='codex'; node scripts\debug-pnpm-dev-agent-launch.mjs$env:OPENCOVE_DEV_AGENT_PROVIDER='claude-code'; node scripts\debug-pnpm-dev-agent-launch.mjs$env:OPENCOVE_DEV_AGENT_PROVIDER='opencode'; node scripts\debug-pnpm-dev-agent-launch.mjsnode scripts\debug-opencode-webgl-layout.mjs$env:ELECTRON_RUN_AS_NODE='1'; $env:OPENCOVE_REPRO_PROVIDER='codex'; $env:OPENCOVE_REPRO_ITERATIONS='1'; $env:OPENCOVE_REPRO_CLOSE_MODE='cold-restart'; .\node_modules\.bin\electron.cmd scripts\debug-repro-restored-agent-input.mjs$env:ELECTRON_RUN_AS_NODE='1'; $env:OPENCOVE_REPRO_PROVIDER='opencode'; $env:OPENCOVE_REPRO_ITERATIONS='1'; $env:OPENCOVE_REPRO_CLOSE_MODE='cold-restart'; .\node_modules\.bin\electron.cmd scripts\debug-repro-restored-agent-input.mjs