Преглед на файлове

TASKS.md: P0-6 volledig afgerond (hintText geverifieerd), P1-18-regressie gevonden (success-check altijd waar + debug-dialog), P0-3 punt 1 bleek toch niet toegepast (verse export bevestigt)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob преди 1 месец
родител
ревизия
d460fab9e9
променени са 1 файла, в които са добавени 67 реда и са изтрити 39 реда
  1. 67 39
      TASKS.md

+ 67 - 39
TASKS.md

@@ -100,32 +100,12 @@ tijd stoppen goed te doen.
 
 ## P0 — blokkeert livegang
 
-**P0-6 · Eigenaar: Bob (restpunt — hintText, zie hieronder).** ~~De
-Login-pagina toonde onder de "Wachtwoord vergeten?"-link 5 interne
-test-/debug-navigatieknoppen~~ — **verwijderd (Claude, builder,
-2026-08-09)**, live bevestigd op zowel `emulator-5554` (telefoon) als
-`emulator-5556` (tablet): geen enkele van de 5 knoppen
-("HorecagelegenhedenOverzichtPage", "selectprovinciegemeent",
-"horecagelegenheid 57897", "puitgaan", "kanwegtest") staat nog in de
-Widget Tree of op het scherm. Geen regressie geconstateerd elders op
-de pagina (zie ook de valse-alarm-notitie bij P1-17 hieronder).
-
-**Resterend (sub-bevinding, hetzelfde scherm) — geblokkeerd voor
-Claude, klein klusje voor Bob:** de e-mail- en wachtwoordvelden hebben
-nog geen echte placeholder-tekst — `hintText` staat nog op de
-FlutterFlow-standaardtekst "TextField" (keys `d507d3b9`/`t8h5f8ir` in
-`lib/flutter_flow/internationalization.dart`, `nl: 'TextField'`,
-`en: ''`, live bevestigd op beide velden op beide emulators). **Fix:**
-widget `UsernameField`/`PasswordField` selecteren → rechterpaneel →
-zoek "hint" → **Hint Text**-veld → klik het kleine bolletje/
-globe-icoontje rechts van het "Text"-label (Bob's eigen tip, 2026-08-09)
-om de vertaling te openen, i.p.v. direct in het tekstveld typen. Zet
-`nl: 'E-mailadres'` / `en: 'Email address'` resp. `nl: 'Wachtwoord'` /
-`en: 'Password'`. **Waarom niet door Claude:** het rechterpaneel is op
-dit scherm (393px-breed mobile-canvas-preview) te smal geclipt om dat
-globe-icoontje te bereiken — noch direct typen in het Hint Text-veld
-zelf werkte (geen enkele druk/toets kwam aan, ook niet via
-Localization-instellingen los, zie CLAUDE.md "bekende problemen").
+*(P0-6 volledig afgerond 2026-08-09 avond, incl. hintText-restpunt —
+door Bob zelf gedaan in de builder, geverifieerd via verse
+`flutterflow export-code`: keys `d507d3b9`/`t8h5f8ir` in
+`internationalization.dart` staan nu op `nl: 'E-mailadres'`/`en:
+'Email address'` resp. `nl: 'Wachtwoord'`/`en: 'Password'`. Uit deze
+lijst verwijderd.)*
 
 **P0-1 · Eigenaar: Bob (10 sec klusje) — bevestigd nog open
 (2026-08-05).** Home-slider crasht (RangeError) bij 0 API-resultaten.
@@ -159,7 +139,14 @@ tap-actie is losgekoppeld naar **P2-8**. Nog open:
    Flexible** (staat nu op None — rechterpaneel-Expansion-control was
    niet bereikbaar voor Claude, clipping). Zonder Flexible kan een
    lange gemeente/provincienaam een `RenderFlex overflowed`-fout geven
-   op smalle schermen.
+   op smalle schermen. **Bob dacht dit gedaan te hebben (2026-08-09
+   avond), maar geverifieerd via verse export: nog steeds niet
+   toegepast** — de Text staat nog kaal (geen Flexible/Expanded) in
+   `header_buttons_component_widget.dart` regel 199-216. Vermoedelijk
+   hetzelfde "edit hield niet vast"-patroon als elders gedocumenteerd
+   in `CLAUDE.md` (rechterpaneel-clipping) — check na een nieuwe
+   poging opnieuw via een verse export, niet alleen op het
+   rechterpaneel zelf vertrouwen.
 2. `EventCurrent` heeft geen gedeeld header-component (AppBar → Row
    met IconButtonBack/IconButtonDrawer, geen naam-Text). Toevoegen:
    nieuwe Text-widget als 3e kind van die Row → Conditional Value
@@ -220,16 +207,32 @@ regel in de knop bereikt wordt — dat gebeurt dus altijd, ook al
 crasht de knop daarna nog steeds. Live bevestigd (emulator, testaccount
 `bobcity`): na inloggen + navigeren naar `kanweg` komt er nu een
 `Cookie`-header mee en status 200 i.p.v. de eerdere lege/403-request.
-**Resterend (cosmetisch, builder-only):** de If/Then-conditie ná de
-Custom Action-stap in de Inloggen-knop's Actions aanpassen van
-"resultDrupalLogin is true" naar een check op het JSON-veld
-`$.success` (zelfde recept als het bekende
-"Is Set and Not Empty tegen valueOrDefault"-patroon hieronder: bind
-tegen de rauwe `getJsonField($.success)`-expressie, operator "Is
-Set"/"== true"), zodat de succes-/foutmelding weer verschijnt. Claude
-kon het Actions-paneel voor deze knop niet vinden ondanks uitgebreid
-zoeken (widget-tree, canvas, rechtsklik-context-menu's, Cmd+K) — zie
-CLAUDE.md voor wat wel/niet geprobeerd is.
+**Update 2026-08-09 avond: Bob heeft de conditie zelf aangepast — de
+crash is inderdaad weg, maar de nieuwe conditie heeft een andere bug
+en er kwam een tweede probleem aan het licht, allebei bevestigd via
+verse `flutterflow export-code` (`login_widget.dart:534-538`):**
+1. **De conditie is nu `getJsonField(_model.resultDrupalLogin,
+   r'''$.success''') != null` — dat staat feitelijk altijd op waar.**
+   `drupalLogin` retourneert namelijk ALTIJD een `success`-veld, zowel
+   bij een geslaagde login (`success: true`) als bij een mislukte
+   (`success: false`, zie `drupal_login.dart`) — het veld is dus nooit
+   afwezig/`null`, alleen de *waarde* verschilt. Een "Is Set"-achtige
+   `!= null`-check ziet dat verschil niet. **Gevolg: een fout
+   wachtwoord of netwerkfout wordt nu stil behandeld alsof het inloggen
+   gelukt is** — de `else`-tak met "Inloggen mislukt..." is
+   onbereikbare code geworden, en `FFAppState().userSessionid` etc.
+   worden gevuld met lege/`"null"`-strings uit de mislukte respons.
+   **Fix:** conditie moet de daadwerkelijke boolean-waarde vergelijken
+   (`== true`), niet alleen of het veld aanwezig is — in de builder dus
+   niet "Is Set" maar een echte gelijkheids-check tegen `true`.
+2. **Nieuw zichtbaar geworden (was eerder gemaskeerd door de crash):**
+   ná de if/else staat een onvoorwaardelijke `showDialog(...)` (regel
+   577-593) die bij **elke** inlogpoging een AlertDialog met titel
+   "melding" toont met de rauwe JSON-respons als platte tekst erin —
+   oogt als achtergebleven debug/testcode, vergelijkbaar met de al
+   verwijderde testknoppen van P0-6. Nu de crash weg is, ziet elke
+   gebruiker dit bij elke inlogpoging. Aanbevolen: dit dialoogblok
+   (regel 577-593) verwijderen.
 
 **P1-1 · Eigenaar: Bob (mechanisch, ~10 sec per stuk) — audit
 compleet, wachtend op Bob.** Loading/foutafhandeling-patroon uitrollen
@@ -530,7 +533,7 @@ 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: Onbepaald.** Op `HorecagelegenhedenOverzicht` →
+**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
@@ -578,7 +581,8 @@ live aanwezig, **nog geen verse volledige stack trace gevangen**
   `horecagelegenheden_overzicht_widget.dart:388-390`, of iets in het
   logo/categorie-tag-`Stack` — nog niet vastgesteld.
 
-**P1-19 · Eigenaar: Onbepaald.** Nieuwe, nog niet eerder gedocumenteerde
+**P1-19 · Eigenaar: Bob (Wrap Widget-menuklik registreert niet, zie
+hieronder — Claude geblokkeerd).** Nieuwe, nog niet eerder gedocumenteerde
 `RenderFlex overflowed`-crash op de **Home-pagina**, live bevestigd met
 een **volledige, verse stack trace** (2026-08-09, via de
 `setsid`-interactieve-`flutter run`-sessie uit CLAUDE.md, 2x identiek
@@ -612,6 +616,30 @@ 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.**
+- **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
+  te selecteren via de Widget Tree (zelfde kalibratietruc als
+  CLAUDE.md beschrijft: klik op nominale y-positie landde structureel
+  63px lager, dus y-63 gebruikt — dat werkte hier wél consistent,
+  in tegenstelling tot de "niet-constante offset" die P1-15 blokkeerde).
+  Rechtsklik → contextmenu opende betrouwbaar met **"Wrap Widget
+  (Ctrl+B)"** zichtbaar op exact geverifieerde coördinaten (bevestigd
+  met `zoom`). Maar **de klik op dat menu-item registreert niet** — 3x
+  geprobeerd op de exacte tekst-coördinaten (menu's positie verschilt
+  wel steeds licht per keer geopend, maar telkens opnieuw met `zoom`
+  geverifieerd vóór de klik) + 1x de `Ctrl+B`-sneltoets direct op de
+  geselecteerde Row — geen van alle opende een wrap-type-dialoog of
+  wijzigde de tree (geen nieuwe parent-node, geen dubbele widget). Een
+  van de pogingen landde net naast het menu en deselecteerde terug naar
+  de root-component (geen schade, gewoon opnieuw moeten selecteren).
+  **Nieuw exemplaar van het bekende "menu-actie-klik registreert niet
+  zichtbaar"-patroon**, nu ook bevestigd op "Wrap Widget" specifiek
+  (niet eerder in CLAUDE.md genoemd voor dit menu-item). **Concreet voor
+  Bob:** component `HomeUitgaantabelKaartComponent` → Widget Tree →
+  `ListView` → `Container` → `Row` → `Container` (2e kind, na de
+  image-`Stack`) → `Row` (bevat `tagCategorieComponent` als enige kind)
+  → rechtsklik → **Wrap Widget (Ctrl+B)** → kies **Wrap** i.p.v. Row.
 
 **P1-9 · Eigenaar: Onbepaald.** Visuele polish (los, per pagina) —
 resterend na sessie 2026-08-06: