grid, daemon, docs: take the XTVERSION and DA3 identity from the host #194

Merged
natsukium merged 1 commit from grid/host-identity into main 2026-10-19 19:50:31 +09:00
Owner

Part of #160 (policy amendment: XTVERSION / DA3 identity).

felis-grid answered XTVERSION with felis and its own crate version, and DA3 with the unit ID felis-1. With the library crates on independent versions, the felis app would report the grid's version, and an embedder of felis-grid would answer as felis.

  • felis-grid: ReplyIdentity (printable ASCII only, so it cannot break the DCS frame) set through Grid::set_reply_identity. With an identity, XTVERSION replies DCS > | <xtversion> ST and DA3 the hex of the unit ID; without one, XTVERSION is unanswered and DA3 replies xterm's 00000000. Kept across RIS, not dumped.
  • felis-daemon: stamps felis <app version> / felis-1 in ParseCore::new and on grids restored by an in-place upgrade, so a carried session names the daemon it now runs under. The replies felis sends are unchanged.
  • The protocol coverage matrix and the vttest smoke set the identity explicitly.
  • docs/reference/protocols/vt-compliance.md "Reporting and queries".

Tests: grid unit tests for both identity states, RIS and the ASCII check; daemon tests for a spawned grid, a restored grid that carried a stale identity, and the dump omitting the identity. Each daemon test fails with its stamp removed.

Part of #160 (policy amendment: XTVERSION / DA3 identity). felis-grid answered XTVERSION with `felis` and its own crate version, and DA3 with the unit ID `felis-1`. With the library crates on independent versions, the felis app would report the grid's version, and an embedder of felis-grid would answer as felis. - felis-grid: `ReplyIdentity` (printable ASCII only, so it cannot break the DCS frame) set through `Grid::set_reply_identity`. With an identity, XTVERSION replies `DCS > | <xtversion> ST` and DA3 the hex of the unit ID; without one, XTVERSION is unanswered and DA3 replies xterm's `00000000`. Kept across RIS, not dumped. - felis-daemon: stamps `felis <app version>` / `felis-1` in `ParseCore::new` and on grids restored by an in-place upgrade, so a carried session names the daemon it now runs under. The replies felis sends are unchanged. - The protocol coverage matrix and the vttest smoke set the identity explicitly. - `docs/reference/protocols/vt-compliance.md` "Reporting and queries". Tests: grid unit tests for both identity states, RIS and the ASCII check; daemon tests for a spawned grid, a restored grid that carried a stale identity, and the dump omitting the identity. Each daemon test fails with its stamp removed.
grid, daemon, docs: take the XTVERSION and DA3 identity from the host
All checks were successful
fuzz / cargo fuzz nightly long-run (pull_request) Has been skipped
darwin / detect relevant changes (pull_request) Successful in 9s
darwin / darwin docs-only no-op (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 27s
windows / windows docs-only no-op (pull_request) Has been skipped
bench / instruction-count regression gate (pull_request) Successful in 55s
darwin / build felis (aarch64-darwin) (pull_request) Successful in 1m13s
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 51s
pr / nix flake check (pull_request) Successful in 38s
pr / cargo build / clippy / test / deny (pull_request) Successful in 1m42s
pr / wire schema is compatible with the base (pull_request) Successful in 2s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 28s
windows / cargo clippy (Windows cross) (pull_request) Successful in 15s
windows / cargo nextest (Windows) (pull_request) Successful in 5m11s
windows / frontend smoke (Windows) (pull_request) Successful in 1m18s
9b6ac08219
felis-grid answered XTVERSION with `felis` and its own crate version,
and DA3 with the unit ID `felis-1`. Once the library crates carry
versions independent of the app, the felis app would name the grid's
version, and an embedder of felis-grid would answer as felis. The
identity is the host's, so the grid now formats the replies from a
ReplyIdentity the host sets, and stays anonymous without one.

The daemon stamps its own identity on every grid it builds, restored
ones included; the identity is left out of the upgrade dump so a
carried session names the daemon it now runs under.

Assisted-by: Claude Code
natsukium deleted branch grid/host-identity 2026-10-19 19:50:31 +09:00
Sign in to join this conversation.
No reviewers
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
felis-terminal/felis!194
No description provided.