Beetroot v1.6.1:誰も見なかったキーボード書き直し
Beetroot v1.6.1: no-focus モード用にキーボード入力を書き直し、矢印ナビゲーション付きのリフレッシュされたプレビューパネル、v1.6.0 のリグレッション修正。
v1.6.0 で no-focus ウィンドウをリリースして 2 日後、ユーザーから問題が報告され始めました。矢印キーがすぐに動かない。ノートが編集できない。フィルタの切り替えに 2〜3 秒かかる。Alt+T が時々しか動かない。
すべて同じ原因に行き着きました。キーボードシステムが、フォーカスを持たないウィンドウのために設計されていなかったのです。
ひと目で:
- キーボードフックの書き直し:脆弱な単一フックアプローチを 3 層構成に置き換え
- プレビューパネルの刷新:動的ヘッダ、折りたたみ可能なノート、クリップ間の矢印ナビゲーション
- パフォーマンス修正:フィルタの切り替えが再び瞬時に
- ノート編集が機能:フックがキーストロークを食べなくなった
キーボードの問題
v1.6.0 の no-focus モードは、キーをインターセプトして Tauri イベント経由で UI に送る単一のキーボードフックを持っていました。2 つのことが間違っていました。
ウィンドウにフォーカスがないとき、Tauri はイベントを破棄します。 no-focus モードの根本は、Beetroot にフォーカスがないことです。だからキーは他のアプリからインターセプトされても、Beetroot に届かなかった。ユーザーには「クリックするまで矢印が動かない」と見えていました。
フックがすべてをインターセプトしていました。 ノートフィールドに入力しようとすると ? Space でプレビューが開く。Enter で貼り付けがトリガーされる。矢印がカーソルを動かす代わりにリストをナビゲートする。
修正は、キーボード処理を 3 層に分割することでした。ナビゲーションキー用の低レベルフック、修飾キーの組み合わせ用の RegisterHotKey (タイミングに敏感な GetAsyncKeyState の代わりに、適切な Windows API を使用)、そして Tauri のイベントシステムを完全にバイパスする win.eval() 経由の直接 JS インジェクション。
フックはまた、ウィンドウが開くたびに自分自身を再インストールします。Windows 11 はコールバックの処理に時間がかかりすぎる低レベルフックを密かに削除します。これが「キーボードが動かなくなる」の断続的な報告の背後にありました。
プレビューパネル、リフレッシュ
プレビューヘッダは「Preview」だけではなく、有用なコンテキストを表示するようになりました。ソースアプリのアイコン、コンテンツタイプ、「Chrome · Text · 178 chars」のような重要な統計情報。プレビューを閉じて再度開かずに、Up/Down でクリップをめくれます。ノートは鉛筆アイコンとともにデフォルトで折りたたまれており、クリックで展開、別の場所に移動すると自動保存されます。
2 秒のフィルタ切り替え
最も多く報告された v1.6.0 のバグです。約 1000 アイテムで「All」から「Images」に切り替えると 2〜3 秒フリーズしていました。
原因は、Rust 検索エンジンがすべてのアイテムについてフルコンテンツを返していたことでした。ブラウザコピーからの生 HTML も含めて。1000 アイテムでは、IPC ブリッジを越える JSON ペイロードがメガバイトに達していました。修正: 検索結果は最初の 200 文字だけを返すようになりました (リスト表示には十分)。完全なコンテンツは、実際に必要なときに、つまり貼り付け、プレビュー、変換のときにオンデマンドで取得されます。
その他の修正
- ノート編集:ノートフィールドをクリックするとウィンドウがアクティブになり、フックが脇に寄る
- キーアップ漏れ:古いフックは押下をキャッチしましたが、リリースは通していたので、エクスプローラーの不規則な挙動を引き起こしていました
- 最初のキー入力が無視される:React がまだ準備できていなかった起動時のレース。リトライで修正
- Remove spaces:Non-breaking スペース (U+00A0) を処理するようになりました。IBAN の貼り付けが実際に動きます
- ソースアプリレース:ソースはクリップボード変更の正確な瞬間に取得されるようになりました。50〜200 ms 後ではなく
アップデート方法
Beetroot は自動でアップデートを提案します。または GitHub から v1.6.1 をダウンロード してください。