Skip to content

fix(web): changed-files filter in the diff view now filters and fuzzy-matches - #108

Merged
MTVaught merged 1 commit into
mainfrom
feature/fix/diff-file-picker-search
Sep 20, 2026
Merged

MTVaught merged 1 commit into
mainfrom
feature/fix/diff-file-picker-search

Conversation

@MTVaught

Copy link
Copy Markdown
Owner

The "Filter changed files" input in the diff view's file picker never removed anything from the list. The filtered entries were only passed to the combobox's filteredItems prop, which Base UI uses solely to decide when to show the empty state; the explicit child items always rendered. The filter itself was also a plain substring match.

The list now renders the filtered entries, and filterDiffFiles ranks results with the shared searchRanking helper: substring hits on the path come first, ordered by where they appear, followed by subsequence (fuzzy) matches such as dfpnl for DiffPanel.tsx. Tests cover fuzzy matching, ranking, and the no-match case.

Verified with vp test run apps/web/src/lib/diffFileNavigation.test.ts, lint, and a web typecheck.

Work done by Claude Fable 5.1 via Claude Code in T3 Code.

- Rank substring matches ahead of fuzzy path matches
- Add coverage for fuzzy matching and unmatched queries
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M labels Sep 20, 2026
@github-actions

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.6 KiB 13.6 KiB 0 B (0.0%) 15.1 KiB ✅
Codex Thread snapshot wire 7.1 KiB 7.1 KiB −2 B (−0.0%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.6 KiB 6.6 KiB +2 B (+0.0%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 57.1 KiB 57.1 KiB 0 B (0.0%) 66.4 KiB ✅
Codex Live turn messages 10 10 0 (0.0%) 21 ✅
Claude Total thread wire 13.6 KiB 13.6 KiB −13 B (−0.1%) 15.1 KiB ✅
Claude Thread snapshot wire 7.1 KiB 7.1 KiB +10 B (+0.1%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.5 KiB 6.5 KiB −23 B (−0.3%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 57.8 KiB 57.8 KiB −44 B (−0.1%) 66.4 KiB ✅
Claude Live turn messages 9 8 −1 (−11.1%) 21 ✅

Baseline: 11c84de · PR result: 07ce6fb · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 114.0 KiB
  • Claude decoded thread snapshot: 114.7 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@MTVaught
MTVaught merged commit a729a42 into main Sep 20, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant