|
@@ -101,8 +101,9 @@ de website-homepage; `/nl/user/register` is anoniem bereikbaar (200).
|
|
|
account verwijderen"). (a) is netter, (b) is 1 minuut.
|
|
account verwijderen"). (a) is netter, (b) is 1 minuut.
|
|
|
|
|
|
|
|
- **74 · P1-62 · De evenementen-agenda op een horecapagina is op een telefoon
|
|
- **74 · P1-62 · De evenementen-agenda op een horecapagina is op een telefoon
|
|
|
- onleesbaar: de items lopen over elkaar heen. Eigenaar: onbepaald (zie de
|
|
|
|
|
- waarschuwing hieronder) — gevonden 2026-09-16 laat (Claude, profile-build op
|
|
|
|
|
|
|
+ onleesbaar: de items lopen over elkaar heen. Eigenaar: Claude — bezig
|
|
|
|
|
+ (sessie 2026-09-17, akkoord Bob; pakt taak 75 in dezelfde ronde mee, zelfde
|
|
|
|
|
+ component) — gevonden 2026-09-16 laat (Claude, profile-build op
|
|
|
emulator-5556, 411 dp).** Screenshot:
|
|
emulator-5556, 411 dp).** Screenshot:
|
|
|
`~/uk-shots/2026-09-16/bug-horeca-agenda-gridview.png` (zaak Bitterzoet,
|
|
`~/uk-shots/2026-09-16/bug-horeca-agenda-gridview.png` (zaak Bitterzoet,
|
|
|
Info-tab).
|
|
Info-tab).
|
|
@@ -135,7 +136,7 @@ de website-homepage; `/nl/user/register` is anoniem bereikbaar (200).
|
|
|
regressie van de look&feel-ronde van 16 sep.
|
|
regressie van de look&feel-ronde van 16 sep.
|
|
|
|
|
|
|
|
- **75 · Drie events per 92 hebben `categorie: null` — de agenda-code rekent
|
|
- **75 · Drie events per 92 hebben `categorie: null` — de agenda-code rekent
|
|
|
- daar niet op. Eigenaar: onbepaald, klein.** Gevonden bij dezelfde controle:
|
|
|
|
|
|
|
+ daar niet op. Eigenaar: Claude — bezig (sessie 2026-09-17, samen met 74).** Gevonden bij dezelfde controle:
|
|
|
`flutterflowmobiel_establishment_events` gaf op 92 events van 120 Amsterdamse
|
|
`flutterflowmobiel_establishment_events` gaf op 92 events van 120 Amsterdamse
|
|
|
zaken **3× `"categorie": null`** (alle drie bij horecanid 75457,
|
|
zaken **3× `"categorie": null`** (alle drie bij horecanid 75457,
|
|
|
Natuurtheater Zeddam). Dezelfde regel als hierboven doet
|
|
Natuurtheater Zeddam). Dezelfde regel als hierboven doet
|
|
@@ -347,8 +348,13 @@ de twee dingen die daar niet in voorkomen, gezien op de telefoon-emulator.*
|
|
|
als een verkeerde `size`.
|
|
als een verkeerde `size`.
|
|
|
2. **Het menu is lang doordat het Gemeente-blok en het Provincie-blok dezelfde
|
|
2. **Het menu is lang doordat het Gemeente-blok en het Provincie-blok dezelfde
|
|
|
zeven rijen herhalen** (Uitgaan, Activiteiten, Cultuur, Films, Jeugd, Horeca,
|
|
zeven rijen herhalen** (Uitgaan, Activiteiten, Cultuur, Films, Jeugd, Horeca,
|
|
|
- Thuis bezorgen). Overweeg het Provincie-blok standaard ingeklapt te tonen.
|
|
|
|
|
- **Besluit voor Bob**, want het verandert hoe mensen navigeren.
|
|
|
|
|
|
|
+ Thuis bezorgen). **Besluit Bob 2026-09-17: menu blijft zoals het is, beide
|
|
|
|
|
+ blokken uitgeklapt — niet opnieuw voorstellen.** Onderzoek Claude: 19
|
|
|
|
|
+ ListTiles × 48 dp minimum = 912 dp, past nooit op 731 dp; alleen een andere
|
|
|
|
|
+ structuur (één categorielijst met twee tikdoelen per rij) zou passen, en
|
|
|
|
|
+ dat wil Bob niet. Wat wél gebeurt (Bob, taak 7 van 2026-09-17): padding
|
|
|
|
|
+ boven het logo 40 → 8 en de Terug-knop onderaan (met zijn 48 dp
|
|
|
|
|
+ bodem-padding) eraf, want tikken naast de drawer sluit 'm al.
|
|
|
|
|
|
|
|
*Hangt samen met P1-50:* op `PUitgaanPage` staat een zwart **"Ad Loading…"**-blok.
|
|
*Hangt samen met P1-50:* op `PUitgaanPage` staat een zwart **"Ad Loading…"**-blok.
|
|
|
In een testbuild is dat de placeholder, maar zonder consent-initialisatie is dit
|
|
In een testbuild is dat de placeholder, maar zonder consent-initialisatie is dit
|
|
@@ -611,13 +617,18 @@ telefoon-emulator bekeken (zie screenshots in `~/uk-shots/2026-09-16/na-*.png`).
|
|
|
- **P1-53 · ✅ afgerond 2026-09-16 (Claude, in de builder).** `thuisBezorgen`
|
|
- **P1-53 · ✅ afgerond 2026-09-16 (Claude, in de builder).** `thuisBezorgen`
|
|
|
AppBar stond op `backgroundColor: info`; nu **Primary Text** (leisteen), gelijk
|
|
AppBar stond op `backgroundColor: info`; nu **Primary Text** (leisteen), gelijk
|
|
|
aan de rest. Export-geverifieerd: 0× `.info`, 1× `.primaryText`.
|
|
aan de rest. Export-geverifieerd: 0× `.info`, 1× `.primaryText`.
|
|
|
-- **P1-54 · `EvenementInfo`: adresregels met iconen · Eigenaar: Claude — bezig (sessie 2026-09-16 avond, nameten + bouwen)
|
|
|
|
|
- (toegewezen door Bob, 2026-09-16: "zet klaar als taak voor volgende keer").**
|
|
|
|
|
- Op `EventCurrent` staan adres en plaats als kale tekst, en "Plaats" springt in
|
|
|
|
|
- omdat er een lege `Column` vóór staat (`evenement_info_widget.dart` r.~126-160).
|
|
|
|
|
- Doel: dezelfde opbouw als de kaarten — `Row` met speldje-icoon + "adres,
|
|
|
|
|
- plaats" op één regel, en de datum een kalender-icoon. Rechtsklik `TextAdres` →
|
|
|
|
|
- Wrap Widget → Row, dan Insert Widget → Icon vooraan (landt op positie 0).
|
|
|
|
|
|
|
+- **P1-54 · ✅ gebouwd 2026-09-17 (Claude, in de builder), export-geverifieerd,
|
|
|
|
|
+ `dart analyze` 0 errors.** `EvenementInfo`: adres en plaats staan nu op één
|
|
|
|
|
+ regel als `Row` met `Icons.location_on_sharp` (20 px, `primaryText`, padding
|
|
|
|
|
+ rechts 4) + één `Text` via **Combine Text** (`adres`, ", ", `plaats`) in een
|
|
|
|
|
+ `Expanded`. De inspringing kwam niet door een lege Column maar doordat de
|
|
|
|
|
+ twee losse Texts in een Column standaard gecentreerd stonden. `EventCurrent`:
|
|
|
|
|
+ de datum (`TextData`) zit in een `Row` met `Icons.calendar_month` (20 px,
|
|
|
|
|
+ padding 8/4) ervoor. De `GoogleMapsIconButton` (speld, opent de kaart) staat
|
|
|
|
|
+ ongewijzigd onder "Website". *Restpuntje, cosmetisch:* de Visibility-conditie
|
|
|
|
|
+ `$[0].datum is set` staat op de Text, niet op de Row — bij een event zonder
|
|
|
|
|
+ datum blijft het kalender-icoon alleen staan. Op het toestel nagekeken: zie
|
|
|
|
|
+ de sessienotitie hieronder.
|
|
|
- **P1-17 Deel A · laatste 3 regels · ✅ AF 2026-09-16 (Claude, builder +
|
|
- **P1-17 Deel A · laatste 3 regels · ✅ AF 2026-09-16 (Claude, builder +
|
|
|
verse export).** `hnnqfnhk` "Eatings" → **Restaurants** en `ykjsgvsf`
|
|
verse export).** `hnnqfnhk` "Eatings" → **Restaurants** en `ykjsgvsf`
|
|
|
"Overnight" → **Accommodation** zijn gezet. De derde (`qqb1howd`) bleek niet
|
|
"Overnight" → **Accommodation** zijn gezet. De derde (`qqb1howd`) bleek niet
|
|
@@ -635,17 +646,39 @@ telefoon-emulator bekeken (zie screenshots in `~/uk-shots/2026-09-16/na-*.png`).
|
|
|
Export-geverifieerd (geen `Align(` meer rond de labels, `List.generate`
|
|
Export-geverifieerd (geen `Align(` meer rond de labels, `List.generate`
|
|
|
intact), `dart analyze` 0 errors, op de telefoon-emulator nagekeken
|
|
intact), `dart analyze` 0 errors, op de telefoon-emulator nagekeken
|
|
|
(`~/uk-shots/2026-09-16/na3-horeca-ovz.png`).
|
|
(`~/uk-shots/2026-09-16/na3-horeca-ovz.png`).
|
|
|
-- **P2-35 · `HorecagelegenheidCurrent`: "Geen evenementen"-strook · Eigenaar: Claude — bezig (sessie 2026-09-16 avond, eerst nameten) —
|
|
|
|
|
- Claude — eerst NAMETEN op een toestel vóór je gaat bouwen.** De
|
|
|
|
|
- oorspronkelijke bevinding was "staat permanent onderin, ook als de zaak events
|
|
|
|
|
- heeft". In de export van 2026-09-16 klopt dat maar half: de events-tabel
|
|
|
|
|
- (`HorecagelegenheidEventTabelComponentCopy`) doet al keurig
|
|
|
|
|
- `if (evenementen.isEmpty) return GeenEvenementenComponentWidget();` — dat is
|
|
|
|
|
- correct empty-state-gedrag. Wat er wél permanent staat is de **knop "Alle
|
|
|
|
|
- horecagelegenheden"** (`horecagelegenheid_current_widget.dart` r.~1610), los
|
|
|
|
|
- van de tab waar je op staat. Kijk dus eerst op de emulator wat de gebruiker
|
|
|
|
|
- echt ziet vóór je een Visibility-conditie bouwt; mogelijk is de hele taak
|
|
|
|
|
- alleen nog "die knop in de Agenda-tab zetten".
|
|
|
|
|
|
|
+- **P2-35 · ✅ grotendeels gebouwd 2026-09-17 (Claude, in de builder),
|
|
|
|
|
+ export-geverifieerd, `dart analyze` 0 errors — één restpunt voor Bob.**
|
|
|
|
|
+ Nameting op de telefoon-emulator (screenshots
|
|
|
|
|
+ `~/uk-shots/2026-09-16/p235-*.png`): de body van `HorecagelegenheidCurrent`
|
|
|
|
|
+ had twee `Expanded`-blokken onder elkaar (tabs + evenemententabel, 50/50), dus
|
|
|
|
|
+ de evenementen stonden op élke tab en de tab-inhoud kreeg maar ~100 dp (logo
|
|
|
|
|
+ op Info afgekapt). Nu: **vierde tab "Agenda"** (EN "Agenda", sleutel
|
|
|
|
|
+ `jwojezxv`) met daarin één instantie van
|
|
|
|
|
+ **`HorecagelegenheidEventTabelComponentCurrent`** (hernoemd van `...Copy`,
|
|
|
|
|
+ Bob's verzoek; `nid` + `horecaid` → page-parameter `nid`); het losse
|
|
|
|
|
+ `Expanded > Container(height 100)`-blok is weg. De knop "Alle
|
|
|
|
|
+ horecagelegenheden" staat nog onderaan de pagina.
|
|
|
|
|
+ ⚠️ **Op het toestel is de Agenda-tab bij een zaak MÉT events LEEG, en dat komt
|
|
|
|
|
+ niet door de tab maar door een gelijktijdige wijziging aan het component
|
|
|
|
|
+ zelf** (bestand gewijzigd 00:17 door een andere sessie/Bob, ná mijn eerste
|
|
|
|
|
+ export van 23:30): de `GridView` in `HorecagelegenheidEventTabelComponentCurrent`
|
|
|
|
|
+ is vervangen door een `StaggeredView`, en de Responsive Value voor
|
|
|
|
|
+ `Cross Axis Count` heeft **alle vier de takken leeg** → `return 0;` ×4 →
|
|
|
|
|
+ `Bad state: No element` in `RenderSliverMasonryGrid.performLayout` (logcat,
|
|
|
|
|
+ profile-build). Zie het CLAUDE.md-recept: alle vier vullen (1/1/2/3), en
|
|
|
|
|
+ Shrink Wrap uit. Zolang dat niet is gedaan toont de tab niets; de
|
|
|
|
|
+ empty-state (0 events) werkt wél. Niet zelf aangeraakt — iemand anders zat
|
|
|
|
|
+ erop.
|
|
|
|
|
+ *Klein:* met vier tabs kapt "Bezorgen" af op 411 dp → `TabBar` →
|
|
|
|
|
+ "Tab Bar Scrollable" aan.
|
|
|
|
|
+ **Restpunt · Eigenaar: Bob — Agenda staat als 4e tab, niet als 1e.** Tabs
|
|
|
|
|
+ herordenen lukt niet via de widget tree: een `Tab`-node op de `TabBar`-rij
|
|
|
|
|
+ droppen geeft de toast *"Tab can only be added to TabBar"*, en op een andere
|
|
|
|
|
+ Tab-rij droppen verplaatst alleen de Tab (niet zijn TabBar Page), waarna het
|
|
|
|
|
+ canvas breekt (met Undo hersteld). Inhoud tussen TabBar Pages slepen landt
|
|
|
|
|
+ óók niet (3× getest). Opties: (a) jij probeert het slepen in je eigen browser;
|
|
|
|
|
+ (b) `TabBar` → *Initial Tab Index* op 3 zodat de pagina op Agenda opent
|
|
|
|
|
+ (export kent `initialIndex`); (c) Agenda gewoon als 4e tab laten.
|
|
|
- **P2-36 · ❌ NEE — besluit Bob 2026-09-16: kaarttitels blijven Roboto.**
|
|
- **P2-36 · ❌ NEE — besluit Bob 2026-09-16: kaarttitels blijven Roboto.**
|
|
|
Niet opnieuw voorstellen. (Voorstel was Title Large/Medium op Noto Serif zetten
|
|
Niet opnieuw voorstellen. (Voorstel was Title Large/Medium op Noto Serif zetten
|
|
|
omdat de site kaarttitels in serif zet; Headline L/M/S staan al wel op serif.)
|
|
omdat de site kaarttitels in serif zet; Headline L/M/S staan al wel op serif.)
|
|
@@ -766,7 +799,8 @@ daarmee niet meer geblokkeerd en heeft nu een kant-en-klaar werkblad
|
|
|
paneel. Verder zitten veel vertaalsleutels op **Tooltip-nodes** (`Terug`,
|
|
paneel. Verder zitten veel vertaalsleutels op **Tooltip-nodes** (`Terug`,
|
|
|
`Veld wissen`, `Wachtwoord tonen/verbergen`) in plaats van op zichtbare
|
|
`Veld wissen`, `Wachtwoord tonen/verbergen`) in plaats van op zichtbare
|
|
|
labels; die vind je alleen door in de widget tree op `Tooltip` te zoeken.
|
|
labels; die vind je alleen door in de widget tree op `Tooltip` te zoeken.
|
|
|
-4. **Builder-opruimronde.** P2-7 (21 dode eenheden; begin met
|
|
|
|
|
|
|
+4. **Builder-opruimronde — grotendeels ✅ 2026-09-16/17 (Bob), restant staat
|
|
|
|
|
+ onder "Bij livegang".** Oud: P2-7 (21 dode eenheden; begin met
|
|
|
`drawer_component_copy` + `kanweghorecagelegenheid_current_copy`),
|
|
`drawer_component_copy` + `kanweghorecagelegenheid_current_copy`),
|
|
|
`HorecagelegenhedenOverzichtCopy3Copy`, `homeCopy` (het datumfilter is af en op een toestel getest, dus mag weg),
|
|
`HorecagelegenhedenOverzichtCopy3Copy`, `homeCopy` (het datumfilter is af en op een toestel getest, dus mag weg),
|
|
|
en P2-22 (twee Property Override-fouten). Daarna één export + `dart analyze`
|
|
en P2-22 (twee Property Override-fouten). Daarna één export + `dart analyze`
|
|
@@ -1270,20 +1304,6 @@ bovenrand, de kloktijd loopt er dwars doorheen.
|
|
|
widget met `SafeArea`, maar dat is meer werk voor hetzelfde resultaat.
|
|
widget met `SafeArea`, maar dat is meer werk voor hetzelfde resultaat.
|
|
|
- Verifiëren: `adb shell input tap 275 55` moet daarna het menu openen.
|
|
- Verifiëren: `adb shell input tap 275 55` moet daarna het menu openen.
|
|
|
|
|
|
|
|
-### 🆕 Favorieten — restpunt voor Bob (stand 2026-09-14 avond)
|
|
|
|
|
-
|
|
|
|
|
-*Chat-taken 1, 2 en 3 zijn afgerond en geverifieerd met een verse export:
|
|
|
|
|
-de knop op tab 4 staat op `secondary` + "Stadsactiviteit aanmaken", en het
|
|
|
|
|
-losse label "Stadseditor" op `stadsactiviteitAanmaken` heet nu "Of kies zelf
|
|
|
|
|
-een plaats" (restpunt 4 van 13 sep). `dart analyze` op die export: 0 errors.*
|
|
|
|
|
-
|
|
|
|
|
-**Eén punt open, Eigenaar: Bob** — losse tekst **"Hello World"** onderaan
|
|
|
|
|
-tab 1 (Persoonlijke agenda) van `Favorieten`, zichtbaar voor elke ingelogde
|
|
|
|
|
-gebruiker. In de builder: pagina `Favorieten` → `TabBarView` → **eerste
|
|
|
|
|
-`TabBar Page`** → `Column` → het **laatste kind**, een `Text` die als enige
|
|
|
|
|
-buiten de `Expanded` met de agendalijst hangt (i18n-sleutel `wmho8j7h`).
|
|
|
|
|
-Rechtsklik → Remove Widget. Claude verwijdert niets; zeg je wat er wél hoort
|
|
|
|
|
-te staan, dan vult Claude het in.
|
|
|
|
|
|
|
|
|
|
### ✅ Offline-crash op de provinciepagina — opgelost 2026-09-14 (avond)
|
|
### ✅ Offline-crash op de provinciepagina — opgelost 2026-09-14 (avond)
|
|
|
|
|
|
|
@@ -1986,6 +2006,20 @@ en staat in de map `kanweg`. Drie dingen die daaruit volgen:
|
|
|
|
|
|
|
|
### Bij livegang
|
|
### Bij livegang
|
|
|
|
|
|
|
|
|
|
+- **Builder-opruimronde P2-7, restant (Bob, 2026-09-17: "zet de rest bij
|
|
|
|
|
+ livegang").** Nog in de export van 2026-09-17 00:10: componenten
|
|
|
|
|
+ `SliderUitgaanComponentSmallCurrent` en
|
|
|
|
|
+ `PUitgaantabelKaartComponentOrgineelMetKaartjeerin`; pagina's
|
|
|
|
|
+ `KanwegTestUpload` en `Event` (die laatste weigert structureel, laten
|
|
|
|
|
+ staan); custom function `dISABLEdatumVoorApi` (hernoemd, nog steeds dood).
|
|
|
|
|
+ Weg zijn sinds 2026-09-16/17: `drawerComponentCopy`,
|
|
|
|
|
+ `kanweghorecagelegenheidCurrentCopy`, `KanwegHorecagelegenhedenOverzicht`,
|
|
|
|
|
+ `KanwegHomeCopy`, `HeaderButtonsComponentCopymethartje`, de drie
|
|
|
|
|
+ `KaartTabel/Slider`-comps, `KanwaegSelectStateDropDownComponentCopy`,
|
|
|
|
|
+ `KanwegHomeUitgaantabelKaartComponentCopy`, `KanwegHeaderButtonsComponentCopy`,
|
|
|
|
|
+ `FavorietenCopy`, `HorecagelegenhedenOverzichtCopy/Copy2/Copy2Copy`,
|
|
|
|
|
+ `Kanweg`, `KanwegHorecagelegenhedenOverzichtSortPage`. `dart analyze` op
|
|
|
|
|
+ die export: 0 errors.
|
|
|
- **Taak 56 · Opruim-cron: description zegt 30 dagen, code doet 360 (Bob's
|
|
- **Taak 56 · Opruim-cron: description zegt 30 dagen, code doet 360 (Bob's
|
|
|
besluit 2026-09-15: na livegang).** In
|
|
besluit 2026-09-15: na livegang).** In
|
|
|
`custom_cronapi()` staat *"after 30 days"*, in
|
|
`custom_cronapi()` staat *"after 30 days"*, in
|
|
@@ -2068,7 +2102,10 @@ maak description en code gelijk, en hernoem `$date_after_30`.
|
|
|
op productie standaard uit staat en op devbob met één
|
|
op productie standaard uit staat en op devbob met één
|
|
|
`drush vset custom_debug 1` weer aan kan. Geen debug-code weghalen die
|
|
`drush vset custom_debug 1` weer aan kan. Geen debug-code weghalen die
|
|
|
bij een storing op productie nog nuttig kan zijn — alleen uitzetten.
|
|
bij een storing op productie nog nuttig kan zijn — alleen uitzetten.
|
|
|
- 4. Nalopen dat er geen `print`/`var_dump`/`dd()` meer in staat die de
|
|
|
|
|
|
|
+ 4. ✅ **Nagelopen 2026-09-17 (Bob, grep op productie):** alleen een
|
|
|
|
|
+ uitgecommentarieerde `print_r` (r.791) en een `print_r` binnen
|
|
|
|
|
+ `_custom_debug_watchdog` (r.1948, gaat via de debug-schakelaar). Niets
|
|
|
|
|
+ dat de JSON kan vervuilen. Oud: nalopen dat er geen `print`/`var_dump`/`dd()` meer in staat die de
|
|
|
JSON-respons kan vervuilen (de app parst de body strikt; één regel
|
|
JSON-respons kan vervuilen (de app parst de body strikt; één regel
|
|
|
ervoor breekt `getJsonField`).
|
|
ervoor breekt `getJsonField`).
|
|
|
5. Deploy naar productie, Drupal-cache legen, en met een cache-buster
|
|
5. Deploy naar productie, Drupal-cache legen, en met een cache-buster
|