|
|
@@ -53,10 +53,17 @@ tijd stoppen goed te doen.
|
|
|
- De audit-/verificatiestappen die dit bestand al vaak gebruikt om "open"
|
|
|
vs "al gefixt" te bevestigen (`git log -S"..."`, gerichte `grep`) — zie
|
|
|
de vuistregel hierboven over verouderde taakstatus.
|
|
|
- - **P1-8, laatste bullet** hieronder (live emulator-check dat een
|
|
|
- ongeldige `nid` niet crasht) — app draaien, navigeren, logs/scherm
|
|
|
- checken. Geen builder-bewerking, laag risico, duidelijk
|
|
|
- slagingscriterium.
|
|
|
+ - Live emulator-checks (app draaien, deep link/navigatie, scherm/
|
|
|
+ logs checken) — geen builder-bewerking. **Kanttekening
|
|
|
+ (2026-08-05): de eerder als "laag risico, duidelijk
|
|
|
+ slagingscriterium" ingeschatte P1-8-check bleek bij uitvoering
|
|
|
+ juist 2 échte crashes op te leveren** (zie P1-1 punt 4 en de
|
|
|
+ nieuwe P1-12) — het navigeren/screenshotten zelf is Haiku-geschikt,
|
|
|
+ maar de opvolging (stacktrace naar exacte broncoderegel herleiden,
|
|
|
+ onderscheid maken tussen "al bekend probleem" en "nieuwe bug",
|
|
|
+ inschatten of normaal gebruik geraakt wordt) vroeg meer redeneerwerk
|
|
|
+ dan verwacht — bij een crash-bevinding op zo'n check de opvolging
|
|
|
+ liever alsnog met Sonnet doen.
|
|
|
- **Niet Haiku-geschikt** (Sonnet aanhouden): elke taak die een
|
|
|
builder-widget/-property wijzigt (vrijwel alle overige P1/P2-taken), en
|
|
|
taken die ontwerpkeuze/afweging vragen zoals P1-9 en de P2-features
|
|
|
@@ -156,7 +163,11 @@ Carousel-widgets zonder deze fix — allemaal read-only bevestigd
|
|
|
P0-1 kan hier nog optreden zonder enige vangnet.
|
|
|
3. `EvenementComponent` → Carousel (foto-carousel van één evenement)
|
|
|
4. `horecagelegenheidCurrent` → Carousel (foto-carousel van één
|
|
|
- horecagelegenheid)
|
|
|
+ horecagelegenheid) — **live bevestigd 2026-08-05 (Claude, emulator,
|
|
|
+ deep link `?nid=999999999`, niet-bestaand item):** exact het
|
|
|
+ verwachte `RangeError (length): Invalid value: Valid value range is
|
|
|
+ empty: 0` op-scherm, 3x. Bevestigt dat dit al een échte crash is,
|
|
|
+ niet alleen een theoretisch risico.
|
|
|
- **Waarom bij Bob i.p.v. Claude:** de "Show Empty List Widget"-
|
|
|
checkbox is **structureel onbereikbaar via Claude's
|
|
|
browser-automation-viewport** (bevestigd op alle 4 hierboven, zie
|
|
|
@@ -241,26 +252,26 @@ gezien de omvang hieronder (~45 treffers); pak het file-voor-file op.
|
|
|
uitloggen, account verwijderen). Bovenop de login/favorieten-P0-basis.
|
|
|
Account verwijderen heeft mogelijk AVG-implicaties aan Drupal-kant.
|
|
|
|
|
|
-**P1-8 · Eigenaar: Onbepaald.** Toegankelijkheid, restpunt:
|
|
|
-- ~~Login-pagina: 2 icon-only knoppen zonder tooltip~~ **opgelost
|
|
|
- 2026-08-05 (Claude, builder):** hele `TextField` (niet alleen het
|
|
|
- icoon) gewrapt in Tooltip via rechtsklik → Wrap Widget (Ctrl+B) →
|
|
|
- spraakwolkje-icoon, i.p.v. het icoon zelf (dat zit als `suffixIcon`
|
|
|
- embedded, geen losse wrapbare tree-node — zie `CLAUDE.md`). Message:
|
|
|
- "Veld wissen" (UsernameField) / "Wachtwoord tonen/verbergen"
|
|
|
- (PasswordField). Geverifieerd via gegenereerde code (`AlignedTooltip`
|
|
|
- met correcte tekst, geen restanten). **Val op tijdens het typen:** het
|
|
|
- Message-tekstveld toont een vaste "Message..."-prefix; direct typen
|
|
|
- zonder eerst Ctrl+A liet die prefix in de opgeslagen tekst staan
|
|
|
- (bv. "Message...Veld wissen" i.p.v. "Veld wissen") — bevestigd via
|
|
|
- Developer Menu → View Code. Altijd Ctrl+A vóór het typen in dit
|
|
|
- veld, en achteraf via View Code controleren.
|
|
|
-- Optioneel, laag risico **(Haiku-geschikt, zie Modelkeuze hierboven)**:
|
|
|
- live in de emulator/app verifiëren dat een ongeldige/verlopen `nid` op
|
|
|
- `horecagelegenheidCurrent`/`eventCurrent` geen crash geeft — code-niveau
|
|
|
- al gecheckt en geruststellend (consequent `?.toList() ?? []`/
|
|
|
- `valueOrDefault<...>` rond `jsonBody`-velden, i.t.t. de lijstpagina's uit
|
|
|
- P1-1), alleen nog niet live getest.
|
|
|
+**P1-12 · Eigenaar: Bob (builder, gegenereerde code niet lokaal te
|
|
|
+fixen).** `EventCurrent` crasht direct (Null check operator used on a
|
|
|
+null value) op een deep link met wél `nid` maar zonder `horecaid`
|
|
|
+query-param. **Gevonden 2026-08-05 (Claude), live bevestigd op
|
|
|
+emulator** via `adb shell am start -d
|
|
|
+"uitgaanskrant://uitgaanskrant.com/eventCurrent?nid=999999999"`
|
|
|
+(bewust zonder `horecaid`). Root cause:
|
|
|
+`event_current_widget.dart:808`, `establishmentID: widget!.horecaid!`
|
|
|
+— geen fallback. Alle **in-app** navigatie naar `EventCurrent` stuurt
|
|
|
+`nid`+`horecaid` altijd samen mee (gecheckt, alle `pushNamed`-aanroepen
|
|
|
+vullen beide), dus dit raakt geen normaal gebruik — wel elke
|
|
|
+deep link/gedeelde link/push-notificatie die ooit alleen `nid`
|
|
|
+meegeeft (bv. een toekomstige "deel-knop", zie P2-4). Fix: in de
|
|
|
+builder op `EventCurrent` → widget-tree → de
|
|
|
+`EvenementHorecagelegenheidWidget`-instantie → `establishmentID`-param
|
|
|
+een Default Variable Value/`valueOrDefault` toevoegen i.p.v. de kale
|
|
|
+`!`, zelfde patroon als P1-6. (Losstaand: de bekende Carousel-
|
|
|
+RangeError op deze en de `horecagelegenheidCurrent`-pagina bij een
|
|
|
+niet-bestaande `nid` is al gedekt door P1-1 punt 4 — live bevestigd,
|
|
|
+zie daar.)
|
|
|
|
|
|
**P1-9 · Eigenaar: Onbepaald.** Visuele polish (los, per pagina):
|
|
|
Uitgaan-pagina (typografie/contrast/spacing), Event-pagina,
|
|
|
@@ -397,7 +408,14 @@ code).
|
|
|
- Dubbele Provincie/Gemeente-blok in het menu opruimen (12 menu-items
|
|
|
waar 6 zouden volstaan).
|
|
|
- `EventWidget`-route: heraansluiten of definitief schrappen (losse
|
|
|
- orphan-route).
|
|
|
+ orphan-route). **Bevestigd orphan 2026-08-05 (Claude, grep):** route
|
|
|
+ staat correct geregistreerd (`nav.dart`, pad `/event`, param `nid`)
|
|
|
+ en geëxporteerd (`index.dart`), maar **geen enkele `pushNamed`/
|
|
|
+ navigatie-aanroep in de hele codebase gaat er ooit naartoe** —
|
|
|
+ `EventCurrent` (pad `/eventCurrent`) is overal de daadwerkelijk
|
|
|
+ gebruikte event-detailpagina. Alleen bereikbaar via een handmatige
|
|
|
+ directe URL. Beslissing (verwijderen uit `nav.dart`+`index.dart`, of
|
|
|
+ alsnog ergens aan koppelen) ligt bij Bob.
|
|
|
- `EstablishmentsNewCall` (`lib/backend/api_requests/api_calls.dart:845`)
|
|
|
wordt nergens meer aangeroepen — dode API-call-definitie (gevonden
|
|
|
bij de P1-10-performance-audit 2026-08-05).
|