Browse Source

G0.6 herschoten, P1-17 + P2-46 restpunten af, 65c/P2-24 B afgevinkt

- Nieuwe set van 10 Play-screenshots (release-build, uitgelogd, header
  "Heel Nederland"); alleen tel-04 wacht nog op Show Test Ads uit.
- Vertalingen 1k52hayg -> End date, 22xoyrqe -> Menu.
- EvenementHorecagelegenheid: Contact-Row op cross-axis start + spacing 8,
  kop "Over deze zaak" boven TextInhoud (ColumnInhoud, padding-top 8).
- 65c en P2-24 B bleken al af in de export; TASKS.md bijgewerkt.
- CLAUDE.md: screenshot-recept vastgelegd.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
bob 7 hours ago
parent
commit
800ce108bf
2 changed files with 57 additions and 67 deletions
  1. 18 0
      CLAUDE.md
  2. 39 67
      TASKS.md

+ 18 - 0
CLAUDE.md

@@ -2976,6 +2976,24 @@ echte crash. `ff-run-fvm.sh` geeft die vlag wél mee, vandaar dat het daar
 nooit opviel. Snelle check vóór je bouwt: `ls <exportmap>/assets/images/`
 moet meer dan `favicon.png` bevatten, anders kopieer je ze uit de projectmap.
 
+**Play-screenshots schieten — werkend recept (2026-09-19, 10 stuks in ±20 min,
+browserloos).** Export mét `--include-assets` → `pubspec.lock` + `fvm use 3.35.7 -f`
+→ `pub get` → `fvm flutter pub run flutter_launcher_icons` → `fvm flutter build apk
+--release --target-platform android-x64` (80 s, 40 MB; de AVD's zijn x86_64, dus
+géén arm64). Daarna per AVD: `adb install -r`, **`pm clear` voor een uitgelogde
+staat** (anders staat "bobcity" onderin de drawer), `cmd locale set-app-locales
+com.uitgaanskrant.app --locales nl-NL`, launch via `monkey`, en `exec-out screencap
+-p`. Pagina's die een parameter nodig hebben open je met `am start -a
+android.intent.action.VIEW -d "uitgaanskrant://uitgaanskrant.com/<route>?<params>"`
+(Bimhuis-zaak: `horecagelegenheidCurrent?nid=75459`, horeca-overzicht:
+`horecagelegenhedenOverzichtCurrent?plaats=28695`). 7"-tablet = de tablet-AVD
+tijdelijk op `wm size 1200x1920` + `wm density 240` (daarna resetten). Crop met
+PIL: telefoon 63 boven / 126 onder, 10"-tablet 48 / 96, 7" 36 / 72 — controleer met
+een strookje van de boven- en onderrand dat de balken echt weg zijn. Hamburger
+tikken in de **onderste helft** van de knop (telefoon (340,160), tablet-landscape
+(1124,120), 7" (486,92)). Vergelijk de md5's: een menushot die "niet landde" is
+byte-identiek aan de Home-shot.
+
 **Een APK bouwen vanuit een losse exportmap overleeft een achtergrond-Bash-call
 alleen met `setsid`.** Een gewone `run_in_background`-aanroep van
 `fvm flutter build apk` meldt "exit 0" terwijl Gradle nog draait, en laat geen

+ 39 - 67
TASKS.md

@@ -26,7 +26,7 @@ doen.
 
 | # | Taak | Kort |
 |---|---|---|
-| **G0.6** | Play-screenshots | Eerste set van 10 klaar (`play-screenshots.zip`). Eén shot moet over zodra *Show Test Ads* uit staat |
+| **G0.6** | Play-screenshots | ✅ Nieuwe set van 10 klaar (2026-09-19 avond). Alleen `tel-04-horeca.png` moet over zodra *Show Test Ads* uit staat |
 | **nameten** | Na het services-script op productie | `node/<nid>.json` moet 403/404 geven i.p.v. 200 met 46 velden |
 
 ## 👤 BOB — OPEN, in volgorde van wat de livegang blokkeert
@@ -37,7 +37,7 @@ doen.
 | **G** | Google Play-checklist G0–G4 | Volledige checklist hieronder |
 | **65** | De **ingelogde** doorloop | Kernfuncties zijn nooit op een release-build getest. Claude kan dit niet (geen wachtwoorden) |
 | **AdMob** | `Show Test Ads` uit | App Settings → AdMob. Wacht op de Google-registratie |
-| **P1-17** | Laatste vertaling(en) | `1k52hayg` "Date end" → `End date`. Verder is de levende code schoon |
+| **P1-17** | Laatste vertaling(en) | ✅ `1k52hayg` → `End date` en `22xoyrqe` → `Menu` gedaan (2026-09-19 avond, export-geverifieerd). Rest: `tcyc3idz` zodra "Mijn aanmeldingen" af is |
 | **Drupal** | taak 56-restant · taak 28/109 | Cron-description op "xx days" ✅ gedaan · events zonder categorie gaat via de importer |
 | **Bij livegang** | Schakelaars en opruimklussen | Eigen blok hieronder |
 
@@ -96,27 +96,27 @@ die twee niet meer los afwerken. Vink hier af.*
       📁 **Tekst staat in `~/uk-play-assets/play-teksten.md`** (gered uit een
       vluchtige sessie-scratchpad, 2026-09-19 — stond nergens duurzaam).
       ⏳ Kan pas ingevoerd worden ná G1.1 (de app moet bestaan in Play Console).
-- [x] **G0.6 — ✅ EERSTE SET KLAAR (Claude, 2026-09-19).** 10 stuks uit een echte
-      `--release`-build (export mét `--include-assets`, `flutter_launcher_icons`
-      vooraf): 6 telefoon (1080x1794), 2x 7" tablet (1200x1805), 2x 10" tablet
-      (2560x1504). Systeembalk weggecropt; alle formaten binnen Play's eisen
-      (320-3840 px, ratio onder 2:1).
-      📁 **Staan nu duurzaam in `~/uk-play-assets/screenshots/`** (+ de zip ernaast);
-      ze stonden alleen in een sessie-scratchpad onder `/tmp` en waren een reboot
-      kwijt geweest. Gered 2026-09-19.
-      🔴 **De set is NIET uploadbaar zoals hij is — drie defecten, gemeten 2026-09-19:**
-      1. **`tab10-01-home.png` en `tab10-02-menu.png` zijn byte-identiek**
-         (md5 `b34debb5…`, beide de Home-pagina). De menushot is nooit geland, dus
-         er is feitelijk **één** unieke 10"-tabletscreenshot. Play wil er meer dan
-         één per formaat; controleer het exacte minimum in Play Console.
-      2. **`tel-04-horeca.png`** toont de AdMob-**testadvertentie** ("This is a
-         320x50 test ad"). Zet *Show Test Ads* uit (staat op de livegang-lijst).
-      3. **`tel-05-zaak.png`** toont een zaak met een **lege agenda**; klopt
-         inhoudelijk, maar een zaak mét agenda oogt sterker.
-      🔴 **En: álle tien tonen de koptekst `Amsterdam (gemeente)`** — precies wat
-      taak 103 aan het repareren is. Elke shot bevat die header, dus **de hele set
-      moet opnieuw zodra 103 gereed is**. Niet uploaden vóór die tijd.
-      ➡️ Eén herschietronde ná 103 + *Show Test Ads* uit dekt alle vier de punten.
+- [x] **G0.6 — ✅ NIEUWE SET KLAAR (Claude, 2026-09-19 avond).** Alle tien opnieuw
+      geschoten uit een verse `--release`-build (export mét `--include-assets`,
+      `flutter_launcher_icons` vooraf, x64 voor de AVD's), uitgelogd (`pm clear`),
+      Nederlandse app-locale: 6 telefoon (1080x1731), 2x 7" tablet (1200x1812, AVD
+      tijdelijk op `wm size 1200x1920` / density 240), 2x 10" tablet (2560x1456).
+      Status- én navigatiebalk weggecropt; alle ratio's onder 2:1.
+      📁 `~/uk-play-assets/screenshots/` + `play-screenshots.zip`; de oude set staat
+      in `screenshots-oud-2026-09-19-middag/` (Claude gooit niets weg).
+      **Opgelost t.o.v. de eerste set:** header toont *Heel Nederland* i.p.v.
+      "Amsterdam (gemeente)"; de twee 10"-shots zijn nu echt verschillend (Home +
+      menu, md5 gecheckt); `tel-05-zaak.png` is het Bimhuis (nid 75459) mét
+      gevulde agenda.
+      🔴 **Nog één keer over: `tel-04-horeca.png`** toont nog de AdMob-testadvertentie
+      (`showsTestAd: true` in de export). Zodra *Show Test Ads* uit staat schiet
+      Claude die ene opnieuw — dat is 2 minuten werk, geen nieuwe build nodig
+      (deep link `horecagelegenhedenOverzichtCurrent?plaats=28695`).
+      🔸 **Opgevallen, geen blokker:** op de detailpagina's (`tel-02-event`,
+      `tel-05`/`06-zaak`) toont de header **Amsterdam** (de default
+      `gemeenteSelectId`), terwijl Home *Heel Nederland* zegt. Voor een event in
+      Steenwijk oogt dat wat vreemd; als je dat consequent wilt, is dat een aparte
+      taak op de header-keten.
 - [ ] **G0.7 — Feature graphic 1024×500** laten maken (grafisch werk, Bob).
 
 #
@@ -234,13 +234,9 @@ kernfuncties: inloggen · hartje op een zaakpagina (aan én uit) · Favorieten m
 inhoud, alle vier de tabs · gemeente volgen · evenement aanmaken tot en met
 indienen · Mijn profiel inclusief uitloggen. Een Play-reviewer logt straks wél in.
 
-**65c · Favorieten toont uitgelogd een leeg scherm** — de standaardtab rendert
-niets: geen melding, geen uitleg, geen inlogknop. De uitleg staat op tab 4, die
-buiten beeld valt in de scrollende tabbalk.
-⚠️ **Opgepakt in een andere sessie** (als taak 107). De Empty List Widget-sectie
-biedt alleen *Image* en *Component*, geen *Text* — dus het moet via een klein
-component of via een `Text` met een Visibility-conditie op `userSessionid`
-(*Is Not Set or Is Empty*).
+**65c · ✅ af** (nagemeten 2026-09-19 avond in een verse export): Favorieten toont
+uitgelogd nu een uitlegtekst met inlogknop, achter een guard op `userSessionid`
+(sleutel `zxbjvxzq`). Gebouwd in een andere sessie als taak 107.
 
 **65e · "Datum" blijft Nederlands in de Engelse modus** — het label komt uit de
 `valueOrDefault`-default `'Datum'` en is dus geen vertaalsleutel. Hoort bij P1-17.
@@ -378,9 +374,9 @@ er precies vijf aangevinkt staan — dan weet je dat het zo bedoeld is.
   de custom function `dISABLEdatumVoorApi`. Moet in de **builder**, niet met
   `git rm` — anders staat alles na de volgende export terug.
 
-- **P1-17 · laatste vertaling(en).** In levende code is nog één echt gat:
-  `1k52hayg` staat op `Date end` en zou `End date` moeten zijn. Verder hoort er
-  nog iets bij zodra "Mijn aanmeldingen" af is (`tcyc3idz` is nu een lege NL-tekst).
+- **P1-17 · laatste vertaling(en).** `1k52hayg` → `End date` en `22xoyrqe` →
+  `Menu` zijn gedaan (2026-09-19 avond). Rest: `tcyc3idz` zodra "Mijn
+  aanmeldingen" af is (nu een lege NL-tekst).
   ⚠️ Tel geen sleutels mee waar EN == NL terwijl dat correct is (`Select...`,
   `Website`, `Facebook`, `Media`, `", "` — identiek in beide talen).
 
@@ -411,9 +407,10 @@ KANWEG-API-calls · de opruimronde van 7 dode kopieën.)*
   met spacing 6 ("Westerstraat 95  Enkhuizen"), telefoon, e-mail, de links-`Wrap`
   (Menukaart/Website/Facebook/Instagram/X/Twitter/Op Uitgaanskrant.com) en `TextInhoud`
   renderen allemaal goed.
-  🔸 **Wel opgevallen:** het losse label **"Contact"** staat links náást die `Wrap` en botst
-  visueel met de tweede regel ervan zodra de links wrappen — het lijkt tussen de regels te
-  hangen. Zie de screenshot van 2026-09-19. Cosmetisch, nog niet aangepakt.
+  ✅ **"Contact"-label gefixt (2026-09-19 avond):** de Row staat nu op Cross Axis
+  Alignment *start* met Items Spacing 8, dus het label lijnt uit met de eerste regel
+  links i.p.v. tussen de regels te hangen. Export: `crossAxisAlignment: start` +
+  `.divide(SizedBox(width: 8.0))`.
 - ✅ **`ColumnBezorgen` mét echte data bekeken en grotendeels opgeknapt (2026-09-19).**
   **Testzaak: nid `157070`** (Chinees-Indische restaurant Lotus, Enkhuizen) — die heeft
   álle bezorgvelden gevuld (`bezorgtijden`, `bestellink`, `bezorgkosten`, `minimaleorder`,
@@ -429,8 +426,8 @@ KANWEG-API-calls · de opruimronde van 7 dode kopieën.)*
   `Textbezorg-minorder`** (`establishmentMinimaleorder is set/non-empty`) — die had er géén,
   dus met label erbij zou hij anders "Minimale bestelling: null" tonen; en **Wrap-spacing 8**
   op de drie lijsten, zodat de waarden niet meer aan elkaar plakken.
-- `TextInhoud` staat onderaan `ColumnInfo` (na het Contact-blok), Body Medium, zonder Max Lines — overweeg padding-top 8 en een kop "Over deze zaak".
-- ✅ EN-vertaling van "Menukaart" (`22xoyrqe`) gecontroleerd: staat er als **`Menucard`**. Gevuld dus, maar geen idiomatisch Engels — *Menu* zou het zijn. Jouw keuze (hoort verder bij P1-17).
+- ✅ `TextInhoud` heeft nu een kop **"Over deze zaak"** (EN *About this venue*, sleutel `rko8u7a5`, Body Medium 600) in een nieuwe `ColumnInhoud` met padding-top 8 (2026-09-19 avond, export-geverifieerd).
+- ✅ EN-vertaling van "Menukaart" (`22xoyrqe`) staat nu op **`Menu`** (2026-09-19 avond).
 - Niet getoond: `kvk` (zaak). Bewust overgeslagen.
 - ✅ **`organisator` wordt nu wél getoond (2026-09-19, Bob's besluit, af en op toestel geverifieerd).**
   Zie het eigen blok hieronder; taak 99 kan hiermee dicht.
@@ -475,35 +472,10 @@ alleen doen als het in de praktijk hindert.**
 (6x `.take(1000)`), de routes wijzen naar `...Current`, en de twee lege
 `TextField`-placeholders zijn opgeruimd. **F is geschrapt** op Bob's verzoek.
 
-**Nog open: B — categoriedropdown per tab. ⚠️ Opgepakt in een andere sessie.**
-Niet zelf aan beginnen.
-
-Wat daarvoor al klaarstaat:
-- `horecacategorieen.json` is **publiek** en staat op **productie** (anoniem
-  HTTP 200, 129 records, 0,2 s). Exact 6 termen op diepte 0 — de zes tab-tids —
-  en 123 op diepte 1; dieper gaat de boom niet, dus "directe kinderen van de
-  tab-tid" is de juiste filterregel.
-- De custom functions **`horcatSubTids`** en **`horcatSubLabels`** staan in het
-  project en zijn tegen de echte respons nagerekend.
-
-| tab | `horcat` | naam in de boom | subcategorieën |
-|---|---|---|---|
-| Activiteiten | 17969 | Activiteit | 26 |
-| Cultuur | 17963 | Cultuur & Info | 15 |
-| Eetgelegenheden | 34 | Eetgelegenheden | 52 |
-| Overnachten | 17965 | Overnachten | 4 |
-| Uitgaan | 17967 | Uitgaansgelegenheid | 19 |
-| Verhuur/catering | 17968 | Verhuur, Verkoop & Catering | 7 |
-
-⚠️ De naam van de wortelterm wijkt soms af van het tablabel (*Uitgaan* vs
-*Uitgaansgelegenheid*) — onschadelijk, er wordt op **tid** gefilterd.
-
-**Waarom het niet zonder dat endpoint kan:** het veld `categorie` van
-`flutterflowmobiel_establishments` bevat *alle* labels van een zaak, over al zijn
-hoofdcategorieën heen. Tab *Eetgelegenheden* levert zo 57 labels op met o.a.
-"Catering" (26x); tab *Cultuur* geeft "Cafe" (11x). Een zaak die op twee tabs
-staat is uit die respons principieel niet toe te wijzen aan de juiste
-hoofdcategorie. Met `parent_tid` uit `horecacategorieen` is dat één filterregel.
+**B — categoriedropdown per tab: ✅ af** (nagemeten 2026-09-19 avond): de
+`FlutterFlowDropDown` op `horecagelegenhedenOverzichtCurrent` hangt aan
+`horcatOptiesVoorTab` / `horcatLabelsVoorTab` met de TabBar-index. Daarmee is P2-24
+helemaal rond; dit blok kan weg zodra Bob 'm op het toestel goedkeurt.
 
 **Niet oplosbaar, geaccepteerd:** FlutterFlow zet op de `On Change`-trigger van
 het zoekveld een **`EasyDebounce` van 2000 ms** die nergens instelbaar is. De