• 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
名称
最后提交
最后更新
.cursor/rules 正在载入提交数据...
.devcontainer 正在载入提交数据...
.github 正在载入提交数据...
.husky 正在载入提交数据...
assets 正在载入提交数据...
docs 正在载入提交数据...
drizzle 正在载入提交数据...
e2e-tests 正在载入提交数据...
packages/@dyad-sh 正在载入提交数据...
scaffold 正在载入提交数据...
scripts 正在载入提交数据...
shared 正在载入提交数据...
src 正在载入提交数据...
testing 正在载入提交数据...
tools 正在载入提交数据...
worker 正在载入提交数据...
workers/tsc 正在载入提交数据...
.cursorignore 正在载入提交数据...
.env.example 正在载入提交数据...
.eslintrc.json 正在载入提交数据...
.gitattributes 正在载入提交数据...
.gitignore 正在载入提交数据...
.oxlintrc.json 正在载入提交数据...
.prettierignore 正在载入提交数据...
.prettierrc 正在载入提交数据...
AGENTS.md 正在载入提交数据...
CONTRIBUTING.md 正在载入提交数据...
LICENSE 正在载入提交数据...
README.md 正在载入提交数据...
SECURITY.md 正在载入提交数据...
biome.json 正在载入提交数据...
components.json 正在载入提交数据...
drizzle.config.ts 正在载入提交数据...
forge.config.ts 正在载入提交数据...
forge.env.d.ts 正在载入提交数据...
index.html 正在载入提交数据...
merge.config.ts 正在载入提交数据...
package-lock.json 正在载入提交数据...
package.json 正在载入提交数据...
playwright.config.ts 正在载入提交数据...
tsconfig.app.json 正在载入提交数据...
tsconfig.json 正在载入提交数据...
tsconfig.node.json 正在载入提交数据...
vite.main.config.mts 正在载入提交数据...
vite.preload.config.mts 正在载入提交数据...
vite.renderer.config.mts 正在载入提交数据...
vite.worker.config.mts 正在载入提交数据...
vitest.config.ts 正在载入提交数据...