[v0.1/Protocol Review] Freeze the terminal-protocol not-yet trio (DECCARA/DECRARA, ?2048, XTSMGRAPHICS) #181
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis#181
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Background
docs/reference/protocols/support-matrix.mdmarks three sequences as❌ not yet, but none of them has a stance indocs/explanation/protocols/landscape.mdand none is tracked by any issue (searchedDECCARA,2048/in-band,XTSMGRAPHICSacross all issues: zero hits). Before the publish freeze — when breaking changes are still free — each needs a decision: implement now, defer with a tracking issue, or record as a non-goal.The three items
1. DECCARA / DECRARA (change / reverse attrs in area)
support-matrix.md:63—❌ not yet.✅, DECRQCRA checksum is✅, and the sharedPt;Pl;Pb;Prbounds model is specified indocs/reference/protocols/vt-compliance.md"Rectangular editing" (vt-compliance.md:56-74).✅), and the SGR pen already exist, so CARA/RARA look like a small increment on a finished family — unless there is a reason they were skipped (attribute-merge semantics?).2. In-band resize notify (
?2048)support-matrix.md:75—❌ not yet.?2031color-scheme (+DSR ?996/?997) is✅ (OS light/dark → PTY), so the notify plumbing pattern exists.?2048the next notify mode felis wants, or does window-size reporting stay out (CSI 14/15/16 tstubbed0;0, XTWINOPS🚫) and?2048with it? The answer should be recorded inlandscape.mdeither way — currently neither adopt nor reject is written.3. XTSMGRAPHICS (graphics geometry
CSI ? … S)support-matrix.md:148—❌ not yet.t/d/p/q/a, animation,z=, Unicode placeholder) is fully✅. A graphics query gap beside a complete graphics implementation is the kind of asymmetry a consumer (yazi, presenterm) will trip over: the producer can place images but cannot query geometry.Proposal
docs/explanation/protocols/landscape.md(the skill-mandated first stop:add-escape-sequence§1) and flip or keep thesupport-matrix.mdstatus accordingly.snapshot_csi*.rs/snapshot_osc.rs) and, where applicable, an esctest movement.❌ not yetwith the tracking issue number beside it (the matrix already links open work to issues in prose; make it per-row).🚫with thenon-goals.mdrationale, same as Sixel / XTWINOPS.landscape.md:65); use it as the template for how a "parsed but not honored" verdict is written.Acceptance criteria
❌ not yetrow insupport-matrix.mdis without either a tracking issue or a landscape-stance line.landscape.mdcarries an explicit line for rectangular-attribute ops,?2048, and XTSMGRAPHICS (adopt/reject/defer + why).non-goals.mdentry.Sources reviewed
docs/reference/protocols/support-matrix.md(rows cited above)docs/explanation/protocols/landscape.md(§CSI, §Modern protocols; no stance lines found for the three)docs/reference/protocols/vt-compliance.md"Rectangular editing", "Reporting and queries"DECCARA,resize notify,XTSMGRAPHICS,in-band— no tracking issue existsTriage plan (2026-09-07)
Decisions (user, 2026-09-07):
Pt;Pl;Pb;Prbounds model is specified; change/reverse attributes in area is a small increment on it. Implementation is its own issue (filed alongside this plan); the matrix row stays❌ not yet (#<impl issue>)until it lands.?2048in-band resize notify: adopt. kitty implements it, the notify-mode plumbing exists for?2031, and felis's daemon-owned geometry (window resize,sessions retarget, remote clients) is exactly the case in-band notification serves better than SIGWINCH alone. Window-size reporting (CSI 14/15/16 tstubs, XTWINOPS 🚫) stays out; the landscape line must say why the two differ (a notification the terminal pushes vs a query the application pulls that leaks host geometry). Implementation is its own issue; row stays❌ not yet (#<impl issue>).a=q), which felis implements. Same reasoning as the Sixel non-goal. Flip the row to🚫with anon-goals.mdentry.Approach
Docs-only PR for this issue:
docs/explanation/protocols/landscape.md: one stance line each (adopt / adopt / reject, with the why above and a "Revisit if …" trigger for the reject), written in the DECCOLM style the issue points at.docs/reference/protocols/support-matrix.md: DECCARA/DECRARA and?2048rows gain the tracking issue number; XTSMGRAPHICS row becomes🚫.docs/explanation/non-goals.md: XTSMGRAPHICS entry beside Sixel.[v0.1/Protocol] Implement …, body: what, where in the parser/grid/daemon path, snapshot tests to add, esctest movement if any; end with "Split from #181.").Tests
None beyond
just prose-checkand the docs-tree guards; the doc-cascade grep sweep forDECCARA,2048,XTSMGRAPHICSacrossdocs/.Cascade
CHANGELOG.mdis not touched (no behavior change yet).docs/reference/spec.mdonly if a REQ cites the matrix rows.