Forráskód Böngészése

Sessie-afsluiting 2026-09-18: openstaande punten geborgd in TASKS.md

- P2-43 en 62 afgerond, hun blokken verwijderd (afgeronde taken blijven niet staan)
- 62a nieuw: de twee links op de Login-pagina staan niet in de app-brede
  linkstijl van P1-23 — keuze voor Bob
- de twee openstaande vragen van 17 sep beantwoord: zoekveld blijft 260 (was
  geen onderdeel van de toetsenbordfix), zoekActief wordt door Bob hernoemd
- stale verwijzing naar P2-43/P2-41 als openstaand opgeruimd

P2-44, 65 (icoon-blokkade + resterende doorloop), 87 en 88 staan uitgeschreven
als open taken.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 4 órája
szülő
commit
710306b2bf
1 módosított fájl, 36 hozzáadás és 249 törlés
  1. 36 249
      TASKS.md

+ 36 - 249
TASKS.md

@@ -21,6 +21,8 @@ klopt sinds je 'm las.*
    `/nl/node/add/horecagelegenheid` (die geeft anoniem een 301 naar de login, dus
    dáár niet rechtstreeks naartoe linken vanuit de app).
 3. **76 · linkerpadding op de horeca-agendakaart** (klein, eigenaar onbepaald).
+   En **62a · linkstijl van de twee links op de Login-pagina** (keuze voor Bob,
+   cosmetisch) — zie het blok verderop.
 4. **88 · "Mijn aanmeldingen" + kloonknop** — nieuw 2026-09-18, zie het blok
    hieronder. Deel A (Drupal) bij Bob, deel B (app) bij Claude.
 5. **P2-44 · datum-icoon zonder datum op `EventCurrent`** — ⚠️ niet gelukt via
@@ -29,6 +31,11 @@ klopt sinds je 'm las.*
    2026-09-18 op Bob's vraag, zie het uitgeschreven blok verderop. Feature, dus
    geen livegang-blokker; Claude kan dit zelf in de builder doen. **De Row die
    hij nodig heeft ligt er al** (taak 90); let wel op de chipbreedte.
+8. **91 · meer omschrijvingstekst op de evenementkaart bij een breder scherm ·
+   Eigenaar: Claude — bezig (2026-09-18).** `HomeUitgaantabelKaartComponent`,
+   de `Text` van `$.inhoud`: Max Lines binden aan een Responsive Value i.p.v.
+   leeg laten. Zie het blok verderop.
+
 7. **89a · kopie-component `HeaderButtonsComponentCopy` opruimen · Eigenaar:
    Bob.** Taak 89 (logo boven de gemeentenaam in de header) is **af** en
    gecommit (`4c3f0aa`); deze kopie is vooraf op Bob's verzoek als vangnet
@@ -260,12 +267,16 @@ aantal labels niet beperken, wel afkorten. Reeks 103 → 63 → 21 → **0**:
 - Hoogtes gelijkgetrokken: Carousel 180/220/260/300 → **4× 240**, Home-container
   **250 → 280**. Alle vier labels staan nu op de kaart.
 
-**Twee punten die nog bij Bob liggen:**
-- Het zoekveld staat nu op **width 260** (was 200, tussenstap na het terugdraaien
-  van full-width). Prima zo, of terug naar 200?
-- App State **`zoekActief`** (Boolean) is aangemaakt maar uiteindelijk niet
-  gebruikt — Rebuild Page bleek genoeg. Laten staan of opruimen? *(Claude ruimt
-  niets op.)*
+**Twee punten die bij Bob lagen — allebei beantwoord 2026-09-18, geen actie meer:**
+- **Zoekveld width 260: zo laten.** Bob vroeg terecht of dit nog met het
+  toetsenbordprobleem te maken had — dat is niet zo. Dat is opgelost door de drie
+  andere ingrepen (`resizeToAvoidBottomInset: false`, de slider die wijkt bij
+  focus, en de Rebuild-Page-actie); de breedte speelde daar geen rol in. 260 is
+  puur een tussenstap die is blijven staan, werkt goed, en een zoekterm is er
+  beter leesbaar op dan bij 200. Niet aanpassen.
+- **App State `zoekActief`: Bob hernoemt hem naar `kanweg`** (besluit 2026-09-18).
+  Het veld heeft 0 lezers en 0 schrijvers in de levende code — zie ook de
+  wezenlijst verderop. *(Claude ruimt zelf niets op.)*
 
 *Terzijde, geen regressie: zoeken op Home geeft landelijke treffers (Rotterdam,
 Maastricht) terwijl de header Amsterdam toont — Home is bewust landelijk, Bob
@@ -331,28 +342,15 @@ de website-homepage; `/nl/user/register` is anoniem bereikbaar (200).
   korte **witte flits** van de Android-native launch screen (`?android:colorBackground`)
   vóór de Flutter-splash — die stelt FlutterFlow niet in, dus dat is geen builder-werk.
 
-- **62 · P1-57 · ✅ AF 2026-09-18 (Claude, builder + verse export, `dart analyze`
-  0 errors).** Onder *Wachtwoord vergeten?* op de Login-pagina staat nu
-  **"Nog geen account? Registreren"** met `launchURL(
-  'https://uitgaanskrant.com/nl/user/register')`. Nieuwe vertaalsleutel
-  `pq12hujc`, EN = "No account yet? Register"; de sleutel van *Wachtwoord
-  vergeten?* (`utppw2si`) is ongemoeid gebleven. Gebouwd door de bestaande
-  link-`Text` te dupliceren — let op de bekende valkuil, die trad hier ook op:
-  **de kopie erfde de Engelse vertaling van het origineel** ("Forgot password?"),
-  dus die moest los rechtgezet worden via het globe-icoontje.
-
-  **Kleine open keuze voor Bob (cosmetisch, geen bug).** De taakomschrijving ging
-  ervan uit dat de bestaande link-`Text` de app-brede linkstijl had (`secondary` +
-  onderstreept, uit P1-23). Dat is niet zo: *Wachtwoord vergeten?* staat gewoon op
-  `bodyMedium` / Text Color **Primary Text**, zonder onderstreping. De nieuwe link
-  is daarom een exacte kopie van zijn buurman, zodat de twee regels er op hetzelfde
-  scherm gelijk uitzien. Wil je ze allebei in de app-brede linkstijl, dan is dat
-  één ronde op deze twee `Text`-nodes — zeg het en ik doe het. `Login` heeft alleen *Inloggen* en *Wachtwoord vergeten?*;
-  de helppagina belooft een "gratis account", maar in de app kun je er geen
-  maken. Toevoegen onder *Wachtwoord vergeten?*: een `Text` "Nog geen account?
-  Registreren" (dupliceer de bestaande link-`Text`, zelfde stijl `secondary` +
-  onderstreept) met `Launch URL` → `https://uitgaanskrant.com/nl/user/register`
-  (anoniem 200). Engelse vertaling meteen meegeven ("No account yet? Register").
+- **62a · Login-pagina: linkstijl van de twee links · Eigenaar: Bob (keuze,
+  cosmetisch).** Taak 62 is af (de registratielink staat er), maar onderweg bleek
+  iets dat nog een besluit vraagt: *Wachtwoord vergeten?* staat op `bodyMedium`
+  met Text Color **Primary Text**, dus **niet** in de app-brede linkstijl
+  (`secondary` + onderstreept) die P1-23 elders heeft doorgevoerd. De nieuwe link
+  *Nog geen account? Registreren* is bewust een exacte kopie van zijn buurman,
+  zodat de twee regels op hetzelfde scherm gelijk ogen. Wil je ze allebei in de
+  app-brede linkstijl, dan is dat één ronde op deze twee `Text`-nodes op de
+  Login-pagina — Claude kan dat zelf doen.
 - **63 · Play Console — aanvulling op Bob's taak 2. Eigenaar: Bob.** Naast
   (a) t/m (e) daar:
   - **(f) App access / testaccount — taak 86, kan NU al, los van D-U-N-S.** De
@@ -387,37 +385,6 @@ de website-homepage; `/nl/user/register` is anoniem bereikbaar (200).
   er hangt dan niets meer van af. *Verificatie: `account-verwijderen` mag niet meer
   in `favorieten_widget.dart` staan.*
 
-- **74 · P1-62 · ✅ AF 2026-09-17 (Claude, builder + verse export, akkoord Bob).**
-  De evenementen-agenda op een horecapagina liep op een telefoon over elkaar heen.
-  **Opgelost:** de `GridView` is via *Replace Widget* een **StaggeredView**
-  geworden, met `Cross Axis Count` als **Responsive Value 1/1/2/3**. Export:
-  `MasonryGridView.builder` met `crossAxisCount` als functie die 1/1/2/3
-  teruggeeft, **geen `childAspectRatio` meer** (die bestaat niet op een
-  StaggeredView — dat was de hele oorzaak) en **geen `return 0;`** in een tak.
-  `shrinkWrap` is er bij de Replace vanzelf afgegaan, wat hier klopt: het
-  component hangt op de pagina in een `Expanded`, dus het heeft een begrensde
-  hoogte en scrollt voortaan zelf.
-  *Waarom dit de goede vorm is:* een StaggeredView geeft elk kind zijn eigen
-  hoogte, dus een kaart met een lange titel duwt niet meer over de buur heen.
-  Dezelfde vorm draait al op Home en het horeca-overzicht.
-  ⚠️ **Tijdens dit werk is het component door iemand anders hernoemd** van
-  `HorecagelegenheidEventTabelComponentCopy` naar `...Current`. De export heeft
-  alleen de nieuwe map, dus geen `ambiguous_import`; controleer wel of de oude
-  map `lib/horecagelegenhedenoverzicht/horecagelegenheid_event_tabel_component_copy/`
-  nog in de projectmap/git staat (hoort bij de opruimronde, Claude gooit niets weg).
-  **Op een toestel nagekeken** (profile-APK, telefoon-emulator 411 dp, zaak
-  Bitterzoet): `~/uk-shots/2026-09-16/na-horeca-agenda-staggered.png` naast de
-  oude situatie in `bug-horeca-agenda-gridview.png`. De items staan nu onder
-  elkaar, titel en datum zijn volledig leesbaar. `dart analyze`: 0 errors.
-  *Terzijde:* de events hebben inmiddels een eigen **Agenda**-tab gekregen (werk
-  van een andere sessie) — de Info-tab is daardoor ook rustig geworden.
-
-- **76 · Restpunt na taak 74: de agenda-tekst raakt de linker schermrand.**
-  De kaart in `HorecagelegenheidEventTabelComponentCurrent` heeft geen
-  linkerpadding, waardoor "Bubble House – Special Dance Edition" op x=0 begint;
-  elders in de app zit 12 px. Eén padding-waarde op de kaart-`Row`. Eigenaar:
-  onbepaald, klein. *(Het tweede restpunt — `<p>`-tags in `inhoud` — is af, zie 82.)*
-
 - **82 (was 75 + 76.2) · `categorie: null` én rauwe HTML in `inhoud` op
   `flutterflowmobiel_establishment_events` — ✅ OPGELOST OP DEVBOB 2026-09-17 (Bob),
   ⚠️ NOG DEPLOYEN NAAR PRODUCTIE.** Beide in het `services_1`-blok van
@@ -438,43 +405,6 @@ de website-homepage; `/nl/user/register` is anoniem bereikbaar (200).
   "FlutterFlow publieke endpoints" purgen (dit endpoint zit in die 5-minuten-rule).
   Daarna meet Claude productie na op dezelfde twee getallen.
 
-- **77 · "Account aanmaken" op Favorieten tab 4 · ✅ AF 2026-09-17 (Claude,
-  builder + verse export per stap, `dart analyze` 0 errors).**
-  Tab 4 (*Gebruiker*) heeft nu twee gezichten, met een conditie op
-  `FFAppState().userSessionid`:
-  - **ingelogd** (`Is Set and Not Empty`) → Uitloggen, Mijn profiel, Wachtwoord
-    wijzigen, Account verwijderen, Stadsactiviteit aanmaken — zoals voorheen;
-  - **uitgelogd** (`Is Not Set or Is Empty`) → uitleg + **"Account aanmaken"**
-    (`launchURL('https://uitgaanskrant.com/nl/user/register')`, anoniem 200
-    gemeten) en **"Inloggen"** (`pushNamed(LoginWidget.routeName)`).
-  Vóór deze wijziging kreeg een uitgelogde bezoeker "Uitloggen" en "Account
-  verwijderen" te zien, en géén manier om een account te maken.
-  **Vormgeving** volgens het merk-DNA: "Account aanmaken" fill **`secondary`**
-  (oranje, de actiekleur) met witte tekst; "Inloggen" fill `primaryBackground`
-  met `secondary` tekst — de FlutterFlow-default zette beide op `primary`
-  (logo-rood), en rood is in dit merk nooit een knopkleur. Engelse vertalingen
-  staan erin ("Create account" / "Log in" / de uitlegzin). De Column heeft
-  `Padding(16, 0, 16, 0)`, anders raakte de tekst beide schermranden.
-  **Op een toestel nagekeken** (profile-APK, telefoon-emulator, `pm clear` voor
-  een echt uitgelogde staat): `~/uk-shots/2026-09-16/na-favorieten-uitgelogd.png`.
-
-  **De werkroute die uiteindelijk werkte — belangrijk voor later:**
-  1. Rechtsklik de bestaande `Column` → **Wrap Widget → Column**.
-  2. **"+" op die nieuwe buitenste Column** → tweede kind toevoegen.
-  3. Conditie op elk van de twee blokken (de binnenste had 'm al).
-  ⚠️ **Wat NIET werkt en waarom:** `Duplicate` op een Column waar net een
-  conditie op gezet is, hernummert stil alle vertaalsleutels; en **"+" op een
-  `TabBar Page`-rij vervángt het bestaande kind** in plaats van toe te voegen —
-  een TabBar Page heeft precies één kind. Beide fouten zijn gemaakt en
-  teruggedraaid (de tweede met de **undo-knop in de werkbalk**; Ctrl+Z werkte
-  niet).
-  💡 **Bob's idee dat dit vlot trok: eerst een kopie maken en daarin oefenen.**
-  `favorietenCopy2` is met *Duplicate Page* gemaakt en daar is de hele route
-  eerst bewezen (export toonde de juiste `if/if`-structuur) vóór er iets op de
-  echte pagina gebeurde. **Die kopie staat er nog** en mag bij de opruimronde
-  mee (P2-7) — Claude gooit niets weg.
-
-
 **🟠 Vóór livegang, één ronde**
 
 - **65 · P1-59 · Release-build smoke-test op beide AVD's + Bob's Xiaomi.
@@ -738,151 +668,6 @@ dichten: geef `https://uitgaanskrant.com/nl/support/mobieleapp` op als
 account-verwijder-URL (de sectie "Je account verwijderen" staat daar publiek op),
 of maak de oude pagina publiek zichtbaar.
 
-### 🟢 AFGEROND 2026-09-16 (Claude, sessie "taal-cluster") — browserloos, geen builder aangeraakt
-
-*Geclaimd en uitgevoerd terwijl twee andere sessies in de builder zaten. Dit
-cluster raakt géén FlutterFlow-pagina en géén Chrome — alles is meting +
-kant-en-klare code.*
-
-**✅ Beide functie-bodies zijn op 2026-09-16 door Bob geplakt en
-export-geverifieerd** — `filterDatumVan` en `filterDatumTot` staan allebei in de
-taalonafhankelijke vorm in `custom_functions.dart`. De Home-chips staan op
-`All` / `Today` / `This weekend` / `This week`, dus de koppeling klopt en het
-datumfilter werkt in beide talen. De code hieronder blijft staan als referentie.
-
-**✅ En het is nu ook op een toestel bewezen, in het Engels** (Claude, profile-APK
-van de export van 16 sep op `emulator-5556`, locale tijdelijk `en-US`, daarna
-terug op `nl-NL`): chip **This weekend** schakelt de lijst van de events van
-vandaag naar "zaterdag 19 sep, 12:00"; **Today** toont alleen 16 sep. Vóór deze
-wijziging deed elke Engelse chip niets.
-⚠️ *Blijvend aandachtspunt: de Engelse chip-teksten moeten "today", "weekend" of
-"week" blijven bevatten. Een formulering als "Upcoming" laat de chip stil niets
-filteren.*
-
-**Nog twee dingen uit deze ronde:**
-- **Scheidingsteken tussen adres en plaats** op `UitgaantabelKaart`
-  (`p3hbyhqm`) stond in het Engels op `","` zónder spatie → "De Hofnar
-  10,Valkenswaard". Nu `", "`, gelijk aan het Nederlands. Dat component staat
-  live op **Favorieten** en de provinciepagina.
-- **Beperking van de vertaal-audit, goed om te weten:** het meetscript vindt
-  *lege*, *nog-Nederlandse* en *over meerdere sleutels hergebruikte* vertalingen.
-  Het kan géén slecht Engels herkennen — "Eatings" en "Overnight" telden als
-  "vertaald". Een menselijke blik over de labels blijft dus nodig; de audit
-  vervangt dat niet.
-
-**1 · `filterDatumVan` / `filterDatumTot` taalonafhankelijk — code klaar, moet
-nog in de Custom Code-editor.** Dit blokkeerde Bob's taak 3 (vertaalronde): de
-functies matchten letterlijk op `Vandaag`/`Dit weekend`/`Deze week`, dus zodra
-de chips een Engelse tekst krijgen doet het datumfilter niets meer. De nieuwe
-versie herkent op **kernwoord** i.p.v. op de hele zin, en dus NL + EN +
-hoofdletters/spaties + de interne sleutels (`vandaag`/`weekend`/`week`) tegelijk.
-Getest met `fvm dart` tegen de oude versie: **op elke Nederlandse invoer exact
-dezelfde uitkomst**, en `Today`/`This weekend`/`This week` werken er nu bij.
-Volgorde is belangrijk — `weekend` moet vóór `week` getest worden, want
-"This weekend" bevat ook "week".
-
-*Plakken in FlutterFlow → Custom Code → Functions → `filterDatumVan`. **Alleen de
-body**, FlutterFlow schrijft de signature zelf (zie `CLAUDE.md`). Daarna Ctrl+S.*
-```dart
-  final k = (keuze ?? '').toLowerCase().trim();
-  String soort = '';
-  if (k.contains('weekend')) {
-    soort = 'weekend';
-  } else if (k.contains('vandaag') || k.contains('today')) {
-    soort = 'vandaag';
-  } else if (k.contains('week')) {
-    soort = 'week';
-  }
-  if (soort == '') {
-    return '';
-  }
-  final nu = DateTime.now();
-  int extra = 0;
-  if (soort == 'weekend' && nu.weekday < 6) {
-    extra = 6 - nu.weekday;
-  }
-  final start = DateTime(nu.year, nu.month, nu.day + extra);
-  final maand = start.month.toString().padLeft(2, '0');
-  final dag = start.day.toString().padLeft(2, '0');
-  return '${start.year}-$maand-$dag 00:00:00';
-```
-*En in `filterDatumTot`:*
-```dart
-  final k = (keuze ?? '').toLowerCase().trim();
-  String soort = '';
-  if (k.contains('weekend')) {
-    soort = 'weekend';
-  } else if (k.contains('vandaag') || k.contains('today')) {
-    soort = 'vandaag';
-  } else if (k.contains('week')) {
-    soort = 'week';
-  }
-  if (soort == '') {
-    return '';
-  }
-  final nu = DateTime.now();
-  int extra = 0;
-  if (soort != 'vandaag' && nu.weekday < 7) {
-    extra = 7 - nu.weekday;
-  }
-  final eind = DateTime(nu.year, nu.month, nu.day + extra);
-  final maand = eind.month.toString().padLeft(2, '0');
-  final dag = eind.day.toString().padLeft(2, '0');
-  return '${eind.year}-$maand-$dag 23:59:59';
-```
-⚠️ **Koppeling met de vertaalronde:** de Engelse chip-teksten moeten
-**`All` / `Today` / `This weekend` / `This week`** worden. Elke andere Engelse
-formulering mag, zolang "today", "weekend" of "week" erin voorkomt — staat er
-iets als "Upcoming" dan filtert de chip niets. Dit staat ook in het werkblad.
-
-**2 · P1-17 volledig geïnventariseerd — werkblad ligt klaar in
-`TAAK-P1-17-vertalingen.md`.** Bob's taak 3 is daarmee puur uitvoerwerk: 80
-regels, elk met sleutel + Nederlandse tekst + wat er nu in EN staat + een
-voorgestelde Engelse tekst. Gesplitst in **Deel A (21 regels, nu al te doen —
-die schermen veranderen niet meer)** en **Deel B (59 regels, pas ná P2-29)**.
-Gemeten op de schermen die vanaf de startpagina bereikbaar zijn; de dode
-kopieën (`favorietenCopy`, `drawerComponentCopy`, `kanwegTestUpload`) zaten in
-de oude telling van 134/99 en zijn er nu uit.
-Werkelijke omvang in levende code: **26 leeg, 58 gelijk aan NL, 8 fout**.
-
-**3 · 8 sleutels hadden geen lege maar een FOUTE Engelse vertaling** — die
-vallen in geen enkele telling op en zijn erger dan leeg, want de gebruiker
-krijgt een tekst die iets anders betekent. Oorzaak is het bekende
-`Duplicate`-patroon (een kopie erft de EN-tekst van het origineel).
-**5 van de 8 zijn op 2026-09-16 gefixt** (`vnwx710y`, `pj545url`, `n3cyffso`,
-`nosgkxy0`, `elx7kse2`) plus de inhoudelijke fout op `wachtwoordVergeten`
-(`503u6v73`, stond op *"Use your username or password to recieve an email"* —
-verkeerde betekenis én een typefout). **De resterende 3 staan alle drie op
-`uitgaansevenementAanmaken` en wachten dus op P2-29:**
-| sleutel | Nederlands | staat er nu in EN | moet worden |
-|---|---|---|---|
-| `qsf2va25` | Website van het evenement | Website van de activiteit | Event website |
-| `nzaqrq0w` | Link om kaarten te kopen | Website van de activiteit | Ticket link |
-| `9qx16tm9` | Evenement indienen | Activiteit indienen | Submit event |
-
-**4 · Wezenlijst opnieuw gemeten (aanvulling op P2-7 / Bob's taak 4).**
-Reproduceerbaar bepaald door vanaf de startpagina de widget-graaf te volgen:
-**31 van de 50 widgets zijn bereikbaar, 19 niet.** Drie namen die nog niet in
-de P2-7-lijst stonden: **`EvenementComponent`**, **`HeaderCurrent`** en
-**`HomeUitgaanSliderComponentCopy`**. De eerste twee worden *alleen* door de
-pagina `Event` gebruikt, dus die vallen vanzelf vrij zodra `Event` weg is.
-Handige volgorde voor de opruimronde — gooi eerst de pagina weg, dan de
-componenten die eraan hingen:
-- `Event` → daarna vallen `EvenementComponent` + `HeaderCurrent` vrij
-- `drawer_component_copy` + `kanweghorecagelegenheid_current_copy` → daarna
-  `KanwegHorecagelegenhedenOverzicht`
-- `slider_uitgaan_component_small_current` → daarna `KaartSliderUitgaanSComp`
-- zonder afhankelijkheden, kunnen meteen: `FavorietenCopy`, `HomeCopy`,
-  `KanwegHomeCopy`, `KanwegTestUpload`, `HeaderButtonsComponentCopymethartje`,
-  `KanwegHeaderButtonsComponentCopy`, `KaartTabelUitgaanComp`,
-  `KaartTabelUitgaanSComp`, `HomeUitgaantabelKaartComponentCopy`,
-  `HomeUitgaanSliderComponentCopy`, `PUitgaantabelKaartComponentOrgineelMetKaartjeerin`
-
-*Twee namen uit de oude P2-7-lijst bestaan niet meer op schijf
-(`kanwaeg_select_state_drop_down_component_copy`,
-`kanweg_home_uitgaantabel_kaart_component_copy`) — in de builder mogelijk nog
-wel, daar niet gecontroleerd (geen browser gebruikt).*
-
 ### 🎨 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:
@@ -980,9 +765,8 @@ telefoon-emulator bekeken (zie screenshots in `~/uk-shots/2026-09-16/na-*.png`).
   Shrink Wrap uit. Zolang dat niet is gedaan toont de tab niets; de
   empty-state (0 events) werkt wél. Niet zelf aangeraakt — iemand anders zat
   erop.
-  *Klein:* met vier tabs kapt "Bezorgen" af op 411 dp → `TabBar` →
-  "Tab Bar Scrollable" aan.
-  **Restpunten staan nu als eigen taken P2-41 (Cross Axis Count), P2-42 (tabvolgorde) en P2-43 (scrollable tabbar).** Oud: Tabs
+  **Restpunt staat nu als eigen taak P2-42 (tabvolgorde); P2-41 (Cross Axis
+  Count) en P2-43 (scrollable tabbar) zijn afgerond.** Oud: Tabs
   herordenen lukt niet via de widget tree: een `Tab`-node op de `TabBar`-rij
   droppen geeft de toast *"Tab can only be added to TabBar"*, en op een andere
   Tab-rij droppen verplaatst alleen de Tab (niet zijn TabBar Page), waarna het
@@ -1009,10 +793,6 @@ telefoon-emulator bekeken (zie screenshots in `~/uk-shots/2026-09-16/na-*.png`).
   herordenen voor Claude onmogelijk (zie `CLAUDE.md`). Drie opties: (a) tabs
   slepen in je eigen browser (Tab én bijbehorende TabBar Page); (b) `TabBar` →
   *Initial Tab Index* op 3, dan opent de pagina op Agenda; (c) zo laten.
-- **P2-43 · ✅ AF 2026-09-18 (Claude, builder).** `TabBar` op
-  `HorecagelegenheidCurrent` → *Tab Bar Scrollable* aan; verse export toont
-  `isScrollable: true` (regel 479). De vier tabs (Info / Links / Bezorgen /
-  Agenda) scrollen nu horizontaal in plaats van "Bezorgen" af te kappen.
 - **P2-44 · `EventCurrent`: datum-icoon zonder datum · ⚠️ NIET GELUKT, terug naar
   Bob (Claude 2026-09-18; mijn wijziging is volledig teruggedraaid).** Het
   probleem staat nog: de conditie `$[0].datum is set` zit op `TextData` en niet
@@ -2490,7 +2270,14 @@ maak description en code gelijk, en hernoem `$date_after_30`.
   De fix is een `UPDATE` met diezelfde genestelde `TRIM` op **`node` én
   `node_revision`**, idempotent, met vooraf een `sql-dump` van die twee
   tabellen. URL-aliassen blijven ongemoeid.
-- **P2-7 · opruimronde, 21 dode eenheden** (Bob 2026-09-13: naar livegang).
+- **P2-7 · opruimronde, 23 dode eenheden** (Bob 2026-09-13: naar livegang).
+  ⚠️ **Twee nieuwe sinds 17 sep, allebei van Claude:** de pagina
+  **`favorietenCopy2`** (oefenkopie van `Favorieten`, gemaakt om de
+  Wrap-Widget-route voor taak 77 veilig uit te proberen — zie de les in
+  `CLAUDE.md`) en het component
+  **`HorecagelegenheidEventTabelComponentCopy`**, dat bij een hernoeming
+  `...Current` werd (controleer of de oude map nog in `lib/` of git staat).
+  Claude gooit niets weg, dus beide staan er tot jij ze opruimt.
   Moet in de **builder** gebeuren, niet met `git rm` — anders staat alles na de
   volgende export terug. *9 componenten:* `header_buttons_component_copymethartje`,
   `kaart_slider_uitgaan_s_comp`, `kaart_tabel_uitgaan_comp`,