|
@@ -1,167 +1,108 @@
|
|
|
-# Uitgaanskrant — takenlijst
|
|
|
|
|
-
|
|
|
|
|
-## ▶ Nu aan de beurt (stand 2026-09-08)
|
|
|
|
|
-
|
|
|
|
|
-Puur de wachtrij; de volledige beschrijving staat bij elke taak zelf
|
|
|
|
|
-verderop.
|
|
|
|
|
-
|
|
|
|
|
-### 1. Eén Drupal/views-ronde — nog vier taken
|
|
|
|
|
-
|
|
|
|
|
-**Afgerond 2026-09-08:** **P1-45** (Bob, in de custom module: `categorie`
|
|
|
|
|
-van komma-string naar array) en **P1-44** (één binding in de builder).
|
|
|
|
|
-Beide op productie geverifieerd, en op de tablet-AVD end-to-end: de vijf
|
|
|
|
|
-Home-tabs tonen nu elk hun eigen display mét werkende groene labels, en
|
|
|
|
|
-geen enkele `has no instance method`-fout in de run-log. **Bijvangst:
|
|
|
|
|
-`services_2` is daarmee een weesdisplay** — geen enkele app-plek leest
|
|
|
|
|
-'m nog, dus daar hoeft geen sorteerwerk in.
|
|
|
|
|
-
|
|
|
|
|
-Wat er nog ligt, allemaal in dezelfde views:
|
|
|
|
|
-
|
|
|
|
|
-- ~~**P1-42** — alle zeven displays sorteren op `created DESC`.~~
|
|
|
|
|
- **BLIJKT AF (geverifieerd 2026-09-09 op productie).** De view-export van
|
|
|
|
|
- `flutterflowmobiel1` toont in de Master een sortering op
|
|
|
|
|
- `field_date_value` (oplopend, geen DESC) én een filter
|
|
|
|
|
- `field_date_value >= -2 hours`; de displays zetten `defaults['sorts']`
|
|
|
|
|
- niet uit, dus ze erven die sortering allemaal. Live nagemeten op
|
|
|
|
|
- services_1/3/5: alle items beginnen op de dag van meten en lopen
|
|
|
|
|
- oplopend door, geen enkel item in het verleden. **Wel een nieuw signaal,
|
|
|
|
|
- zie hieronder.**
|
|
|
|
|
-- **⚠️ NIEUW (2026-09-09) — drie Home-tabs zijn nu leeg.** Landelijk
|
|
|
|
|
- gemeten (geen `townid`), pagina 0: services_1 (homeslider) 7 items,
|
|
|
|
|
- services_5 (cultuurinfo) 6, services_3 (uitgaan) **1**, en
|
|
|
|
|
- services_4 (stadsactiviteiten), services_6 (films) en services_7 (jeugd)
|
|
|
|
|
- **0**. Dat is het spiegelbeeld van het oude probleem: met het
|
|
|
|
|
- datumfilter erin blijft er bijna niets over.
|
|
|
|
|
- **Bob 2026-09-09: services_4 (stadsactiviteiten) klopt** — die worden
|
|
|
|
|
- handmatig aangemaakt en zijn er dus nauwelijks. **Maar de rest is
|
|
|
|
|
- daarmee niet verklaard**, want uitgaansevenementen worden juist
|
|
|
|
|
- automatisch geïmporteerd en dan zou `services_3` (uitgaan, tid `17998`)
|
|
|
|
|
- meer dan **1** item moeten hebben. Extra meting op dezelfde dag:
|
|
|
|
|
- `flutterflowmobiel_establishment_events` geeft **0 toekomstige events**
|
|
|
|
|
- voor drie grote Amsterdamse zalen (Tolhuistuin `75547`, Rialto VU
|
|
|
|
|
- `75670`, Supper club `91145`) — zalen die wél in de
|
|
|
|
|
- establishments-view staan. Er zit dus landelijk vrijwel geen
|
|
|
|
|
- toekomstige eventdata in het systeem.
|
|
|
|
|
- **Twee kandidaten, allebei voor Bob (Drupal-kant):** (a) de
|
|
|
|
|
- import staat stil of loopt achter, of (b) de import zet geen
|
|
|
|
|
- `go_out_event_category`-term, waardoor geïmporteerde events buiten
|
|
|
|
|
- élke display vallen (alle zeven filteren hard op tids). (b) is te
|
|
|
|
|
- testen door één geïmporteerd event in Drupal open te slaan en te
|
|
|
|
|
- kijken of het categorieveld gevuld is.
|
|
|
|
|
- **Bob 2026-09-10: geen bug.** Op productie importeert hij gewoon; de
|
|
|
|
|
- aantallen zijn simpelweg laag. (Devbob loopt achter, maar daar is niet
|
|
|
|
|
- tegen gemeten — alle metingen hierboven gingen tegen productie.) De
|
|
|
|
|
- leegte is dus de echte stand van zaken, geen storing.
|
|
|
|
|
-
|
|
|
|
|
-- ~~**P1-48** — Home-tabs missen de lege-staat.~~ **AFGEROND 2026-09-10.**
|
|
|
|
|
- *(Was eerst als P1-46 genummerd; dat nummer was al in gebruik door een
|
|
|
|
|
- andere sessie, vandaar hernummerd.)* Nu er drie tabs
|
|
|
|
|
- structureel leeg zijn (films, jeugd, stadsactiviteiten) is dit
|
|
|
|
|
- zichtbaar geworden: `HomeUitgaantabelKaartComponent` heeft **0**
|
|
|
|
|
- `isEmpty`-guards, dus een lege tab toont domweg niets — een leeg vlak
|
|
|
|
|
- zonder uitleg. Ter vergelijking: `HorecagelegenhedenOverzichtCopy3`
|
|
|
|
|
- heeft er 4 en toont
|
|
|
|
|
- `if (<lijst>.isEmpty) { return Image.asset('assets/images/logo800px.png'); }`.
|
|
|
|
|
- **Waarom dit gat bestaat:** P1-1 gaf op 2026-08-10 vier componenten een
|
|
|
|
|
- lege-staat (`HomeUitgaanSliderComponent`, `PUitgaanSliderComponent`,
|
|
|
|
|
- `EvenementComponent`, `horecagelegenheidCurrent`), maar toen bestond de
|
|
|
|
|
- per-tab-splitsing nog niet — die kwam pas met P1-44 op 2026-09-08.
|
|
|
|
|
- **AFGEROND 2026-09-10 (Claude, builder).** Bob koos het logo. Gezet via
|
|
|
|
|
- `StaggeredView` → sectie **Empty List Widget** → *Show Empty List
|
|
|
|
|
- Widget* aan → Widget Type **Image** → Image Type **Asset** →
|
|
|
|
|
- `logo800px.png` → *Center Image* aan. Verse export bevestigt:
|
|
|
|
|
- `noItemsFoundIndicatorBuilder: (_) => Center(child: Image.asset('assets/images/logo800px.png'))`.
|
|
|
|
|
- `dart analyze` 0 errors. Eén fix dekt alle vijf de Home-tabs, want ze
|
|
|
|
|
- delen dit component.
|
|
|
|
|
- **⚠️ Correctie op `CLAUDE.md`:** de "Show Empty List Widget"-checkbox
|
|
|
|
|
- stond genoteerd als structureel onbereikbaar voor Claude (augustus,
|
|
|
|
|
- bevestigd op vier componenten). Dat klopt niet meer — hij is gewoon
|
|
|
|
|
- klikbaar, als sectie in het rechterpaneel. Let op de zoekterm bij het
|
|
|
|
|
- verifiëren: dit component gebruikt `noItemsFoundIndicatorBuilder`
|
|
|
|
|
- (paginering-variant), niet `if (x.isEmpty)` zoals de niet-pagineerde
|
|
|
|
|
- lijsten. Grep je alleen op `isEmpty`, dan lijkt het ten onrechte
|
|
|
|
|
- mislukt.
|
|
|
|
|
-**P1-47 · Eigenaar: Bob — twee horeca-titels met een onzichtbaar teken
|
|
|
|
|
-vooraan breken de alfabetische sortering.** Gevonden 2026-09-09 direct na
|
|
|
|
|
-taak 6 (sortering op titel, live). In `horcat=34` + `townid=25434`
|
|
|
|
|
-(Arnhem) staan **nid 51094 "Café Arnhem"** en **nid 50093 "La Cubanita
|
|
|
|
|
-Arnhem"** vóór alle andere, terwijl de rest van die lijst foutloos
|
|
|
|
|
-alfabetisch is. **Aanvulling 2026-09-10: er is er minstens een derde** — in Amsterdam
|
|
|
|
|
-(`horcat=34&townid=28695`) staat **nid 49978 "Restaurant Adam"** vóór
|
|
|
|
|
-"A la Ferme" en "Anne&Max". Zelfde patroon.
|
|
|
|
|
-In de JSON zien die titels er schoon uit — logisch, want
|
|
|
|
|
-`_custom_clean_html` in de custom module draait **ná** de query, terwijl
|
|
|
|
|
-MySQL op de rauwe `node.title` sorteert. Er zit dus een spatie of ander
|
|
|
|
|
-onzichtbaar teken vooraan in de opgeslagen titel. Fix: die twee nodes
|
|
|
|
|
-openen en de titel opnieuw intypen. **Loont een bredere check**: een
|
|
|
|
|
-`SELECT nid, title FROM node WHERE title <> TRIM(title)` laat in één keer
|
|
|
|
|
-zien of er meer zijn.
|
|
|
|
|
-
|
|
|
|
|
-**Losse contentnetjes, gevonden in dezelfde lijst (2026-09-09):**
|
|
|
|
|
-- **New York Pizza Arnhem Centrum** en **Arnhem Zuid** staan allebei
|
|
|
|
|
- dubbel (nids 50583/53454 en 50584/53455) — het bekende
|
|
|
|
|
- duplicatenpatroon uit `CLAUDE.md`, nu met concrete nids.
|
|
|
|
|
-- **"Subway Winkelcentrum Enschede Zuid"** (nid 50770) heeft
|
|
|
|
|
- `plaats: Arnhem` en komt dus in de Arnhemse lijst terecht.
|
|
|
|
|
-
|
|
|
|
|
-**P1-46 · Eigenaar: Bob — er staat vrijwel geen toekomstige content in
|
|
|
|
|
-het systeem, en dat is nu zichtbaar.** Gevonden 2026-09-09 direct na de
|
|
|
|
|
-P1-42-deploy. Complete tellingen op productie: 1 toekomstig Uitgaan-event
|
|
|
|
|
-landelijk, 0 Activiteiten, 0 Films, 0 Jeugd; de zaakagenda's tonen bij 6
|
|
|
|
|
-van de 7 gemeten zaken uitsluitend verleden. **Dit is een inhoudelijke
|
|
|
|
|
-vraag, geen bug:** loopt de contentaanvoer (de importer) nog? Van de 500
|
|
|
|
|
-meest recent aangemaakte events zijn er 25 toekomstig, waarvan 14
|
|
|
|
|
-"Tweedehands markt" — er wordt dus nog wél iets toegevoegd, maar
|
|
|
|
|
-nauwelijks vooruitkijkende agenda. Zolang dit zo staat, opent de app op
|
|
|
|
|
-drie lege tabs. **Dit weegt zwaarder dan welk app-werk dan ook op de
|
|
|
|
|
-lijst** — een technisch perfecte app zonder programma is leeg.
|
|
|
|
|
-
|
|
|
|
|
-- **P1-42b (nieuw afgesplitst)** — `flutterflowmobiel_establishment_events`,
|
|
|
|
|
- de agenda op een horecapagina: geen datumfilter, niet chronologisch,
|
|
|
|
|
- max 10 items. In een steekproef van 15 zaken toonden er 4 uitsluitend
|
|
|
|
|
- verlopen evenementen. Zelfde ingreep als P1-42.
|
|
|
|
|
-- ~~**Horeca-overzicht sorteren**~~ **AF — alfabetisch en live
|
|
|
|
|
- (geverifieerd 2026-09-10).** Arnhem én Amsterdam komen allebei
|
|
|
|
|
- alfabetisch terug uit `services_1`. Een eerdere meting die nog
|
|
|
|
|
- nid-volgorde toonde was van vóór jouw view-wijziging. *(Oude notitie
|
|
|
|
|
- hieronder ter historie.)* **Herbevestigd 2026-09-09:** Amsterdam/Eetgelegenheden geeft nid 91145, 75670, 75547 —
|
|
|
|
|
- dus nog steeds aflopend op nid. Voorstel: alfabetisch op naam; sluit aan
|
|
|
|
|
- op het zoekveld uit P2-6. Let op: dit is een **andere view** dan
|
|
|
|
|
- `flutterflowmobiel1`, met een eigen pager van **100** per pagina.
|
|
|
|
|
-- **P2-1** — datumfilter (Vandaag / Dit weekend / Deze week). Vergt een
|
|
|
|
|
- exposed date-filter; pas zinvol ná P1-42.
|
|
|
|
|
-- **P1-5** — "Thuis bezorgen". De data bestaat al (`afhaalopties` bevat
|
|
|
|
|
- de term "Bezorgen"), maar de establishments-view geeft 'm niet terug.
|
|
|
|
|
- Extra display met een filter op die term.
|
|
|
|
|
-
|
|
|
|
|
-### 2. Losse builder-taken, in willekeurige volgorde
|
|
|
|
|
-
|
|
|
|
|
-- **P0-12 restpunt (wording, Bob)** — bij het gemeentehartje in
|
|
|
|
|
- `select_state_drop_down_component_widget.dart` (regel ~340, label
|
|
|
|
|
- "Toevoegen favoriet") de reden erbij die de site wél geeft: dat je die
|
|
|
|
|
- gemeente donderdags in de agendamail krijgt. Nu is "gemeente volgen"
|
|
|
|
|
- een knop zonder zichtbaar nut. Engelse vertaling niet vergeten.
|
|
|
|
|
-- ~~**P0-13** — favorieten-hartjes zonder login-guard.~~ **AFGEROND
|
|
|
|
|
- 2026-09-09.** Gemeente-hartje en horeca-detailpagina hebben nu een
|
|
|
|
|
- `userSessionid`-guard; het hartje op de horeca-overzichtskaart is op
|
|
|
|
|
- Bob's beslissing volledig verwijderd (favorieten alleen nog op de
|
|
|
|
|
- establishment-pagina zelf).
|
|
|
|
|
-- **P1-17** — nog 46 velden, en alleen nog in `stadsactiviteitAanmaken`
|
|
|
|
|
- (27) en `uitgaansevenementAanmaken` (19): de twee aanmaak-formulieren
|
|
|
|
|
- die alleen een stadseditor ziet. De hele publieksgerichte UI
|
|
|
|
|
- (hoofdmenu, horeca-detailpagina, gemeentekeuze, favorieten) is
|
|
|
|
|
- 2026-09-08 vertaald en via een verse export geverifieerd — details en
|
|
|
|
|
- de gekozen woordenlijst staan bij de taak zelf. De twee formulieren
|
|
|
|
|
- delen vrijwel dezelfde veldnamen, dus het is 2x dezelfde lijst.
|
|
|
|
|
-- ~~**P2-20** — serif koppen.~~ **Afgewezen 2026-09-08 door Bob: niet
|
|
|
|
|
- doen.** De app houdt Roboto voor de koppen; het verschil met de site
|
|
|
|
|
- (Droid Serif) is een bewuste keuze.
|
|
|
|
|
-
|
|
|
|
|
-### 3. Bij livegang
|
|
|
|
|
-
|
|
|
|
|
-- **P1-30** — de Cloudflare rate limiting rule staat klaar maar op
|
|
|
|
|
- Disabled. Bij het aanzetten óók de twee rate-limiting-vinkjes weghalen
|
|
|
|
|
- uit de bestaande custom rule `flutterflow`, anders skipt die de limiet.
|
|
|
|
|
|
|
+## ▶ Nu aan de beurt (stand 2026-09-10)
|
|
|
|
|
+
|
|
|
|
|
+### Voor Bob — drie Drupal-taken, uitgeschreven
|
|
|
|
|
+
|
|
|
|
|
+**Taak 19 (P1-42b) · view `flutterflowmobiel_establishment_events`, display
|
|
|
|
|
+`services_1` — de agenda op een horecapagina.**
|
|
|
|
|
+Deze view mist wat `flutterflowmobiel1` wél heeft. Doe precies dezelfde
|
|
|
|
|
+ingreep die je bij P1-42 hebt gedaan:
|
|
|
|
|
+1. **Sort criteria** → verwijder wat er nu staat → *+ Add* → **Content:
|
|
|
|
|
+ Datum - start date (field_date)** → **Ascending** (oplopend).
|
|
|
|
|
+2. **Filter criteria** → *+ Add* → **Content: Datum - start date
|
|
|
|
|
+ (field_date)** → operator **"Is greater than or equal to"** →
|
|
|
|
|
+ *Granularity* **hour** → *Default date* **`-2 hours`**. Exact dezelfde
|
|
|
|
|
+ waarden als in de Master van `flutterflowmobiel1`.
|
|
|
|
|
+3. **Pager** staat op **10 items** — dat is krap voor een zaak met een
|
|
|
|
|
+ volle agenda. Voorstel: 25.
|
|
|
|
|
+4. ⚠️ Let bij elke stap op de knop **"For: This services (override)"** vs
|
|
|
|
|
+ **"All displays"**. Deze view heeft meerdere displays; kies bewust.
|
|
|
|
|
+⚠️ **Niet te reproduceren op 2026-09-10:** alle negen door Claude
|
|
|
|
|
+geteste zaken (o.a. Tolhuistuin `75547`, Rialto VU `75670`, Supper club
|
|
|
|
|
+`91145`, Brasserie Thialf `50980`) geven **0 events**. De audit van
|
|
|
|
|
+2026-09-08 vond nog 4 zaken met uitsluitend verlopen agenda. Óf die zaken
|
|
|
|
|
+hebben helemaal geen events, óf er is intussen al iets gewijzigd —
|
|
|
|
|
+**controleer dus eerst of de ingreep überhaupt nog nodig is** voor je 'm
|
|
|
|
|
+doet.
|
|
|
|
|
+
|
|
|
|
|
+**Taak 20 (P1-5) · view `flutterflowmobiel_establishments` — "Thuis
|
|
|
|
|
+bezorgen".**
|
|
|
|
|
+Het drawer-menu heeft een item *Thuis bezorgen* dat nu nergens heen kan.
|
|
|
|
|
+De data bestaat: de vocabulaire **`thuisbezorgen_afhaalbezorgen`** heeft
|
|
|
|
|
+een term **"Bezorgen"**.
|
|
|
|
|
+1. Maak een **nieuwe Services-display** op deze view (wordt
|
|
|
|
|
+ `services_8` of hoger).
|
|
|
|
|
+2. Zet **Filter criteria** voor die display op **override** (anders raak je
|
|
|
|
|
+ alle andere displays!) en voeg toe: **Content: Has taxonomy terms** →
|
|
|
|
|
+ vocabulaire **`thuisbezorgen_afhaalbezorgen`** → term **"Bezorgen"**.
|
|
|
|
|
+3. De overige filters (published, type, `townid` exposed als
|
|
|
|
|
+ `term_node_tid_depth`) moeten blijven zoals in `services_1`, anders
|
|
|
|
|
+ werkt de plaatskeuze niet.
|
|
|
|
|
+4. **Velden hoeven niet aangepast**: de app heeft aan de bestaande set
|
|
|
|
|
+ genoeg (`nid, titel, adres, plaats, logo, categorie` — nagemeten
|
|
|
|
|
+ 2026-09-10). Je hoeft `afhaalopties` dus niet toe te voegen; het
|
|
|
|
|
+ filter doet het werk.
|
|
|
|
|
+5. Geef Claude daarna het **`display_id`** door, dan koppelt die het
|
|
|
|
|
+ drawer-item eraan (het horeca-overzicht accepteert al een
|
|
|
|
|
+ `display_id`-parameter).
|
|
|
|
|
+
|
|
|
|
|
+**Taak 21 (P2-1) · view `flutterflowmobiel1` — datumfilter Vandaag / Dit
|
|
|
|
|
+weekend / Deze week.**
|
|
|
|
|
+Er staat nu één datumfilter (`>= -2 hours`) dat **niet exposed** is. Voor
|
|
|
|
|
+een keuzefilter in de app is een tweede, wél exposed filter nodig:
|
|
|
|
|
+1. **Filter criteria** → *+ Add* → **Content: Datum - start date
|
|
|
|
|
+ (field_date)** → operator **"Is between"** → vink **"Expose this
|
|
|
|
|
+ filter to visitors"** aan.
|
|
|
|
|
+2. Zet de **identifier** op iets voorspelbaars, bv. **`datum_van`** en
|
|
|
|
|
+ **`datum_tot`** (een between-filter geeft twee invoervelden en dus twee
|
|
|
|
|
+ identifiers).
|
|
|
|
|
+3. Laat het bestaande `>= -2 hours`-filter gewoon staan — dat blijft de
|
|
|
|
|
+ ondergrens zodat verleden events nooit terugkomen.
|
|
|
|
|
+4. Doe dit op **alle zeven** de services-displays, of op de Master als de
|
|
|
|
|
+ displays hun filters niet overriden. Let op: `services_1`, `_3`, `_4`,
|
|
|
|
|
+ `_5`, `_6` en `_7` hebben `defaults['filters'] = FALSE`, dus die
|
|
|
|
|
+ **overriden wél** — je moet ze dan stuk voor stuk langs.
|
|
|
|
|
+5. **Controleer met een verzonnen parameter** dat het filter echt
|
|
|
|
|
+ aankomt (staande regel uit `CLAUDE.md`): Views negeert onbekende
|
|
|
|
|
+ query-parameters stil, dus `?onzin_param=123` moet hetzelfde resultaat
|
|
|
|
|
+ geven en `?datum_van=…` een ánder. Zonder die controle bewijst een
|
|
|
|
|
+ uitkomst niets.
|
|
|
|
|
+Daarna kan Claude de drie knoppen in de app bouwen.
|
|
|
|
|
+
|
|
|
|
|
+### Voor Claude — nog open uit deze sessie
|
|
|
|
|
+
|
|
|
|
|
+- **Taak 18 · route omzetten + hernoemen.** Bob's akkoord 2026-09-10.
|
|
|
|
|
+ (a) Twee `Navigate To`'s naar `HorecagelegenhedenOverzichtCopy3`:
|
|
|
|
|
+ `drawer_component_widget.dart:690` en
|
|
|
|
|
+ `horecagelegenheid_current_widget.dart:1562`.
|
|
|
|
|
+ (b) Daarna **`Copy3` hernoemen naar een `...Current`-suffix**
|
|
|
|
|
+ (Bob's wens: consistent met `horecagelegenheidCurrent`).
|
|
|
|
|
+ (c) De oude `HorecagelegenhedenOverzicht` hernoemen naar
|
|
|
|
|
+ `kanweg...` **en verplaatsen naar de map `kanweg`**. Hernoemen en
|
|
|
|
|
+ verplaatsen mag Claude; weggooien niet.
|
|
|
|
|
+- **Taak 22 · P0-12-tekst.** Bob leverde de inhoud 2026-09-10:
|
|
|
|
|
+ *"Bij favoriete gemeenten krijg je een agenda per mail met daarin alle
|
|
|
|
|
+ evenementen uit die favoriete gemeenten."* Plan: het label bij het
|
|
|
|
|
+ gemeentehartje (`SelectStateDropDownComponent`, de `Row` met key
|
|
|
|
|
+ `nosgkxy0`) wordt **"Gemeente volgen"**, met de uitleg als **aparte
|
|
|
|
|
+ `Text` onder de `Row`** — de volle zin naast het hartje in dezelfde
|
|
|
|
|
+ `Row` geeft gegarandeerd overflow. Engelse vertaling gaat mee in de
|
|
|
|
|
+ vertaalronde bij livegang (zie hieronder).
|
|
|
|
|
+
|
|
|
|
|
+### Bij livegang
|
|
|
|
|
+
|
|
|
|
|
+- **P1-17 · alle Engelse vertalingen in één ronde** (Bob's besluit
|
|
|
|
|
+ 2026-09-10: niet nu, want er komen onderweg nog teksten bij). Nu open:
|
|
|
|
|
+ 46 velden in `stadsactiviteitAanmaken` (27) en
|
|
|
|
|
+ `uitgaansevenementAanmaken` (19), plus de nieuwe P0-12-zin hierboven.
|
|
|
|
|
+- **P1-30 · Cloudflare rate limiting** aanzetten, en dan óók de twee
|
|
|
|
|
+ rate-limiting-vinkjes weghalen uit de custom rule `flutterflow`.
|
|
|
|
|
+- **Max items + tab 6** (P2-24 A en C) — geparkeerd, zie daar. Melden bij
|
|
|
|
|
+ FlutterFlow-support is de enige overgebleven route.
|
|
|
|
|
+
|
|
|
|
|
+**Afgerond 2026-09-10:** taak 16 (drie titels met onzichtbaar teken —
|
|
|
|
|
+geverifieerd: "Café Arnhem" staat nu alfabetisch juist), taak 17
|
|
|
|
|
+(contentfoutjes), P0-13 (login-guards op de hartjes), P1-48 (lege-staat
|
|
|
|
|
+op de Home-tabs), en de horeca-sortering (alfabetisch, live).
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|