|
|
@@ -1,11 +1,23 @@
|
|
|
# Uitgaanskrant — takenlijst
|
|
|
|
|
|
-Bijgewerkt: 2026-08-09 (Claude, builder-sessie via MCP + live
|
|
|
-emulator-verificatie). Zie `CLAUDE.md` voor werkinstructies/conventies.
|
|
|
-Elke openstaande taak hieronder is zelfstandig te begrijpen zonder de
|
|
|
-chat gelezen te hebben waarin hij ontstond.
|
|
|
-
|
|
|
-**Deze sessie (2026-08-09):** eerste sessie met `mcp__android__*`-
|
|
|
+Bijgewerkt: 2026-08-09 avond (Claude, builder + emulator-sessie). Zie
|
|
|
+`CLAUDE.md` voor werkinstructies/conventies. Elke openstaande taak
|
|
|
+hieronder is zelfstandig te begrijpen zonder de chat gelezen te hebben
|
|
|
+waarin hij ontstond.
|
|
|
+
|
|
|
+**Deze sessie (2026-08-09, avond):** twee taken opgepakt.
|
|
|
+**P1-19:** builder-fix geprobeerd (Row → Wrap Widget), maar de
|
|
|
+menu-klik registreerde niet (4 pogingen, geen schade) — teruggegeven
|
|
|
+aan Bob met exact stappenplan. **P1-13:** eindelijk de al maanden
|
|
|
+gezochte volledige stack trace gevangen (nieuwe `flutter run
|
|
|
+--route`-truc omzeilt de race met Home's eigen overflow) — root cause
|
|
|
+nu hard bevestigd (niet-scrollbare `MasonryGridView` in een kale
|
|
|
+`Column`) + concreet fix-voorstel, builder-uitvoering nog open. Bijvangst:
|
|
|
+een tweede, nog niet eerder gedocumenteerde instantie van P1-19's
|
|
|
+"kale Row/Column zonder Wrap"-bugfamilie gevonden op
|
|
|
+`PUitgaanSliderKaartComponent:179`.
|
|
|
+
|
|
|
+**Vorige sessie (2026-08-09, middag):** eerste sessie met `mcp__android__*`-
|
|
|
toegang tot beide emulators (i.p.v. alleen losse `adb`-Bash-commando's)
|
|
|
— **P0-6 afgerond** (5 debug-knoppen op Login verwijderd, builder +
|
|
|
export/build + live geverifieerd op telefoon én tablet). Sub-bevinding
|
|
|
@@ -533,53 +545,80 @@ 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-13 · Eigenaar: Claude — bezig (sessie 2026-08-09-c).** Op `HorecagelegenhedenOverzicht` →
|
|
|
-tab "Activiteiten" gooit de kaartjesgrid herhaaldelijk `RenderFlex
|
|
|
-overflowed`-fouten ("on the right", 16-243px, tientallen keren; één
|
|
|
-keer "on the bottom", 2653-5382px) — al meerdere sessies bevestigd
|
|
|
-live aanwezig, **nog geen verse volledige stack trace gevangen**
|
|
|
-(alleen `Another exception was thrown: ...`-kortvorm, zie CLAUDE.md's
|
|
|
-"slechts één volledige dump per proceslevensduur"-notitie).
|
|
|
-- **Betrouwbare reproductie (2026-08-09):** cold-start deep link op
|
|
|
- `emulator-5554` (**niet** de tablet — die valt op een andere
|
|
|
- grid-breakpoint en toont hooguit een lege Container, geen overflow):
|
|
|
+**P1-13 · Eigenaar: Onbepaald (root cause + fix nu bekend, builder-werk
|
|
|
+resteert).** Op `HorecagelegenhedenOverzicht` → tab "Activiteiten"
|
|
|
+overflowt de kaartjesgrid. **Root cause definitief bevestigd
|
|
|
+(2026-08-09, Claude, verse volledige stack trace + visuele bevestiging
|
|
|
+op emulator-5554):**
|
|
|
+```
|
|
|
+A RenderFlex overflowed by 5382 pixels on the bottom.
|
|
|
+Column:file:///.../lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_widget.dart:286:29
|
|
|
+```
|
|
|
+`horecagelegenheden_overzicht_widget.dart:286-382`: de Activiteiten-tab
|
|
|
+is een kale `Column` (`mainAxisSize: MainAxisSize.max`, regel 286) met
|
|
|
+als enige kind een `FutureBuilder` die uiteindelijk een
|
|
|
+`MasonryGridView.builder` bouwt (regel 354) met **`shrinkWrap: true` +
|
|
|
+`physics: NeverScrollableScrollPhysics()`** (regel 355-356/382) — dit
|
|
|
+patroon (shrinkWrapped grid zonder eigen scroll) vereist een
|
|
|
+**scrollbare ouder** om te werken, maar die ontbreekt hier: de `Column`
|
|
|
+zit direct in de `TabBarView`'s `Expanded` (regel 282-284), zonder
|
|
|
+`SingleChildScrollView` eromheen. Met 25 items (regel 340,
|
|
|
+`.take(25)`) × `Container(width: 600.0, height: 225.0)` (regel
|
|
|
+388-390) in 1 kolom op telefoonformaat (`crossAxisCount: 1` onder
|
|
|
+`kBreakpointSmall`, regel 359-363) wil de grid ≈5625px hoog worden
|
|
|
+terwijl de tab maar een fractie daarvan aan ruimte heeft — vandaar de
|
|
|
+5382px-overflow. Verklaart vermoedelijk ook de eerder waargenomen
|
|
|
+kleinere "on the right"-overflows elders in eerdere sessies (los
|
|
|
+bevestigd deze sessie op een ander component: zie P1-19's
|
|
|
+zustervondst op `PUitgaanSliderKaartComponent:179`, zelfde
|
|
|
+"kale-Row/Column-zonder-wrap"-familie maar niet dezelfde plek).
|
|
|
+- **Fix (builder, groter dan een 1-klik-property-wijziging — wél
|
|
|
+ volledig mechanisch/geen ontwerpkeuze):** op
|
|
|
+ `HorecagelegenhedenOverzicht` → Widget Tree → de `Column` (regel 286,
|
|
|
+ binnen de eerste `TabBarView`-tab) → de `FutureBuilder`/`MasonryGridView`-
|
|
|
+ boom **in een `Expanded` wrappen** (zodat de grid een bepaalde hoogte
|
|
|
+ krijgt binnen de Column) **en** op de `MasonryGridView` zelf
|
|
|
+ `Shrink Wrap` uitzetten + physics terug naar de standaard (scrollbare)
|
|
|
+ waarde i.p.v. `Never Scrollable` — waarmee de grid zijn eigen
|
|
|
+ onafhankelijke scroll krijgt. Alternatief, mogelijk eenvoudiger in de
|
|
|
+ builder: de hele Column-inhoud wrappen in een `SingleChildScrollView`
|
|
|
+ (dan mag `shrinkWrap: true` + `NeverScrollableScrollPhysics` blijven
|
|
|
+ staan, zoals dat elders in dit project vaker voorkomt) — welke van de
|
|
|
+ twee makkelijker te zetten is in de builder-UI moet ter plekke
|
|
|
+ blijken. **Nog niet geprobeerd door Claude** (deze sessie ging op aan
|
|
|
+ het vangen van de stack trace zelf) — volgende sessie kan direct met
|
|
|
+ deze twee opties starten. Waarschijnlijk hetzelfde patroon op de
|
|
|
+ andere tabs van deze pagina (Cultuur, Eetgelegenheden, …) — bij het
|
|
|
+ oppakken meteen alle tabs checken, niet alleen Activiteiten.
|
|
|
+- **Reproductierecept dat de race met Home's eigen overflow (P1-19)
|
|
|
+ vermeed (2026-08-09, definitief werkend — vervangt eerdere
|
|
|
+ R+deep-link-pogingen):** `flutter run` **direct starten met
|
|
|
+ `--route`** i.p.v. cold-start via `am start` ná een losse `flutter
|
|
|
+ run`/hot-restart. Dit zet Flutter's `defaultRouteName` al vóór de
|
|
|
+ eerste frame, dus go_router opent meteen de juiste pagina — Home
|
|
|
+ wordt nooit gebouwd, dus zijn eigen overflow (P1-19/P1-3-familie)
|
|
|
+ verbruikt de "één-volledige-dump-per-proces"-slot niet meer eerder:
|
|
|
```
|
|
|
- adb -s emulator-5554 shell am force-stop com.uitgaanskrant.app
|
|
|
- adb -s emulator-5554 shell am start -a android.intent.action.VIEW -d \
|
|
|
- "uitgaanskrant://uitgaanskrant.com/horecagelegenhedenOverzicht?plaats=28666" \
|
|
|
- com.uitgaanskrant.app
|
|
|
+ export PATH="/home/bob/fvm/bin:$HOME/.pub-cache/bin:$PATH"
|
|
|
+ fvm flutter run -d emulator-5554 --route "/horecagelegenhedenOverzicht?plaats=28666"
|
|
|
```
|
|
|
- (`plaats` = verplichte `FFAppState().gemeenteSelectId`, zonder param
|
|
|
- blijft de pagina leeg — 28666 is de bekende default-gemeente-id uit
|
|
|
- P0-3.) `Activiteiten` is toevallig al tab-index 0
|
|
|
- (`horecagelegenheden_overzicht_widget.dart:49`), dus dit landt direct
|
|
|
- op de juiste tab mét echte data, zonder Home te bouwen — omzeilt het
|
|
|
- dump-slot-race-probleem voor de cold-start zelf.
|
|
|
-- **Waarom nog steeds geen stack trace, ondanks succesvolle
|
|
|
- reproductie:** `adb logcat` vangt `FlutterError.dumpErrorToConsole`
|
|
|
- op dit device/deze Flutter-versie **niet** op (bevestigd leeg, ook al
|
|
|
- stond de overflow-banner zichtbaar op het scherm) — er is een live
|
|
|
- VM-service-verbinding nodig (`flutter run`/`attach` met een echte
|
|
|
- pty, zie CLAUDE.md's `setsid`-recept). Met die verbinding werkt een
|
|
|
- **hot-restart** (`R`, reset de dump-teller) wél — maar de race tussen
|
|
|
- `R` versturen en de deep-link-navigatie hierboven is tot nu toe **2x
|
|
|
- verloren** (~0.3-1s tool-call-overhead, Home's eigen overflow — zie
|
|
|
- P1-19 — vuurt sneller). **Volgende concrete pogingen, geen van beide
|
|
|
- nog beproefd:** (a) `R` + de deep-link in **één** Bash-aanroep met
|
|
|
- een zo kort mogelijke `sleep` ertussen i.p.v. twee losse tool-calls;
|
|
|
- (b) `flutter attach` (i.p.v. `flutter run`) op het al deep-link-
|
|
|
- cold-gestarte proces — mogelijk raceloos, nog niet onderzocht; (c)
|
|
|
- rechtstreeks de Dart VM Service (JSON-RPC/WebSocket, poort staat in
|
|
|
- de opstart-log) bevragen via curl/een klein script, buiten DevTools'
|
|
|
- ontoegankelijke canvas-UI om.
|
|
|
+ (geen FIFO/`R`/deep-link-am-start meer nodig voor dít doel. Voor een
|
|
|
+ pagina die zelf niet los bereikbaar is met de juiste parameters via
|
|
|
+ een directe `--route`, blijft het FIFO/`R`-recept uit CLAUDE.md
|
|
|
+ nodig.)
|
|
|
+ **Bevestigd geprobeerd en verworpen:** `R` (hot-restart) + de
|
|
|
+ deep-link-`am start` vlak erna in één Bash-call (minimale sleep) —
|
|
|
+ een hot-restart reset altijd naar de `initialLocation`/Home, en de
|
|
|
+ daarna verstuurde deep-link-intent wordt door de al herstarte app
|
|
|
+ niet meer verwerkt (adb-warning "Activity not started, intent has
|
|
|
+ been delivered to currently running top-most instance" terwijl de
|
|
|
+ app toch weer op Home landde) — dus dit blijft Home's eigen overflow
|
|
|
+ eerst verbruiken. `--route` bij het opstarten zelf is de werkende
|
|
|
+ oplossing voor dit specifieke race-probleem.
|
|
|
- **Hypothese uit 2026-08-05 (`HorecagelegenheidoverzichtKaartWidget`'s
|
|
|
- `MediaQuery.sizeOf`-breedtekeuze) weerlegd bij code-heronderzoek
|
|
|
- 2026-08-09:** de tekstkolom zit in een `Expanded`/`Flexible`-Row, die
|
|
|
- kan qua Flutter-constraint-model niet zelf overflowen — de
|
|
|
- daadwerkelijke oorzaak ligt elders, mogelijk de buitenste
|
|
|
- `Container(width: 600.0, height: 225.0)` in
|
|
|
- `horecagelegenheden_overzicht_widget.dart:388-390`, of iets in het
|
|
|
- logo/categorie-tag-`Stack` — nog niet vastgesteld.
|
|
|
+ `MediaQuery.sizeOf`-breedtekeuze) blijft weerlegd** — de daadwerkelijke
|
|
|
+ oorzaak is de ontbrekende scroll-wrapper hierboven, niet de
|
|
|
+ tekstkolom-breedtekeuze.
|
|
|
|
|
|
**P1-19 · Eigenaar: Bob (Wrap Widget-menuklik registreert niet, zie
|
|
|
hieronder — Claude geblokkeerd).** Nieuwe, nog niet eerder gedocumenteerde
|
|
|
@@ -616,6 +655,18 @@ geen wrap) ook voorkomt op de niet-Home-varianten van dit component
|
|
|
(`PUitgaantabelKaartComponent`/`kaartTabelUitgaanComp`/
|
|
|
`kaartTabelUitgaanSComp`, zie ook de P2-7-opschoonnotitie over die
|
|
|
laatste twee) — bij het oppakken van deze taak even meenemen.**
|
|
|
+- **Bevestigde zustervondst (2026-08-09, Claude, verse stack trace):**
|
|
|
+ hetzelfde patroon zit ook op **`PUitgaanSliderKaartComponent`**
|
|
|
+ (ánder component dan de drie hierboven genoemde) — categorie-tag-
|
|
|
+ badge rechtsonder op de afbeelding:
|
|
|
+ ```
|
|
|
+ A RenderFlex overflowed by 2.4 pixels on the right.
|
|
|
+ Row:file:///.../lib/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart:179:38
|
|
|
+ ```
|
|
|
+ Zelfde oorzaak (`Row` met `List.generate(categorie.length, ...)`,
|
|
|
+ regel 178-179, `mainAxisSize: MainAxisSize.min`, geen Wrap/Expanded).
|
|
|
+ Kleiner overflow (2.4px, minder zichtbaar dan Home's 113px) maar
|
|
|
+ zelfde onderliggende bug — zelfde fix-aanpak (Wrap i.p.v. Row).
|
|
|
- **Poging door Claude (2026-08-09), geblokkeerd — geen wijziging
|
|
|
aangebracht.** De juiste `Row`-node (kind `tagCategorieComponent`,
|
|
|
binnen `Container` → sibling van de image-`Stack`) was betrouwbaar
|