فهرست منبع

Taken 99/100/101 af + taak 102: ontbrekend splash-asset toegevoegd

99 - Loginpagina: beide invoervelden en de knop Inloggen op double.infinity,
     padding 24/24 op de Column in de Stack. 0x width:200 over.
     Les: er is geen Container-node in de tree; Width zit op het TextField zelf.
100 - drawerComponent: logo-padding Top 8 -> 40, staat niet meer onder de
     statusbalk.
101 - Crashlytics ontsloten (Pi-hole-allowlist) en eerste rapporten zichtbaar.

102 (nieuw) - Crashlytics toonde "Unable to load asset logo800px.png". Gemeten:
     testartefact van een export zonder --include-assets. Maar het legde een echt
     gat bloot: logo_1080x2160.png (de splash uit nav.dart) ontbrak in de
     projectmap. Opgehaald en toegevoegd; beide gebruikte assets zijn nu compleet.
     Adaptive icon nagemeten: leesbaar, wel randkrap - cosmetisch, niet blokkerend.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 8 ساعت پیش
والد
کامیت
f5418ef77a
2فایلهای تغییر یافته به همراه70 افزوده شده و 5 حذف شده
  1. 70 5
      TASKS.md
  2. BIN
      assets/images/logo_1080x2160.png

+ 70 - 5
TASKS.md

@@ -23,7 +23,8 @@ oppakken.
 | **98** | "Zet in mijn agenda"-knop op een evenement (`add_2_calendar`) | Claude — **BEZIG** (2026-09-19). 98A en 98B zijn af; alleen de knop op `EventCurrent` rest nog |
 | **65** | Release-build doorloop | ✅ **Uitgelogde deel af 2026-09-19** (0 crashes; 65a, 65b en 65d-kleur opgelost; 65c + 65e open). Rest = ingelogd + Xiaomi → Bob |
 | **P2-24 B** | Categoriedropdown horeca-overzicht | 🟡 **grotendeels af** — endpoint live, API Call, 4 custom functions en de dropdown staan er en zijn export-geverifieerd. Alléén de `tabIndex`-binding lukt Claude niet → **4 stappen voor Bob**, zie P2-24 B hieronder |
-| **99/100/101** | Loginvelden breed · drawer-logo onder statusbalk · Firebase-console-check | Claude — **BEZIG** (2026-09-19, sessie 'losse-restpunten'); Bob klikt, Claude verifieert. ⚠️ Crashtest-knop opruimen NIET nu: staat op `Favorieten`, en die pagina is van 88B |
+| ~~99/100/101~~ | Loginvelden · drawer-logo · Crashlytics-console | ✅ **ALLE DRIE AF 2026-09-19** (export-geverifieerd). ⚠️ Crashtest-knop opruimen blijft open: staat op `Favorieten`, pagina van 88B |
+| **102** | Ontbrekend asset `logo_1080x2160.png` in de projectmap | 🔴 **Nieuw 2026-09-19** — zie het eigen blok; raakt elke lokale build |
 | **G0.6** | Play-screenshots schieten | Browserloos op beide AVD's, ±10 min — zeg het en het gebeurt |
 
 ## 👤 BOB — OPEN, in volgorde van wat de livegang blokkeert
@@ -273,6 +274,67 @@ snackbar, een **Navigate To → favorieten** met **Allow Back Navigation uit**.
 Export bevestigt `context.goNamed(FavorietenWidget.routeName);` binnen
 `if (_model.resultDrupalLogin != null)`, dus geen terugweg naar het inlogscherm.
 
+### 🆕 102 · Ontbrekend asset + de asset-crash in Crashlytics · Eigenaar: Bob (upload) + Claude (meten)
+
+**Gevonden 2026-09-19 dankzij de zojuist ontsloten Crashlytics.** Het dashboard
+toont naast de bewuste testcrash een tweede issue:
+`PlatformAssetBundle.loadBuffer` — *Unable to load asset:
+"assets/images/logo800px.png"*, `com.uitgaanskrant.app`, 3 events / 1 user,
+versie 1.0.0, via `asset_bundle.dart:373`.
+
+**Diagnose (gemeten, niet aangenomen):**
+- `assets/images/logo800px.png` **bestaat** in de projectmap (11 KB) en
+  `assets/images/` staat in `pubspec.yaml:183`. Een correcte build heeft het dus.
+- Een verificatie-export **zonder `--include-assets`** bevat alleen `favicon.png`
+  (opnieuw bevestigd op `/tmp/ff-chk3`). Een APK daaruit crasht op dit asset —
+  precies het bekende patroon uit `CLAUDE.md`.
+- De drie build-mappen die nog op schijf staan (`ff-v3`, `ff-v4`, `ff-cr`) hébben
+  het asset alle drie, dus de schuldige build is al opgeruimd.
+- **Conclusie: testartefact van onszelf, geen bug in de app.** Wél het bewijs dat
+  de keten leeft — dit is het eerste echte crashrapport dat het dashboard haalt.
+
+🔴 **Maar het legde een tweede, echt gat bloot.** De levende code gebruikt exact
+twee assets; één daarvan ontbreekt in de projectmap:
+
+| gebruikt in de code | in `assets/images/`? |
+|---|---|
+| `logo800px.png` | ✅ |
+| **`logo_1080x2160.png`** (de splash uit `nav.dart`, taak B1b) | ❌ **ontbreekt** |
+
+FlutterFlow host het plaatje in de cloud, dus de builder en een export **mét**
+`--include-assets` hebben het gewoon (`/tmp/ff-v3` had het). Alleen de lokale
+projectmap is sinds Bob's upload nooit met die vlag ververst. **Wie uit de
+projectmap lokaal bouwt, krijgt dus een app die op de splashscreen crasht.**
+
+**Wat er moet gebeuren:**
+1. Eenmalig `flutterflow export-code ... --include-assets` en de map
+   `assets/images/` bijwerken, zodat de repo compleet is. (Claude kan dit; het
+   raakt alleen `assets/`, geen `lib/`.)
+2. **Vaste regel bij G4.2:** bouw je lokaal, dan is `--include-assets` verplicht
+   en controleer je vóór het bouwen `ls assets/images/` op méér dan `favicon.png`.
+   Neem dit op in het besluit van G0.3.
+**✅ Stap 1 is gedaan (Claude, 2026-09-19):** `logo_1080x2160.png` (845 KB) is met
+`--include-assets` opgehaald en staat nu in `assets/images/`. Beide door de code
+gebruikte assets zijn aanwezig; de projectmap is compleet.
+
+**📌 Bijvangst — adaptive icon nagemeten en gerenderd zoals Android het toont.**
+`adaptive_foreground_icon.png` is **byte-identiek** aan `app_launcher_icon.png`
+(md5 `7b0b74a3…`), 1900x1900, **0 % transparant**, buitenste 17 % volledig
+ondoorzichtig. Daardoor is `adaptive_icon_background: '#9a141d'` onzichtbaar.
+Ik heb het zichtbare deel (middelste 66,7 %) uitgesneden en er een rond en een
+squircle-masker overheen gelegd: **de tekst blijft volledig leesbaar** — Bob's
+B1-meting klopt — maar bij een **rond** masker worden de afgeronde uiteinden van
+de witte pil eraf gesneden en raakt het logo de rand. **Cosmetisch, niet
+blokkerend**; B1 blijft dus terecht op groen. Wil je het netter: een foreground
+met het logo op ~55 % van de breedte op een **transparant** vlak, dan doet
+`#9a141d` zijn werk en is er marge bij elk maskertype.
+
+3. Optioneel, 2 minuten: klik in Crashlytics de issue open en kijk of de drie
+   events binnen onze testvensters (15–19 sept) vallen — dan is de diagnose ook
+   aan die kant dichtgetimmerd.
+
+---
+
 ### 🔧 Kleine open restpunten (app)
 
 *(P2-45b, P2-45c en 76 zijn op 2026-09-19 afgerond en geverifieerd met een
@@ -546,9 +608,12 @@ netjes** (All/Today/Weekend/This week, Go Out/Cityactivities/Culture & Info).
   heeft geen overtollige breedte om in te centreren; de `Align` eromheen is wat
   het werk doet. Ditzelfde patroon (Stack met één kind → alles plakt links) kan
   elders in het project ook voorkomen.
-  *Restpunt (taak 99) — Claude/Bob BEZIG 2026-09-19, sessie 'losse-restpunten'.* De invoervelden zijn nog steeds vast
-  **200 px** breed, dus op een telefoon ruim een halve schermbreedte. Nu netjes
-  gecentreerd, maar breder (of `double.infinity` met padding) zou prettiger zijn.
+  *Restpunt — ✅ AF als taak 99 (Bob, 2026-09-19, export-geverifieerd).* De twee
+  invoervelden en de knop *Inloggen* staan nu op `double.infinity`, met
+  `fromSTEB(24, 0, 24, 0)` op de `Column` in de `Stack`; `width: 200` komt 0x meer
+  voor. ⚠️ **Les voor een volgende keer: er is GEEN `Container`-node in de tree** —
+  FlutterFlow zet `Width` als property op het `TextField` zelf en genereert de
+  `Container(width:)` pas in de export. Zoek dus niet naar een Container.
 - **✅ 65b · Header schoof naar links op `HorecagelegenheidCurrent` — OPGELOST
   2026-09-19 (Claude).** De hamburgerknop stond met zijn centrum op **x=53**
   (elders x=271/x=340) en stak dus links buiten beeld. *Oorzaak, gevonden door
@@ -594,7 +659,7 @@ netjes** (All/Today/Weekend/This week, Go Out/Cityactivities/Culture & Info).
 - **65e · "Datum" blijft Nederlands in de Engelse modus.** Het label van de
   kalenderknop komt uit de `valueOrDefault`-default `'Datum'` en is dus géén
   vertaalsleutel. Hoort bij P1-17.
-- **Taak 100 — BEZIG 2026-09-19 (sessie 'losse-restpunten').** Het **logo in de drawer
+- **✅ Taak 100 — AF (Bob, 2026-09-19, export-geverifieerd: `fromSTEB(0.0, 40.0, 0.0, 5.0)`).** Het **logo in de drawer
   staat deels onder de statusbalk** (de klok valt erachter). Gemeten op de verse export:
   `drawerComponent` is `SingleChildScrollView > Column > Row > Expanded > Padding(0,8,0,5) >
   ClipRRect > Image.asset(logo800px, 300x42)`, **0 SafeArea**. Fix = padding Top 8 -> 40.

BIN
assets/images/logo_1080x2160.png