grid: OSC 8 with a control byte in params keeps the previous link #385
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
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis#385
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?
A control byte in the OSC 8
paramsfield (or a URI that failssanitize_osc_str) leaves the previous hyperlink active on the pen, so the text that follows inherits it.docs/reference/protocols/vt-compliance.md(OSC 8 bullet) and REQ-910 say a control byte inparamsand a disallowed-scheme URI both leave the pen unlinked, "rather than inheriting the previous one".crates/felis-grid/src/osc_dispatch.rs(~63-69) returns early on the params/URI sanitize failure without clearingcurrent_link; only the disallowed-scheme arm (~76-79) clears it. The parser passes C0 bytes into the OSC body (felis-vt/src/machine.rs~360-364), so the path is reachable.osc_dispatch/tests.rs(~293) starts with no open link, so inheritance is not pinned.Fix: clear
current_linkon every reject arm, and add a test that opens a link, sends an OSC 8 with a control byte in params, and asserts the next printed cell carries no link.Found by the docs consistency audit (branch
docs/consistency-audit); the doc was kept as the contract.