Repository navigation
Releases: sasanoha-tk/TailKVM
Release list
TailKVM v0.1.16
UI safety, accessibility, and robustness release — every P0/P1/P2 item from the v0.1.15 UI audit. All CI green (Rust fmt/clippy/test, frontend typecheck); 129 Rust tests + strict tsc + vite build pass.
Safety visibility (P0)
- Always-visible control state: the HUD gains a CONTROL cell (操作中 / 被操作中 / 待機) driven by a new backend-synthesized
capture_active— backend truth, not a frontend guess — visible even when the Quick Start card is scrolled away. - Failsafe made visible: Ctrl+Alt+Pause is stated persistently in the KVM step and on the HUD tooltip (works even while the pointer is on the remote).
- Poll-clobber bug fixed: user-action feedback moved to dedicated status/alert regions the 2s poll never overwrites.
- Screen-reader support: aria-live/role=status on all key status lines; failures announce via role=alert.
Accessibility & robustness (P1)
- Keyboard alternatives for all three drag editors (WCAG 2.1.1) with visible focus rings.
- Self-rescheduling poll with a 5s timeout (no stacked in-flight calls on a stalled backend).
- Labelled 相手IP input; missing error handling added; layout editors use the learned remote resolution instead of hardcoded 1920x1080.
Structure & design (P2)
- Typed
last_event_is_errorclassification (regex demoted to back-compat fallback). - localStorage shape validation for saved layouts, peer screens, and IME settings.
- Advanced card sectioned into six labelled fieldsets; legacy cards unified onto the control-room theme.
- quickstart god-module split into flow / map / storage (verbatim moves, byte-identical bundle).
Note
The capture-state transitions (操作中↔待機, 被操作中 lamp) deserve one visual pass in the real Tauri app with a live backend.
Full changelog: v0.1.15...v0.1.16
TailKVM v0.1.15
v0.1.15
安定性と安全性の向上を中心に、ネットワーク処理やWindows入力処理の見直し、コードの整理を行いました。あわせて、プロトコルv2とUDPによるマウス移動通信に向けた基盤を追加しています。
- Rust:fmt / clippy / test
- フロントエンド:TypeScript型チェック / Viteビルド
- Rustテスト:129件
安全性と安定性
緊急停止キーの判定を改善
Ctrl + Alt + Pauseによる緊急停止が、VK_PAUSEとVK_CANCELのどちらで入力された場合でも動作するようになりました。
PCキーボードでは、Ctrl + BreakがVK_CANCELとして扱われる場合があります。
TCP書き込みにタイムアウトを追加
通信相手がTCPデータを受信しなくなった場合に備え、書き込み処理に5秒のタイムアウトを追加しました。
これにより、通信処理が停止したままになり、受信側の物理フェイルセーフまで動作しなくなる問題を防ぎます。
キャプチャエンジン停止時の入力抑制を解除
入力フックの設定後にキャプチャエンジンが異常終了した場合、入力転送を自動的に停止するようにしました。
ローカルのキーボードやマウス入力が抑制されたまま残ることを防ぎます。
キャプチャ開始前から押されていたキーへの対応
キャプチャ開始前から押されていたキーが、接続先で押されたままになる問題を修正しました。
プロトコルとネットワーク
プロトコルバージョンを追加
HelloとHelloAckにprotocol_versionを追加しました。
既存バージョンとの互換性は維持されます。接続先とのバージョンが異なる場合は警告を表示します。
また、通信エラーを扱うため、thiserrorを使用したWireErrorを追加しました。
UDPマウス移動通信の基盤を追加
tailkvm_net::motionに、UDPでマウス移動量を送受信するための基盤を追加しました。
以下の機能を含みます。
- コンパクトなバイナリ形式のデータグラム
- シーケンス番号による重複・順序逆転パケットの除外
- 送信元IPアドレスの検証
- localhostを使用したUDPループバックテスト
Windows入力処理
SendInputを一括実行
複数の入力をまとめてSendInputへ渡すように変更しました。
Unicode文字列をひとまとまりで送信できるようになり、システムコールの回数も削減されます。
Raw Input処理を改善
WM_INPUTの処理でスタックバッファを使用するようにしました。
8,000Hzなど、高ポーリングレートの入力デバイスを想定した改善です。
コード整理
tailkvm-coreを再構成
tailkvm-coreを復活させ、画面座標の計算とマウス移動判定を共通化しました。
seamlessエンジンとrouterが、同じテスト済みの実装を使用するようになっています。
routerの送信間隔を改善
routerに専用スレッドによる高精度なペーシング処理を追加しました。
seamlessエンジンと同等のタイミング制御を行います。
フロントエンドを分割
3,107行あったmain.tsを、役割ごとの15個のESモジュールに分割しました。
その他
- クリップボードのブロードキャスト処理と中継処理の重複を整理
- routerで入力フックの開始に失敗した場合、エラーを表示するように変更
変更履歴
v0.1.14...v0.1.15
TailKVM v0.1.14
Highlights
- Stability hardening (code-review follow-up to v0.1.13). The high-resolution pacing timer now uses a bounded wait with a safe fallback, so a misbehaving timer can never hang or busy-spin the input loop — closing the last theoretical path back to the "system feels heavy" symptom. Plus a minor keepalive tidy-up. No change to normal behavior; purely defensive.
Install
Download TailKVM_0.1.14_x64-setup.exe (NSIS) or TailKVM_0.1.14_x64_en-US.msi and install on every PC in the tailnet. Requires Windows 11 + Tailscale.
TailKVM v0.1.13
Highlights
- Idle-resume stutter fixed — without the system slowdown. v0.1.13 paces the capture loop with a process-local high-resolution timer (no global
timeBeginPeriod, so the whole PC stays responsive) and keeps the receiver warm during static stretches. Resuming after a pause is smooth, the cursor stays fluid, and there is no whole-PC sluggishness.
Install
Download TailKVM_0.1.13_x64-setup.exe (NSIS) or TailKVM_0.1.13_x64_en-US.msi and install on every PC in the tailnet. Requires Windows 11 + Tailscale.
TailKVM v0.1.12
Highlights
- Fix: whole-PC sluggishness — v0.1.11 raised the global Windows timer resolution for the entire session, which made both PCs feel heavy/laggy system-wide (not just TailKVM). v0.1.12 removes that, restoring normal system responsiveness. The smoother cursor (v0.1.9) and the latency-accumulation fix (v0.1.10) are retained.
- Trade-off: the minor stutter when resuming after a long idle pause may return; it will be addressed later with a local fix rather than a global timer change.
Install
Download TailKVM_0.1.12_x64-setup.exe (NSIS) or TailKVM_0.1.12_x64_en-US.msi and install on every PC in the tailnet. Requires Windows 11 + Tailscale.
TailKVM v0.1.11
Highlights
- Fix: stutter when resuming after the cursor sat idle — after a static period, input used to resume with a large hitch on both PCs. TailKVM now holds a 1ms system timer resolution while a capture or controlled session is active, so the OS no longer coarsens timing during idle. Resuming after a pause is smooth, and the high-rate capture cadence is now precise.
Install
Download TailKVM_0.1.11_x64-setup.exe (NSIS) or TailKVM_0.1.11_x64_en-US.msi and install on every PC in the tailnet. Requires Windows 11 + Tailscale.
TailKVM v0.1.10
Highlights
- Fix: input/cursor latency no longer grows over time — under sustained use, mouse and keyboard response could drift increasingly behind on both PCs. The controller→receiver command queue (unbounded) was accumulating stale absolute cursor positions faster than they could be sent. The controller now coalesces queued cursor positions to the latest before sending, so the link is bounded to "newest position wins" at any capture rate. Relative mouse motion is never dropped. This removes the regression that the higher v0.1.9 capture rate exposed — you keep the smoother cursor and stable, low latency.
Install
Download TailKVM_0.1.10_x64-setup.exe (NSIS) or TailKVM_0.1.10_x64_en-US.msi and install on every PC in the tailnet. Requires Windows 11 + Tailscale.
TailKVM v0.1.9
Highlights
- Smoother remote cursor — the seamless engine now polls and forwards cursor motion at a higher rate by default (capture interval
33ms → 8ms), raising the receiver-side cursor refresh from ~30fps to ~60fps and up (up to ~125fps depending on the timer resolution). Movement that previously felt choppy is now fluid. No motion is lost — deltas are still coalesced, just sent in smaller, more frequent steps. The rate stays tunable in Advanced settings (Capture interval ms, 8–100).
Install
Download TailKVM_0.1.9_x64-setup.exe (NSIS) or TailKVM_0.1.9_x64_en-US.msi and install on every PC in the tailnet. Requires Windows 11 + Tailscale.
TailKVM v0.1.8
Highlights
- Legacy remote mode retained as a compatibility fallback (#8) — the non-seamless remote-mode loop is kept on purpose as an availability fallback rather than removed. Its controller status line is reframed from
[DEPRECATED: use seamless KVM]to[Compatibility fallback](#35) so the UI no longer steers you away from a supported path. Seamless mode remains the default and recommended way to cross between PCs. - Japanese IME composition validated on hardware (#24) — the two-PC / JIS-keyboard checklist from the #10 follow-up is confirmed passing: hankaku/zenkaku toggle, romaji→kana→convert candidate cycling without dropping the mode, committed-string delivery to the peer, Armed-mode key passthrough, no stuck modifiers, and focus/IME-state restore on toggle-off.
Install
Download TailKVM_0.1.8_x64-setup.exe (NSIS) or TailKVM_0.1.8_x64_en-US.msi and install on every PC in the tailnet. Requires Windows 11 + Tailscale.
TailKVM v0.1.7
Highlights
- Clipboard image sync (#9) — copy an image on one PC and paste it on the other. Raw
CF_DIBis forwarded losslessly (base64, 8 MB cap) over the same link as text; works with the "Send clipboard image to peer" button and with auto clipboard sync. Files (CF_HDROP) are still out of scope. - Watchdog visibility (#22) — if the hook health marker can no longer be injected (e.g. UIPI), the app now surfaces "hook-loss detection is degraded" once instead of going silently blind.
Internals
- #17 complete —
tailkvm_ui_libis fully decomposed intostate/tailnet/forwarding/seamless/router/session/clipboard_syncmodules (lib.rs 5410 → ~1270 lines), purely mechanical. - #23 — documented that with character resolution OFF, IME keys intentionally pass through to the receiver (hardware-KVM parity); resolve-ON composition mode is the Japanese-input path.
Install
Download TailKVM_0.1.7_x64-setup.exe (NSIS) or TailKVM_0.1.7_x64_en-US.msi and install on every PC in the tailnet. Japanese-input + acceptance checklist: issue #24.