Ver código fonte

Testronde 2026-09-22: bevindingen vastgelegd als taak 132

Volledige doorloop op telefoon- en tablet-emulator met een verse release-APK.
0 analyse-errors, geen exceptions in logcat. Belangrijkste bevindingen:
niet-scrollende zaakpagina (halve Info-tab onbereikbaar), zoekterm die van
Home naar PUitgaanPage lekt met een leeg zoekveld, en een introtekst op
stadsactiviteitAanmaken die directe publicatie belooft terwijl de backend
altijd ongepubliceerd opslaat.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 6 horas atrás
pai
commit
d2be050a4d
1 arquivos alterados com 124 adições e 1 exclusões
  1. 124 1
      TASKS.md

+ 124 - 1
TASKS.md

@@ -363,6 +363,129 @@ géén globe en geen EN-vertaling. Dat is een bewuste beperking.
 aangemeld maar nooit op de bevestigingslink geklikt en krijgen dus niets. Geen
 app-probleem, wel het sterkste argument voor `confirm = FALSE` in de app.
 
+## 🧪 132 · Bevindingen uit de testronde van 2026-09-22 · Eigenaar: nader te bepalen
+
+Volledige doorloop op **emulator-5556 (telefoon, uitgelogd)** en **emulator-5554
+(tablet, ingelogd als bobcity)**, verse release-APK uit een eigen export.
+`dart analyze` gaf **0 errors**; er is geen enkele exception of overflow in
+`logcat` gevallen. Offline-gedrag, netwerkherstel, zoeken, datumfilters,
+categoriefilter, login-foutafhandeling en de nieuwsbrief-toggles werkten alle
+correct. Hieronder wat wél mis is, op volgorde van ernst.
+
+### 132-A · `HorecagelegenheidCurrent` scrollt niet — halve zaakpagina onbereikbaar
+
+Het bestand bevat **0 `SingleChildScrollView`**; de vier tabs zijn kale
+`Column`s in een `TabBarView`. Op een telefoon (411 dp) past daar ná de
+fotostrip, titel en tabbalk nog ongeveer één regel in, en de knop *Alle
+horecagelegenheden* dekt de rest af. Gemeten op BAUT ZUIDAS (nid 50954): van de
+Info-tab zijn **telefoonnummer, e-mail en de volledige "over"-tekst** niet te
+bereiken — de regel *Openingstijden …* wordt middendoor gesneden en er is geen
+scroll. Op tablet valt het minder op, maar het speelt daar ook.
+
+Fix: de Column van elke tab scrollbaar maken (let op het recept in `CLAUDE.md`:
+eerst elke `Expanded` eruit, anders weigert FlutterFlow het).
+
+### 132-B · Zoekterm lekt van Home naar `PUitgaanPage`, met een leeg zoekveld
+
+`FFAppState().zoekterm` is globaal, maar `FilterBalkComponent` maakt zijn
+`TextEditingController` in `initState` **leeg** aan
+(`_model.textController ??= TextEditingController()`, geen `..text = …`).
+Reproductie: op Home zoeken op `jazz` → menu → Gemeente → Uitgaan. De lijst
+toont dan exact de 3 jazz-treffers van Amsterdam (nagemeten tegen
+`flutterflowmobiel1?zoek=jazz`), terwijl het zoekveld *Zoek op titel* als
+placeholder toont. De gebruiker ziet een vrijwel lege pagina zonder oorzaak.
+
+Fix: *Initial Value* van het TextField binden aan App State `zoekterm` (het veld
+zit achter `if (FFAppState().zoekOpen)` en wordt dus pas gebouwd nadat de state
+gevuld is — de bekende "te laat"-valkuil speelt hier niet). Alternatief: de
+zoekterm wissen bij het verlaten van de pagina.
+
+### 132-C · Introtekst `stadsactiviteitAanmaken` belooft iets dat niet gebeurt
+
+Sleutel **`rupw26n4`** (NL én EN) zegt *"Heb je stadsredacteur-rechten voor deze
+plaats, dan staat je activiteit direct online; anders kijken we hem eerst na."*
+`_custom_stadsactiviteit_create()` zet echter **onvoorwaardelijk `status = 0`**,
+óók voor een account met stadsrechten (zie het domeinblok in `CLAUDE.md`). De
+tekst van `uitgaansevenementAanmaken` (`vkjvzuqz`) klopt wél.
+
+Fix: tekst aanpassen naar "we kijken hem eerst na", in beide talen.
+
+### 132-D · Vier Engelse labels staan op de verkeerde tekst (`Duplicate`-erfenis)
+
+| bestand | sleutel | nl | en (fout) |
+|---|---|---|---|
+| `evenement_horecagelegenheid_widget.dart:1253` | `jxlwje5u` | Bezorgen | Opening hours |
+| idem `:1465` | `usg8k534` | Bezorgt in | Opening hours |
+| idem `:1549` | `paqq93tp` | Betaalmogelijkheden | Opening hours |
+| `horecagelegenheid_current_widget.dart:529` | `jwojezxv` | Agenda | User |
+
+Verder zijn álle 219 gerenderde sleutels vertaald (0 lege `en`).
+
+### 132-E · Rechts uitgelijnde elementen missen hun rechterpadding
+
+Op `EventCurrent` raakt de **agenda-knop** exact de schermrand (de deelknop
+ernaast heeft wél ruimte), net als het categorielabel eronder. Op tablet valt
+het **favorietenhartje** op `HorecagelegenheidCurrent` zelfs half buiten beeld.
+
+### 132-F · Omschrijving wordt middendoor gesneden bij meerdere categorielabels
+
+Op een Home-kaart met 4 labels (die op 2 regels vallen) wordt de omschrijving
+zonder "…" afgekapt — zie *Ondernemend Dijk en Waard* op de tab Cultuur & Info.
+De labels eten de ruimte op die de responsive `Max Lines` veronderstelt. Bij één
+label klopt het wel. Overweeg de labels op één regel te begrenzen, of de
+omschrijving één regel korter.
+
+### 132-G · Lege lijst op het horeca-overzicht toont alleen een groot logo
+
+Kies je een categorie zonder treffers (in Amsterdam geldt dat voor 9 van de 13
+opties op de tab Activiteiten, want de dropdown toont de **hele taxonomie**, niet
+wat er in die plaats staat), dan verschijnt een kaal `logo800px.png`. De horeca-
+detailpagina doet dit al goed met `LegeLijstComponent` ("Geen evenementen
+gevonden…"). Hergebruik die hier — dat is de goedkoopste fix; het filteren van de
+dropdown op aanwezige categorieën kan niet betrouwbaar (de lijst is gepagineerd).
+Zelfde punt voor de **Bezorgen**-tab van een zaak zonder bezorginfo: die is nu
+volledig leeg.
+
+### 132-H · Favorieten is uitgelogd een leeg scherm
+
+Tab 1-3 tonen niets en geen uitleg; de uitnodiging *"Met een account bewaar je
+favoriete gemeenten…"* staat op tab 4, twee tabs naar rechts. Verwijs vanaf de
+eerste tab naar die knop (of toon `LegeLijstComponent` met die tekst).
+
+### 132-I · Kleine punten
+
+- **Build-stempel zichtbaar voor eindgebruikers.** `functions.buildStempel()`
+  staat onderaan de **drawer** én op **Favorieten** en toont `onbekend` zolang er
+  geen `--dart-define=BUILD_TS=…` meegaat. Weghalen vóór livegang, of vullen.
+- **Datums in `MijnProfiel`** staan ruw (`2026-09-22 06:06:00`) terwijl de rest
+  van de app *dinsdag 22 sep, 14:00* gebruikt. Geldt voor *Mijn evenementen* en
+  *Eigen activiteiten*.
+- **Kopie-knop is nog `primary`-rood** (restpunt van 127-C) en staat los
+  gecentreerd tússen twee kaarten, waardoor hij bij de verkeerde lijkt te horen.
+- **Persoonlijke agenda toont overal "Binnenkort meer…"**:
+  `favorieten_widget.dart:435` geeft hardcoded `inhoud: null` mee, terwijl alle
+  andere velden netjes uit `$.veld` komen. Vraag: levert
+  `favorieten_agenda.json` een omschrijvingsveld? Zo ja, binden.
+- **Zoekveld krijgt geen focus** als je het opent met het vergrootglas — je moet
+  er zelf nog in tikken.
+- **Login-melding** zegt *"Controleer je gebruikersnaam en wachtwoord"* terwijl
+  het veld *E-mailadres* heet.
+- **Tabnamen inconsistent**: *Favoriete gemeenten* (kleine g) naast *Favoriete
+  Gelegenheden* (hoofdletter G).
+- **Testadvertenties staan nog aan** (zichtbaar op `PUitgaanPage` en het
+  horeca-overzicht); op het horeca-overzicht legt de 468×60-banner zich over de
+  onderste kaart heen. Zie ook G0.6.
+
+### Wat expliciet GOED was
+
+Offline starten (rode banner *Geen verbinding met uitgaanskrant.com* + werkende
+knop **Opnieuw**, geen crash, geen grijs blok) · netwerkherstel · de vier
+datumfilters (nagemeten tegen de API) · zoeken op titel · de tab-bewuste
+categoriedropdown · login-foutafhandeling · de nieuwsbrief-toggles, die per rij
+onafhankelijk schakelen en netjes `subscribe`/`unsubscribe` met CSRF-token
+sturen (status 200) · `EventCurrent` inclusief het horeca-blok, ook als je er via
+de persoonlijke agenda komt · de responsive 1/2/3-kolommen op tablet.
+
 ## 🔔 129 · Sessie-verlopen-melding — verifiëren · Eigenaar: Bob (andere chat)
 
 **Bob 2026-09-21: niet in deze chat oppakken, alleen noteren.**
@@ -1080,7 +1203,7 @@ selecteert de dropdown wél de juiste waarde maar verstuurt de create-actie leeg
 De page states worden pas bij het indienen gelezen, dus die mogen gewoon in
 On Page Load — daar speelt het timingprobleem niet.
 
-#### 127-E · Activiteitenformulier voorvullen · ⚠️ na 124 · Eigenaar: n.t.b.
+#### 127-E · Activiteitenformulier voorvullen · Eigenaar: Claude — bezig (2026-09-22)
 
 24 bindingen. Tien TextFields (`titel`, `omschrijving`, `organisator`, `contact`,
 `adres_straat` → *Adres*, `adres_plaats` → *Plaats*, `adres_postcode`,