• Will Chen's avatar
    Fuzzy turbo edits (#1700) · ae1ec684
    Will Chen 提交于
    <!-- CURSOR_SUMMARY -->
    > [!NOTE]
    > Makes search-replace tolerant to typos/whitespace via two-pass fuzzy
    matching with Levenshtein and smart-quote normalization, with clearer
    errors and tests.
    > 
    > - **Search/Replace Processor
    (`src/pro/main/ipc/processors/search_replace_processor.ts`)**
    > - Add two-pass fuzzy matching: quick exact-line prefilter +
    Levenshtein scoring (`fastest-levenshtein`).
    > - Match flow: exact > whitespace-insensitive > fuzzy; detect ambiguity
    and improve error messages with similarity %.
    > - Introduce thresholds and limits: `FUZZY_MATCH_THRESHOLD=0.9`,
    `EARLY_STOP_THRESHOLD=0.95`, `MAX_FUZZY_SEARCH_TIME_MS=10000`.
    > - Normalize text before scoring using `normalizeString` (handles
    quotes, dashes, ellipsis, NBSP, soft hyphen, BOM).
    > - Preserve indentation for replacements; keep existing
    unescape/validation logic.
    > - **Utils (`src/utils/text_normalization.ts`)**
    > - New `normalizeString` helper for Unicode normalization used by fuzzy
    matching.
    > - **Tests
    (`src/pro/main/ipc/processors/search_replace_processor.test.ts`)**
    > - Add cases for typos, smart quotes, below-threshold failure,
    exact-over-fuzzy preference, whitespace differences, and ambiguity.
    > - **Dependencies**
    >   - Add `fastest-levenshtein` to `package.json`.
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    289dab915c37bc4f9ab4bf0209ff3f95a57341fc. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Makes applySearchReplace more tolerant by preferring exact and
    whitespace-insensitive matches, then falling back to fast two-pass
    Levenshtein-based fuzzy matching with Unicode normalization. Improves
    failure messages and adds tests to cover common edit scenarios.
    
    - **New Features**
    - Exact > whitespace-insensitive > fuzzy matching flow (threshold 0.9).
    - Two-pass fuzzy search with exact-line prefilter; early stop at 0.95
    and 10s timeout.
    - normalizeString handles smart quotes, dashes, ellipsis, NBSPs, soft
    hyphen, and BOM.
      - Errors now report best fuzzy similarity when below threshold.
    - Tests for typos, smart quotes, below-threshold cases,
    exact-over-fuzzy, whitespace differences, and ambiguity.
    
    - **Dependencies**
      - Add fastest-levenshtein.
    
    <sup>Written for commit 289dab915c37bc4f9ab4bf0209ff3f95a57341fc.
    Summary will update automatically on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    ae1ec684