> [!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