5.1.0
5.1.0のリリースノート。
リリース日: 2026-08-05
機能
コードブロックの折り返しトグルが記憶されるようになりました。これまでは DOM のクラスとしてしか保持されていなかったため、ブラウザをリロードするたびに失われていました。ドキュメント執筆のループ(
pnpm dev→ MDX を編集 → リロード → 折り返しが解除されている)では特に不便でした。折り返しはページ全体の設定としてsessionStorageのキーzudo-doc-code-wrapに永続化され、初回ロード時と SPA ナビゲーション後に復元されます。押さえておきたい変更点は 2 つあります。いずれかの折り返しボタンを切り替えるとそのブロックだけでなくページ上のすべてのコードブロックが折り返されること、そして設定はブラウザのタブセッション中のみ保持されることです。ブロック単位の永続化は意図的に見送りました。ブロックの位置やコード内容のハッシュといったキーの候補はいずれもドキュメントの編集によって無効になり、それこそがこの機能が必要とされる場面だからです(ae0b1db、#3270)
バグ修正
十分に収まっているコードブロックに折り返しトグルが表示されることがなくなりました。折り返すとボタンを表示するかどうかを決めるはみ出し自体が解消されるため、従来の「有効な間は表示し続ける」という規則では、ページ全体の設定を有効にした途端にすべての短いブロックにトグルが現れてしまう状態でした。折り返していないときの測定結果を要素にキャッシュし、折り返し中はそれを再利用するようにしました(ae0b1db)
閉じた
<TabItem>パネル内のコードブロックが折り返しトグルを恒久的に失うことがなくなりました。この<pre>はhiddenのためレイアウトボックスを持たず、エンハンサーが最初に測定した時点では0/0になります。これを「はみ出していない」としてキャッシュすると、折り返しのガードによって再測定されなくなり、ブロックが固定されてしまいました。はみ出しているコードブロックがタブ内にしかないページでは、折り返しを解除する手段が失われる状態でした。サイズ 0 の測定結果は「収まっている」ではなく不明として扱い、ブロックが可視状態で測定されるまで保存済みの設定の適用を遅延させます。ResizeObserverがパネルにレイアウトボックスが生じたフレームで適用するため、描画前に処理が完了しちらつきは生じません(912ee02)
その他の変更
折り返し設定に対する実 DOM でのリグレッションテストを追加しました。新しいユニットテストは happy-dom 上で実際のエンハンサー初期化スクリプトを実行し、初期状態がオフであること、ロード時の復元、ページ全体への同期、オン・オフ両方の永続化、収まっているブロックとタブパネルの表示規則、オブザーバーの収束、ストレージアクセスが例外を投げた場合のフォールバックを検証します。あわせて、リロード後の永続化、折り返し復元後に開いたタブ、はみ出さないブロックを対象とする Playwright のテストを 3 件追加しました(912ee02、ae0b1db)