Skip to content

fix: 全文検索 walk と watcher で node_modules を除外#305

Merged
ymnao merged 1 commit into
mainfrom
fix/search-watcher-exclude-node-modules
Jul 10, 2026
Merged

fix: 全文検索 walk と watcher で node_modules を除外#305
ymnao merged 1 commit into
mainfrom
fix/search-watcher-exclude-node-modules

Conversation

@ymnao

@ymnao ymnao commented Jul 10, 2026

Copy link
Copy Markdown
Owner

概要

全文検索系の walk (walkMdFiles) と file watcher (isWatcherIgnored) の除外リストに node_modules が入っておらず、node_modules 入りのフォルダをワークスペースにすると依存パッケージの README.md / CHANGELOG.md 群が全文検索・ファイル名検索・wikilink/backlink スキャンで毎クエリ読み込まれ、watcher も配下の大量ファイルを監視してしまう。性能用ハードコード除外を 2 箇所に追加する。

関連 Issue

closes #299

移行 Stage

移行 Stage 対象外(v1.0.0 前提の性能改善 #298#303 の一環)

変更内容

  • electron/main/ipc/search.tswalkMdFiles の早期 skip 条件に node_modules を追加(searchFiles / searchFilenames / wikilink scan / backlink scan の共有経路に効く)
  • electron/main/utils/watcher-pure.tsisWatcherIgnorednode_modules のパス成分完全一致除外を追加(chokidar が配下へ降下しなくなり監視コスト純減)。「FileTree には表示されるが監視されない」非対称は issue fix: 全文検索 walk と watcher で node_modules を除外 #299 リスク欄で受容済みのトレードオフとしてコメントに明記
  • e2e/helpers/electron-api-mock.ts — renderer-only e2e mock の collectMdFiles にも同じ skip を追随(parity コメントの stale な行番号参照も修正)
  • テスト 4 件追加: search 側(searchFilenames / searchFiles の除外 + ルート直下のファイル node_modules.md が除外されないこと)、watcher 側(直下・ネストの除外 + node_modules.md の非除外)

動作確認

  • node_modules 配下の .md が検索結果・ファイル名検索・未解決リンクに出ない(ユニットテストで固定)
  • node_modules 配下の変更で fs-change イベントが飛ばない(isWatcherIgnored ユニットテストで固定)
  • node_modules.md のようなファイルは除外されない — ディレクトリ名成分の完全一致のみ(両側テストで固定)
  • 段階別検証 全 PASS(下記エビデンス)

スクリーンショット

UI 変更なし

検証エビデンス

リスク分類

tier: medium — reasons: [](classify-risk.sh 出力)

実行した検証

種別 コマンド 結果
テスト ./node_modules/.bin/vitest run PASS — 103 files, 2294 passed / 2 skipped(新規 4 件含む)
Lint ./node_modules/.bin/biome check . PASS — 326 files, no fixes
tsc --noEmit(tsconfig.node / web / e2e の 3 プロジェクト) PASS
e2e (renderer-only) 未実施(sandbox の listen EPERM 制約、CI で確認)
e2e (実 Electron) 未実施(ローカル不可、CI electron-e2e job で確認)
レビュー codex-review security PASS — findings 0

レビュー指摘と対応

codex-review security: PASS(findings 0、対応事項なし)。

参考: PR 作成前に /code-review(8 finder + 1-vote 検証)を実施済み。CONFIRMED 1 件(e2e mock parity 未追随)は本 PR 内で修正済み、PLAUSIBLE 2 件(FileTree/watcher 非対称 = issue リスク欄で受容済み → コメント明記で対応、node_modules 名プレーンファイルの watcher 除外 = .git 判定と同型の理論的エッジ → 対応するなら別 issue)、REFUTED 2 件。

🤖 Generated with Claude Code

- walkMdFiles の早期 skip 条件に node_modules を追加(全文検索・
  ファイル名検索・wikilink/backlink スキャンの共有経路に効く)
- isWatcherIgnored に node_modules のパス成分一致除外を追加
  (chokidar が配下へ降下しなくなり監視コストが純減)
- renderer-only e2e mock の collectMdFiles にも同じ skip を追随
  (parity コメントの stale な行番号参照も修正)
- テスト 4 件追加: search/watcher 両側の除外 + `node_modules.md`
  という名前のファイルが除外されないこと(成分完全一致のみ)

Closes #299

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ymnao ymnao merged commit 3d03b03 into main Jul 10, 2026
9 checks passed
@ymnao ymnao deleted the fix/search-watcher-exclude-node-modules branch July 10, 2026 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: 全文検索 walk と watcher で node_modules を除外

1 participant