Skip to content

ux: filter findings, non-preview open, quieter copy toasts#22

Merged
dmartinochoa merged 1 commit into
mainfrom
ux-polish-3
May 19, 2026
Merged

ux: filter findings, non-preview open, quieter copy toasts#22
dmartinochoa merged 1 commit into
mainfrom
ux-polish-3

Conversation

@dmartinochoa
Copy link
Copy Markdown
Member

Three small UX wins from the post-v0.2.0 review queue. Stacked on ux-polish-2 (#20).

#5 — Filter the Findings tree

  • Pipeline-Check: Filter Findings command opens an InputBox; matches against rule ID, message body, and file path (case-insensitive substring). Re-invoke pre-fills the current filter so users can edit or clear (empty input clears).
  • New $(filter) button on the Findings view title bar.
  • FindingsTreeProvider gets getFilter/setFilter/applyFilter. The badge tracks the filtered count; lastFindingUris still tracks the unfiltered universe so a publish for a currently-hidden URI still wakes the tree up (otherwise a CLEAR of a filtered-out finding would never refresh).
  • 8 tests covering: default empty, rule-id match, case-insensitivity, message-body match, fsPath match, clear via empty string, whitespace trim, badge reflects filtered count.

#4 — Open Finding (non-preview)

  • Pipeline-Check: Open Finding context-menu entry on tree leaves. Opens with preview: false — pins the file as a permanent tab so triaging multiple findings side-by-side doesn't create tab clutter. The single-click default still uses preview, keeping the common "scan through findings" flow lightweight.
  • LeafLike type widened to include uri and diagnostic.range.

#7 — Quieter clipboard confirmations

  • Copy Rule ID and Copy LSP Install Command switch from showInformationMessage (modal toast) to setStatusBarMessage with a 2-second TTL (CONFIRM_TTL_MS). The copy succeeds silently 95% of the time anyway; the status bar confirmation reads without stealing focus.

Wiring

  • package.json: three new command declarations; view/title button for filter (group navigation@1, between scan and changeGrouping); view/item/context entry for openNonPreview (group navigation@0, top of the menu); commandPalette gates the leaf-context commands to false so they don't show palette-wide without a node.
  • src/findingsView.ts: filter state + setFilter + getFilter + applyFilter (in findings()); sets the pipelineCheck.filterActive context key so future manifest contributions can paint a "filter active" affordance.
  • src/test/integration/activation.test.ts: command-registration expected list grows by filter + openNonPreview.

Total: 137 tests pass (was 129 on #20; +8 filter behaviour). Lint, compile, smoke, integration-compile all green.

Three small UX wins from the post-v0.2.0 review queue. Stacked on
ux-polish-2 (#20).

#5 — Filter the Findings tree
- Pipeline-Check: Filter Findings command opens an InputBox; matches
  against rule ID, message body, and file path (case-insensitive
  substring). Re-invoke pre-fills the current filter so users can
  edit or clear (empty input clears).
- New `$(filter)` button on the Findings view title bar.
- FindingsTreeProvider gets getFilter/setFilter/applyFilter. The
  badge tracks the filtered count; `lastFindingUris` still tracks
  the unfiltered universe so a publish for a currently-hidden URI
  still wakes the tree up (otherwise a CLEAR of a filtered-out
  finding would never refresh).
- 8 tests covering: default empty, rule-id match, case-insensitivity,
  message-body match, fsPath match, clear via empty string,
  whitespace trim, badge reflects filtered count.

#4 — Open Finding (non-preview)
- Pipeline-Check: Open Finding context-menu entry on tree leaves.
  Opens with `preview: false` — pins the file as a permanent tab so
  triaging multiple findings side-by-side doesn't create tab
  clutter. The single-click default still uses preview, keeping the
  common "scan through findings" flow lightweight.
- LeafLike type widened to include `uri` and `diagnostic.range`.

#7 — Quieter clipboard confirmations
- Copy Rule ID and Copy LSP Install Command switch from
  showInformationMessage (modal toast) to setStatusBarMessage with
  a 2-second TTL (CONFIRM_TTL_MS). The copy succeeds silently 95%
  of the time anyway; the status bar confirmation reads without
  stealing focus.

Wiring
- package.json: three new command declarations; view/title button
  for filter (group navigation@1, between scan and changeGrouping);
  view/item/context entry for openNonPreview (group navigation@0,
  top of the menu); commandPalette gates the leaf-context commands
  to `false` so they don't show palette-wide without a node.
- src/findingsView.ts: filter state + setFilter + getFilter +
  applyFilter (in findings()); sets the `pipelineCheck.filterActive`
  context key so future manifest contributions can paint a "filter
  active" affordance.
- src/test/integration/activation.test.ts: command-registration
  expected list grows by filter + openNonPreview.

Total: 137 tests pass (was 129 on #20; +8 filter behaviour). Lint,
compile, smoke, integration-compile all green.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@dmartinochoa dmartinochoa self-assigned this May 19, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 19, 2026

Warning

Rate limit exceeded

@dmartinochoa has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 58 minutes and 53 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d0ec3e4d-3dd6-45e0-b9b3-e7d7a4ae715b

📥 Commits

Reviewing files that changed from the base of the PR and between 60590c5 and a02a90f.

📒 Files selected for processing (6)
  • CHANGELOG.md
  • package.json
  • src/extension.ts
  • src/findingsView.test.ts
  • src/findingsView.ts
  • src/test/integration/activation.test.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ux-polish-3

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@dmartinochoa dmartinochoa merged commit a41381e into main May 19, 2026
11 checks passed
@dmartinochoa dmartinochoa deleted the ux-polish-3 branch May 19, 2026 23:46
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.

1 participant