Native browser find (`Ctrl/Cmd+F`) does not search the full diff in diff view
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 45/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- typescript
調査の方向性
この issue ではファイルやテストが指定されていないため、まず diff ビューの実装と、その仮想化、折りたたまれたセクション、プレビュー、Load diff の各パスを追跡します。提案されたハイブリッド動作を比較し、非表示セクションとレンダリング済みセクションを対象としたネイティブ検索のテストを定義します。大規模な diff のパフォーマンス特性を損なわずに一致箇所を検索できれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Problem
In diff view, native browser find only searches content that is currently mounted in the DOM. Today that means Ctrl/Cmd+F can miss valid matches because parts of the diff are intentionally hidden or not rendered:
- Virtualized file blocks outside the viewport are not mounted.
- Auto-collapsed files hide their diff content.
- Rendered previews replace source diff text for renderable files.
- Large diffs may show a
Load diffplaceholder instead of line content. - Omitted context is not present until expanded.
This makes browser find unreliable for reviewing large or mixed-content diffs.
Proposals
- Add a temporary “browser find mode” on
Ctrl/Cmd+Fthat fully renders the diff, expands hidden sections, and forces source view so native browser find can search the whole diff. - Make the normal diff mode always fully searchable by keeping all source diff text mounted in the DOM, even when sections are collapsed or previewed.
- Build an app-level search experience instead of relying on native browser find.
Recommendation
Use a hybrid approach:
- For small diffs, keep the normal mode fully searchable without a separate mode.
- For large diffs, enter a temporary browser-find mode on
Ctrl/Cmd+Fthat fully renders the diff and forces source text visible.
This keeps the common case simple while avoiding the steady-state performance and UI cost of fully rendering large diffs all the time.
Notes
- Native browser find cannot tell us which hidden section matched, so lazy “expand only the matching file” behavior is not practical.
- The hybrid approach preserves current performance characteristics for large diffs while improving searchability for most day-to-day reviews.
- 主要言語
- TypeScript
- スター
- 775
- フォーク
- 57
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
nilbuild/diffity のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 76/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
-
難易度 5/5 1週間以上 初心者へのやさしさ 30/100
nilbuild/diffity の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
receptron/mulmoterminal#2264 ·
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
components-web-app/docs#96 ·
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
simonsobs/tileviewer#114 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100