mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-22 00:02:23 +00:00
`remote_bootstrap` cached whatever `probe_remote_shell` returned, and that function answers `None` for two unrelated reasons: the remote runs a shell there is no bootstrap for, and the probe never got asked — the channel would not open, the exec failed, or the five-second read ended before the answer arrived. The cache is a `HashMap` on the process-wide `SshManager`, behind a `OnceLock`, with no TTL and nothing that evicts. So one slow or busy moment on the first pane to a host turned into "this host has no shell integration" for the rest of the daemon's life: no prompt marks, no cwd tracking, no command status, no error, and reconnecting does not clear it because the entry outlives the connection. Told the two apart at the only place that can tell them apart — the output. `probe_answer` reads exactly as far as `parse_probe` does before it can form an opinion, and returns `None` when the marker and the line it introduces did not both arrive. Only an answer is remembered; a silence is asked again on the next pane. The cost lands on the case that deserves it: a host that genuinely cannot be probed pays one probe per pane instead of one per daemon, bounded by the same timeout as before. A host that answers pays nothing extra. The decision is a pure function over the probe's text, so it is tested rather than argued about; the async path around it is unchanged bar the return type.