Commit Graph

55 Commits

Author SHA1 Message Date
DuProcess cdeba047bc Add mosh-grade predictive local echo
Replace the basic printable-only predictor with a clean-room speculative
local-echo engine modeled on the Mosh paper's prediction overlay design
(no GPL code copied or translated; original Rust written from the
algorithm).

Model:
- Per-line cell model with a local cursor; printable keystrokes echo
  immediately, dimmed (and underlined on a very slow link) via
  save/restore cursor so full-screen TUIs are never corrupted.
- Backspace and in-line Left/Right arrow prediction (CSI and SS3).
- Epoch grouping per keystroke burst; anything unmodelable (CR/LF,
  escapes, control bytes, wide chars, right margin, paste-sized bursts)
  ends the epoch safely rather than mispredicting.
- Frame-sequenced confirmation: an authoritative server frame supersedes
  and erases the overlay (dosh has no client-side emulator, so it cannot
  do Mosh's per-cell content match; frame arrival is the confirmation).
- Glitch detection: contradicting output (e.g. alternate-screen entry)
  discards the epoch.
- SRTT-based display policy with hysteresis and a latency-spike override;
  modes off / experimental(adaptive, default) / always via new
  client config `predict_mode` and `DOSH_PREDICT_MODE` env override.

Improvements over the prior predictor: in-line arrow motion, dim+flag
styling, exact-width erase, paste guard, and faster (frame-arrival)
confirmation. Prediction is display-only and never swallows input.

Adds unit tests: printable run, confirmation-clears, glitch-discards,
backspace, line-wrap budget, paste-skip, newline, inline arrows, and the
experimental SRTT threshold gate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 10:41:42 -04:00
DuProcess 6c14d669b8 Gate non-loopback remote binds
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-14 09:10:09 -04:00
DuProcess fb5c25ea0b Add stream window flow control
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-14 09:08:19 -04:00
DuProcess dd9c4daeda Report server version in doctor
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 22:34:09 -04:00
DuProcess f66de64b3f Support host-config login users
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 22:32:45 -04:00
DuProcess 1b1278f39e Add explicit environment propagation
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 22:30:15 -04:00
DuProcess 38e2fa091a Ignore stale packets during attach resume
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 22:21:20 -04:00
DuProcess 76e2e980f1 Avoid PTY allocation for forward-only mode
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 22:18:15 -04:00
DuProcess 7fec3592f5 Honor more SSH config in native auth
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 22:13:47 -04:00
DuProcess af5e9f7956 Enforce authorized_keys from restrictions
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 22:07:04 -04:00
DuProcess 0575cf678f Add native doctor auth diagnostics
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 22:01:27 -04:00
DuProcess 6d1e9d3065 Add background forwarding mode
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 15:55:14 -04:00
DuProcess da16588bc5 Add packet session key identifiers
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 15:51:55 -04:00
DuProcess 3642de71e4 Add native dynamic port forwarding
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 15:48:49 -04:00
DuProcess 64b00783fd Bound forwarded stream buffering
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 15:43:42 -04:00
DuProcess 6a0f12c59e Add native remote port forwarding
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 15:41:48 -04:00
DuProcess 6aa81d0ce3 Add native local port forwarding
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 15:36:10 -04:00
DuProcess f324a7627f Support encrypted native identity keys
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 15:26:31 -04:00
DuProcess 55a0fc1ab4 Add ssh-agent native auth
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 15:21:21 -04:00
DuProcess e7f3679fc1 Wire native Dosh auth runtime
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 11:54:24 -04:00
DuProcess 80c7889b46 Verify native Dosh Ed25519 user auth
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 11:38:00 -04:00
DuProcess a72f7eacf5 Add native Dosh handshake skeleton
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 11:34:05 -04:00
DuProcess 26fc863149 Add native Dosh host trust foundation
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 11:32:01 -04:00
DuProcess f6ab4473bd Define native Dosh workflow parity requirements
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 11:25:52 -04:00
DuProcess 9bece26bc8 Spec native Dosh auth and forwarding v1
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 10:54:19 -04:00
DuProcess 80166eae15 Keep Dosh alive across stale UDP reconnects
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-13 10:20:03 -04:00
DuProcess 93374162ff Measure cached Dosh attach fast path
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 22:45:13 -04:00
DuProcess 3a38a9da80 Add public comparison benchmarks and SSH import
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 14:27:58 -04:00
DuProcess 063c44d971 Quiet Dosh update git fetches
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 13:59:47 -04:00
DuProcess 4ac5d63faf Avoid login shell for Dosh sessions listing
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 13:59:12 -04:00
DuProcess 83b2d9d70c Quote Dosh sessions remote command
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 13:58:16 -04:00
DuProcess e3f61a4efb Add Dosh host workflows and reconnect QoL
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 13:48:44 -04:00
DuProcess c56e8f9fe1 Add guarded local typing prediction
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 13:39:27 -04:00
DuProcess 03df1c6ed7 Ignore stale Dosh snapshots
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 13:33:55 -04:00
DuProcess 32da29e2fb Render Dosh frames in stream order
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 13:32:07 -04:00
DuProcess f8df38efb0 Stop drawing client overlay over TUIs
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-12 13:03:39 -04:00
DuProcess fd7849f889 Forward terminal input bytes without cursor rewriting
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 22:22:03 -04:00
DuProcess 6580e75fbf Resolve SSH aliases for Dosh UDP host
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 22:09:55 -04:00
DuProcess 1860a0e610 Preserve alternate screen snapshots and speed builds
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 16:19:30 -04:00
Codex 93a210b420 Normalize application cursor arrows
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 16:11:56 -04:00
Codex 63a1cfe3a3 Use raw terminal input without cursor translation
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 15:41:06 -04:00
Codex 2257aeca0b Improve terminal input and client cleanup
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 14:32:55 -04:00
Codex 14cdd5fd56 Fix stale client rejection and terminal cursor mode
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 14:14:15 -04:00
Codex 8ffbb07bfa Fix terminal resize handling and cached updates
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 10:20:58 -04:00
Codex 66c4c97c9d Use fresh implicit sessions and raw live terminal output
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 10:10:13 -04:00
Codex 3ad8f95833 Add dosh update command
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 09:49:53 -04:00
Codex da60b71984 Gate client timing logs behind verbosity
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 09:45:55 -04:00
Codex 0eca4f1cf4 Add fresh default sessions and terminal status handling
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 09:41:46 -04:00
Codex 92f43df046 Spawn sessions with login shell terminal env
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 09:34:56 -04:00
Codex babfb204c3 Use installed dosh-auth path for SSH bootstrap
ci / test (push) Has been cancelled
ci / remote-bench (push) Has been cancelled
2026-06-11 09:03:20 -04:00