feat(document): statistiekenhoekje linksonder in de editor #2100

Merged
brenno merged 1 commit from feature/document-stats-corner into main 2026-09-15 14:14:14 +00:00
Owner

Samenvatting

Bij het schrijven van een document was het aantal woorden nergens zichtbaar. Linksonder in de documenteditor staat nu een klein, halfdoorzichtig hoekje met vijf live-tellingen:

  • woorden — tokens met minstens één letter of cijfer; Markdown-markup en afbeeldingspaden tellen niet mee;
  • hoofdstukken — H1-koppen;
  • paragrafen — H2 t/m H6-koppen;
  • tabellen — GFM-tabelblokken (pas geteld als een geldige scheidingsrij volgt);
  • afbeeldingen![…](…)-verwijzingen, exclusief ![bg-achtergronden.

De telling zit in lib/utils/document_stats.dart (computeDocumentStats, zuiver Dart) en hergebruikt buildMarkdownOutline voor koppen — daardoor tellen koppen in fenced code niet mee — en isMarkdownTableLine/isMarkdownTableDelimiterRow voor tabelblokken. Het hoekje volgt het patroon van de paginaindicator en is zichtbaar in Visueel én Bron.

Waarden

Raakt geen bestandsformaat, opslag, afhankelijkheid of uitgaand verkeer — de bewaker-blik is daarom bewust overgeslagen.

Testplan

  • make check groen (format, analyze, conventies, volledige suite + coverage, goldens)
  • make check-secrets groen (gitleaks + trufflehog)
  • make sast groen (0 findings)
  • 10 unittests voor computeDocumentStats (lege doc, woorden, H1/H2+, fenced code, GFM-tabellen, ![bg, markup)
  • Labels via make add-l10n in alle 31 talen; make l10n-check groen

Generated with Devin

## Samenvatting Bij het schrijven van een document was het aantal woorden nergens zichtbaar. Linksonder in de documenteditor staat nu een klein, halfdoorzichtig hoekje met vijf live-tellingen: - **woorden** — tokens met minstens één letter of cijfer; Markdown-markup en afbeeldingspaden tellen niet mee; - **hoofdstukken** — H1-koppen; - **paragrafen** — H2 t/m H6-koppen; - **tabellen** — GFM-tabelblokken (pas geteld als een geldige scheidingsrij volgt); - **afbeeldingen** — `![…](…)`-verwijzingen, exclusief `![bg`-achtergronden. De telling zit in `lib/utils/document_stats.dart` (`computeDocumentStats`, zuiver Dart) en hergebruikt `buildMarkdownOutline` voor koppen — daardoor tellen koppen in fenced code niet mee — en `isMarkdownTableLine`/`isMarkdownTableDelimiterRow` voor tabelblokken. Het hoekje volgt het patroon van de paginaindicator en is zichtbaar in Visueel én Bron. ## Waarden Raakt geen bestandsformaat, opslag, afhankelijkheid of uitgaand verkeer — de bewaker-blik is daarom bewust overgeslagen. ## Testplan - [x] `make check` groen (format, analyze, conventies, volledige suite + coverage, goldens) - [x] `make check-secrets` groen (gitleaks + trufflehog) - [x] `make sast` groen (0 findings) - [x] 10 unittests voor `computeDocumentStats` (lege doc, woorden, H1/H2+, fenced code, GFM-tabellen, `![bg`, markup) - [x] Labels via `make add-l10n` in alle 31 talen; `make l10n-check` groen Generated with [Devin](https://devin.ai)
feat(document): statistiekenhoekje linksonder in de editor
All checks were successful
scans / scans (pull_request) Successful in 3m15s
static-gate / static-gate (pull_request) Successful in 7m22s
2b79a1de57
Toont live woorden, hoofdstukken (H1), paragrafen (H2+), tabellen en
afbeeldingen in Visueel én Bron, volgens het patroon van de
paginaindicator. De telling zit in computeDocumentStats (zuiver Dart):
koppen via buildMarkdownOutline, tabelblokken via de GFM-scheidingsrij,
![bg]-achtergronden en afbeeldingspaden tellen niet mee als afbeelding
of woord.

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

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
brenno force-pushed feature/document-stats-corner from 2b79a1de57
All checks were successful
scans / scans (pull_request) Successful in 3m15s
static-gate / static-gate (pull_request) Successful in 7m22s
to 4b7eea0be7
All checks were successful
scans / scans (pull_request) Successful in 3m40s
static-gate / static-gate (pull_request) Successful in 7m3s
2026-09-15 14:06:14 +00:00
Compare
brenno merged commit 0885233e8a into main 2026-09-15 14:14:14 +00:00
Sign in to join this conversation.
No description provided.