Skip to content

fix(edit-unsuccessfull): introduce configurable relaxed diff thresholds and diagnostics#470

Open
nigeldelviero wants to merge 12 commits into
Zoo-Code-Org:mainfrom
nigeldelviero:fix/issue-457-edit-unsuccessfull
Open

fix(edit-unsuccessfull): introduce configurable relaxed diff thresholds and diagnostics#470
nigeldelviero wants to merge 12 commits into
Zoo-Code-Org:mainfrom
nigeldelviero:fix/issue-457-edit-unsuccessfull

Conversation

@nigeldelviero
Copy link
Copy Markdown

@nigeldelviero nigeldelviero commented Jun 4, 2026

Problem

Issue: #452

When file edits are performed, the system previously enforced a strict similarity threshold of 1.0 (exact match) in MultiSearchReplaceDiffStrategy. This caused frequent "Edit Unsuccessful" errors even for minor formatting, whitespace, or line-ending discrepancies.

Additionally, when a match failed, the error feedback was generic (No sufficiently similar match found), making it difficult for the AI or the user to diagnose why the edit was rejected.

Root Cause

The core issue stems from strict matching logic in MultiSearchReplaceDiffStrategy which requires search block similarity to be exactly 1.0. This does not tolerate slight formatting changes introduced by pre-commit hooks, formatting extension rules, or AI-generated output variations.

Solution

  1. Configurable Threshold: Introduced a configurable diffFuzzyThreshold (number, default: 0.90) to allow a relaxed matching similarity.
  2. Settings Webview Integration: Added a "Diff Match Threshold" slider in the ContextManagementSettings.tsx UI under the write-delay settings, with range 50% - 100%.
  3. Core Strategy & Tasks Updates:
    • Passed the user's configured diffFuzzyThreshold setting from ExtensionState to the Task and MultiSearchReplaceDiffStrategy instance.
    • Enhanced applyDiff to report detailed Levenshtein-based diagnostics (Levenshtein distance, character lengths, search range, and similarity scores) when matches fall below the threshold.
  4. Type-safety: Updated ExtensionState definition and initialized the default value (0.90) in both globalSettingsSchema and ExtensionStateContextProvider to prevent TypeScript compilation errors.
  5. Regression Tests: Added unit tests to multi-search-replace.spec.ts to assert default thresholds, success with minor whitespace variations, and the structure of detailed debug outputs when edits fail.

Verification

All multi-search-replace tests pass successfully:

  • 1 test files passed | 75 tests passed
  • Successfully verified default 90% threshold
  • Verified diagnostics formatting and distance calculation
  • No compiler issues: pnpm check-types exits with code 0

Screenshot

image

Summary by CodeRabbit

  • New Features

    • Added a configurable fuzzy-match threshold (slider 50%–100%, step 1%, displayed as a percentage, default 90%); value is exposed in settings/webview state and applied to diff tasks (clamped to 50–100%).
    • Failure diagnostics enhanced to include similarity metrics (score, required threshold, Levenshtein distance, search/match lengths).
  • Tests

    • Added tests validating fuzzy-threshold behavior and diagnostic output.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 4, 2026

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a configurable diffFuzzyThreshold (default 0.9) that flows from types and extension state through Task construction into MultiSearchReplaceDiffStrategy; failure diagnostics now include Levenshtein distance and tests cover threshold behavior and debug output.

Changes

Fuzzy Matching Threshold Configuration

Layer / File(s) Summary
Type Contracts and Threshold Constant
packages/types/src/global-settings.ts, packages/types/src/vscode-extension-host.ts
DEFAULT_DIFF_FUZZY_THRESHOLD constant and globalSettingsSchema.diffFuzzyThreshold (z.number().min(0.5).max(1).optional()) are added; ExtensionState includes diffFuzzyThreshold.
Diff Strategy: Fuzzy Threshold Default and Error Diagnostics
src/core/diff/strategies/multi-search-replace.ts, src/core/diff/strategies/__tests__/multi-search-replace.spec.ts
MultiSearchReplaceDiffStrategy now defaults fuzzy threshold to DEFAULT_DIFF_FUZZY_THRESHOLD and clamps to [0.5,1.0]; failure diagnostics include Levenshtein distance; tests verify success/failure and diagnostic contents.
Task Options and Diff Strategy Wiring
src/core/task/Task.ts
TaskOptions gains optional diffFuzzyThreshold; Task reads and forwards it into MultiSearchReplaceDiffStrategy on initialization.
Extension State: ClineProvider Propagation
src/core/webview/ClineProvider.ts
ClineProvider reads diffFuzzyThreshold from getState() for task creation/rehydration, posts it to the webview payload with fallback to default, and forwards it into Task construction.
UI Settings: Context State and Component Controls
webview-ui/src/context/ExtensionStateContext.tsx, webview-ui/src/components/settings/ContextManagementSettings.tsx, webview-ui/src/components/settings/SettingsView.tsx, webview-ui/src/i18n/locales/en/settings.json
Context initial state sets diffFuzzyThreshold = DEFAULT_DIFF_FUZZY_THRESHOLD; ContextManagementSettings adds a slider (0.5–1, step 0.01) bound to diffFuzzyThreshold; SettingsView includes the field in settings updates; i18n strings added.
Tests and Mocks
src/core/webview/__tests__/ClineProvider.spec.ts, webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx
Tests and mocks import DEFAULT_DIFF_FUZZY_THRESHOLD and include diffFuzzyThreshold in ExtensionState fixtures and assertions.

Sequence Diagram

sequenceDiagram
  participant Webview as Webview UI
  participant Cline as ClineProvider (ExtensionHost)
  participant Task as Task
  participant Strategy as MultiSearchReplaceDiffStrategy
  participant Distance as distance()

  Webview->>Cline: post updatedSettings (diffFuzzyThreshold)
  Cline->>Task: create Task(diffFuzzyThreshold)
  Task->>Strategy: new MultiSearchReplaceDiffStrategy(fuzzyThreshold)
  Strategy->>Strategy: attempt fuzzy match
  alt No sufficiently similar match
    Strategy->>Distance: compute Levenshtein(searchChunk,bestMatchContent)
    Distance-->>Strategy: distance value
    Strategy->>Cline: return failure diagnostic (includes distance, similarity, lengths, threshold)
  else Match found
    Strategy-->>Task: return diff result
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • taltas
  • navedmerchant
  • hannesrudolph
  • JamesRobert20

Poem

🐰 A threshold appears, fuzzy and bright,
From types to the slider, it hops into sight.
Default at 0.9, with distance to show,
Diagnostics now richer — now debugging can glow.
Slide gently, dear coder, let fuzzy matches flow.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: introducing configurable fuzzy thresholds for diff matching and enhanced diagnostics.
Description check ✅ Passed The PR description covers all required template sections: linked issue, comprehensive problem/solution explanation, test procedures, and verification results.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
webview-ui/src/components/settings/SettingsView.tsx (1)

364-432: ⚡ Quick win

Add a local webview-ui test for the buffered diff-threshold flow.

This new field now depends on cachedState, dirty-state detection, and the updateSettings payload, but there’s no accompanying local test in the supplied UI changes proving that the slider edits stay buffered until Save and serialize diffFuzzyThreshold correctly.

As per coding guidelines, "webview-ui/src/**/*.{ts,tsx}: Prefer local webview-ui tests for React/webview behavior such as component rendering, local state, hooks, form dirty-state, validation, or prop wiring. Add or update Vitest coverage under webview-ui/src/**/__tests__ instead of reaching for apps/vscode-e2e." Also, "webview-ui/src/**/SettingsView.{ts,tsx}: For SettingsView, preserve the cached-state pattern: inputs should operate on local cachedState until the user saves, and tests should distinguish automatic initialization from real user edits."

Also applies to: 835-857

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@webview-ui/src/components/settings/SettingsView.tsx` around lines 364 - 432,
Add a local Vitest React test under webview-ui/src/**/__tests__ that mounts
SettingsView, verifies the cachedState buffering behavior for the
diffFuzzyThreshold slider (simulate initial value, user slider change, and
ensure the component state reflects the edit but vscode.postMessage payload only
contains the new diffFuzzyThreshold after calling the SettingsView handleSubmit
Save flow), and assert that intermediate slider moves do not mutate the
persisted setting until Save; target the SettingsView component, its cachedState
behavior, the diffFuzzyThreshold controlled input, and the
handleSubmit/updateSettings message to ensure serialization of
diffFuzzyThreshold is correct.
webview-ui/src/context/ExtensionStateContext.tsx (1)

212-212: ⚡ Quick win

Use the shared default constant here too.

This duplicates the threshold default instead of reusing DEFAULT_DIFF_FUZZY_THRESHOLD, so the webview bootstrap value can drift from the extension-host fallback later.

Suggested change
 import {
 	type ProviderSettings,
 	type ProviderSettingsEntry,
 	type CustomModePrompts,
 	type ModeConfig,
 	type ExperimentId,
 	type TodoItem,
 	type TelemetrySetting,
 	type OrganizationAllowList,
 	type CloudOrganizationMembership,
 	type ExtensionMessage,
 	type ExtensionState,
 	type MarketplaceInstalledMetadata,
 	type SkillMetadata,
 	type Command,
 	type McpServer,
 	RouterModels,
 	ORGANIZATION_ALLOW_ALL,
 	DEFAULT_CHECKPOINT_TIMEOUT_SECONDS,
+	DEFAULT_DIFF_FUZZY_THRESHOLD,
 } from "`@roo-code/types`"
@@
-		diffFuzzyThreshold: 0.9,
+		diffFuzzyThreshold: DEFAULT_DIFF_FUZZY_THRESHOLD,
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@webview-ui/src/context/ExtensionStateContext.tsx` at line 212, Replace the
hardcoded diffFuzzyThreshold: 0.9 with the shared constant
DEFAULT_DIFF_FUZZY_THRESHOLD so the webview uses the canonical default; update
the object/initializer in ExtensionStateContext (where diffFuzzyThreshold is
set) to reference DEFAULT_DIFF_FUZZY_THRESHOLD instead of 0.9 ensuring
consistency with the extension-host fallback.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/types/src/global-settings.ts`:
- Around line 114-119: The persisted diffFuzzyThreshold schema currently allows
0.0–1.0 but the UI enforces 0.5–1.0, so clamp persisted values to the UI range
by updating the global schema for diffFuzzyThreshold: change the zod validator
for diffFuzzyThreshold to enforce a minimum of 0.5
(z.number().min(0.5).max(1).optional()) or alternatively apply a clamp/transform
in the schema to coerce any value below 0.5 up to 0.5; this ensures the
diffFuzzyThreshold field (symbol: diffFuzzyThreshold) cannot be persisted
outside the 50%–100% range forwarded by ClineProvider.

In `@webview-ui/src/components/settings/ContextManagementSettings.tsx`:
- Around line 413-435: The label and help text inside the SearchableSetting for
"context-diff-fuzzy-threshold" are hard-coded English; replace them with
localized strings using the project's i18n mechanism (e.g., the same translate/t
or useTranslation hook used elsewhere) so the UI picks up translation keys;
update the visible label text, the span "Diff Match Threshold", and the
descriptive help text below the Slider (references: SearchableSetting with
settingId "context-diff-fuzzy-threshold", Slider, diffFuzzyThreshold,
DEFAULT_DIFF_FUZZY_THRESHOLD, and setCachedStateField) to call the translation
function with new keys (e.g., contextManagement.diffFuzzyThreshold.label and
.description) instead of raw English.

---

Nitpick comments:
In `@webview-ui/src/components/settings/SettingsView.tsx`:
- Around line 364-432: Add a local Vitest React test under
webview-ui/src/**/__tests__ that mounts SettingsView, verifies the cachedState
buffering behavior for the diffFuzzyThreshold slider (simulate initial value,
user slider change, and ensure the component state reflects the edit but
vscode.postMessage payload only contains the new diffFuzzyThreshold after
calling the SettingsView handleSubmit Save flow), and assert that intermediate
slider moves do not mutate the persisted setting until Save; target the
SettingsView component, its cachedState behavior, the diffFuzzyThreshold
controlled input, and the handleSubmit/updateSettings message to ensure
serialization of diffFuzzyThreshold is correct.

In `@webview-ui/src/context/ExtensionStateContext.tsx`:
- Line 212: Replace the hardcoded diffFuzzyThreshold: 0.9 with the shared
constant DEFAULT_DIFF_FUZZY_THRESHOLD so the webview uses the canonical default;
update the object/initializer in ExtensionStateContext (where diffFuzzyThreshold
is set) to reference DEFAULT_DIFF_FUZZY_THRESHOLD instead of 0.9 ensuring
consistency with the extension-host fallback.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a666ced0-cab9-4afb-84fd-165bb4acb8bf

📥 Commits

Reviewing files that changed from the base of the PR and between 905b840 and c10e444.

📒 Files selected for processing (9)
  • packages/types/src/global-settings.ts
  • packages/types/src/vscode-extension-host.ts
  • src/core/diff/strategies/__tests__/multi-search-replace.spec.ts
  • src/core/diff/strategies/multi-search-replace.ts
  • src/core/task/Task.ts
  • src/core/webview/ClineProvider.ts
  • webview-ui/src/components/settings/ContextManagementSettings.tsx
  • webview-ui/src/components/settings/SettingsView.tsx
  • webview-ui/src/context/ExtensionStateContext.tsx

Comment thread packages/types/src/global-settings.ts Outdated
Comment thread webview-ui/src/components/settings/ContextManagementSettings.tsx
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/types/src/global-settings.ts`:
- Around line 114-119: The JSDoc for diffFuzzyThreshold is inconsistent with the
schema: update the comment above diffFuzzyThreshold to reflect the enforced
range in z.number().min(0.5).max(1).optional() (e.g., "Range: 0.5 (less fuzzy)
to 1.0 (exact match only)") and keep the `@default` 0.9 note; alternatively, if
the intended range is 0.0–1.0, change the schema on diffFuzzyThreshold to
z.number().min(0).max(1).optional()—but make the doc and the schema for
diffFuzzyThreshold agree.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 772812a7-b94a-4068-adc2-03593dd1e5ab

📥 Commits

Reviewing files that changed from the base of the PR and between c10e444 and 639de83.

📒 Files selected for processing (1)
  • packages/types/src/global-settings.ts

Comment thread packages/types/src/global-settings.ts
@nigeldelviero nigeldelviero changed the title feat(issue-457-edit-unsuccessfull): introduce configurable relaxed di… fix(issue-457-edit-unsuccessfull): introduce configurable relaxed diff thresholds and diagnostics Jun 4, 2026
@nigeldelviero nigeldelviero changed the title fix(issue-457-edit-unsuccessfull): introduce configurable relaxed diff thresholds and diagnostics fix(edit-unsuccessfull): introduce configurable relaxed diff thresholds and diagnostics Jun 4, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 5, 2026

Codecov Report

❌ Patch coverage is 95.29412% with 4 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/core/diff/strategies/multi-search-replace.ts 50.00% 3 Missing ⚠️
src/core/webview/ClineProvider.ts 95.45% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown
Contributor

@edelauna edelauna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥 - thank you for taking this on.

Had a couple comments related to my preference for how to implement this.

Also lets add in the i18n locales so that ci passes.

Comment thread src/core/diff/strategies/multi-search-replace.ts
Comment thread src/core/diff/strategies/multi-search-replace.ts Outdated
Comment thread src/core/diff/strategies/__tests__/multi-search-replace.spec.ts Outdated
Comment thread packages/types/src/vscode-extension-host.ts Outdated
Comment thread webview-ui/src/context/ExtensionStateContext.tsx Outdated
Comment thread webview-ui/src/components/settings/ContextManagementSettings.tsx
Comment thread packages/types/src/global-settings.ts Outdated
Comment thread packages/types/src/global-settings.ts Outdated
@nigeldelviero nigeldelviero force-pushed the fix/issue-457-edit-unsuccessfull branch from e5d0452 to 1af513d Compare June 6, 2026 15:00
@nigeldelviero nigeldelviero force-pushed the fix/issue-457-edit-unsuccessfull branch from 1af513d to 73b0bb1 Compare June 6, 2026 15:05
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
packages/types/src/global-settings.ts (1)

33-33: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Correct the documented default for diffFuzzyThreshold.

Line 117 documents @default 0.9, but Line 33 sets DEFAULT_DIFF_FUZZY_THRESHOLD = 1.0. This mismatch will mislead maintainers and tests that rely on docs for expected behavior.

Proposed doc fix
 	/**
 	 * Fuzzy matching threshold for the multi-search-replace diff strategy.
 	 * Range: 0.5 (50% minimum similarity) to 1.0 (exact match only).
-	 * `@default` 0.9
+	 * `@default` 1.0
 	 */
 	diffFuzzyThreshold: z.number().min(0.5).max(1).optional(),

Also applies to: 117-117

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/types/src/global-settings.ts` at line 33, The documentation default
for diffFuzzyThreshold is inconsistent with the code: the constant
DEFAULT_DIFF_FUZZY_THRESHOLD is currently set to 1.0 while the JSDoc for
diffFuzzyThreshold documents `@default` 0.9; update one to match the other. Decide
the intended default (likely 0.9), then change the value of
DEFAULT_DIFF_FUZZY_THRESHOLD or update the JSDoc `@default` in the
diffFuzzyThreshold declaration so both the constant DEFAULT_DIFF_FUZZY_THRESHOLD
and the documented `@default` 0.9 for diffFuzzyThreshold match, keeping naming
(DEFAULT_DIFF_FUZZY_THRESHOLD, diffFuzzyThreshold) intact and run tests to
confirm consistency.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/core/diff/strategies/__tests__/multi-search-replace.spec.ts`:
- Around line 1422-1429: The test currently gates diagnostics assertions behind
a conditional on result.failParts which lets the test pass when diagnostics are
missing; update the assertions so you first assert that result.failParts exists
and has length > 0 (e.g.,
expect(result.failParts).toBeDefined()/toHaveLength(>0)), then extract const
failedPart = result.failParts[0] and unconditionally assert that failedPart has
an "error" property and that failedPart.error contains "No sufficiently similar
match found"; apply this same pattern to the second diagnostics block (the later
test that inspects result.failParts/failParts[0] around lines 1449-1462) so both
tests fail when diagnostics are absent.

---

Duplicate comments:
In `@packages/types/src/global-settings.ts`:
- Line 33: The documentation default for diffFuzzyThreshold is inconsistent with
the code: the constant DEFAULT_DIFF_FUZZY_THRESHOLD is currently set to 1.0
while the JSDoc for diffFuzzyThreshold documents `@default` 0.9; update one to
match the other. Decide the intended default (likely 0.9), then change the value
of DEFAULT_DIFF_FUZZY_THRESHOLD or update the JSDoc `@default` in the
diffFuzzyThreshold declaration so both the constant DEFAULT_DIFF_FUZZY_THRESHOLD
and the documented `@default` 0.9 for diffFuzzyThreshold match, keeping naming
(DEFAULT_DIFF_FUZZY_THRESHOLD, diffFuzzyThreshold) intact and run tests to
confirm consistency.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 80ae15f6-95ed-40f3-8528-65a3dbad983a

📥 Commits

Reviewing files that changed from the base of the PR and between e5d0452 and 1af513d.

📒 Files selected for processing (12)
  • packages/types/src/global-settings.ts
  • packages/types/src/vscode-extension-host.ts
  • src/core/diff/strategies/__tests__/multi-search-replace.spec.ts
  • src/core/diff/strategies/multi-search-replace.ts
  • src/core/task/Task.ts
  • src/core/webview/ClineProvider.ts
  • src/core/webview/__tests__/ClineProvider.spec.ts
  • webview-ui/src/components/settings/ContextManagementSettings.tsx
  • webview-ui/src/components/settings/SettingsView.tsx
  • webview-ui/src/context/ExtensionStateContext.tsx
  • webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx
  • webview-ui/src/i18n/locales/en/settings.json
🚧 Files skipped from review as they are similar to previous changes (7)
  • webview-ui/src/components/settings/SettingsView.tsx
  • webview-ui/src/i18n/locales/en/settings.json
  • src/core/task/Task.ts
  • webview-ui/src/components/settings/ContextManagementSettings.tsx
  • src/core/diff/strategies/multi-search-replace.ts
  • src/core/webview/ClineProvider.ts
  • packages/types/src/vscode-extension-host.ts

Comment thread src/core/diff/strategies/__tests__/multi-search-replace.spec.ts Outdated
… diffFuzzyThreshold and fix failure-diagnostics assertions unconditional
@nigeldelviero nigeldelviero requested a review from edelauna June 6, 2026 15:45
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.

2 participants