mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-22 00:02:23 +00:00
* fix(daemon): notice a server that is only a control dialect behind The pane protocol and the control dialect are versioned apart, and the launch check only compared the first. A server from before the v4 to v5 control bump answers the pane handshake with this build's own number, so it was waved through as ours while every machine-tree call was refused: the window opened with no tabs, the only trace a log line the default config does not write anywhere. Ask the control socket too, before calling the server ours, and say which version disagrees when offering the restart. A window that still opens empty now says why in the window it happened to. * fix(daemon): do not call a newer server old, and say the empty-window reason once The dialect handshake reports disagreement, not direction, but the restart prompt read every mismatch as "from an older build". A daemon left running by a newer build passes the pane-protocol check the same way an older one does, so the prompt told users their newer server was old — the same wrong guess the remote path stopped making in #384. Split the copy in two and pick by which side is ahead, as `dialect_complaint` already does for remotes. The window's own explanation had two ways to misfire. A hydration superseded by a newer one still announced an emptiness someone else was already filling, because only `owe_rehydration` checked the epoch; it now reports whether it claimed the debt and only the owner speaks. And since a failed pull is retried from every `sync_window`, a machine that never answers repeated the same notification every fifteen seconds — latched to once per window, cleared when a pull finally lands so a later outage still gets a word. --------- Co-authored-by: l0ng-ai <24760907+l0ng-ai@users.noreply.github.com>