https://github.com/basecamp/lexxy
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とコンテンツスタイルを明確に分離。
Lexxyエディタのフォーカス処理を改善し、空のエディタでテキスト入力時に先頭改行が挿入される問題を修正。また、HTML標準のautofocus属性をサポートし、ページ読み込み時の自動フォーカスが可能に。
Lexxyの非同期テスト処理における不安定性を解消するため、ノード選択状態の待機処理(wait_for_node_selection)とプロンプト表示確認の明示的な待機処理を導入。これにより、タイミング依存のflaky testsを排除し、テストスイートの安定性が向上しました。
Lexxyエディタのテーブルハンドラーとコード言語選択機能において、カスタム要素と独立したDOM要素が二重に存在していた冗長な構造を改善。カスタム要素自体が直接コントロールを保持する形に変更し、DOM構造をシンプル化しました。
LexxyのハイライトカラーをLexical Extension化し、設定可能に。ペースト時にRGB値をCSS変数へ正規化する機能を実装。StyleCanonicalizer により、許可された色のみを保持しつつ、一貫したスタイル管理を実現。
Lexxyのプロンプト機能に、単一アイテムから複数アタッチメントを挿入する機能と、content-type名前空間のカスタマイズ機能が追加されました。グループメンションなど、1つの選択から複数のアタッチメントを生成するユースケースに対応します。
Lexxyエディタに認証付きActiveStorageアップロードのサポートを追加。新しい`authenticatedUploads`設定により、DirectUploadのXHRリクエストに`withCredentials: true`を設定可能に。CORS対応のテスト環境とサブドメイン認証コントローラーも実装。
lexxyのシステムテストをリファクタリング。新しい`assert_editor_html`ヘルパーを導入し、従来のHTML文字列比較に加え、Capybaraセレクタを活用したブロック形式のアサーションをサポート。テストの可読性と保守性が向上し、実行時間への影響はゼロ。
Lexxyのドキュメント構造を改善し、使い方に関する情報を新しいUsageページとして分離。Configurationページは設定オプションに特化した内容に整理され、ページの論理的な流れも改善されました。
LexxyのドキュメントをREADMEからJekyllサイト(Just the Docsテーマ)に移行。GitHub Actionsによる自動デプロイ、検索機能、階層化されたページ構成により、ドキュメントの発見性と利用体験が向上。
Lexxyエディタのテスト失敗を修正。エディタの空値処理を改善し、値クリア時に空の段落要素を保持するように変更。また、ルートノード処理の特殊ケースを削除してコードを簡素化し、Undo/Redoボタンからホットキー表示を削除しました。