> [!left-bubble] ![[chappy-mini.webp]] > [[Codex CLI]]のレポートです。 ## 概要 [[Yazi]] `v26.1.22 -> v26.5.6` のリリース内容を調査し、`新機能` `改善` `バグ修正` `その他` に分類して要約する。あわせて、各項目に 5 段階の重要度を付ける。 ## 調査結果 調査元は GitHub Release、`CHANGELOG.md#v2656`、`v26.1.22...v26.5.6` の compare / git log です。v26.5.6 は 2026-05-05 UTC に公開されています。重要度は `5=移行・互換性・日常利用への影響大`、`1=限定的/開発補助` で付けています。 **新機能** | 重要度 | 内容 | |---:|---| | 5 | Lua 5.5 へアップグレード。プラグイン実行基盤に影響が大きい変更。 | | 5 | concurrent worker 設定を細分化。旧 `micro_workers` / `macro_workers` は置き換え対象。 | | 4 | カスタムタブ名、タブ名変更キー、アプリタイトル DDS イベントなど、UI カスタマイズが拡張。 | | 4 | `app:theme` によるテーマ/Flavor のホットリロード。 | | 4 | dynamic open/opener API、dynamic previewer API、plugin custom styles によりプラグイン拡張性が大幅向上。 | | 4 | `ya.exec()` / `ya exec` で action 実行結果を await 可能に。 | | 4 | SFTP の証明書認証、認証なし接続に対応。 | | 4 | Multi-file spotter、drag-resize panes 追加。日常操作と情報表示が強化。 | | 4 | DDS 経由の app-level event 購読/介入、通知・hidden 状態・download・which・close などのイベント追加。 | | 4 | `fs.unique()` 追加。`fs.unique_name()` の TOCTOU 問題を避ける新 API。 | | 3 | `search --in`、`sort_fallback`、`bulk_exit`、`ya pkg --discard`、`marker_symbol` 追加。 | | 3 | `fs.access()`、`ya.co()`、`cx.which`、`ps.sub()` in `init.lua`、inline `lua` action 追加。 | | 3 | コピー/カット/リンク/展開後に新規ファイルへカーソル移動。 | | 2 | `hovered` icon condition、active tab separator の背景ブレンド、archive previewer の空ディレクトリ重複排除。 | | 1 | `yazi --help` から quick-start へ誘導。 | **改善** | 重要度 | 内容 | |---:|---| | 4 | Lua 5.5 external strings によりメモリ割り当てを削減。 | | 3 | previewed / spotted widget の再利用で描画・更新コストを削減。 | | 3 | local file watcher の二重化、進捗表現の整理など内部の安定性を改善。 | | 2 | code highlighting の不要な allocation を削減。 | | 2 | preset `multi` spotter がフォルダサイズ更新に絞り、メモリ使用量を削減。 | | 2 | cmp component が入力カーソルに追従。 | **バグ修正** | 重要度 | 内容 | |---:|---| | 5 | Chafa v1.18.1 で画像プレビュー時にランダムなキー入力が発生する問題を修正。 | | 4 | Windows で非 ASCII パスへの archive extraction が失敗する問題を修正。 | | 4 | Windows で子プロセスが detach されうる問題を回避。 | | 4 | `paste --force` が既存 read-only ファイル相手に効かない問題を修正。 | | 4 | watch channel の read-half でブロックしうる問題を修正。 | | 3 | `7zz -ba` 出力パースを堅牢化。 | | 3 | `ya pkg` がユーザー Git config の default remote name に影響される問題を修正。 | | 3 | Linux partition blocks のパースに `u64` を使用。 | | 3 | NFSv4 mount を directory refresh で soundless 扱いに。 | | 3 | code / JSON previewer の auto-wrap 位置ずれ、preview / spot rendering の交差判定ミスを修正。 | | 3 | flat view で select 時の group order を安定化。 | | 3 | Windows MS-DOS device 名の casefold fallback、ImageMagick font path の backslash escape を修正。 | | 2 | sysfs file を preset `empty` previewer で扱えるよう修正。 | | 2 | desktop entry の file URI 処理、`.desktop` duplicate category を修正。 | | 2 | status bar の directory length、message width の border 計算、Wine INI MIME の opener を修正。 | | 2 | `cargo-deb` artifact 選択、`cargo install` 中の deadlock 回避を修正。 | | 1 | devShell の cspell package 参照を修正。 | **その他** | 重要度 | 内容 | |---:|---| | 5 | `micro_workers` / `macro_workers` 削除。新しい worker 制御設定への移行が必要。 | | 4 | `title_format` 削除。`ind-app-title` DDS event へ移行。 | | 4 | `ui.Style` が immutable に変更。Lua/plugin 側の書き換え前提コードに影響。 | | 4 | `fs.unique_name()` 非推奨化。`fs.unique()` へ移行推奨。 | | 3 | preset のタブ作成キーが `t` から `t` → `t` に変更され、`t` → `r` がタブ名変更に割当。 | | 2 | `ya.mgr_emit()` 非推奨警告を追加。 | 参照: [Release v26.5.6](https://github.com/sxyazi/yazi/releases/tag/v26.5.6), [CHANGELOG v26.5.6](https://github.com/sxyazi/yazi/blob/main/CHANGELOG.md#v2656), [Compare v26.1.22...v26.5.6](https://github.com/sxyazi/yazi/compare/v26.1.22...v26.5.6) # Yazi v26.5.6 新機能詳細レポート 調査対象: Yazi v26.5.6 本レポートでは、リリース内容のうち重要度 3 以上と判断した新機能について詳述する。 重要度の基準: - 5: 移行・互換性・日常利用への影響が非常に大きい - 4: ユーザー体験またはプラグイン拡張性への影響が大きい - 3: 特定用途で有用、または設定・プラグイン開発に影響する ## 重要度 5 ### Lua 5.5 へアップグレード 関連: #3633 Yazi の Lua ランタイムが 5.5 系へ更新された。プラグイン実行基盤に関わるため、既存プラグインの互換性確認が必要になる可能性がある。 あわせて Lua 5.5 external strings によるメモリ削減も入っている。プラグインが Lua の細かい挙動や Yazi の内部 API に依存している場合は、v26.5.6 への更新後に動作確認した方がよい。 主な影響: - プラグイン作者は Lua 5.5 での動作確認が必要 - Lua ランタイム周辺の性能・メモリ効率が改善 - 低レベルな Lua API 依存コードでは互換性リスクがある ### concurrent worker 設定の細分化 関連: #3661 従来の `micro_workers` / `macro_workers` が廃止され、用途別の worker 設定に置き換わった。 新しい設定例: ```toml [tasks] file_workers = 3 plugin_workers = 5 fetch_workers = 5 preload_workers = 2 process_workers = 5 ``` パフォーマンス調整の粒度は上がるが、古い設定を残している場合は移行が必要になる。 主な影響: - 古い `micro_workers` / `macro_workers` 設定は移行対象 - ファイル操作、プラグイン、fetch、preload、process を個別に調整可能 - 重いプレビューやプラグインを使う環境で調整しやすい ## 重要度 4 ### カスタムタブ名 関連: #3666 タブに任意の名前を付けられるようになった。複数のプロジェクトやディレクトリを同時に開く使い方では、タブの識別性が上がる。 この変更に伴い、プリセットキーも変更された。 - タブ作成: `t` -> `t` - タブ名変更: `t` -> `r` 主な影響: - 複数タブ運用時の視認性が向上 - 既存キーマップに `t` 系のカスタマイズがある場合は確認が必要 ### アプリタイトル DDS イベント `ind-app-title` 関連: #3684 アプリタイトルを DDS イベント経由で柔軟にカスタマイズできるようになった。旧 `title_format` は削除され、このイベントへ移行する必要がある。 従来のテンプレート文字列より自由度が高く、Lua 側で状態に応じたタイトル生成が可能になる。 主な影響: - `title_format` 利用者は移行が必要 - Lua / DDS による柔軟なタイトル制御が可能 - 状態に応じた動的なタイトル表示を作りやすい ### `app:theme` action によるテーマ/Flavor ホットリロード 関連: #3906 Yazi を再起動せずに、ユーザーテーマや flavor を再読み込みできるようになった。 テーマ開発や flavor 調整、プラグイン UI の確認時に再起動が不要になるため、見た目の調整サイクルが短くなる。 主な影響: - テーマ・flavor 開発が効率化 - 設定変更後の確認がしやすい - プラグインの見た目調整にも有用 ### dynamic open/opener Lua API 関連: #3901 Lua から opener や open rule を動的に追加・更新・削除できるようになった。 たとえば、特定のファイル種別だけ一時的に opener を追加したり、プラグインが状況に応じて open rule を組み替えたりできる。 主な影響: - open rule の動的な制御が可能 - プラグインが opener を追加・変更しやすい - `open.prepend_rules` / `open.append_rules` 周辺の柔軟性不足を補う方向の変更 関連 issue: - #3539 - #3643 - #3892 ### dynamic previewer Lua API 関連: #3891 Lua から previewer を動的に登録・削除できるようになった。 たとえば Markdown 用 previewer を先頭に追加したり、fallback previewer を末尾に追加したりできる。 この変更の一環で fetcher の設定形式も変わっており、`id` ではなく `group` が使われるようになった。古い `plugin.prepend_fetchers` 設定を使っている場合、`missing field group` のような起動エラーにつながる。 主な影響: - previewer を Lua から動的に制御可能 - プラグインが previewer を拡張しやすい - fetcher 設定の `id` -> `group` 移行が必要な場合がある ### plugin custom styles 関連: #3934 `theme.toml` / `flavor.toml` にプラグイン用の独自スタイルセクションを定義し、Lua 側から参照できるようになった。 例: ```toml [git] modified = { fg = "red" } modified_sign = "x" ``` Lua 側では `th.git.modified` のように参照できる。`git.yazi` のような UI 表示系プラグインで、テーマと一体化した見た目を作りやすくなる。 主な影響: - プラグイン固有のテーマ設定を定義可能 - flavor とプラグイン表示を統一しやすい - UI 表示系プラグインの表現力が上がる ### `ya.exec()` API / `ya exec` subcommand 関連: #3780 action を実行し、その結果を await できる API と CLI サブコマンドが追加された。 従来のように action を投げっぱなしにするだけでなく、実行結果を待って次の処理へ進める。プラグインや外部連携で、処理順序を明確にしたい場合に有用。 主な影響: - action 実行結果を待てる - プラグインの制御フローを書きやすい - 外部スクリプトから Yazi action を扱いやすい ### SFTP の証明書認証 関連: #3716 SFTP VFS provider が certificate authentication に対応した。 SSH 証明書ベースの認証を使う組織や、鍵認証より厳密な運用をしている環境で重要な変更。 主な影響: - SSH 証明書認証を使う SFTP サーバーに対応 - 企業・組織管理の SSH 環境で使いやすくなる - VFS 経由の remote file management の適用範囲が広がる ### SFTP の認証なし接続 関連: #3916 認証不要の SFTP サーバーへ接続できるようになった。 用途は限定的だが、テスト環境やローカルネットワーク内の簡易 SFTP サーバーなどで使える。 主な影響: - 認証なし SFTP サーバーへ接続可能 - テスト用途や閉じたネットワークで便利 - セキュリティ上、利用環境は慎重に選ぶ必要がある ### Multi-file spotter 関連: #3733 複数ファイル選択時の spot 表示に対応した。 単一ファイルだけでなく、選択集合に対する情報表示やプラグイン処理の幅が広がる。 主な影響: - 複数選択に対する情報表示が可能 - プラグインが選択集合を扱いやすくなる - 一括操作前の確認 UI に応用しやすい ### pane のマウスドラッグリサイズ 関連: #3890 マウスドラッグでペイン幅を変更できるようになった。 プレビューを広く見たい場合や、ファイル一覧を一時的に広げたい場合に便利。TUI でもマウス操作を併用するユーザーにとって体感しやすい改善。 主な影響: - ペイン比率を直感的に変更可能 - プレビュー重視の作業で便利 - マウス操作を有効にしているユーザー向けの UX 向上 ### DDS の app-level event 購読/介入 関連: #3632 Lua / DDS からアプリレベルのイベントを購読し、一部へ介入できるようになった。 通知、hidden 状態、download、which、close などのイベント追加と合わせて、プラグインが Yazi の挙動へ関与できる範囲が広がっている。 主な影響: - プラグインが Yazi の内部イベントへ反応しやすい - 独自通知、状態同期、キー処理などの実装幅が広がる - DDS ベースの拡張がより実用的になる 関連する追加イベント例: - `relay-notify-push` - `ind-app-title` - `ind-hidden` - `key-hidden` - `download` - `ind-which-activate` - `hey` - `key-close` ### `fs.unique()` 関連: #3677 一意なファイルまたはディレクトリを作成する Lua API が追加された。 旧 `fs.unique_name()` は一意な名前を返すだけで、名前を取得してから作成するまでの間に競合が起きる TOCTOU race の余地があった。`fs.unique()` は実際に作成まで行うため、より安全に使える。 主な影響: - 一意なファイル・ディレクトリを安全に作成可能 - 一時ファイル作成や重複回避に有用 - `fs.unique_name()` は非推奨になり、移行推奨 ## 重要度 3 ### `search --in` 関連: #3696 `search` action に検索対象ディレクトリを指定する `--in` が追加された。 現在位置以外を明示して検索したい場合や、プラグインから検索範囲を制御したい場合に使える。 主な影響: - 検索対象ディレクトリを明示可能 - プラグインから検索範囲を指定しやすい - search action の再利用性が上がる ### `sort_fallback` 関連: #3077 ソート時の fallback 挙動を設定できるようになった。 主ソートキーが同値の場合の並びを制御できるため、表示順の安定性や好みに関わる。 主な影響: - 同値ソート時の並びを制御可能 - 表示順を安定させやすい - ソート設定の自由度が上がる ### `bulk_exit` action 関連: #3792 bulk 操作の終了時プロンプトをカスタマイズできる action が追加された。 大量変更や一括編集系のワークフローで、確認 UX を調整しやすくなる。 主な影響: - bulk 操作の終了確認をカスタマイズ可能 - 一括操作系プラグインや設定で有用 - 誤操作防止や確認フロー改善に使える ### `ya pkg --discard` 関連: #3781 package に加えたローカル変更を破棄できるオプションが追加された。 プラグインや flavor を試して壊した場合、元の状態へ戻しやすくなる。 主な影響: - package のローカル変更を破棄可能 - 試行錯誤後の復旧が簡単 - `ya pkg` を使うユーザーに有用 ### `marker_symbol` 関連: #3689 ファイルをマークしたときの記号を設定できるようになった。 小さい変更だが、テーマや表示幅、視認性にこだわる設定では有用。 主な影響: - マーク表示記号を変更可能 - テーマやフォントに合わせやすい - 視認性の調整に使える ### `fs.access()` 関連: #3668 Lua からファイルシステムへのアクセス可否を確認する API が追加された。 プラグインが `io.open()` などを直接使うより、Yazi の抽象に沿って判定できる。 主な影響: - ファイルアクセス可否を Lua API で確認可能 - プラグインのファイル操作前チェックに有用 - Yazi の filesystem 抽象に沿った実装がしやすい ### experimental `ya.co()` 関連: #3757 coroutine を作る実験的 API が追加された。 非同期的な Lua 処理や、複数ステップの処理を組み立てるための基盤になる。ただし experimental なので、将来変更される可能性は見ておく必要がある。 主な影響: - Lua で coroutine を扱いやすくなる - 非同期処理の構成に使える - 実験的 API のため互換性には注意 ### `cx.which` API 関連: #3617 which component の状態へアクセスできる API が追加された。 キー候補 UI の状態をプラグインから参照・制御する用途に向く。 主な影響: - which component の状態を Lua から参照可能 - キー候補 UI と連動するプラグインを作りやすい - UI 状態に応じた処理分岐が可能 ### `ps.sub()` を `init.lua` で直接利用可能 関連: #3638 `ps.sub()` をプラグイン内だけでなく `init.lua` から直接利用できるようになった。 簡単なイベント購読や連携であれば、プラグイン化せず設定ファイル内で完結できる。 主な影響: - `init.lua` で pub/sub 購読が可能 - 軽量なイベント連携を設定だけで書ける - 小さな自動化を作りやすい ### Vim-like inline `lua` action 関連: #3813 Vim のコマンド風に、その場で Lua スニペットを実行できる action が追加された。 デバッグ、試作、簡単な自動化に便利。 主な影響: - インライン Lua を action として実行可能 - プラグイン開発や設定確認時の試行錯誤に便利 - 小さな処理を素早く実行できる ### 操作後に新規ファイルへカーソル移動 関連: #3846, #3854 コピー、カット、リンク、ハードリンク、展開後に、作成された新規ファイルへカーソルが移動するようになった。 直後にリネーム、確認、追加操作をする流れが自然になる。 主な影響: - ファイル作成後の操作継続がしやすい - コピーや展開後に対象を探す手間が減る - 日常操作の UX が改善 ## 参考リンク - Release v26.5.6: https://github.com/sxyazi/yazi/releases/tag/v26.5.6 - Changelog v26.5.6: https://github.com/sxyazi/yazi/blob/main/CHANGELOG.md#v2656 - Compare v26.1.22...v26.5.6: https://github.com/sxyazi/yazi/compare/v26.1.22...v26.5.6