Skip to content

Releases: sasanoha-tk/TailKVM

TailKVM v0.1.16

Choose a tag to compare

@sasanoha-tk sasanoha-tk released this 12 Jul 13:07
0fd4df5

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_error classification (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

Choose a tag to compare

@sasanoha-tk sasanoha-tk released this 11 Jul 08:14
8d5f17b

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

Choose a tag to compare

@github-actions github-actions released this 16 Jun 20:22
67f207b

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

Choose a tag to compare

@github-actions github-actions released this 16 Jun 12:36
b74fcf6

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

Choose a tag to compare

@github-actions github-actions released this 15 Jun 15:36
36f919c

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

Choose a tag to compare

@github-actions github-actions released this 14 Jun 22:07
006e35c

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

Choose a tag to compare

@github-actions github-actions released this 14 Jun 06:18
4d6986e

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

Choose a tag to compare

@github-actions github-actions released this 14 Jun 03:07
c826da8

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

Choose a tag to compare

@github-actions github-actions released this 13 Jun 12:20
b53f510

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

Choose a tag to compare

@github-actions github-actions released this 13 Jun 06:58
0426b8d

Highlights

  • Clipboard image sync (#9) — copy an image on one PC and paste it on the other. Raw CF_DIB is 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_lib is fully decomposed into state / tailnet / forwarding / seamless / router / session / clipboard_sync modules (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.