fix: find/replace focus, inline code false positive, auto-fallback UX (#1771) #1772

Merged
brenno merged 2 commits from fix/find-replace-focus-html-fallback into main 2026-08-24 12:15:42 +00:00
Owner

Samenvatting

Drie problemen bij zoeken/vervangen in de documenteditor, alle drie vastgelopen op hetzelfde gebruiksscenario (pseudonimiseren van p.frissen → <persoon01> in een incidentrapport):

  1. Focus op vervangen in plaats van zoeken — Bij Ctrl+H kreeg het vervangveld focus in plaats van het zoekveld. Je zoekt eerst, dan pas vervang je. Fix: focus altijd op het zoekveld, ongeacht showReplace.

  2. False positive HTML-fallback na vervangen — markdownVisualLimitations checkte de hele regel op HTML-tags zonder inline code (backticks) te strippen. `<persoon01>` werd als HTML-tag herkend, waardoor het hele document uit de visuele modus geworpen werd. De <persoon01> staat binnen inline code en reist verliesvrij als code-attribuut door Quill. Fix: strip `…`-spans voordat de HTML- en escaped-punctuation regexes losgelaten worden.

  3. Naar het probleem springen — De _autoFallbackToSource-methode plaatst al de cursor op de probleemregel. De doc-comment is bijgewerkt om dit te verduidelijken. Bij legitieme HTML (buiten inline code) springt de cursor naar de probleemregel; de TextField scrollt er automatisch naartoe bij focus.

Tests

  • 5 nieuwe tests in markdown_visual_compatibility_test.dart voor inline code stripping (hoekhaakjes, escaped punctuation, HTML buiten inline code, firstVisualLimitation)
  • make check: 10526 tests, 87.2% dekking, alles groen
  • make check-secrets: gitleaks + trufflehog schoon
  • make sast: semgrep 0 findings

Test plan

  • make check groen
  • make check-secrets groen
  • make sast groen
  • CI static-gate groen

Generated with Devin

## Samenvatting Drie problemen bij zoeken/vervangen in de documenteditor, alle drie vastgelopen op hetzelfde gebruiksscenario (pseudonimiseren van `p.frissen` → `<persoon01>` in een incidentrapport): 1. **Focus op vervangen in plaats van zoeken** — Bij Ctrl+H kreeg het vervangveld focus in plaats van het zoekveld. Je zoekt eerst, dan pas vervang je. Fix: focus altijd op het zoekveld, ongeacht `showReplace`. 2. **False positive HTML-fallback na vervangen** — `markdownVisualLimitations` checkte de hele regel op HTML-tags zonder inline code (backticks) te strippen. `` `<persoon01>` `` werd als HTML-tag herkend, waardoor het hele document uit de visuele modus geworpen werd. De `<persoon01>` staat binnen inline code en reist verliesvrij als `code`-attribuut door Quill. Fix: strip `` `…` ``-spans voordat de HTML- en escaped-punctuation regexes losgelaten worden. 3. **Naar het probleem springen** — De `_autoFallbackToSource`-methode plaatst al de cursor op de probleemregel. De doc-comment is bijgewerkt om dit te verduidelijken. Bij legitieme HTML (buiten inline code) springt de cursor naar de probleemregel; de TextField scrollt er automatisch naartoe bij focus. ## Tests - 5 nieuwe tests in `markdown_visual_compatibility_test.dart` voor inline code stripping (hoekhaakjes, escaped punctuation, HTML buiten inline code, firstVisualLimitation) - `make check`: 10526 tests, 87.2% dekking, alles groen - `make check-secrets`: gitleaks + trufflehog schoon - `make sast`: semgrep 0 findings #### Test plan - [x] `make check` groen - [x] `make check-secrets` groen - [x] `make sast` groen - [ ] CI `static-gate` groen Generated with [Devin](https://devin.ai)
Je zoekt eerst, dan pas vervang je — elke editor doet dit zo. De find bar
gaf het vervangveld focus wanneer showReplace true was (Ctrl+H), waardoor
de gebruiker in het verkeerde veld begon te typen (#1771).

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
fix: inline code geen false positive meer voor HTML-fallback (#1771)
All checks were successful
scans / scans (pull_request) Successful in 4m10s
static-gate / static-gate (pull_request) Successful in 10m41s
61ccc754e7
markdownVisualLimitations checkte de hele regel op HTML-tags en escaped
punctuation zonder inline code (backticks) te strippen. Daardoor gaf
`<persoon01>` in backticks een false positive die het hele document uit
de visuele modus wierp — terwijl inline code als `code`-attribuut
verliesvrij door Quill reist.

Oplossing: strip `…`-spans van elke regel voordat de HTML- en
escaped-punctuation regexes losgelaten worden. Gelfd voor firstVisualLimitation.
De regexes zijn tevens naar static finals verplaatst (ze werden per regel
opnieuw gecompileerd).

De doc-comment van _autoFallbackToSource is bijgewerkt om te verduidelijken
dat de cursor op de probleemregel geplaatst wordt.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno merged commit 4f8378e835 into main 2026-08-24 12:15:42 +00:00
Sign in to join this conversation.
No description provided.