Summary
Phase C input decoder, milestone M6. Part of the Option C redesign per planning/phase_c/INPUT_DECODER_PLAN.md.
The milestone that actually closes #805 in production. Wires input_decoder_poll into backend_tb2.c, removes translate_key/translate_mod/translate_mouse. Net negative LOC. PR body MUST include PTY-replay green output as merge gate.
Context
PR #808 attempted to fix issue #805 with termbox2's existing input path and introduced regressions in real Terminal.app (SGR byte leakage, Option-arrows still broken, copy/paste hijacked). Architectural review (system-architect, 2026-06-29) recommended replacing termbox2's input path with a custom decoder while keeping its rendering path.
Full plan: planning/phase_c/INPUT_DECODER_PLAN.md (committed at 1babc25).
Spec
See INPUT_DECODER_PLAN.md section 7, milestone M6 for deliverables, done criteria, LOC estimate, and dependencies.
Dependencies
Depends on M2 + M3 + M4 (Kitty M5 optional — can land before or after M6).
Merge gate
PR body MUST include PTY-replay test run output showing all tests green. Any /gate failure blocks merge — no exceptions. If M6 regresses any input behavior, revert immediately and add a failing PTY-replay test before re-attempting (the PR #808 lesson).
Summary
Phase C input decoder, milestone M6. Part of the Option C redesign per planning/phase_c/INPUT_DECODER_PLAN.md.
The milestone that actually closes #805 in production. Wires input_decoder_poll into backend_tb2.c, removes translate_key/translate_mod/translate_mouse. Net negative LOC. PR body MUST include PTY-replay green output as merge gate.
Context
PR #808 attempted to fix issue #805 with termbox2's existing input path and introduced regressions in real Terminal.app (SGR byte leakage, Option-arrows still broken, copy/paste hijacked). Architectural review (system-architect, 2026-06-29) recommended replacing termbox2's input path with a custom decoder while keeping its rendering path.
Full plan: planning/phase_c/INPUT_DECODER_PLAN.md (committed at 1babc25).
Spec
See INPUT_DECODER_PLAN.md section 7, milestone M6 for deliverables, done criteria, LOC estimate, and dependencies.
Dependencies
Depends on M2 + M3 + M4 (Kitty M5 optional — can land before or after M6).
Merge gate
PR body MUST include PTY-replay test run output showing all tests green. Any /gate failure blocks merge — no exceptions. If M6 regresses any input behavior, revert immediately and add a failing PTY-replay test before re-attempting (the PR #808 lesson).