5.2.0
5.2.0のリリースノート。
リリース日: 2026-08-06
機能
@takazudo/zdtpをデザイントークンパネルのアイランドから遅延読み込みするようにし、eager な islands グラフに含めないようにしました。アイランド登録がインポートチェーンに依存しているため bootstrap モジュール自体は引き続き静的にインポートされますが、パネル本体のバンドルは最初のtoggle-design-token-panelの dispatch まで遅延されます。マウント時のプローブは、有効なストレージプレフィックス配下に保存済みのパネル状態(保存されたオーバーライド、開いた状態、オーナーモードのフラグ)を見つけた場合は従来どおり即座に読み込むため、再訪したユーザーの調整内容は目に見える遅延なく適用されます。パネルを一度も開かない訪問者がそのコストを負担することはなくなりました(2b4e169、d7febe8、7fad398)gen-z-indexに--md-tableリージョンを追加しました。ドキュメント内の z-index ティア表を、CSS ブロックと同じトークンソースから生成できるようになり、手作業での二重管理が不要になります。あわせて bin をテスト可能なエクスポートとして作り直し、パスとテーマラッパーのフラグを明示できるようにし、CLI の終了コードのテストを追加しました(94799b3、adced6a)auto-logo を正方形アイコンとして描画する direct-paint SVG レンダラーを追加し、それをラスタライズして Tauri アプリのアイコンとしてコミットしました。正方形への再構成はワードマークとは別のコードパスなので、アイコンが横長ロゴのアスペクト処理を引き継ぐことはありません(46a233b、6a5152a)
target-manifestテストフィクスチャをcheck-pin-parityの 6 番目の監視対象として追加しました。このフィクスチャは実際のcreate-zudo-doc利用者が受け取る公開時の構成を模したものですが、その@takazudo/zudo-docのピンはドキュメント上の意味しか持ちません。低速テストはパックされた tarball を展開する方式でレジストリから解決しないため、ここでのずれはテストからは見えませんでした。実際にメジャーバージョン 1 つ分、静かに取り残されていました(8e497f3)Markdown 側で
GENERATED:Z_INDEXマーカーを走査する際、フェンス付きコードブロック内を除外するようにしました。これによりドキュメントページ内でジェネレーターの説明のためにマーカーをそのまま記載できます。フェンスの判定はtrim()による近似ではなく CommonMark に従います。開始フェンスのインデントは 3 スペースまで、閉じフェンスは同じ文字で同じ長さ以上、info 文字列を伴う行は閉じない、閉じられないフェンスは以降すべてを含む、といった規則をすべて守ります。CSS 側の挙動は変わりません。この切り替えはマーカー文字列の判定ではなく呼び出し側で制御しています(bc861c1)
バグ修正
tauriフィーチャーのテンプレートにプレースホルダーのsrc-を同梱しました。これがないとtauri/ icons/ icon. png tauri::generate_context!()がコンパイル時に panic するため、--tauriでスキャフォールドしたすべてのプロジェクトがビルドできませんでした。bundle.icon: []とbundle.active: falseを指定していても発生します。ホストリポジトリ側は以前に修正済みでしたが、ジェネレーターのテンプレートは対象外でした。テンプレートには本プロジェクトのブランドマークではなく中立な 32×32 RGBA のプレースホルダーを同梱し、その理由からテンプレート差分チェックの許可リストに登録しています(70dead5)GENERATED:Z_INDEXマーカーを、テキストが出現した箇所すべてではなく構造上のマーカーとして現れる箇所のみカウントするようにしました。従来はマーカーを本文中に引用しただけのページが重複と誤判定され、検証に失敗していました。カウントと位置特定を単一のスキャナーから導出するようにしたことで、潜在的な破損経路も塞いでいます。仮にカウントだけを厳密化していた場合、本物より前に引用されたマーカーが検証を通過し、そのまま置換位置として使われていました(32f786f)リスト項目の行(
-+ バッククォート)で開かれたフェンスを、正しくフェンスとして扱うようにしました。これを見落とすことは無害な検出漏れではありません。その項目の閉じフェンスはコンテンツ列までインデントされリストマーカーを持たないため、新しい開始フェンスとして解釈され、その下にある本物のマーカーの組をまとめて飲み込んでしまいます(dda487a)閉じフェンスの判定を、一律 3 スペースではなく開始フェンスのコンテンツ列を基準にするようにしました。これにより幅の広いリストマーカー(
10))の後に開かれたフェンスが、4 桁目の閉じフェンスで正しく閉じられます。従来はフェンスが閉じられないまま本物のマーカーが隠され、マーカーが見つからないというエラーになっていました(d5dd4cf)デザイントークンパネルの永続状態プローブを、中身のあるエンベロープのみに絞り込みました。従来はキーの存在だけで即時読み込みが発火していたため、復元すべきオーバーライドを何も持たない空の
{}エンベロープでもバンドルを取得していました。現在は空であることが確定できる場合({}、[]、null)を除いて発火します。またスキーマ非依存のままで、フォーマットを解釈することなく空かどうかだけを判定します(a8beb3b)インポート前のリスナーで、共有チャンネルに加えて解決済みのインスタンス別トグルチャンネルも登録するようにしました。これにより
PanelConfig.toggleEventを設定したホスト、あるいは zdtp のインスタンス別チャンネルを dispatch するホストからも、最初の動的インポートを発火できます。インスタンスチャンネルはテーマパックやカラースキームの変更時に追加ではなく置き換えられるため、訪問者が離れたパックの古いチャンネルが読み込みを引き起こすことはなくなりました(7cf7cc4)target-manifestフィクスチャの@takazudo/zudo-docピンを、スキャフォールドのZUDO_DOC_PINに揃えました。過去に 2 度手作業で更新された後、4 つのマイナーリリースにわたって放置されていました。これはガードが存在しないことの典型的な兆候であり、本リリースではそのガードも追加しています(8c239f7)gen-z-indexの Markdown テーブルの Role セルを MDX エスケープするようにしました。これにより MDX 上で特別な意味を持つ文字を含むロール説明がページを壊すことはなくなります(d4f5317)CSP の
font-srcディレクティブから未使用のcdn.jsdelivr.netの許可を削除しました。そこからフォントを読み込んでいる箇所はありませんでした(3c108b3)noUncheckedIndexedAccessに対応するためmatchAllのキャプチャグループをガードしました(d5833eb)
その他の変更
リリーススクリプトの
ZUDO_DOC_PIN書き換え処理を、スキャフォールドの定数とtarget-manifestフィクスチャの両方を同時に更新するテスト可能なヘルパーとして切り出しました。従来はスキャフォールドしか書き換えておらず、それがフィクスチャのずれを生んだ原因でした。ヘルパーはリポジトリルートを引数に取るためテストから一時ディレクトリに対して実行でき、どちらかを書き込む前に両方のファイルを検証し、静かに何もしないのではなく明示的に失敗します。テストはシェルステップとまったく同じ形で実際の CLI を起動し、さらにリリーススクリプト自体を読む検証も含めているため、インライン書き換えへ静かに戻した場合はテストが落ちます(35b07bc、471547a)@takazudo/*のツールチェーンを最新に更新しました。ファーストパーティのピンは依存更新の対象から外し(それらはリリースフローの管轄です)、スキャフォールドの zfb ピンはピン整合性のために同期しています(49d5d4c、039f8df、972fc5e)zdtp のペイロードが eager な islands グラフから外れたことをビルド成果物に対するアサーションで証明し、永続状態プローブの経路を e2e スイートでエンドツーエンドにカバーしました(ef2e567、e0c7ceb)
claude-skillsの許可リストの根拠を多層防御(defense-in-depth)の観点で書き直し、peer 下限に関する注意書きが未処理の作業のように読めない表現に改めました。この下限は設計上、恒久的に 1 リリース遅れます(159fd9d、15117a5)A2 no-stub パリティのハッシュを再ベースライン化し、
icon.tsの shapes のインポートを 1 文にまとめました(a5bafd3、f04e1dd)