From a4205e6255533455a88e4d08ea8b45e16d3510df Mon Sep 17 00:00:00 2001 From: l0ng-ai <24760907+l0ng-ai@users.noreply.github.com> Date: Wed, 23 Sep 2026 12:18:37 +0800 Subject: [PATCH] chore(control): bump the dialect to v10 so remote hosts pick up daemon fixes No message changes. A same-dialect install trusts whatever binary already sits at tty7-server-c9p6 and Update Server only restarts it, so daemon-side fixes (#828 modes restored on re-attach, #857 replay ring / clipboard sniffer) never reached remote hosts. A new filename makes clients upload the matching server. Claude-Session: https://claude.ai/code/session_01YX786Hyr4ivijWxv66zVkf --- crates/tty7-core/src/daemon/control.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/tty7-core/src/daemon/control.rs b/crates/tty7-core/src/daemon/control.rs index dc47d25c..3320ec0b 100644 --- a/crates/tty7-core/src/daemon/control.rs +++ b/crates/tty7-core/src/daemon/control.rs @@ -43,7 +43,17 @@ use super::protocol::{MAX_FRAME, read_frame, write_frame}; /// there, and the handshake — which has nothing but the number — cannot tell /// the two apart. A v8 peer meeting this one must be turned away, and only a /// number it has never seen does that. -pub const CONTROL_VERSION: u32 = 9; +/// +/// v10, like v7, changes no message. It moves because the number is also the +/// only thing that makes a client replace the server on a remote host: a +/// same-dialect install trusts whatever binary already sits at +/// `tty7-server-c9p6`, and "Update Server" only restarts that same file. So +/// daemon-side fixes shipped under v9 — modes restored on re-attach (#828), +/// the replay ring and clipboard sniffer that never cut an escape sequence in +/// half (#857) — would have stayed on this machine and never reached a remote +/// one. A new filename is what gets them uploaded, at the price of one Update +/// Server per host, which ends the sessions on it. +pub const CONTROL_VERSION: u32 = 10; const DIALECT_MARKER: &str = "speaks control v";