DiffDaily Deep & Concise - OSS変更の定点観測
トップに戻る

basecamp/lexxy

https://github.com/basecamp/lexxy

`#showPopover()` の非同期処理にアボートガードを追加してエディタフリーズを修正

`#` トリガーの遅延ソース読み込み中にスペースを押すとエディタが操作不能になるレースコンディションを修正。`#showPopover()` の各 `await` 後に世代カウンタ(`showPopoverId`)を比較するアボートガードを挿入し、`#hidePopover()` が呼ばれた後は後続の処理(キーリスナー登録など)を実行しないようにしています。

2026年03月19日 Claude Sonnet 4.6

メンション後の不可視文字(U+2060)を除去し、スペース管理を整理

メンション挿入時に付与していたワードジョイナー文字(U+2060)を削除し、通常スペースと条件付きロジックに置き換えました。不可視文字への依存を断ち切ることで、カーソル操作や編集時の意図しない動作を解消し、`isAttachmentSpacerTextNode` ヘルパーで各処理レイヤーでの一貫したスペース管理を実現しています。

2026年03月18日 Claude Sonnet 4.6

リスト内の@メンション後のBackspaceでアウトデントが発生するバグを修正

リストアイテム内のインラインメンション直後でBackspaceを押すと、メンションが選択される代わりにリストがアウトデントされるバグが修正されました。`#collapseListItemToParagraph`メソッドにデコレータノードへの参照を引数として渡し、`listItem.isParentOf(decoratorNode)`でノードの位置を確認することで、インラインメンションとブロック添付ファイルの2つのケースを正しく区別できるようになりました。

2026年03月17日 Claude Sonnet 4.6

矢印キーナビゲーションがカーソル位置によらず画像を正しく選択するよう修正

Up/Downキーで段落から画像へ移動する際、カーソルが単語の途中にある場合に画像がスキップされるバグを修正。テキストオフセットのみによる判定から、DOM ジオメトリ(Y座標比較)を用いたビジュアル行検出へと移行することで、カーソル位置によらず一貫した画像選択を実現しました。

2026年03月17日 Claude Sonnet 4.6

添付ファイルのドラッグ&ドロップ機能を追加

LexxyエディタにHTML5ドラッグイベントを使った添付ファイルの再配置機能が追加されました。カスタムMIMEタイプ `application/x-lexxy-node-key` で内部ドラッグと外部ファイルドロップを区別し、ギャラリーへのマージ・リスト分割・ブロック間移動の3シナリオをアンドゥ/リドゥ対応で実現しています。

2026年03月17日 Claude Sonnet 4.6

ツールバーのオーバーフロー制御に「固定ボタン」機能を追加

`data-prevent-overflow="true"` 属性を持つボタンをオーバーフローメニューへの移動対象から除外する仕組みが追加されました。`#buttons` ゲッターのCSSセレクタに `:not([data-prevent-overflow='true'])` を追加するだけの最小変更で実現しており、添付ファイルボタンがモバイルでも常にツールバーに表示されるようになります。

2026年03月17日 Claude Sonnet 4.6

Trix `<div>` コンテンツを破壊しないイメージギャラリー変換の修正

TrixエディタのHTMLをLexxyへインポートする際、テキストを含む `<div>` が誤ってイメージギャラリーに変換されるバグを修正。`ImageGalleryNode` のギャラリー判定を「全子要素がアタッチメントである場合のみ」に厳格化し、アタッチメントのアンラップ処理を `editor.js` から `AttachmentsExtension` へ移動することで責務の分離を実現した。

2026年03月17日 Claude Sonnet 4.6

HTMLインポート時のホワイトスペーステキストノードによるクラッシュを修正

メールHTMLに頻出する `<div>` 要素間の改行文字が Lexical error #282 を引き起こすクラッシュを修正。HTMLインポートパイプラインにホワイトスペース専用テキストノードを除去するフィルタを追加し、`<p>` と `<div>` の処理を一貫させました。

2026年03月17日 Claude Sonnet 4.6

DOMPurifyの許可リスト漏れによりアンダーライン書式が消失していた問題を修正

DOMPurifyの許可タグリストから `<u>` が抜けていたため、エディタでアンダーライン書式を適用しても値の取得時にサニタイザーが除去してしまうバグが修正されました。`src/config/dom_purify.js` に `"u"` を追加する1行の修正で、キーボードショートカットや `setValue/value` の往復変換でアンダーライン書式が正しく保持されるようになります。

2026年03月17日 Claude Sonnet 4.6

右矢印キーによるインラインコードブロックからの脱出バグを修正

インラインコードブロックの末尾で右矢印キーを押しても脱出できないバグを修正。`nodeAfterCursor`が親要素の次の兄弟まで参照していたため後続段落の存在を誤検出していた原因を、`anchorNode.getNextSibling()`への1行の置き換えで解消した。

2026年03月17日 Claude Sonnet 4.6

`git:` インストール時にJavaScriptアセットを自動ビルドするgem拡張を追加

PR #861でビルド済みJSアセットをgit管理から除外した後、`gem "lexxy", git: "..."` 形式のインストールでアセットが存在しない問題を解決。Bundlerのgem拡張機構(`spec.extensions`)を使い、`bundle install`時に`yarn install`と`yarn build`を自動実行するRakefileを`ext/Rakefile`として追加した。アセットが既に存在する場合はno-opとなるため、公開済みgemのインストールには影響しない。

2026年03月16日 Claude Sonnet 4.6

ビルド成果物をGit管理から除外し、ビルドステップを各フローに組み込む

JavaScriptのビルド成果物(`lexxy.js`等)をGit管理から除外し、CI・gem build・`bin/setup`それぞれのフローに`yarn build`を組み込むことで、PRごとのマージコンフリクトを解消しました。`Rakefile`では`Rake::Task["build"].enhance`を使って既存タスクを侵襲せずにビルドステップを注入する低侵襲なアプローチが採用されています。

2026年03月16日 Claude Sonnet 4.6

@メンション後のカンマが改行される問題をCSSとUnicode文字で修正

`display: inline-flex` が生み出すアトミックインラインボックスと、`importDOM` が注入するスペース文字が組み合わさり、@メンション直後のカンマが次の行に折り返される問題を修正。CSSを `display: inline` に変更してアトミックインラインボックスを解消し、トレーリングスペースをWord Joiner(U+2060)に置き換えてソフトラップ機会を抑制。削除ボタンは選択時のみ表示する方式に変更された。

2026年03月16日 Claude Sonnet 4.6

@メンション直後の不要スペースをゼロ幅文字で除去

@メンション直後に余分なスペースが入る問題を、通常スペース(U+0020)からゼロ幅のWORD JOINER(U+2060)への置き換えで解消しました。直接入力パスと importDOM パスの両経路を修正し、`@Zach's` のような所有格表現でもメンションと後続テキストが隙間なく表示されるようになります。

2026年03月16日 Claude Sonnet 4.6

プレーンテキストのコードブロック内でテキストハイライトを有効化

Lexicalの `CodeHighlightNode` は `canHaveFormat() → false` を返し通常の書式設定APIが機能しないため、プレーンテキストのコードブロック内ではハイライトが適用できませんでした。本PRは選択範囲がコードブロック内かを判定して処理を分岐させ、書き込み可能なノードの `__style`・`__format` を直接パッチするとともに、`skipTransforms` + `discrete` オプションでシンタックスハイライトトランスフォームによるスタイル上書きを防ぐことでこの制約を回避しています。

2026年03月16日 Claude Sonnet 4.6

ギャラリーへのドロップ時に元のカーソル位置を保持する修正

OSからファイルをドラッグ&ドロップでイメージギャラリーに挿入する際、ドラッグ中のブラウザの `selectionchange` イベントがLexicalの内部選択状態を上書きし、画像が誤った位置に挿入されるバグを修正。`dragenter` 時に選択状態をスナップショットとして保存し、`drop` 時に復元することで、常に元のカーソル位置への挿入を保証します。

2026年03月16日 Claude Sonnet 4.6

テーブルコントロールの初回表示時にチラつくバグを修正

`<lexxy-table-tools>` のテーブルコントロールが初回挿入時に誤った位置で一瞬表示されるチラつきを修正しました。`#show()` メソッドで `display: flex` を設定する前に位置計算(`#updateButtonsPosition()`)を実行するよう順序を変更し、同時に `#update()` を責務ごとの4つのメソッドに分解することで、表示タイミングの制御を明確化しています。

2026年03月16日 Claude Sonnet 4.6

テーブルセルへの連続画像アップロード時にサイレントドロップが発生するバグを修正

Lexicalエディタのテーブルセルにクリックなしで連続して画像をアップロードすると2枚目以降が消失するバグを修正。アップロード後のselectEnd()がTableCellNode(シャドウルート)上にセレクションを着地させてinsertNodes()が失敗していた問題に対し、insertAtCursorでシャドウルート上のセレクションを検出して空のパラグラフを挿入・セレクション正規化することで解決しています。

2026年03月16日 Claude Sonnet 4.6

@メンションのカーソル挙動を修正:ゼロ幅文字で「アトミックなノード」として扱う

`CustomActionTextAttachmentNode`の`getTextContent()`がメンション名のフルテキストを返すことでLexicalがカーソル位置を誤って複数割り当てていた問題を修正。ゼロ幅文字(U+FEFF)を返すよう変更してアトミックなカーソル位置を実現し、Shift+矢印キーによる範囲選択はブラウザネイティブに委譲することでメンションの選択・削除時のカーソルジャンプを解消した。

2026年03月16日 Claude Sonnet 4.6

プレーンテキスト貼り付け時の改行処理を段落区切りに修正

改行を含むプレーンテキストをペーストすると `<br>` タグが生成される問題を修正。`marked()` に渡す前に単一改行を二重改行へ正規化することで、Lexical ネイティブの動作と一致した段落区切り挿入を実現しました。あわせて Selection クラスのノード間移動にガード節が追加され、カーソルがノード境界にない場合の意図しない遷移も防止されています。

2026年03月16日 Claude Sonnet 4.6
前へ 1 … 6 7 8 9 10 12 次へ

© 2026 DiffDaily - Powered by AI

タケユー・ウェブ