fix(instellingen): losse einden van de AI-module — twee docs, een wees-sleutel en de ontbrekende borging (#731) #757

Merged
brenno merged 4 commits from fix/ai-module-nasleep-731 into main 2026-07-23 15:48:38 +00:00
Owner

Nasleep van #731. De verhuizing zelf staat op main (1e089969, PR #752); dit
zijn vier losse einden die daarbij zijn blijven liggen. Ik werkte parallel aan
dezelfde issue en heb mijn eigen tak weggegooid — wat hieronder staat is
uitsluitend wat main nog míst, niet een tweede versie van het werk.

1. PRIVACY.md en FAQ.md wijzen naar een tabblad dat er niet meer is.
Beide zeggen "Settings → AI Assistant", en dat tabblad bestaat sinds de
verhuizing niet zolang de module uit staat. Voor twee documenten die juist
over toestemming en uitgaand verkeer gaan is dat meer dan een
schoonheidsfoutje: het is de plek waar iemand naartoe loopt om AI úit te
zetten. Geen poort ving dit — docs_claims_match_code_test toetst andere
beweringen. De privacyverklaring in de app zelf noemt geen plek en klopte al.

2. De l10n-sleutel 'AI-assistentie inschakelen' is een wees. De
schakelaar met dat label is de modulekaart geworden en de zoekingang heet nu
AI-assistentie. Geen poort ziet een dode sleutel; wél misleidt hij de
vertaler die een taal exporteert met make l10n-export. 31 regels weg.

3. enabled || hasBackend stond drie keer los — zijbalk, zoekindex en het
tabblad zelf. Die drie moeten hetzelfde antwoord geven; los uitgerekend
verschuift er ooit één mee en de andere twee niet, en dan is het tabblad
zichtbaar terwijl zoeken zegt dat het er niet is. Nu AiForm.revealsTab, bij
de state die het antwoord bezit. Meegenomen: de doc-kop van settings was bij
het toevoegen van hasBackend boven de verkeerde getter beland.

4. Twee gaten in de borging. De zoekingangen dragen aiOnly, maar niets
toetste dat — haal de filter weg en de suite bleef groen. En de twee modules
delen sinds #731 het tabblad Uitbreidingen, terwijl geen toets ze tegen elkaar
in zette: een verkeerde || in navItems die beide kanten tegelijk opent,
bleef onzichtbaar. Drie nieuwe toetsen, en ik heb bij allebei de betreffende
mutatie één keer rood zien worden vóór ik ze hield.

Poort

make check groen (exit 0, 86,3% dekking, per-bestand-vloer 0).
make check-secrets en make sast schoon. Gerebased op 159ebd9d en daarna
opnieuw getoetst.

DAST is niet gedraaid — ZAP is hier niet ingericht, en deze wijziging raakt
geen geserveerd oppervlak.

Bewaker

Getoetst omdat dit een publieke belofte in de documentatie raakt. Bevinding 1
kwam uít die toets: waarde 4 zegt dat een belofte toetsbaar moet zijn aan de
code, en deze twee waren dat niet meer. Bestandsformaat, opslag,
afhankelijkheden en de functionele poort (ai.enabled && ai.isConfigured)
blijven onaangeroerd; er komt geen partij bij en er verandert niets aan wat er
in het .md terechtkomt.

Refs #731.

Nasleep van #731. De verhuizing zelf staat op main (1e089969, PR #752); dit zijn vier losse einden die daarbij zijn blijven liggen. Ik werkte parallel aan dezelfde issue en heb mijn eigen tak weggegooid — wat hieronder staat is uitsluitend wat main nog míst, niet een tweede versie van het werk. **1. PRIVACY.md en FAQ.md wijzen naar een tabblad dat er niet meer is.** Beide zeggen "Settings → AI Assistant", en dat tabblad bestaat sinds de verhuizing niet zolang de module uit staat. Voor twee documenten die juist over toestemming en uitgaand verkeer gaan is dat meer dan een schoonheidsfoutje: het is de plek waar iemand naartoe loopt om AI úit te zetten. Geen poort ving dit — `docs_claims_match_code_test` toetst andere beweringen. De privacyverklaring in de app zelf noemt geen plek en klopte al. **2. De l10n-sleutel `'AI-assistentie inschakelen'` is een wees.** De schakelaar met dat label is de modulekaart geworden en de zoekingang heet nu `AI-assistentie`. Geen poort ziet een dode sleutel; wél misleidt hij de vertaler die een taal exporteert met `make l10n-export`. 31 regels weg. **3. `enabled || hasBackend` stond drie keer los** — zijbalk, zoekindex en het tabblad zelf. Die drie moeten hetzelfde antwoord geven; los uitgerekend verschuift er ooit één mee en de andere twee niet, en dan is het tabblad zichtbaar terwijl zoeken zegt dat het er niet is. Nu `AiForm.revealsTab`, bij de state die het antwoord bezit. Meegenomen: de doc-kop van `settings` was bij het toevoegen van `hasBackend` boven de verkeerde getter beland. **4. Twee gaten in de borging.** De zoekingangen dragen `aiOnly`, maar niets toetste dat — haal de filter weg en de suite bleef groen. En de twee modules delen sinds #731 het tabblad Uitbreidingen, terwijl geen toets ze tegen elkaar in zette: een verkeerde `||` in `navItems` die beide kanten tegelijk opent, bleef onzichtbaar. Drie nieuwe toetsen, en ik heb bij allebei de betreffende mutatie één keer rood zien worden vóór ik ze hield. ## Poort `make check` groen (exit 0, 86,3% dekking, per-bestand-vloer 0). `make check-secrets` en `make sast` schoon. Gerebased op `159ebd9d` en daarna opnieuw getoetst. DAST is niet gedraaid — ZAP is hier niet ingericht, en deze wijziging raakt geen geserveerd oppervlak. ## Bewaker Getoetst omdat dit een publieke belofte in de documentatie raakt. Bevinding 1 kwam uít die toets: waarde 4 zegt dat een belofte toetsbaar moet zijn aan de code, en deze twee waren dat niet meer. Bestandsformaat, opslag, afhankelijkheden en de functionele poort (`ai.enabled && ai.isConfigured`) blijven onaangeroerd; er komt geen partij bij en er verandert niets aan wat er in het `.md` terechtkomt. Refs #731.
Beide beschreven een tabblad 'Settings -> AI Assistant' dat er sinds de
verhuizing naar Uitbreidingen zonder de module niet meer is. Geen poort
ving dit: docs_claims_match_code toetst andere beweringen. Voor twee
documenten die juist over toestemming en uitgaand verkeer gaan, is een
verkeerde vindplaats meer dan een schoonheidsfoutje — het is de plek
waar iemand naartoe loopt om AI uit te zetten.

De privacyverklaring in de app zelf noemt geen plek en klopte al.
De schakelaar met dat label bestaat niet meer — hij is de modulekaart
op Uitbreidingen geworden, en de zoekingang heet nu 'AI-assistentie'.
Geen poort ving dit; een dode sleutel misleidt wel de vertaler die een
taal exporteert met make l10n-export.
De regel enabled || hasBackend stond drie keer los: in de zijbalk, in
de zoekindex en op het tabblad zelf. Die drie moeten hetzelfde antwoord
geven; los uitgerekend schuift er ooit één mee en de andere twee niet,
en dan is het tabblad zichtbaar terwijl zoeken zegt dat het er niet is.
Nu AiForm.revealsTab, bij de state die het antwoord bezit.

Meegenomen: de doc-kop van 'settings' was bij het toevoegen van
hasBackend boven de verkeerde getter beland.
Twee gaten in de borging van de AI-module.

De zoekingangen dragen aiOnly, maar niets toetste dat: haal de filter
weg en alles bleef groen. Nu twee toetsen — met de module uit vindt
'ai' alleen de plek om hem aan te zetten, en een ingestelde backend
maakt de configuratie weer vindbaar. Beide één keer rood gezien met de
filter eruit.

En de twee modules delen sinds #731 het tabblad Uitbreidingen. De
bestaande toets zet ze nooit tegen elkaar in, dus een verkeerde || in
navItems die beide kanten tegelijk opent, bleef onzichtbaar. Ook die
mutatie is rood gezien.

openSettings leest nu settingsProvider, anders staat de provider er nog
niet als het venster opengaat en zoekt de toets door standaardwaarden.
brenno merged commit c5f1b48708 into main 2026-07-23 15:48:38 +00:00
Sign in to join this conversation.
No description provided.