https://github.com/basecamp/lexxy
Lexicalのカーソル制御を改善するProvisionalParagraphNodeを導入。DecoratorNodeとエディタ境界の間での選択を自然にし、画像ギャラリーなどの複雑なコンポーネント実装を容易にします。
Lexxyのコアパッケージであるlexicalとextensionを、推移的依存関係から明示的な依存関係に変更。依存関係の宣言を明確化することで、将来的なバージョン競合リスクを軽減し、より安定した管理を実現。
複数の拡張機能実装を統一的な LexxyExtension 基底クラスへ移行。拡張機能が自身の有効化条件を定義することで、エディタ本体の条件分岐を削減し、mergeRegister によるクリーンアップ処理でライフサイクル管理を改善。
LexxyエディタのDOM構造から二重の`<div>`ラッピングを削除し、`editor.update()`内の関数が新しい更新ループを作成しないようリファクタリング。これによりエディタの初期化が簡潔になり、不要な再レンダリングが削減されました。
LexxyのSandboxページがTurbo Frameベースに再実装され、プリセット切り替えがURLルーティングで実現されました。Stimulusの動的ロードを排除し、各プリセットへの直リンクとブラウザ履歴の統合を可能にしています。
Lexxyエディタでスタイル付きテキストをペーストした直後のタイピングで、ペースト元のスタイルが保持される問題を修正。selectionオブジェクトにも正規化されたスタイルとフォーマットを適用することで、ペースト後の入力が一貫した正規化ルールに従うようになりました。
Lexxyでカスタムタグ名を設定した際にHTMLが読み込まれない競合状態を修正。カスタム要素の登録を`setTimeout`で遅延実行することで、`Lexxy.configure`の設定が確実に先行して適用されるようになりました。
Lexicalエディタの添付ファイルノードをリファクタリングし、兄弟ノード間の相互更新による競合状態を解消。カスタムイベントシステムを削除し、ノード自身がエディタ参照を保持してアップロード処理を管理する設計に変更しました。
Lexxyエディタのツールバーダイアログ(ドロップダウン)のクローズ処理を、クリックアウトサイドハンドラーからエディタの選択変更イベントに移行。ツールバーをエディタの一部として扱うよう、フォーカスイベントの定義を見直し、`lexxy:focus`/`lexxy:blur`がエディタ要素全体(ツールバーを含む)を対象とするように変更されました。
Lexxyのプロンプト機能で複数文字列(`by:`、`group:`など)をトリガーとして使用できるようになりました。従来の単一文字検出ロジックを、文字列長を考慮した部分文字列抽出に変更し、後方互換性を保ちながら拡張しています。
Lexxyのツールバーでオーバーフローメニューが不要な場合でも表示される問題と、Safariで125%以上のズーム時に誤判定が発生する問題を修正。オーバーフローメニュー自体の幅を判定から除外し、Safari対応として1pxのマージンを追加しました。
LexxyエディタのハイライトドロップダウンUIを改善し、Tailwind CSSとの互換性を向上。複数のボタングループを単一コンテナに統合し、CSS変数による動的レイアウト調整を実現。リストとリンクのスタイルを明示的に指定することで、CSSリセットとの競合を回避。
Lexxyエディタのテーブル編集機能が全面刷新されました。UIでは行・列操作の専用ドロップダウン、ビジュアルフィードバック、セル選択の改善が実装され、内部では`TableHandler`が`TableController`と`TableTools`に分割され、責務が明確化されました。テーブル関連の設定は新しい`TablesLexicalExtension`に統合され、保守性が向上しています。
LexxyのTable機能がLexical Extension APIを使用した形式にリファクタリングされました。テーブル関連のコード(Node定義、プラグイン登録、バグ修正)を`TablesLexicalExtension`として分離し、エディタコアの実装をよりモジュール化しています。
Lexxyエディタで、Markdownやプレーンテキストとして認識されたマークアップをペーストした際に、スタイル属性のサニタイゼーションが適用されない問題を修正。`insertHtml` と `editor.update()` に `PASTE_TAG` を渡すことで、ペーストされたノードを正しくサニタイゼーション対象として識別できるようになった。
DOMPurifyの設定に`ADD_URI_SAFE_ATTR`を追加し、画像の`caption`および`filename`属性をURI検証の対象外に。これにより「photographer: name」のようにコロンを含むキャプションが削除されなくなった。
Lexxyのドキュメントで、コードハイライト関数名を `highlightAll` から `highlightCode` に更新。最近行われたAPI変更に合わせてドキュメントを修正。
Lexxyに拡張可能なExtension APIが導入されました。LexxyExtension基底クラスを継承することで、Lexicalの振る舞いをカスタマイズし、ツールバーにマークアップを追加できます。各エディタインスタンスごとに拡張がインスタンス化され、`enabled` getterによる動的な有効化制御が可能です。
Lexxyでネストされたコントローラ内でAttachmentを描画する際に、名前空間化されたパーシャルテンプレートを探索してしまう問題を修正。prefix_partial_path_with_controller_namespaceをfalseに設定することで、標準パスのみを探索するようになり、MissingTemplate例外を回避します。
Lexxyエディタの仮想カーソル(AttachmentやTableの前後に表示される一時的なカーソル)の点滅アニメーションを修正。`step-end`から`opacity`ベースの滑らかな点滅に変更し、カーソルの太さも1.5pxに改善。CSS定義を`lexxy-content.css`から`lexxy-editor.css`へ移動し、エディタUIとコンテンツスタイルを明確に分離。