Problem
Current terminal_grid.paint emits background and text runs per row (src/primitives/canvas/terminal_grid.zig:502). A terminal with distinct foreground/background values per cell can exhaust fixed command and text budgets, then truncates the viewport. Raising those limits is not a viable fix because retained command storage grows with them.
Proposed direction
Port and redesign the Cockpit fork's packed per-row cell_grid command: retain one row-level command whose cell geometry is index-derived, keep row-granular fingerprints for incremental patches, and add host decoders before enabling the packet path.
Acceptance
- A dense 200x60 truecolor terminal paints all rows without increasing fixed command capacity.
- Editing one row produces a row-local retained patch.
- CPU reference and supported GPU host paths have explicit coverage.
Upstream candidate
Large initiative. Split implementation PRs into model/CPU rendering, retained fingerprinting, packet format, and host decoder.
Problem
Current
terminal_grid.paintemits background and text runs per row (src/primitives/canvas/terminal_grid.zig:502). A terminal with distinct foreground/background values per cell can exhaust fixed command and text budgets, then truncates the viewport. Raising those limits is not a viable fix because retained command storage grows with them.Proposed direction
Port and redesign the Cockpit fork's packed per-row
cell_gridcommand: retain one row-level command whose cell geometry is index-derived, keep row-granular fingerprints for incremental patches, and add host decoders before enabling the packet path.Acceptance
Upstream candidate
Large initiative. Split implementation PRs into model/CPU rendering, retained fingerprinting, packet format, and host decoder.