Skip to content

fix(macOS): surface true find match count when highlight cap applies#246

Draft
cursor[bot] wants to merge 1 commit into
mainfrom
cursor/critical-bug-inspection-8cd2
Draft

fix(macOS): surface true find match count when highlight cap applies#246
cursor[bot] wants to merge 1 commit into
mainfrom
cursor/critical-bug-inspection-8cd2

Conversation

@cursor
Copy link
Copy Markdown

@cursor cursor Bot commented May 10, 2026

Summary

Find-in-note stores at most 2000 highlight ranges for performance, but Replace All still replaces every occurrence in the document. The status line only reflected the capped highlight count, so in large notes (e.g. a common letter or substring appearing thousands of times) users could believe far fewer matches existed than Replace All would touch—risking catastrophic unintended edits.

Changes

  • String.synapseSearchMatchRanges: single pass that returns capped ranges for highlights plus the full match count.
  • AppState: searchMatchTotal alongside existing navigable searchMatchCount / index (still used for ⌘G wrapping within highlighted matches).
  • FindBar: when total exceeds the highlighted cap, show e.g. 5 / 2000 shown (8421 total).
  • StringSearchMatchRangesTests: regression coverage for cap vs total behavior.

Validation

  • Web vitest suite (257 tests) passes (unchanged paths; sanity check).
  • macOS build/tests not run in this Linux CI agent; please run the Synapse target unit tests locally if needed.
Open in Web View Automation 

Find in note stops storing highlight ranges at 2000 for performance, but
Replace All still replaced every occurrence. The status line only showed
the capped count, so large notes could misstate scope and risk massive
unintended replacements.

Track full-document total alongside navigable (highlighted) count, update
the find bar when totals diverge, and add unit tests for the match scan.

Co-authored-by: Danny Peck <dannypeck@gmail.com>
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