-
Notifications
You must be signed in to change notification settings - Fork 3
Keeping Find open does not rescan the document on every frame #3280
Copy link
Copy link
Closed
Labels
area: elixirElixir editor logicElixir editor logicarea: performancePerformance optimizations and concurrency improvementsPerformance optimizations and concurrency improvementsbugSomething isn't workingSomething isn't workingpriority: highImportant for usabilityImportant for usabilityseverity: highWrong-target changes, lost input, unusable recovery, or substantial interaction degradationWrong-target changes, lost input, unusable recovery, or substantial interaction degradation
Description
Activity
Metadata
Metadata
Assignees
Labels
area: elixirElixir editor logicElixir editor logicarea: performancePerformance optimizations and concurrency improvementsPerformance optimizations and concurrency improvementsbugSomething isn't workingSomething isn't workingpriority: highImportant for usabilityImportant for usabilityseverity: highWrong-target changes, lost input, unusable recovery, or substantial interaction degradationWrong-target changes, lost input, unusable recovery, or substantial interaction degradation
Type: Bug
Severity: High. Ordinary interaction scales with document size while Find is open, even when neither text nor query has changed.
What
With a nonempty GUI search active, every semantic UI build fetches the whole document, splits its lines, allocates every match, and walks the result for the current position. Cursor-only and unrelated chrome frames repeat this work before encoder fingerprint suppression.
Why
Ordinary interaction scales with document size while Find is open, even when neither text nor query has changed.
Grounding Evidence
Verified against
main@ac343a9c2bc6on 2026-09-08.lib/minga_editor/render_model/ui/builder.ex:58).lib/minga_editor/render_model/ui/search_state_builder.ex:46).lib/minga/frontend/adapter/gui/search_state_encoder.ex:20).lib/minga/buffer/process.ex:1683); freshness must also check the monotonic change sequence.lib/minga/frontend/adapter/gui/search_state_encoder.ex:46).test/minga/frontend/adapter/gui/search_state_encoder_test.exs:71).macos/Sources/Views/EditorChrome/SearchState.swift:32).macos/Sources/Views/EditorChrome/SearchToolbar.swift:42), which must not represent pending or failed asynchronous work.Evidence level: Source-established work proportional to the whole document on each active-search render, with source-verified version and wire-capacity constraints for the replacement path. No end-to-end latency benchmark was run for this path.
Acceptance Criteria
Delivery
Implemented by PR #3384.