Przeglądaj źródła

TASKS.md: P1-13 afgesloten - fix live geverifieerd op emulator-5556, geen overflow meer

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 3 tygodni temu
rodzic
commit
5f17a75216
1 zmienionych plików z 19 dodań i 244 usunięć
  1. 19 244
      TASKS.md

+ 19 - 244
TASKS.md

@@ -1683,250 +1683,25 @@ Optie 1 als gekozen aanpak is dat mogelijk bewust (het hartje op
 expliciet bevestigd door Bob. Uit deze lijst verwijderd als losse
 P1-taak.)*
 
-**P1-13 · Eigenaar: Bob (geblokkeerd op een bevestigd FlutterFlow-
-platformprobleem, geen Claude-taak meer totdat dat opgelost is).**
-**Belangrijke update 2026-08-24 (Claude, sessie 46, code-only
-her-audit — geen live device-run, puur codeanalyse):** de root-cause-bug
-(kale `Column` + `shrinkWrap: true`/`NeverScrollableScrollPhysics()` op
-een `MasonryGridView` zonder scrollbare/begrensde ouder) is **al
-verdwenen op `horecagelegenheden_overzicht_widget.dart`** — bevestigd
-via `grep`: geen enkele `shrinkWrap`/`NeverScrollableScrollPhysics`meer
-in dat bestand, en elke tab-`Column` heeft nu een `Expanded`-kind
-(regel 304 e.d.) rond de `FutureBuilder`/`MasonryGridView`-keten. Dit
-is waarschijnlijk een **bijproduct van de P1-10-lazy-tab-loading-
-herbouw** (commit `d35492a`), niet een gerichte P1-13-fix — nooit als
-zodanig gemeld. **Maar: exact dezelfde bug staat nog wél op de
-2e pagina-variant, `horecagelegenheden_overzicht_provincie_page_widget.dart`**
-(de hernoemde `..._page_data_type`) — alle 5 tabs hebben daar nog
-steeds `shrinkWrap: true` + `NeverScrollableScrollPhysics()` in een
-kale `Column` zónder `Expanded`-wrap (bv. regel 291-387). **Nu een veel
-kleinere/zekerdere taak dan voorheen:** kopieer letterlijk hetzelfde
-patroon als het al-werkende `horecagelegenheden_overzicht_widget.dart`
-(Wrap Widget → Flex → Expansion-sectie → Expanded, zie `CLAUDE.md`) op
-elk van de 5 tab-Columns in de provincie-page-variant — geen open
-onderzoeksvraag meer, gewoon een bewezen werkend recept 5x herhalen.
-De eerdere "builder-fix bereikt de export niet"-blocker-geschiedenis
-hieronder gold voor pogingen vóórdat dit werkende voorbeeld bestond;
-onduidelijk of die flakiness nog optreedt nu er een bewezen pad is —
-bij een nieuwe poging eerst 1 tab proberen + meteen verse export-
-verificatie, niet blind alle 5 in één keer.
-**Nogmaals live herbevestigd 2026-08-20 (Claude, look&feel-review,
-zowel telefoon- als tabletformaat):** identiek kapot, nu weer letterlijk
-"BOTTOM OVERFLOWED BY 5382 PIXELS" (de grotere van de twee eerder
-gemelde waarden, niet de 1529px-variant) — zichtbaar na de 2e kaart
-("De Beun"/"Hotel Den Helder"), inclusief rommelige tag/logo-overlap op
-de kaart vlak vóór de overflow-balk (waarschijnlijk gewoon een
-symptoom van dezelfde kapotte layout, geen apart punt). Nog steeds geen
-voortgang — nieuwste bevestiging dat dit voor livegang nog opgelost
-moet worden bij FlutterFlow-support, dit blokkeert het browsen door de
-volledige Horeca-activiteitenlijst op alle formaten.
-**Live herbevestigd 2026-08-12 (Claude, verse build, telefoonformaat
-emulator-5554):** nog steeds kapot, exact zoals hieronder beschreven —
-"BOTTOM OVERFLOWED BY 1529 PIXELS" op de Activiteiten-tab, zichtbaar
-al na de 2e rij kaartjes, geen scroll mogelijk voorbij dat punt. Geen
-voortgang t.o.v. 2026-08-10, geen nieuwe informatie deze sessie — puur
-een bevestiging dat de taak actueel blijft. Root cause + fix zijn bekend
-en juist toegepast in de builder (door zowel Claude als Bob, op zowel 1
-als meerdere tabs), maar de wijziging bereikt **nooit** de export — zie
-de uitgebreide blocker-documentatie hieronder. Volgende stap is bij
-Bob: Issues-paneel checken, de alternatieve SingleChildScrollView-route
-proberen, of FlutterFlow-support contacteren. 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).
-- **Bestandspad-correctie (2026-08-10):** de hierboven genoemde
-  `horecagelegenheden_overzicht_widget.dart` bestaat niet meer als
-  zodanig — Bob's project splitst deze pagina inmiddels in
-  `HorecagelegenhedenOverzicht` (dunne `ConditionalBuilder`-wrapper,
-  `[If/Then/Else 2 Conditions]`) die naar
-  `horecagelegenheden_overzicht_page_data_type_widget.dart` of
-  `..._sort_page_widget.dart` doorschakelt. De Activiteiten-tab-Column
-  zit nu op regel ~277 van het `PageDataType`-bestand (structuur/getallen
-  overigens identiek: `Column(mainAxisSize: MainAxisSize.max)` →
-  `FutureBuilder` → `MasonryGridView.builder(shrinkWrap: true, physics:
-  const NeverScrollableScrollPhysics())`). Navigeer in de builder dus
-  naar `?page=HorecagelegenhedenOverzicht` (niet naar de
-  `PageDataType`/`SortPage`-varianten los) — de widget-tree toont dan
-  gewoon de juiste, actieve tak.
-- **Fix uitgevoerd in de builder (2026-08-10, Claude) — mechanisch,
-  bevestigd correct qua stappen, maar NIET bevestigd in de export (zie
-  blocker hieronder):** op de `Column` binnen `TabBar Page` (kind van
-  `TabActiviteiten`) bleek de Column zelf al binnen een bestaande
-  `Expanded(TabBarView(...))` te zitten (dus al bounded-height) — een
-  losse "Scrollable"-toggle op die Column zelf gaf zelfs een expliciete
-  **"Invalid Action"-foutdialoog** terug ("You can't set Expanded for a
-  widget if it's in a Column that doesn't have a defined Height. This
-  includes a Scrollable Column.") toen ik daarna ook Expanded op het
-  kind probeerde — nuttige bevestiging dat FlutterFlow deze combinatie
-  zelf detecteert en terugdraait. **Werkende combinatie (op de
-  `StaggeredView`-node zelf, kind van de Column, niet op de Column
-  zelf):** rechterpaneel → **Expansion → Expanded** (rechtse van de 3
-  iconen: None/Flexible/Expanded, in die volgorde — geen tooltip nodig
-  om te onthouden) + **Shrink Wrap → uit** + **Scrollable → aan**. Geen
-  foutdialoog bij deze combinatie, paneel toont "Synced"/"Saved",
-  waarde blijft staan na page-reload binnen dezelfde sessie.
-- **⚠️ BLOCKER — bevestigd niet-doorzettend naar de export (2026-08-10,
-  Claude):** ondanks bovenstaande drie toggles zichtbaar correct in de
-  builder (en blijvend zo na reload) én "Synced"-status zonder
-  foutmelding, lieten **drie onafhankelijke verse
-  `flutterflow export-code --as-debug`-runs** (over ca. 10 minuten,
-  dezelfde opzet als Bob's eigen `ff-run-fvm.sh` gebruikt) geen enkele
-  wijziging zien: `Column`/`MasonryGridView` in het geëxporteerde
-  bestand staan nog altijd exact zoals vóór de builder-edit
-  (`shrinkWrap: true`, `NeverScrollableScrollPhysics`, geen nieuwe
-  `Expanded`). **Sanity-check uitgevoerd:** de exportpijplijn zelf werkt
-  wél correct — dezelfde export toonde de al langer bevestigde
-  P0-6-hintText-fix (`d507d3b9`/`t8h5f8ir` in
-  `internationalization.dart`) gewoon goed. Ook een heel andere,
-  eenvoudiger wijziging in dezelfde sessie (P2-9's dode terug-knop op
-  Home, kale "Remove Widget"-actie) **wél** correct in de export
-  terechtgekomen — dus dit is geen algemene sessie-brede exportstoring,
-  het lijkt specifiek aan deze combinatie van property-toggles
-  (Expansion/Shrink Wrap/Scrollable op een `StaggeredView` diep genest
-  in een `TabBarView`) gebonden.
-- **Update 2026-08-10, later dezelfde sessie: Bob heeft de 3 toggles
-  ook zélf, met eigen muisklikken in zijn eigen browser gezet
-  (Expansion → Expanded, Shrink Wrap → uit, Scrollable → aan) — óók dat
-  kwam niet door in een verse export.** Dit sluit "Claude's
-  geautomatiseerde klik triggert geen echt change-event"
-  als verklaring uit: zelfs een echte handmatige muisklik in Bob's
-  eigen, ingelogde browser (bevestigd: `mcp__claude-in-chrome__*` draait
-  sowieso al in Bob's eigen Chrome, geen aparte sandbox) persisteert
-  deze specifieke combinatie niet. **Dit wijst nu sterk op een echt
-  FlutterFlow-platformprobleem** met deze property-combinatie op een
-  diep-geneste `MasonryGridView`/`StaggeredView` binnen een
-  `TabBarView`, niet op iets in onze workflow. **Nog te proberen (niet
-  meer door Claude gedaan deze sessie, tijd op):**
-  1. Check het Issues-paneel (rode teller rechtsboven) — een
-     analyzer-fout kan een stille opslag-blokkade veroorzaken (zelfde
-     patroon als in `CLAUDE.md` gedocumenteerd voor exports).
-  2. Browser-refresh vlak vóór het zetten van de toggles proberen,
-     zonder tussendoor iets anders te doen — mogelijk speelt de eerdere
-     "Invalid Action"-dialoog (zie hierboven) een rol in
-     state-corruptie die een refresh oplost.
-  3. **Alternatieve fix-route proberen:** i.p.v. de 3 losse toggles op
-     `StaggeredView`, de hele Column-inhoud **Wrap Widget →
-     SingleChildScrollView** (shrinkWrap/physics blijven dan op de
-     bestaande waarde staan — dat patroon werkt al elders in dit
-     project, zie de oorspronkelijke fix-beschrijving hierboven). Dit
-     is een structureel andere widget-tree-bewerking dan de
-     property-toggle die nu blijkt te haperen.
-  4. Als niets werkt: FlutterFlow-support contacteren met "widget
-     property change toont als opgeslagen in het paneel, maar bereikt
-     nooit View Code/export" — klinkt als een reproduceerbare bug aan
-     hun kant.
-- **Nieuwe theorie van Bob (2026-08-10): mogelijk speelt mee dat alle
-  6 StaggeredViews op deze pagina dezelfde generieke naam
-  "StaggeredView" dragen (geen custom naam) — misschien faalt de save
-  juist omdat er meerdere identiek-genoemde widgets op dezelfde pagina
-  staan, en werd de fix tot nu toe maar op 1 van de 6 (Activiteiten)
-  toegepast.** Deels onderzocht (Claude, 2026-08-10):
-  - **Widgets van dit type (geen Component) hebben geen losse
-    "Rename"-optie** — het contextmenu op de tree-rij biedt
-    Duplicate/Insert/Wrap/Replace/Remove/Comment/Copy Style/Copy
-    Code/Convert to Component/Save as Template, geen "Rename Widget".
-    Dubbelklikken op de widgetnaam bovenin het rechterpaneel opent
-    per ongeluk **"Convert to Component"** (nieuwe-component-dialoog) —
-    **niet gebruiken**, dat is een structureel andere, veel grotere
-    wijziging dan bedoeld (geannuleerd, geen schade aangericht).
-  - **"Value Key"-veld geprobeerd als alternatief voor een unieke
-    identiteit** — veld gevonden via de Search properties-zoekbalk,
-    maar het inputveld zelf rendert volledig buiten de geclipte
-    viewport (zie hieronder), dus niet in te vullen door Claude.
-  - **Poging om de fix ook op de Cultuur-tab te zetten (test: alle 6
-    tegelijk) liep vast op clipping** — ook na Bob's browser fullscreen
-    op een 4K-scherm bleef Shrink Wrap/Scrollable/Value Key buiten de
-    zichtbare/klikbare automation-viewport (bevestigd: het probleem zit
-    in hoe de browser-automation-brug de pagina ziet — vermoedelijk een
-    vaste virtuele CDP-viewportbreedte, los van Bob's fysieke
-    schermresolutie — niet in Bob's venstergrootte zelf, dus verder
-    fullscreen/resizen door Bob heeft geen zin). `StaggeredView` van
-    `TabCultuur` is wél betrouwbaar te **selecteren** (Widget Tree),
-    alleen de eigenlijke toggle-klik niet.
-  - **Widget Tree → `TabActiviteiten` → `TabBar Page` → `Column` →
-    `StaggeredView` staat al goed** (Expansion: Expanded, Shrink Wrap:
-    uit, Scrollable: aan — door zowel Claude als Bob bevestigd
-    zichtbaar ingesteld, zie hierboven).
-  - **Update 2026-08-10, definitieve uitkomst: Bob heeft de toggles
-    zelf op meerdere/alle tabs gezet — óók dat kwam niet door.**
-    Verse export ná Bob's wijziging: alle 6 `MasonryGridView.builder`-
-    instanties (regel 344/524/708/892/1076/1260) staan nog steeds op
-    `shrinkWrap: true` + `const NeverScrollableScrollPhysics()`, geen
-    enkele nieuwe `Expanded`. Sanity-check herhaald: de exportpijplijn
-    zelf werkt gewoon (P2-9's Home-knop-verwijdering staat nog correct
-    in dezelfde export). **Dit sluit de naamgevingstheorie definitief
-    uit** — of het nu 1 of 6 identiek-genoemde `StaggeredView`-widgets
-    betreft maakt niets uit voor de save. **Samen met de eerdere
-    uitsluiting van "Claude's automation triggert geen change-event"
-    (Bob's eigen handmatige klikken faalden ook) betekent dit: dit is
-    bevestigd een echt FlutterFlow-platformprobleem** met deze specifieke
-    property-combinatie (Expansion/Shrink Wrap/Scrollable op een
-    `MasonryGridView`/`StaggeredView` diep genest in een `TabBarView`),
-    onafhankelijk van wie er klikt, hoeveel widgets het betreft, of hun
-    naamgeving. **Resterende opties (niet meer geprobeerd deze sessie):**
-    1. Issues-paneel checken op een stille analyzer-blokkade.
-    2. De alternatieve **Wrap Widget → SingleChildScrollView**-route
-       proberen (structureel andere widget-tree-actie, mogelijk buiten
-       bereik van deze specifieke bug) — zie de oorspronkelijke
-       fix-beschrijving hierboven.
-    3. FlutterFlow-support contacteren: "widget property change (Column/
-       StaggeredView Expansion/ShrinkWrap/Scrollable, diep genest in een
-       TabBarView) toont als correct opgeslagen in zowel de builder-UI
-       als na page-reload, maar bereikt nooit View Code of
-       `flutterflow export-code`, ongeacht wie de wijziging maakt of
-       hoeveel widget-instanties het betreft" — met dit reproductiepad
-       als bewijs.
-- **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:
-  ```
-  export PATH="/home/bob/fvm/bin:$HOME/.pub-cache/bin:$PATH"
-  fvm flutter run -d emulator-5554 --route "/horecagelegenhedenOverzicht?plaats=28666"
-  ```
-  (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) blijft weerlegd** — de daadwerkelijke
-  oorzaak is de ontbrekende scroll-wrapper hierboven, niet de
-  tekstkolom-breedtekeuze.
+*(P1-13 afgerond 2026-08-24 — Claude, sessie 46, builder + live device-run
+emulator-5556, profile mode. Root cause (kale `Column` + `shrinkWrap:
+true`/`NeverScrollableScrollPhysics()` op een `MasonryGridView` zonder
+begrensde ouder) bleek al gefixt op `horecagelegenheden_overzicht_widget.dart`
+(bijproduct van de P1-10-herbouw, commit `d35492a`) — dezelfde fix
+(Expansion=Expanded + Shrink Wrap uit + Scrollable aan op de
+`StaggeredView`-node, builder-native, geen custom code) nu ook toegepast
+op alle 6 tabs van de 2e variant `horecagelegenheden_overzicht_provincie_page_widget.dart`.
+Bevestigd via 2 losse verse exports (0 resterende
+`shrinkWrap`/`NeverScrollableScrollPhysics`-treffers) + `flutter analyze`
+(geen nieuwe errors) + een live app-launch op emulator-5556
+(`--route "/horecagelegenhedenOverzichtProvinciePage?plaats=28694"`,
+profile mode): Activiteiten-tab rendert en scrollt normaal, geen
+RenderFlex-overflow, geen exceptions in de log. Eerdere sessies liepen
+hierop vast door een bevestigd FlutterFlow-sync-probleem (edit leek
+opgeslagen, bereikte nooit de export) — dat trad deze keer niet meer op,
+mogelijk omdat de eerste succesvolle toepassing (Home/P1-10) het pad
+inmiddels vrijmaakte, of gewoon niet meer reproduceerbaar. Gecommit
+`59c6647`. Uit deze lijst verwijderd.)*
 
 *(P1-19 afgerond in de builder 2026-08-12 avond, maar **pas op
 2026-08-13 avond echt in deze repo gecommit** — de destijds