Max Nardit
Beetroot

Beetroot v1.6.3:コピーオーバーレイ、エクスプローラー画像、GPT-5.4

システム全体の「Copied」オーバーレイがすべてのクリップボードキャプチャを確認。エクスプローラーからコピーされた画像を修正。OpenAI モデルが GPT-5.4 にアップグレード。セキュリティ強化。

このリリースでは、ユーザーから見える変更が 3 つと、内部的な強化が 1 つです。

ひと目で:

  • システム全体の「Copied」オーバーレイ:コピーするとフロストグラスのピルがカーソル付近に表示されます
  • エクスプローラーの画像キャプチャ:エクスプローラー上の画像ファイルをコピーできるようになりました
  • OpenAI GPT-5.4:デフォルトモデルをアップグレード、既存ユーザーは自動移行
  • セキュリティ強化:新しい画像ファイルリーダーのパストラバーサル対策

「Copied」オーバーレイ

これは、特にメインウィンドウが非表示のときに、Beetroot がクリップボードをキャプチャしたという確認が欲しいという ユーザーからの機能リクエスト でした。

今は、何かをコピーするたびに、小さなピルがカーソル付近に 1 秒間表示されます。

  • コンテンツタイプ (「Text」「Image」など) をあなたの言語で表示
  • アクティブなテーマとアクセントカラーに適応
  • クリックスルー。フォーカスを奪わず、作業を妨げません
  • Settings > General でトグル (デフォルトで有効)

実装: オーバーレイは WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT スタイルを持つ別の Tauri WebView ウィンドウです。連続したコピー時のタイマー競合を避けるために、世代ベースのタイマーガード (AtomicU64) を使います。テーマカラーは CSS カスタムプロパティから読み取られ、適切な serde_json エスケープとともに eval() 経由で注入されます。オーバーレイの HTML は自己完結型 (134 行) で、輝度ベースの適応的なボーダーを持っています。

エクスプローラーの画像キャプチャ

Windows エクスプローラーで PNG や JPG を選択して Ctrl+C を押しても、Beetroot はそれをキャプチャしませんでした。理由: エクスプローラーはビットマップとしてではなく、CF_HDROP (ドラッグアンドドロップ形式) を介してファイルパスをクリップボードに置きます。クリップボードプラグインは画像の前にファイルをチェックしており、files: false でその両方をスキップしてテキストにフォールスルーしていたので、画像の代わりにファイルパスがテキストクリップとして得られていました。

修正は、プラグインの listenToClipboard を、正しい順序でチェックするカスタムハンドラに置き換えるものです。

  1. まずビットマップ:スクリーンショット (Snipping Tool)、ブラウザ画像、Telegram
  2. ファイルベースの画像CF_HDROP からファイルパスを読み取り、拡張子を検証し、新しい Rust コマンド read_clipboard_image_file 経由で読み込みます
  3. テキストフォールバック:それ以外すべて

新しい read_clipboard_image_file IPC コマンドは、拡張子検証 (PNG、JPG、JPEG、GIF、BMP、WEBP、TIFF、ICO、SVG) と 50 MB のサイズ制限とともに、任意の画像ファイルをディスクから読み込みます。

OpenAI GPT-5.4

OpenAI が GPT-5.4 をリリースし、Beetroot のデフォルトモデルが gpt-5.4-nano (高速、安価) と gpt-5.4-mini (より賢い) になりました。GPT-5.4 mini は 2 倍の速度で、コーディングと推論が改善されたと報告されています。

gpt-5-nano または gpt-5-mini を使っている既存ユーザーは、起動時に OPENAI_MODEL_MIGRATION マップ経由で自動移行されます。手動で別の OpenAI モデルを設定している場合、そのままにされます。

セキュリティ強化

新しい read_clipboard_image_file コマンドは任意のパスからファイルを読み込みます (エクスプローラーはどこからでもファイルをコピーできるため)。WebView が侵害された場合のパストラバーサルを防ぐため:

  • パスの正規化std::fs::canonicalize() がシンボリックリンク、ジャンクション、.. コンポーネントを解決
  • UNC ブロック\\server\share パスを拒否
  • システムディレクトリの拒否validation.rs::BLOCKED_DIRS を再利用して C:\WindowsC:\Program Files などをブロック
  • 8 つの Rust ユニットテスト がすべてのセキュリティ境界をカバー

アップデート方法

Beetroot は自動でアップデートを提案します。または GitHub から v1.6.3 をダウンロード してください。

ディスカッション

コメント欄はありません。議論は X で行っています。

Max Nardit

Max Nardit

@mnardit

ほかの記事

Beetroot v1.6.6:Office 修正

Excel と Word のセルが値ではなくスクリーンショットとしてキャプチャされていました。Microsoft Store の自動起動が密かに壊れていました。画像サムネイルがギガバイト単位の RAM を消費していました。v1.6.6 はこの 3 つに加え、大型の 1.6.5 AI Vision リリース後のセキュリティと信頼性の作業を修正します。

Beetroot v1.6.3:コピーオーバーレイ、エクスプローラー画像、GPT-5.4