Przeglądaj źródła

Taak 116: sessie-verlopen-melding nog visueel bevestigen

Detectie is bewezen (productie geeft 403 + "anonymous" bij ongeldige cookie,
export en analyze schoon), alleen de melding zelf is nog niet op een toestel
gezien. Testrecept van 1 minuut erbij, mee te nemen bij de volgende build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 1 dzień temu
rodzic
commit
9abab862d0
1 zmienionych plików z 53 dodań i 18 usunięć
  1. 53 18
      TASKS.md

+ 53 - 18
TASKS.md

@@ -45,7 +45,8 @@ Google Play en één doorloop die alleen Bob kan doen.
 | **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 |
 | ~~115~~ | ~~AdBanner verplaatsen~~ | ✅ **AF** (Bob 2026-09-20, export-geverifieerd): volgorde is nu slider → banner → filterbalk → lijst |
-| **116** | AdBanner springt bij het laden | ✅ Container + responsive hoogte staat goed. ⚠️ Eén restpunt: de oude `Padding(top 15)` zit nú **binnen** die Container en eet 15 van de 50 dp |
+| ~~116~~ | ~~AdBanner springt~~ | ✅ **AF** (Bob 2026-09-20): Container `65/65/105/105` mét de padding erin, dus de banner krijgt zijn volle 50 resp. 90 dp én de lucht tot de slider blijft |
+| **120** | 12 hardcoded kleuren aan thematokens binden | Alle 12 zijn exact gelijk aan een bestaand token, dus nu onzichtbaar — maar ze lopen niet mee bij een themawijziging. Eigen blok hieronder |
 | ~~117~~ | ~~Kalenderpermissie eruit~~ | ✅ **AF** (Bob 2026-09-20, export-geverifieerd): `READ_CALENDAR`/`WRITE_CALENDAR` én `NSCalendarsUsageDescription` zijn weg; `CAMERA` staat er nog (terecht) |
 | **118** | AdMob EU-consentbericht | ⚠️ Half: de FlutterFlow-toggle staat goed, maar het bericht moet in de **AdMob-console** gepubliceerd zijn. Eigen blok hieronder |
 | **119** | Besluit: App Links voor `https://` | Gedeelde links openen nu altijd de browser, nooit de app. Post-launch keuze |
@@ -268,28 +269,39 @@ Verse export bevestigt de body-`Column` van `PUitgaanPage`:
 `[slider (if !zoekOpen), Container > AdBanner, Expanded > FilterBalkComponent,
 Expanded > lijst]`. Precies de gevraagde volgorde.
 
-### 116 · AdBanner-hoogte — ⚠️ één restpunt · Eigenaar: Bob
+### ~~116~~ · ✅ AdBanner-hoogte — AF (2026-09-20)
 
-**Gedaan en geverifieerd:** de `Container` staat er met `height` als Responsive
-Value `50 / 50 / 90 / 90`, en de AdBanner heeft **geen** eigen width/height meer
-(dus adaptive, zoals bedoeld). De layout springt hiermee niet meer.
+Eindstand in de export: `Container(height: 65/65/105/105) > Padding(top 15) >
+FlutterFlowAdBanner` zonder eigen width/height (dus adaptive). De banner houdt
+daarmee zijn volle 50 dp op telefoon en 90 dp op tablet over, en de 15 dp lucht
+tot de slider — die Bob er bewust in had gezet — blijft staan.
 
-⚠️ **Restpunt dat ik over het hoofd zag toen ik het recept gaf:** de oude
-`Padding(top: 15)` die om de banner zat, zit nu **binnen** die nieuwe Container.
-De Container geeft 50 dp, de padding pakt daar 15 van af, dus de banner houdt er
-**35** over terwijl hij er 50 wil. Constraints winnen van een gewenste hoogte, dus
-de advertentie wordt aan de onderkant afgeknepen — zonder foutmelding, en met test
-ads makkelijk over het hoofd te zien.
+🔸 De zwarte laadtekst van `FlutterFlowAdBanner` blijft hoger dan de Container en
+tekent dus even buiten zijn kader. Inherent aan de gegenereerde widget, niet vanuit
+de builder te clippen. De layout beweegt niet meer, en dat was het doel.
 
-**Kies er één:**
-- **Padding op 0** (de banner staat nu toch al los onder de slider), of
-- **hoogte op `65 / 65 / 105 / 105`** als je die 15 dp witruimte erboven wilt houden.
+### 120 · 12 hardcoded kleuren aan thematokens binden · Eigenaar: Bob
 
-🔸 Los daarvan blijft de zwarte laadtekst van `FlutterFlowAdBanner` hoger dan de
-Container en tekent dus even buiten zijn kader. Dat is inherent aan de gegenereerde
-widget en niet vanuit de builder te clippen; met test ads laadt hij snel genoeg om
-het niet te merken. De layout zelf beweegt niet meer, en dat was het doel.
+Gemeten op de verse export van 2026-09-20 (dode kopieën uitgefilterd). Dit is de
+staart van P1-33: daar is destijds het **rood** opgeruimd, grijs en groen bleven
+staan.
 
+| kleur | = token | aantal | waar |
+|---|---|---|---|
+| `Color(0xFFEEEEEE)` | **Alternate** | 9 | kaartranden op `uitgaansevenementAanmaken` (4) en `stadsactiviteitAanmaken` (5) |
+| `Color(0xFF09B34A)` | **Tertiary** | 2 | `HorecagelegenheidoverzichtKaart` + `tagCategorieComponent` (het groene categorielabel) |
+
+**Nu onzichtbaar** — de hexwaarden zijn exact gelijk aan de tokens, dus er verandert
+niets aan het beeld. Het punt is onderhoud: wijzig je ooit `alternate` of
+`tertiary` in Theme Settings, dan lopen deze elf plekken niet mee en krijg je twee
+tinten door elkaar.
+
+**Doen:** per widget het kleine **kleurblokje** vóór de kleurnaam aanklikken (niet
+de tekst — dan maak je er weer een hex van) → in "Choose a Color" onderaan de lijst
+**Theme Colors** → *Alternate* resp. *Tertiary*. Sluit met de X, niet met Escape
+(Escape laat de tree-selectie terugspringen naar de pagina-root).
+
+Geen haast, geen blokker — prima klusje voor tussendoor.
 ### ~~117~~ · ✅ Kalenderpermissie eruit — AF (2026-09-20)
 
 Bob heeft Calendar uitgezet in App Settings → Permissions. Verse export bevestigt:
@@ -668,6 +680,29 @@ werkelijkheid gewoon events van vandaag waren die al begonnen waren — precies
 het `>= -2 uur`-filter hoort weg te laten. Staat ook al in `CLAUDE.md`; ik trapte
 er alsnog in.
 
+### Taak 116 · Sessie-verlopen-melding één keer visueel bevestigen · Eigenaar: Bob
+
+De 403-detectie (2026-09-20) is volledig geverifieerd op code- en serverniveau:
+export bevat alle onderdelen, `dart analyze` 0 errors, en productie antwoordt bij
+een ongeldige cookie met `403 ["Toegang geweigerd voor gebruiker anonymous"]` —
+precies wat `drupalRequest` detecteert. **Alleen nog niet met eigen ogen op een
+toestel gezien.** Geen aparte build voor starten; meenemen bij de eerstvolgende
+keer dat er toch een build draait.
+
+Test in drie stappen (~1 min):
+1. Log in de app in en open Favorieten (moet normaal laden).
+2. Wis de sessie server-side — vervang `<uid>` door je eigen uid:
+   ```
+   ssh aegir-o1 "drush @uitgaanskrant.com php-eval \"db_delete('sessions')->condition('uid', <uid>)->execute();\""
+   ```
+3. Ververs Favorieten in de app. Verwacht: rode balk *"Je sessie is verlopen. Log
+   opnieuw in."* met knop **Inloggen**, en de pagina klapt naar zijn uitgelogde
+   weergave.
+
+Werkt het niet, dan zit het in laag 2 (`VerbindingsBanner`), niet in de detectie —
+die is hierboven al bewezen. Controleer dan `adb logcat | grep "SESSIE VERLOPEN"`:
+staat die regel er wél, dan komt de melding niet door en is het de SnackBar-logica.
+
 ### Taak 115 · Autofill: wachtwoordmanager op de loginpagina · Eigenaar: Claude (Bob plant een losse sessie)
 
 **Doel:** de gebruiker zijn inloggegevens door Android/iOS laten opslaan en