Browse Source

TASKS: privacybeleid live op website, in-app link + Play Console-URL nog open

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 6 hours ago
parent
commit
ab1b3a5226
2 changed files with 126 additions and 75 deletions
  1. 50 0
      CLAUDE.md
  2. 76 75
      TASKS.md

+ 50 - 0
CLAUDE.md

@@ -2067,6 +2067,56 @@ de ∞) en typ gewoon het getal; `ctrl+a` is niet nodig als het veld leeg is. Ee
 klik op de ∞ zelf doet niets. Commit daarna met een klik op een **label**, niet
 op het bind-icoontje ernaast — dat opent de Set-from-Variable-dialoog.
 
+**⚠️ Theme Settings → Typography: de "Secondary Font Family"-knop verandert ÁLLE
+tekststijlen, niet alleen de stijlen die je "secondary" zou noemen.** Bevestigd
+2026-09-16: Secondary op Noto Serif zetten gaf in de export 15× `GoogleFonts.notoSerif`
+in het thema én 386 widget-plekken — élke Text in de app stond in serif, ook body en
+labels. De widget-knop "Primary Family" is dus geen garantie dat een widget de
+Primary volgt. Terugzetten op Roboto herstelde alles. **Wil je één stijl in een
+andere letter (bv. de drie Headline-stijlen in Noto Serif): klik het Font Family-veld
+ván die rij** — dat opent dezelfde Google-Fonts-picker per stijl, en de export krijgt
+dan `headlineLargeFamily => 'Noto Serif'` terwijl de rest Roboto blijft. In die picker
+landt de zoekterm pas bij de tweede klik-plus-typ (eerste keer na openen faalt altijd);
+het eerste resultaat zonder zoekterm is Roboto, dus een blinde klik is ongevaarlijk.
+
+**Een `Container` met een BoxShadow maar zónder Fill Color kleurt in zijn geheel
+grijs.** Dat was het `#C2C2C2` op `horecagelegenhedenOverzichtCurrent` (2026-09-16):
+de container om TabBar + TabBarView had `boxShadow: [Color(0x33000000)]` en geen
+`color:`, en Flutter tekent de schaduw dan door de transparante vulling heen — 20 %
+zwart over `#F2F2F2` is precies `#C2C2C2`. Fill Color op `primaryBackground` zetten
+volstaat; de schaduw blijft, alleen nog aan de randen. Herken het aan een grijs vlak
+dat óók de tabbalk kleurt en in de export nergens als hex voorkomt.
+
+**FlutterFlow-commit maken lukt wél via browser-automation — maar niet met de knop
+die "Commit" lijkt.** Route die 2026-09-16 twee keer werkte: Version-Control-icoon
+rechtsboven (het vertakkings-icoon, links van `</>`) → in het paneel de blauwe knop
+naast "current" (tooltip *Branching Options*) → **Create Commit (Ctrl+Enter)** → klik
+in het tekstveld, typ, klik **Commit**. Toast "Commit saved". Het icoontje rechts van
+"Branch History" is *Filter commits*, niet commit. De toast "Saving commit" onderin
+blijft daarna soms een uur staan; dat is geen fout, edits en exports gaan gewoon door.
+
+**Kleurdialoog-posities die 2026-09-16 een hele middag stabiel bleven (venster
+1205×980):** vanuit het **AppBar-paneel** (Background Color-swatch op (1035,214))
+opent de dialoog bovenaan: *Primary Text* op (867,547), sluiten op (993,190). Vanuit
+een Container-/Text-paneel opent hij onderaan op een van twee x-posities: lijst begint
+op x≈818 (rij *Alternate* (854,874), *Primary Background* (872,893), *Tertiary*
+(852,873)) óf op x≈906 (*Alternate* (960,873), *Secondary* (947,852)). Zoom altijd
+even vóór je klikt; een klik links van de lijst doet niets. Het hex-veld van de
+schaduwkleur zit op (877,705) resp. (874,735) — `triple_click`, `00000000`, Return
+maakt 'm "Transparent". Escape sluit deze dialoog níet altijd; de X wel.
+
+**Het tree-zoekveld pakt de eerste typ-actie na een paginawissel nooit.** Vaste
+werkwijze: klik het veld, wacht 3 s, typ, `zoom`; staat er niets, klik en typ nog
+eens. Batch nooit "typ + klik op rij 1" in één aanroep vlak na navigatie: als het
+filter niet landde, klik je een willekeurige node aan (2026-09-16 gebeurde dat 3×,
+zonder schade omdat er daarna alleen gezoomd werd).
+
+**"Search pages or components..." + één klik op het resultaat wisselt van pagina in
+±13 s** — sneller dan `navigate` (±35 s). Triple-click het zoekveld, typ de naam,
+`zoom` op het resultaatlijstje (de 1e regel ligt op y≈102 als er geen map-kop boven
+staat, y≈117 mét map-kop), klik. Verifieer aan de tab-titel dat je op de goede pagina
+zit voordat je iets aanraakt.
+
 **⚠️ "Add Background Widget" op een AppBar laat een placeholder-`Image`
 (`logo800px.png`) achter — zet je de header in de `title`-slot, dan blijft die
 placeholder in de background staan en krijg je een reuzenlogo over je header.**

+ 76 - 75
TASKS.md

@@ -322,71 +322,65 @@ componenten die eraan hingen:
 `kanweg_home_uitgaantabel_kaart_component_copy`) — in de builder mogelijk nog
 wel, daar niet gecontroleerd (geen browser gebruikt).*
 
-### 🎨 Look&feel-review 2026-09-16 — Eigenaar: Claude — bezig (sessie "look&feel doorvoeren", builder-werk sinds ±11:00 op EventCurrent, HorecagelegenheidCurrent, horecagelegenhedenOverzichtCurrent, AppBars van alle pagina’s, Theme Typography, kaartcomponenten; NIET drawerComponent)
-
-*Website (telefoon+desktop, headless Chromium) naast de app (profile-build van
-`a112e6f` op telefoon-AVD, tablet-AVD op build 14 sep). Volledig verslag met
-screenshots naast elkaar: zie het Artifact "Look & feel review 16 september"
-(link onderaan dit blok). Bewust NIET aangeraakt: `home`, `homeTabel`,
-`HomeUitgaantabelKaartComponent`, `HeaderButtonsComponent`, `drawerComponent`
-— die staan geclaimd door de sessie "zoekveld + look&feel" hierboven; chip-
-kleur, terugknop-vorm en drawer-icoon staan daar al op de lijst.*
-
-- **P1-51 · Eigenaar: Claude.** Drie headerkleuren in één app. Home = AppBar
-  `primaryText` (leisteen, zoals de site); alle andere pagina's = `info` (wit)
-  en Flutter's Material 3 legt daar bij elevation 2 een paarse tint over
-  (gemeten `#F5F3F9`); Favorieten heeft geen elevation en is echt wit. Fix:
-  op elke pagina met een AppBar de Background Color op **`primaryText`** (niet
-  het `info`-token wijzigen, dat kleurt ook de witte iconen op de oranje
-  knoppen). Pagina's: `EventCurrent`, `HorecagelegenhedenOverzichtCurrent`,
-  `HorecagelegenheidCurrent`, `HorecagelegenhedenOverzichtProvinciePage`,
-  `Favorieten`, `Selectprovinciegemeente`, `Login`, `mijnProfiel`,
-  `wachtwoordVergeten`, `stadsactiviteitAanmaken`, `uitgaansevenementAanmaken`.
-  Drawer-root (`drawerComponent`) krijgt dezelfde tint (`#F7F2FA`): expliciete
-  `secondaryBackground` — pas ná de andere sessie klaar is met dat component.
-  Verificatie: `grep -c "backgroundColor: FlutterFlowTheme.of(context).info" <widget>` → 0.
-- **P1-52 · Eigenaar: Claude.** `EventCurrent`
-  (`lib/horecagelegenhedenoverzicht/event_current/event_current_widget.dart`):
-  (a) titel-`Text` (headlineLarge, r.~326) staat in een gecentreerde `Row` zonder
-  `Expanded` → "Gratis Lunchconcert: Muze va" loopt aan beide kanten van het
-  scherm af. Wrap Widget → Flex → Expansion Expanded, Max Lines 3, links
-  uitlijnen. (b) beschrijvingscontainer (r.~750): Fill `alternate`, **rand
-  `Colors.black`**, schaduw `0x33000000` → Fill `secondaryBackground`, rand
-  `alternate`, schaduwkleur `00000000` (zelfde recept als de kaart in
-  `fa50ff5`). (c) zaak-categorielabel is `primary` (rood) en het zwevende
-  "Muziek"-label gebruikt `#25CC3E` + schaduw + radius i.p.v.
-  `tagCategorieComponent` → beide vervangen door dat component. (d) zaaknaam
-  `headlineSmall` (40 px, gecentreerd) → sectiekop 16 px kapitalen zoals de
-  site ("MEER VAN DEZE GELEGENHEID"). (e) website-URL staat als kale tekst;
-  adres zonder speldje, plaatsnaam springt in → "Website"-link in P1-23-stijl,
-  adres-Row met icoon zoals de kaarten.
-- **P2-30 · Eigenaar: Claude.** `horecagelegenhedenOverzichtCurrent`: de ruimte
-  tussen de kaarten én de tabbalk zijn `#C2C2C2` (rest van app en site:
-  `#F2F2F2`) → Fill Color van de TabBar-container en de StaggeredView-
-  achtergrond op `primaryBackground`. `HorecagelegenheidoverzichtKaart` is
-  ±500 px hoog met een 260 px-logo links en drie regels tekst: logo naar
-  ~120 px of het patroon van `HomeUitgaantabelKaartComponent` overnemen, zodat
-  er twee kaarten per scherm passen.
-- **P2-31 · Eigenaar: Bob (besluit), daarna Claude (uitvoering).** Drie
-  kaartstijlen naast elkaar: lijstkaart radius 12 + schaduw `0x33000000`,
-  sliderkaart radius 16 + schaduw, EventCurrent-kaart radius 8 + rand
-  `alternate` zonder schaduw (sinds `fa50ff5`). Site: wit, 3 px `#EEE`, geen
-  radius, geen schaduw. Voorstel: de EventCurrent-variant overal (dichtst bij
-  de site, lichte afronding past bij een app). Vier componenten, drie velden
-  elk.
-- **P2-32 · Eigenaar: Bob (besluit).** De site zet elke inhoudelijke titel in
-  Droid Serif bold; de app is 100 % Roboto — het grootste zichtbare verschil
-  dat geen bug is. Voorstel: Theme Settings → Typography → `headlineLarge/
-  Medium/Small` op **Noto Serif** 700 (Google Fonts-opvolger van Droid Serif),
-  rest Roboto. Eén thema-instelling. Pas ná P1-52(a), anders wordt de
-  afgekapte titel alleen breder.
-- **P2-33 · Eigenaar: Claude.** `HorecagelegenheidCurrent`: fotocarousel in een
-  wit vlak van ±750 px waarvan de foto's een derde vullen; adres pas na een
-  scroll; onderin permanent "Geen evenementen gevonden" + oranje knop, ook als
-  de zaak events heeft. Carousel-hoogte naar de foto-hoogte (±240 op
-  telefoon, responsive), witte achtergrond eraf, adresblok in de Info-tab met
-  dezelfde iconen als de kaarten, de "Geen evenementen"-strook alleen in de
-  Agenda-context.
+### 🎨 Look&feel doorgevoerd 2026-09-16 (Claude, builder + verse export per stap) — afgerond, restpunten hieronder
+
+*Bob's akkoord op alle voorstellen uit de review van vanochtend (Artifact:
+https://claude.ai/artifact/QGVnHcfobrEQ9yioqoCawU). Vooraf een FlutterFlow-commit
+"Kopie voor look&feel-doorvoering 16 sep" gemaakt als kopie; ná afloop een
+tweede commit "Look&feel doorgevoerd (P1-51/52, P2-30 t/m P2-33)". Alles
+export-geverifieerd, `dart analyze lib/` 0 errors, profile-build op de
+telefoon-emulator bekeken (zie screenshots in `~/uk-shots/2026-09-16/na-*.png`).*
+
+**Gedaan:**
+- **P1-51** AppBar Background Color → `primaryText` op EventCurrent,
+  horecagelegenhedenOverzichtCurrent, horecagelegenheidCurrent,
+  HorecagelegenhedenOverzichtProvinciePage, Favorieten, Selectprovinciegemeente,
+  Login, mijnProfiel, wachtwoordVergeten, stadsactiviteitAanmaken,
+  uitgaansevenementAanmaken. Export: geen levende pagina meer op `info`,
+  behalve **`thuisBezorgen`** (nieuw, sessie 47) — zie restpunt.
+- **P1-52** EventCurrent: titel in `Expanded`, links, max 3 regels, padding 8;
+  datum links (Align -1, padding 8) in *Title Medium*; beschrijvingsvak fill
+  `secondaryBackground`, rand `alternate`, schaduw transparant; categorielabel
+  `tertiary`, radius 0, geen elevation/rand. `EvenementHorecagelegenheid`:
+  zaaknaam `titleLarge` (was headlineLarge), zaaklabel `tertiary` + witte tekst
+  + padding 7/0/7/0, schaduw transparant. `EvenementInfo`: website-URL is nu
+  het label "Website" in `secondary`, onderstreept (nieuwe vertaalsleutel
+  `khjv0wcp`; EN = "Website").
+- **P2-30** horecagelegenhedenOverzichtCurrent: het grijs (#C2C2C2) was een
+  `Container` met alleen een BoxShadow en géén Fill — Fill `primaryBackground`
+  en het is weg.
+- **P2-31** één kaartstijl op alle vier levende kaarten: radius 8, rand
+  `alternate` 2 px, schaduw transparant — `HorecagelegenheidoverzichtKaart`
+  (+ padding 16→12), `HomeUitgaantabelKaartComponent`,
+  `PUitgaanSliderKaartComponent` (beide containers), `UitgaantabelKaart`.
+  `SliderUitgaanComponentSmallCurrent` wordt nergens gebruikt, overgeslagen.
+- **P2-32** Theme Settings → Typography: Headline Large/Medium/Small op
+  **Noto Serif** (per rij via de font-picker; Primary én Secondary Family
+  blijven Roboto — zie de valkuil in `CLAUDE.md`). Export: 3 stijlen
+  `GoogleFonts.notoSerif`, ±20 widget-plekken (EventCurrent-titel, zaaknaam op
+  HorecagelegenheidCurrent, sectiekoppen van beide aanmaakpagina's, twee
+  drawer-koppen), rest Roboto.
+- **P2-33** HorecagelegenheidCurrent: `container-info` rond de carousel van
+  281.5 → 200 hoog en de witte Fill eraf.
+
+**Restpunten (klein, niet geclaimd):**
+- **thuisBezorgen · Eigenaar: Claude (of sessie 47).** AppBar staat nog op
+  `info` → `primaryText`, zelfde klik als P1-51. De kaart daar is
+  `HorecagelegenheidoverzichtKaart` en volgt dus al.
+- **P1-52-rest · Eigenaar: Claude.** Adresregels in `EvenementInfo` hebben nog
+  geen speldje/winkel-icoon zoals de kaarten, en "Plaats" springt in (lege
+  Column ervoor).
+- **P2-30-rest · Eigenaar: Bob (besluit), daarna Claude.**
+  `HorecagelegenheidoverzichtKaart` blijft hoog doordat de labels in de smalle
+  rechterkolom één per regel wrappen. Optie: de `Wrap` met labels onder de
+  `Row` slepen (landt op positie 0, daarna de Row er weer boven slepen), of het
+  logo van 100 naar 72 px.
+- **P2-33-rest · Eigenaar: Claude.** De strook "Geen evenementen gevonden" +
+  knop "Alle horecagelegenheden" onderin HorecagelegenheidCurrent staat er ook
+  als de zaak wél events heeft; hoort alleen in de Agenda-context.
+- **P2-32-rest · Eigenaar: Bob (besluit).** Kaarttitels (`titleMedium`/
+  `titleLarge`) staan nog in Roboto; de site zet ook die in serif. Eén extra
+  rij in Typography als je dat wilt.
 - **Website (aanvulling op P2-13, Eigenaar: Bob, Drupal-thema):** (6) op
   telefoon 320 px header (socials + logo + Inloggen/Taal + zoekveld +
   menubalk) vóór het eerste evenement → socials weg, Inloggen/Taal en zoekveld
@@ -399,10 +393,6 @@ kleur, terugknop-vorm en drawer-icoon staan daar al op de lijst.*
   staan onder drie foto's + geschiedenis + banner, tabs INFO/OPENING/MAP als
   kleine pillen → infoblok direct onder de titel; (11) titelkleur per kaarttype
   verschilt (wit/oranje/oranjerood serif) → één keuze, oranje = klikbaar.
-- **Geen actie:** tablet-Home staat goed (3 kolommen, geen overflow); alleen
-  P1-51 en P2-31 gelden daar net zo.
-
-*Artifact: https://claude.ai/artifact/QGVnHcfobrEQ9yioqoCawU — screenshots in `~/uk-shots/2026-09-16/`.*
 
 ### ✅ AFGEROND 2026-09-16 (Claude, sessie 47) — "Thuis bezorgen" is gebouwd
 
@@ -474,12 +464,23 @@ daarmee niet meer geblokkeerd en heeft nu een kant-en-klaar werkblad
    niet in de module (de module doet alleen `townid`/datum/`zoek`).
    Structureel (taak 32B, 597 events = 96% van het lek): default-categorie in
    de importer — eigen moment.
-2. **Store-gereedheid (Play Console).** Privacy-policy-URL, Data-safety-
-   formulier (Crashlytics, AdMob, login), account-verwijder-URL
-   (`uitgaanskrant.com/nl/account-verwijderen`). Beslis de upload-route: via
-   FlutterFlow-deploy (dan hoeft er lokaal niets) of lokaal (dan keystore +
-   `android/key.properties`, want release staat op `signingConfigs.debug`).
-   iOS wel/niet in scope.
+2. **Store-gereedheid (Play Console).** Privacybeleid-tekst staat sinds
+   2026-09-16 live op de website (Bob) — **nog open:** (a) de URL invullen bij
+   Play Console → App content → Privacy policy (dat veld zit in Play Console
+   zelf, niet in FlutterFlow); (b) een link naar diezelfde pagina **in de app**
+   toevoegen — nergens in de levende code staat momenteel een verwijzing naar
+   privacybeleid/voorwaarden (`grep -rn "privacy\|voorwaarden" lib/` geeft 0
+   treffers), en Google eist ook een vindbare link vanuit de app zelf, niet
+   alleen in de store-listing. Kleine builder-taak: `drawerComponent` → een
+   bestaand `ListTile` dupliceren (zie `CLAUDE.md`) → label "Privacybeleid" →
+   On Tap → Launch URL naar de nieuwe pagina (categorie *Share* in de
+   Actions-zoeklijst) — kan gecombineerd met de al geplande "Help"-menu-item-
+   taak hierboven (zelfde plek, zelfde patroon). Data-safety-formulier
+   (Crashlytics, AdMob, login) en account-verwijder-URL
+   (`uitgaanskrant.com/nl/account-verwijderen`, bestaat al) blijven ook open.
+   Beslis de upload-route: via FlutterFlow-deploy (dan hoeft er lokaal niets)
+   of lokaal (dan keystore + `android/key.properties`, want release staat op
+   `signingConfigs.debug`). iOS wel/niet in scope.
 3. **P1-17 · Engelse vertalingen** — werkblad ligt klaar in
    **`TAAK-P1-17-vertalingen.md`** (sleutel + NL + huidige EN + voorgestelde EN
    per regel). **Deel A (21 regels) kan nu al**: Home-chips, drawer, login,