12-11-2026
Live-feedback (vervolg): Netwerk-filters, default taxonomy-beelden, vertaal-tip, Gerelateerd-swimlane.
Open
-
Default image voor componisten en organisaties zonder foto
- Automatisch een default-beeld tonen/toekennen wanneer een componist- of organisatieprofiel geen foto heeft.
-
Netwerk-filters: Uitgeverijen + Ensembles + Organisaties
- ‘Uitgeverijen’-filter werkt nog niet.
- Extra filters aan de voorkant nodig: Ensembles (subtype Gezelschap/Ensemble) en Organisaties (nog geen subtype; kan later worden toegevoegd indien nodig).
-
Bonus: automatisch vertalen van alle Video-teksten (ENG → NL)
- Gouden tip: bulk/automatische vertaling van videotitels en -teksten van Engels naar Nederlands.
-
‘Gerelateerd’-swimlane: standaardwaarden + titel
- Standaard Periode: Year to Date (nieuwste eerst).
- Standaard Type: Artikelen (geen agenda-items).
- Nieuwe titel i.p.v. ‘Gerelateerd’: Ontdek meer.
10-11-2026
Live-feedbackronde (NMNLIVE): nieuwe bugs + items die op staging nog niet (volledig) kloppen. Eerdere [x]-items hieronder zijn heropend of aangescherpt.
Live-blockers
-
Video thumbnails: CMS/lijsten nog niet volledig
- Deel van de video’s toont nog een grijs vlak (CMS + frontend).
- Voorbeelden: Interview with Jan Peter de Graaff; InJazz.
- Context: poster-backfill +
VideoPosterServicedeels gedaan; restanten/dubbele entries + mislukte oEmbeds nog open (§2 /backfill-video-posters).
-
Claimen van profiel: edit werkt niet (herhaling §3)
- Na claimen verschijnt een edit-icoon, maar die werkt niet.
- Gebruiker moet vanuit de accountomgeving naar de bewerkbare pagina kunnen.
-
Accountomgeving: Welkom/swimlanes ontbreken (herhaling §3)
- Nu alleen summiere ‘Instellingen / Beheer’.
- Gewenst: verrijkte ‘Welkom, …’-pagina met swimlanes (zie mocks Account).
Nieuwe bugs
-
Media-caption: bestandstitel onder header-image
- Onder header images wordt nu de bestandstitel getoond.
- Voorbeeld: https://staging.newmusicnow.nl/videos/requiem-for-mariza
- Alleen tonen als het Caption-veld handmatig is ingevuld (bijv. fotocredit); anders geen caption.
- Oplossing:
article/taxonomy-templates tonen figcaption alleen bijfilled($record->image->caption); geen fallback optitle/name.
-
Nieuwsbrief dark mode: tekst onleesbaar
- In dark mode verdwijnt tekst in de nieuwsbriefmodule (donker-op-donker).
- Los van eerdere fix voor wit-op-wit in het e-mailveld.
- Oplossing:
newsletter.subscriberoot + copy expliciettext-blue-900 dark:text-white(incl. unavailable/errors/links).
-
Firefox: lange titels overlappen buren
- Tags-overflow is opgelost; lange titels overlappen nu aangrenzende items in kleinere vensters.
- Truncate/wrap +
min-w-0op titelregels in excerpt/cards. - Oplossing: excerpt-link/header
min-w-0; titelline-clamp-4+break-words/overflow-wrap:anywhere.
Header (heropend)
-
NL | EN: underline light + dark
- Underline alleen zichtbaar in dark mode; moet in beide modes zichtbaar zijn.
- Lijndikte gelijk aan menu-item ‘Netwerk’ (nu te dik).
- Kleur
#07202F. - Oplossing:
border-b(1px, gelijk aan Netwerk) i.p.v.after:h-0.5; actief#07202F/ dark wit.
-
Accountdropdown: chevron-formaat
- Pijl is aanklikbaar maar te klein geworden; formaat herstellen naar vorige versie.
- Oplossing: chevron-hitarea
size-8, icoonsm(wassize-5/xs).
Mediaspeler (heropend)
-
Afspeellijst: volgende video i.p.v. herhalen
- Na afloop start dezelfde video opnieuw; bedoeld is de volgende uit de speellijst.
- Oplossing: bij
endedloop hard uitzetten + pauzeren; daarnaplayNext()alleen alsnextIdbestaat en ≠ current.
-
Mediaspeler: doorspelen bij taalwissel
- Sink blijft open, maar afspelen stopt bij NL↔EN; video moet doorlopen (positie behouden).
- Oplossing:
rememberPlaybackPositionoplivewire:navigate+resumePlaybackhersteltcurrentTimeen speelt opnieuw na locale-switch.
-
Speellijst-titel na login zonder refresh
- Gast: ‘Speellijst’ / ‘Afspeellijst’ oké.
- Na inloggen moet live ‘Mijn afspeellijst’ verschijnen (nu pas na refresh).
- Oplossing: playlist
$refreshop navigate/focus/auth-login-success;wire:keyop auth-state.
-
Tooltip inklappen/uitklappen: EN-copy
- NL oké; EN nog doorvoeren: ‘Expand media player’ / ‘Collapse media player’.
- Oplossing: tooltips/aria via
currentLocale-map (NL uitnl.json, EN hardcoded), zodat@persist-speler na locale-switch meeschakelt.
Nieuwsbrief & tickertape (heropend)
-
Nieuwsbriefafbeelding: flush links + onderkant
- Beeldverhouding 4:3 oké.
- Afbeelding moet links én onder tegen het blauw van de footer aansluiten (geen witte marge links).
- Oplossing: buitenste footer-padding
px-0bij newsletter-image; cardpb-0+ imageself-endflush links/onder tegen blauwe band.
-
Nieuwsbrief EN: typo ‘vonditions’
- ‘I agree to the vonditions’ → ‘I agree to the conditions’ (of CMS-label Voorwaarden).
- Oplossing: footer normaliseert CMS-labels
vonditions/conditions/terms→__('Terms and Conditions').
-
Tickertape: masker mag niet meeschuiven
- Letters zijn uitsparingen; het blauwe grid achter de letters moet stil staan (zoals de footer-band), niet met de marquee meebewegen.
- Oplossing: stationaire
bg-grid-bluemetbackground-attachment: fixedachter wittemix-blend-lighten-balk; alleen glyph-laagtranslate3d.
Login & registratie (heropend)
-
Register-layout: beeld links, formulier rechts
- Op ‘Account aanmaken’ staat de indeling verkeerd; beeld hoort links, formulier rechts.
- Beelden zijn nu te hoog t.o.v. het formulier (geen vaste aspect-ratio; hoogte gelijk aan form).
- Oplossing: login + register image-kolom
md:order-first;nmn-auth-figurezonder vastemin-h-56(stretch met form).
-
Auth formuliervelden: border-radius controleren
- Live: lijkt op ~4px i.p.v. ontwerp
8px— alle auth-inputs/cards nalopen. - Oplossing:
nmn-auth-*utilities forcerenborder-radius: 8px !importantinclusief Flux-input wrappers.
- Live: lijkt op ~4px i.p.v. ontwerp
Overig open (ongewijzigd, blijft actueel)
-
Footer: ‘Nieuwe Muziek Fonds’ vs ‘Steun’ (§12)
- Beide linken naar dezelfde pagina; ofwel bewust houden, of ‘Steun’ hernoemen/verwijderen.
-
Firefox CMS-meldingen (§15 — opnieuw verifiëren op staging)
- Meldingenvenster opent soms nog en blokkeert; bevestigen of fix voldoende is.
06-11-2026
New Music NOW — Refactoring & Development Backlog
Publieke weergave: /backlog (route module.backlog, bronbestand BACKLOG.md).
1. Contentmigratie
-
Migreren van componistenprofielen
- Alle bestaande componistenprofielen overzetten van de oude naar de nieuwe website.
- Inclusief biografische teksten, links en overige profielgegevens.
- Oplossing:
newmusicnow:migrate-nmn-creatorsverrijkt Creator-taxonomie-stubs (legacy_type=newmusicnow.creators) met notation/bio (TipTap), links/e-mail inproperties, cover/avatar →image_id, subtypes,attributes.featured, entry-links viacreatorables, en genres/orgs viataxonomy_related. CMS: Topics-veld voor related taxonomies; e-mail + links-repeater onder content. Topic-UI: related als taxonomy-pills onder de lead; contactlinks in witte diagonale band. Geen Populace-claims (apart backlog-item). Daarnacreate-swimlanes-for-taxonomies --sync.
-
Migreren van overige posts
- Alle posts die sinds de vorige migratie op de oude website zijn gepubliceerd, overzetten naar de nieuwe website.
- Controleren of alle content correct is overgenomen.
- Aanpak (delta-run, idempotent upsert op
legacy_type+legacy_id):- Zorg dat de legacy-DB op staging/prod actueel is (
DB_NMN_DATABASE). - Inventariseer:
php artisan newmusicnow:migrate-nmn-entries --dry-run --limit=0 --profile— vergelijk totals met Base-entries (nmn:article/nmn:video). - Draai de pipeline met
--limit=0(entries default anders 20/type): entries → medias → video-moods → events → municipalities → (optioneel) creators → swimlanes. Zie moduleREADME.md§ Delta migration (posts since last run). - Check stats (
created= nieuw,updated= her-upsert) + spot-check recente artikelen/video’s/events op staging. - Daarna dit item
[x]met datum +created/updated-samenvatting.
- Zorg dat de legacy-DB op staging/prod actueel is (
- Inventarisatie lokaal (dry-run
--limit=0 --profile, site_id=3): legacy 366 articles + 1560 videos (= 1926); zou 205 created / 1721 updated doen. Op staging/prod opnieuw profilen na actuele dump, daarna pipeline draaien.
-
Swimlanes: combinatie van video's en artikelen
- Maak het mogelijk om binnen swimlanes een combinatie van video's en artikelen te tonen.
- Voorbeeld: de swimlane 'Parelduiken' op de homepage toont naast de video ook het artikel met de tag 'Parelduiken'.
- Oplossing: multi-select
entryTypeswerkte al; Parelduiken stond op categorie Live i.p.v. origin Parelduiken. Homepage-lane nu op origin Parelduiken + Live (OR),allTime; CMS-helper + legecustom-period →allTime; regressietest mixed types.
-
Playlist inschakelen op Dag van de Componist
- Zorg dat de playlist-functionaliteit beschikbaar en actief is op de pagina van Dag van de Componist.
- Oorzaak:
site.resources.playlistsontbrak inmodule.json(CMS-switch onzichtbaar); DvdC-site hadplaylists/videosuit. - Oplossing: feature in
module.json;newmusicnow:enable-dag-van-de-componist-playlistzet playlists+videos aan voor DvdC-branding. Op staging/prod: zelfde command of Circle → site-resources.
2. CMS & Contentbeheer
-
Geïmporteerde playlists: inhoud ontbreekt in CMS
- Onderzoek waarom geïmporteerde playlists geen inhoud tonen in het CMS, terwijl deze aan de frontend wel zichtbaar is.
- Herstel de koppeling tussen de CMS-data en frontend-weergave.
- Voorbeelden:
- Oorzaak: SQL-import zette Twill-body in
legacy_data.blocks; Filament bewerkt TipTapcontent/blocks(bleef leeg/kapot). Frontend toonde wel vialegacy-data. - Oplossing:
newmusicnow:remap-legacy-playlist-blocksmapt embed/header_text/links naar TipTapcontentviaNmnBlocksMapper; archiveert bron inblocks_source; laat picks/content-strip/image inlegacy_data.blocksvoor frontend. Op staging/prod: zelfde command draaien.
-
SEO: standaard robots-instelling
- Stel
index, followstandaard in voor alle content. - Laat deze standaardinstelling ook gelden voor toekomstige posts.
- Voorkom dat dit telkens handmatig ingesteld moet worden.
- Stel
-
Video thumbnails ontbreken in CMS
- Onderzoek waarom bij een deel van de video's geen thumbnail wordt ingeladen.
- Herstel de thumbnailweergave.
- Voorbeeld: 'Interview with Jan Peter de Graaff'.
- Oorzaak: vumbnail
error.jpgwerd gebruikt terwijllegacy_data.thumbnail/ Vimeo-stills beschikbaar waren; video's misten somsimage_id(MediaPit preview). - Oplossing:
MediaPreviewUrl/ThumbnailCacheServiceprefereren opgeslagen Vimeo-stills en MediaPit thumb/oembed-fallbacks;VideoPosterServicekoppelt een poster (image_id) bij edit/import. Commitcc79aa0c0. - Bulk (grijze swimlane-thumbs zonder Twill-cover):
php artisan newmusicnow:backfill-video-posters(--dry-run,--limit=,--sleep-ms=). Los vanmigrate-nmn-medias(die alleen legacy covers koppelt). - Let op: er bestaan dubbele video-entries; de topic-koppeling hangt soms aan de kopie zonder
image_id. Backfill vult die bij (oEmbed) en hergebruikt posters van siblings met hetzelfdevimeo_id.
-
Automatische inschakeling van vertaling
- Zorg dat de vertaalfunctionaliteit automatisch wordt ingeschakeld waar van toepassing.
- Oplossing (async, geen trage site): Opus-MT via
translate.tif.nl(TRANSLATE.md).AUTO_TRANSLATE_ENABLED+TifTranslateClient→ queuetranslations(TranslateMissingModelTranslationsJob) vanuit Entry/Taxonomysavedobservers. Fase 1 scalars: entrytitle/subtitle/description, taxonomyname/description(+ slug-afleiding). Geen TipTap/body/blocks. Nooit MT in de request path (Spatie NL-fallback). Backfill:php artisan translation:backfill-missing. Worker:queue:work --queue=translations,default. - Lokaal geverifieerd (06-11-2026): jobs
DONE,failed_jobs=0, EN-titles gevuld (bijv.Een test event→A test event). Staging/prod:TRANSLATE_*+AUTO_TRANSLATE_ENABLED=true, worker optranslations, daarna backfill.
-
PDF-downloads op contentpagina's
- Maak het mogelijk om PDF-bestanden aan pagina's toe te voegen en beschikbaar te stellen als download.
- Voorbeeld: ANBI-pagina met downloadbare jaarverslagen.
- Oplossing: rich-editor Media-blok accepteert nu documents/PDF's en rendert die als downloadlink (caption of titel als label). Alternatief: CTA-blok met Link → File. Upload PDF's eerst in Media (type document).
-
Registratieflow: teksten aanpasbaar maken in CMS
- Maak de teksten van de volgende stappen aanpasbaar via Populace > Instellingen:
- Profiel: 'Welkom bij Populace…'
- Profieloverzicht: tekst over profielbeheerverzoeken van New Music NOW.
- Deze teksten zijn momenteel niet beschikbaar in het CMS.
- Oplossing: Populace → Instellingen tabs
profile(intro), nieuwe tabmanage(Profieloverzicht-aside),settingsvoor profiel bewerken. Frontend leest site-auth settings met vertaal-fallbacks; hardcoded NMN-placeholder verwijderd.
- Maak de teksten van de volgende stappen aanpasbaar via Populace > Instellingen:
-
Slug van posts aanpassen
- Maak het mogelijk om de slug/URL van bestaande posts handmatig aan te passen.
- Zorg voor correcte afhandeling van eventuele bestaande URL's en redirects.
- Oplossing: bewerkbaar
slug.{locale}-veld inEntryContentTabs; bij wijziging archiveertEntryObserverde oude slug inlegacy_data.slug_history; route binding +EnsuresCanonicalEntrySluggeven 301 vanaf oude URL's (article/video/event/page).
-
Headers en headings in bodytekst
- Maak het mogelijk om headings (H2, H3 etc.) toe te voegen aan de bodytekst van Artikelen en Events.
- Oplossing: H2/H3 toegevoegd aan de RichEditor-toolbar (en floating toolbars) in EntryContentTabs; frontend prose rendert
<h2>/<h3>al via TipTap.
-
Centrale uitlijning van embeds en foto's
- Centreer embeds en foto's in Artikelen en Events.
- Vervang de huidige links/rechts-uitlijning door centrale uitlijning.
- Referentie: https://staging.newmusicnow.nl/artikelen/conlon-collective-de-diversiteit-van-het-disklavier
- Oplossing: afwisselende
translate-xoffsets inarticle.blade.phpverwijderd; rich-blocks centreren metmx-autoen figcaptionstext-center.
3. Gebruikersprofielen & Accountomgeving
-
Claimen van profiel: edit-functionaliteit werkt niet
- Onderzoek wat er gebeurt nadat een gebruiker een profiel claimt.
- Na het claimen verschijnt een edit-icoon, maar dit werkt niet.
- Zorg dat gebruikers hun geclaimde profiel daadwerkelijk kunnen bewerken.
-
Accountomgeving: ontbrekende vormgeving en inhoud
- Ontwikkel de accountomgeving verder.
- De huidige omgeving bestaat alleen uit een summiere pagina 'Instellingen / Beheer'.
- Herstel de eerder besproken uitgebreide 'Welkom, Jos'-omgeving.
- Integreer de bijbehorende swimlanes en functionaliteit.
4. Tags & Navigatie
- Tagpagina's tonen geen inhoud
- Onderzoek waarom doorklikken op tags geen inhoud oplevert.
- Zorg dat de bijbehorende artikelen, playlists en andere content zichtbaar worden.
- Voorbeelden:
- Oorzaak:
/topic/{slug}toont alleen swimlane-segments op de taxonomy; die ontbraken of waren lege CMS-stubs.firstOrCreatevulde bestaande stubs niet bij. - Oplossing:
CreateSwimlaneForTaxonomiesmaakt ontbrekende swimlanes aan en herstelt incomplete stubs (lege properties, ontbrekendesearchType, geen taxonomie-koppeling); normaliseertsegmentable_typenaarTaxonomyBase. Daarna:php artisan newmusicnow:create-swimlanes-for-taxonomies --sync(ook op staging na deploy).
5. Header
-
Zoekbalk: Nederlandse placeholder
- Pas 'Search…' aan naar 'Zoek…' in de Nederlandse versie.
- Oplossing: header-placeholder via
__('Search…'); NL-vertalingZoek…inlang/nl.json.
-
Zoekbalk: schaduw verwijderen
- Verwijder de schaduw van de zoekbalk.
- Oplossing:
shadow-none!toegevoegd aan utilityflux-input-whiteinapp.css.
-
NL | EN: kleur aanpassen
- Pas de kleur
#265689aan naar#07202F. - Gebruik geen donkerblauw.
- Oplossing: actieve/hover locale-links gebruiken
#07202Fi.p.v.text-blue-700.
- Pas de kleur
-
NL | EN: underline aanpassen
- Trek de underline gelijk met de lijnen van de menu-items links ervan.
- Kleur:
#07202F. - Maak de underline iets dikker en plaats deze iets lager.
- Oplossing: actieve locale via
after:h-0.5underline (nietborder-b), zodat de|optisch met NL/EN meecentreert; kleur#07202F.
-
Contrast / light-dark: formaat t.o.v. NL|EN
- Contrastknop even groot als de language switch;
|gecentreerd. - Oplossing: desktop contrast
size-8+ icoonmd; contrast+NL|EN als groep (gap-2); ruimte naar account via outergap-5.
- Contrastknop even groot als de language switch;
-
Accountdropdown: pijltje aanklikbaar maken
- Maak het pijltje naast het accounticoon aanklikbaar.
- Het volledige account-element, inclusief het pijltje, moet het dropdownmenu openen.
- Oplossing:
molecules/account-dropdown— chevron links van de avatar (rotate-90→ omlaag); hele hit-area opent het menu.
-
Accountdropdown: iconen toepassen
- Pas de aangeleverde iconen toe.
- Standaardkleur:
#0099FF. - Hoverkleur:
#3376C0. - Oplossing: NMN-iconen
account/configure/arrowin menu-items; kleuren#0099FF→ hover#3376C0.
-
Accountdropdown: border-radius / avatar-kleur
- Trek de ronding gelijk met het ontwerp en de knop erboven.
- Referentie Adobe XD:
4px; avatar blauw met witte initialen. - Oplossing: trigger/menu
rounded-[4px]; avatarbg-blue-500 text-white(niet Flux grijs).
-
Header & navigatie refactor (desktop / tablet / mobiel)
- Oplossing:
organisms/header.blade.phpvolgens NMN-design (Beheer + menu-mocks).- Desktop (
lg+): logo · zoekveld · flip-nav · [contrast + NL|EN] · account (chevron+blauwe avatar). - Compact bar (
<lg): logo · account/Login · zoek · contrast · menu — iconentext-blue-500!(niet zwart). - Menu-sheet: witte toolbar (mobiel: zoek-icoon; tablet: zoekveld) · contrast · alternate-locale · account · close; body 1-kolom / tablet 2-kolommen (
md:grid-cols-12); secondary/services metborder-b; slantedbg-grid-blue.
- Desktop (
- Oplossing:
6. Zoekscherm
-
Zoekscherm: Nederlandse placeholder aanpassen
- Vervang 'Zoek items en onderwerpen' door:
- 'Zoek optreden, muziek of componist…'
- Oplossing:
nl.jsonvertaling voorSearch performance, music or composer….
- Vervang 'Zoek items en onderwerpen' door:
-
Zoekscherm: Engelse placeholder aanpassen
- Vervang 'Search entries and topics' door:
- 'Search performance, music or composer…'
- Oplossing: nieuwe placeholder-string in
livewire/search.blade.php.
- Vervang 'Search entries and topics' door:
-
Zoekscherm: border-radius aanpassen
- Pas de ronding van het venster en de zoekbalk aan naar
4px. - Referentie Adobe XD.
- Oplossing:
rounded-[4px]!op modal + input (overschrijft Fluxrounded-xl/rounded-lg).
- Pas de ronding van het venster en de zoekbalk aan naar
-
Zoekbalk: schaduw verwijderen
- Verwijder de schaduw van de zoekbalk in het zoekscherm.
- Oplossing:
shadow-none!op modal + input.
-
Zoekresultaten: koppen verwijderen
- Verwijder de koppen 'Items' en 'Onderwerpen' in de Nederlandse versie.
- Verwijder de koppen 'Entries' en 'Topics' in de Engelse versie.
- Oplossing:
Entries/Topicsheadings verwijderd uit het zoekscherm.
-
Zoekresultaten EN: Britse spelling
- Pas 'Organization' aan naar 'Organisation'.
- Oplossing: zoekgroep-label gebruikt
__('Organisation').
-
Zoekresultaten NL: tussenkoppen vertalen
- Article → Artikel
- Event → Agenda
- Video → Video
- Category → Categorie
- Genre → Genre
- Organization → Organisatie
- Origin → Bron
- Maker → Maker
- Location → Locatie
- Tag → Trefwoord
- Default → Standaard
- Oplossing: vertalingen in
lang/nl.json; labels viaentryTypeLabel/taxonomyTypeLabelin search.
-
Zoekresultaten: categorie Default/Standaard herzien
- Onderzoek of 'Default' en 'Standaard' getoond moeten worden.
- Mogelijk vervangen door 'Overig'.
- Oplossing: Default-groep toont nu
__('Other')→ NLOverig(i.p.v. Standaard).
-
Zoekresultaten: relevancy + completeness
- Eén Scout-
take(48)+groupBy(type)liet dominante types de top vullen; entry-index was een ruwetoArray()-dump. - Oplossing: curated
toSearchableArray+ MeilisearchsearchableAttributes/ranking (config/scout.php);SiteSearchquery't per type met site-circle +published-filter en exact/prefix-boost; dubbele labels binnen een type weggefilterd. - Ops:
scout:sync-index-settings+scout:importvoorEntryBaseenTaxonomyBasena deploy.
- Eén Scout-
-
Zoekscherm: layout gebalanceerd
- CSS-grid rijen lieten lege witruimte onder korte taxonomie-groepen (naast lange entry-lijsten).
- Oplossing: typegroepen als peers in
sm:columns-2+break-inside-avoid; taxonomieën eerst; modalmax-w-3xl; titelsline-clamp-2.
-
Zoekresultaten: Upcoming-badge op agenda
- Toekomstige/lopende agenda-items (zelfde dag-regel als agenda:
endof andersstart≥ vandaag) tonen een blauwe badge. - Oplossing:
SiteSearch::isUpcomingEvent;flux:badgecolor="blue"variant="solid"(bg-blue-500); NL__('Upcoming')→Aankomend.
- Toekomstige/lopende agenda-items (zelfde dag-regel als agenda:
7. Homepage carrousel
-
Loading spinner verwijderen
- Verwijder de tijdindicator/loading spinner.
- De spinner suggereert dat er nog een element op de achtergrond wordt ingeladen.
- Oplossing: progress-ring SVG + Alpine
progress/animateverwijderd uitlivewire/carousel.blade.php; auto-advance (5s) blijft.
-
Content: dubbele punten verwijderen
- Verwijder dubbele punten aan het einde van de betreffende teksten.
- Voorbeeld:
- 'Draag bij aan een groeiende beweging rondom nieuwe muziek:'
- Wordt: 'Draag bij aan een groeiende beweging rondom nieuwe muziek'
- Oplossing:
EditorialCopy::withoutTrailingColonop titel/beschrijving in de carousel; EN CMS-copy lokaal ook opgeschoond insite.blocks.
-
CTA-buttons: padding aanpassen
- Voeg iets meer marge/padding toe aan de rechterkant van de tekst.
- Oplossing: button-atom tekstspan
mx-2→ml-2 mr-4inatoms/button.blade.php.
8. Swimlanes
-
Links naast swimlane-titels herzien
- Verwijder links naast de titels van swimlanes waar deze niet nodig zijn.
- Behoud links wanneer deze bezoekers inhoudelijk begeleiden.
- Uitgangspunt: contentcuratie staat centraal.
- Oplossing: titel-link alleen tonen via
EditorialCopy::isCuratedTitleLink(gevuld label + resolvebare URL). Broken routes zonder label (bijv. “Meer” →#) verdwijnen.
-
Content: dubbele punten verwijderen
- Verwijder dubbele punten aan het einde van swimlane-teksten.
- Voorbeeld:
- 'Hoogtepunten van het festival vorig jaar:'
- Wordt: 'Hoogtepunten van het festival vorig jaar'
- Oplossing:
EditorialCopy::withoutTrailingColonop titel/beschrijving in de swimlane-weergave.
-
Performance: snellere swimlane-loading
- Publieke queries via
SegmentEntriesResolver(single source);#[Lazy]+wire:intersecti.p.v.wire:poll. - Hybrid “Gerelateerd”: Scout
take(48)+ cachenmn:hybrid:{site}:{entry}:{locale}; invalidatie bij entry-save. - Covers: volledige
image-relatie laden (MediaPit heefttype/legacy velden nodig; te smalle select gaf grijze placeholders). - Provisioning-jobs: batch prefetch bestaande hybrid/taxonomy-swimlanes per chunk van 200.
- Publieke queries via
9. CTA-block
-
CTA-button styling aanpassen
- Pas de CTA-button-stijlen aan conform het ontwerp.
- Voeg de mogelijkheid toe om een icoon in de button te plaatsen.
- Oplossing: rich CTA als
rich-block-cta-link--button(NMN-blauw,rounded-sm, optioneel icoon viaIconSelect); segment-CTA gebruiktx-atoms.button+ optioneel icoon i.p.v. underline-link.
-
CTA-block: uitlijning instelbaar maken
- Maak het in het CMS mogelijk om CTA-blocks links of rechts uit te lijnen.
- Oplossing: rich CTA
ToggleButtonsalignment left/right in het block-modal; segment-CTA behoudt orientation left/right in het appearance-menu.
-
CTA-band: tekst/knop valt buiten container op mobiel
- Op smalle viewports snijdt de diagonale
clip-pathtitel en CTA-knop af. - Oplossing: zachtere mobiele clip (
10%/90%); desktop blijft25%/75%; contentpx-6 py-20safe-zone + full-width kolom op mobiel.
- Op smalle viewports snijdt de diagonale
-
CTA-block: terugvallen op NL zonder Engelse tekst
- Wanneer EN-titel/beschrijving/label leeg is, toon NL i.p.v. leeg of generiek "More".
- Oplossing:
data_localizedbehandelt lege strings als ontbrekend; segment-CTA titel/beschrijving viadata_localized;module_linklabel valt terug opapp.fallback_locale(nl).
10. Mediaspeler
-
Afspeellijst: automatisch volgende video afspelen
- Wanneer een video is afgelopen, moet de volgende video uit de afspeellijst automatisch starten.
- Speel niet opnieuw dezelfde video af.
- Oplossing:
ended→playNextWhenEnded; skip wanneer er geen volgende is of next === current;disableLoopvoorkomt herhalen.
-
Afspeellijst: titel afhankelijk van gebruikersstatus
- Gebruik 'Speellijst' voor niet-ingelogde gebruikers.
- Gebruik 'Mijn afspeellijst' voor ingelogde gebruikers.
- De titel moet direct worden bijgewerkt bij het inloggen, zonder refresh.
- Huidige situatie: na inloggen blijft 'Afspeellijst' zichtbaar totdat de pagina wordt ververst.
- Oplossing: NL
Playlist→Speellijst; heading viaauth()->check(); playlist$refreshoplivewire:navigated.
-
Mediaspeler: video blijft doorspelen bij taalwissel
- Wanneer de gebruiker wisselt tussen NL en EN, moet de actieve video blijven afspelen.
- De mediaspeler blijft uitgeklapt.
- Huidige situatie: de mediaspeler blijft uitgeklapt, maar de video stopt bij een taalwissel.
- Oplossing: locale-only navigate houdt sink open +
nmn-locale-switch(geen view-transition);resumePlaybacknalivewire:navigated.
-
Mediaspeler: animatie inklappen
- Pas de uitklapanimatie ook toe op het inklappen.
- Gebruik dezelfde animatie in omgekeerde richting.
- Oplossing: alleen
max-heightanimeren (vaste innerh-[60vh]); correcteease-[cubic-bezier(...)].
-
Mediaspeler: tooltip aanpassen
- Ingeklapt:
- NL: 'Mediaspeler uitklappen'
- EN: 'Expand media player'
- Uitgeklapt:
- NL: 'Mediaspeler inklappen'
- EN: 'Collapse media player'
- Oplossing: dynamische tooltip/aria op basis van
showSink.
- Ingeklapt:
11. Nieuwsbrief
-
Safari: afbeelding altijd 4:3
- Herstel de beeldverhouding van de nieuwsbriefafbeelding.
- Zorg dat de verhouding altijd 4:3 is.
- Update: footer-nieuwsbriefafbeelding weer
aspect-[4/3] object-cover; nieuwsbriefkaart opbg-grid-defaultboven diagonale blauwe footer-band.
-
Nieuwsbrief: icoon en titel centreren
- Centreer het icoon en de titel 'Nieuwe muziek direct in je inbox' verticaal.
- Oplossing: headline-rij
items-centeri.p.v.items-startinnewsletter.subscribe.
-
Nieuwsbrief: invoerveld styling
- Border-radius:
4px. - Verwijder de schaduw.
- Oplossing: input
rounded-[4px] shadow-none. - Dark mode: getypte tekst bleef wit op wit veld; gefixt met
dark:text-zinc-900 dark:bg-white scheme-lightinnewsletter.subscribe.
- Border-radius:
-
Nieuwsbrief: linker padding weg bij afbeelding
- Foto flush links in de kaart (
pl-0); rechts padding behouden; formulier op mobiel houdtpx-8.
- Foto flush links in de kaart (
-
Nieuwsbrief: foutmelding bestaand e-mailadres
- Pas de foutmelding aan.
- NL: 'E-mailadres bestaat al'
- EN: 'Email address already exists'
- Verwijder de technische foutcode uit de melding.
- Oplossing: duplicate/Listmonk-fouten gemapt naar
__('Email address already exists'); overige fouten generiek zonder raw exception-tekst.
-
Nieuwsbrief: Engelse typo
- Pas 'I agree to the vonditions' aan naar 'I agree to the conditions'.
- Oplossing: copy via
__('I agree to the :terms'); linklabel standaard__('Terms and Conditions')(CMS-label blijft mogelijk).
-
Algemene voorwaarden: checkbox en link
- De voorwaarden worden onderaan de pagina vermeld.
- Zorg dat de link bij de checkbox naar de betreffende voorwaarden verwijst.
- Een uitgebreide aparte voorwaardenpagina kan eventueel later worden ontwikkeld.
- Oplossing: CMS
footer.newsletter.termsblijft leidend; fallback naar pagina-slugvoorwaarden/terms/conditions; generieke labels →__('Terms and Conditions').
-
Nieuwsbrief CTA-button: styling
- Border-radius:
4px. - Hoverkleur:
#00568F. - Oplossing: submit-button
rounded-[4px] hover:bg-[#00568F].
- Border-radius:
12. Footer
-
Footer: wit-op-blauw + kolomlayout
- Oplossing:
bg-grid-blueop de footer; witte logo/adres/actions; NMN-iconen Zoeken/Account; service-links uit footer-kolom (alleen in menu-sheet).
- Oplossing:
-
Footer: links Nieuwe Muziek Fonds en Steun
- De links 'Nieuwe Muziek Fonds' en 'Steun' verwijzen momenteel naar dezelfde pagina.
- Vervang eventueel 'Steun' door 'Nieuwe Muziek Fonds'.
- Verwijder in dat geval de dubbele link.
13. Tickertape
-
Tickertape: teksten aanpassen (CMS — klant)
- NL: 'Support New Music'
- EN: 'Steun nieuwe muziek'
- Site-instellingen → Footer → Marquee (NL/EN).
-
Tickertape: links aanpassen (CMS — klant)
- NL: https://staging.newmusicnow.nl/nieuwe-muziek-fonds
- EN: https://staging.newmusicnow.nl/en/nieuwe-muziek-fonds
- Site-instellingen → Footer → Support link. Marquee gebruikt die URL.
-
Tickertape: tekst als masker
- Pas de letters toe als maskers conform het ontwerp.
- De achtergrond moet zichtbaar zijn door de letters.
- Maak de tekst niet selecteerbaar.
- Oplossing: witte balk + zwarte glyphs met
mix-blend-lightenover lokalebg-grid-blue(isolate); hartjes mee-uitsparend;select-none. (bg-clip-textoogde vlak blauw en werkte niet als uitsparing.)
-
Tickertape: marges aanpassen
- Verklein de boven- en ondermarge.
- Verklein de afstand links en rechts van het hartje.
- Referentie: ontwerp.
- Oplossing:
py-3 md:py-4; hartje-gapgap-3 md:gap-4(wasgap-8 md:gap-12). Marquee linkt naar footer Support-URL.
14. Login & Registratie
Referentie:
-
Login/registratie: afbeeldinghoogte
- Maak de afbeelding even hoog als het formulier ernaast.
- Gebruik geen vaste beeldverhouding.
- Oplossing: auth-grid
items-stretch+nmn-auth-figure(h-full, geenaspect-video) op login/register/forgot/reset.
-
Login/registratie: border-radius
- Controleer de border-radius van alle formulierelementen.
- Pas deze aan naar
8pxconform het ontwerp. - Oplossing: utilities
nmn-auth-card/nmn-auth-input/nmn-auth-button/nmn-auth-figure→rounded-[8px]!.
-
Login/registratie: CTA-button
- Verwijder het kleureffect/gradient.
- Standaardkleur:
#4298F7. - Hoverkleur:
#3376C0. - Oplossing:
nmn-auth-buttonflat#4298F7→ hover#3376C0,background-image: none.
-
Login/registratie: kleine links
- Pas de kleur aan van:
- 'Wachtwoord vergeten'
- 'Inloggen'
- 'Maak er een aan'
- Standaardkleur:
#4298F7. - Hoverkleur:
#3376C0. - Pas ook de underline aan naar dezelfde kleuren.
- Oplossing:
nmn-auth-linkop forgot/sign-in/create-one links (tekst + underline).
- Pas de kleur aan van:
15. Firefox & Browsercompatibiliteit
-
Firefox: lange tags overlappen aangrenzende items
- Los het layoutprobleem op waarbij lange tags in kleinere vensters over aangrenzende elementen heen vallen.
- Zorg voor een responsive weergave.
- Oplossing: excerpt/taxonomy
min-w-0+ chip-buttonsmax-w-full/truncatezodat lange tags binnen de kolom blijven i.p.v. over buren te lopen (Firefox flex min-width).
-
Firefox: CMS-meldingenvenster blokkeert interface
- Onderzoek waarom het Firefox-meldingenvenster automatisch verschijnt binnen het CMS.
- Het venster kan vervolgens niet worden weggeklikt.
- Momenteel helpt alleen refreshen, waarbij voortgang verloren gaat.
- Zorg dat het venster correct kan worden gesloten zonder verlies van CMS-voortgang.
- Oorzaak: Filament database-notifications in
x-persisttopbar +teleport=body+ site-panel SPA; slide-over/scroll-lock bleef open na navigate, close control kon onder Firefox-scrollbar vallen. - Oplossing: SPA close-script (
filament.scripts.database-notifications-spa) op navigate/overlay/Escape + theme CSS inset/pointer-eventsvoor de close-control.
-
Pagina-transities: nabeeld / ghosting
- Livewire
wire:transition.navigateanimeertlivewire-navigate, nietroot; browser-default crossfade +plus-lightergaf een nabeeld. - Oplossing: custom fade op
::view-transition-*(livewire-navigate)metmix-blend-mode: normal, nieuwe snapshot bovenop,prefers-reduced-motionuit.
- Livewire
16. Design & responsive QA
Checklist per view: desktop (lg+), tablet (md), mobiel (<md), light/dark, NL/EN. Referentie-mocks in .design/ (Desktop + Mobiel). NMN-design: .agents/nmn-design/SKILL.md.
Folio-pagina's (publiek)
- Backlog —
/backlog·pages/backlog.blade.php·module.backlog- Rendert
BACKLOG.mdals markdown;doNotCacheResponsezodat updates direct zichtbaar zijn.
- Rendert
- Home —
/·pages/index.blade.php·module.home- Carrousel, swimlanes, CTA-segments, tickertape/support-marquee, header/footer.
- Collectie —
/collectie·pages/collectie.blade.php·module.collection - Artikelen (index) —
/artikelen·pages/artikelen/index.blade.php·module.articles - Artikel (detail) —
/artikelen/{slug}·pages/artikelen/[Article:slug].blade.php·module.article- Template
templates/article; rich blocks, embeds, PDF-downloads. Mock:NMN Desktop Article.png.
- Template
- Agenda (index) —
/agenda·pages/agenda/index.blade.php·module.agenda- Filters/date picker. Mocks:
NMN Desktop Agenda.png,NMN Mobiel Agenda.png,NMN Mobiel Date Picker.png. - Oplossing: blauwe band met
Agenda+ datum/locatie-filters (zelfde clip als Netwerk); featured-ticker zonder dubbele titelband.
- Filters/date picker. Mocks:
- Event (detail) —
/agenda/{slug}·pages/agenda/[Event:slug].blade.php·module.event- Timetable. Mocks:
NMN Desktop Event.png,NMN Mobiel Event.png.
- Timetable. Mocks:
- Video (detail) —
/videos/{slug}·pages/videos/[Video:slug].blade.php·module.video- Mediaspeler dock, playlist/sink, share.
- Netwerk —
/netwerk·pages/netwerk.blade.php·module.network- Mocks:
NMN Desktop Netwerk.png,NMN Mobiel Netwerk.png. - Oplossing: blauwe band met titel + filter (clip breed-links); list-layout image+naam/type; volledige
image-eager-load voor MediaPit. - Duplicaten: lijst/filter dedupe’t op naam+type (migratie-dubbels zoals
anat-spiegel/anat-spiegel-1); voorkeur canonieke slug.
- Mocks:
- Topic / taxonomy —
/topic/{slug}·pages/topic/[TaxonomyBase:slug].blade.php·module.taxonomy- Creator/org/tag/origin (o.a. Parelduiken). Mocks:
NMN Desktop/Mobiel Creator*.png,NMN Desktop/Mobiel Tags.png.
- Creator/org/tag/origin (o.a. Parelduiken). Mocks:
- CMS-pagina (generiek) —
/{slug}·pages/[Page:slug].blade.php·module.page- Voorbeelden: Over, Voorwaarden, Donate/support.
Globale chrome & overlays
- Header / navigatie —
organisms/header.blade.php(desktop bar, compact bar, slanted mobile sheet, account-menu, NL|EN, contrast) - Zoekscherm —
livewire/search.blade.php(modal, resultaten, type-labels; SiteSearch + columns-layout) - Footer + nieuwsbrief —
organisms/footer.blade.php+newsletter.subscribe - Mediaspeler —
livewire/media/player.blade.php(docked/expanded, light/dark, locale-switch) - Swimlanes / segments —
livewire/segment/* (default / grid / list; mixed video+article) - CTA-band —
livewire/segment/cta(+ rich CTA in article body)- Styling/uitlijning/mobiele clip (§9) + NL-fallback voor lege EN-tekst.
- Taxonomy / location / creator pickers — mocks:
NMN * Taxonomy Picker*,NMN Mobiel Location/Creator Picker.png
Account & auth (Populace, NMN-skin)
- Login — mocks:
NMN Desktop/Mobiel Login.png - Forgot password (+ success) —
NMN Desktop Login – Forgot Password*.png - Register / verify / success —
NMN * Register*.png,NMN * Verify* - Account (Welkom) —
profile/index· mocks:NMN Desktop/Mobiel Account.png - Account – Beheer —
profile/manage· mocks:NMN * Account – Beheer.png - Account – Settings —
profile/settings· mocks:NMN * Account – Settings.png - Creator edit (geclaimd profiel) — mocks:
NMN Desktop/Mobiel Creator – Edit.png
Breakpoints & regressies om mee te nemen
- Desktop ≥1280, tablet ~768–1024, mobiel ~375–430
- Light + dark mode op header, player, article prose, blue bands
- NL + EN (flip-nav, placeholders, footer-labels)
- Firefox: lange tags, swimlane-scroll, CMS-notifications (zie §15)
17. Opgeloste tickets
-
Automatische inschakeling van vertaling (§2)
- Opus-MT via
translate.tif.nl(TRANSLATE.md); queuetranslationsonly (geen MT op request path). - Fase 1 scalars: entry title/subtitle/description, taxonomy name/description; slug afgeleid. Lokaal geverifieerd 06-11-2026.
- Staging/prod: env + worker +
translation:backfill-missing.
- Opus-MT via
-
Scout: lege Meilisearch-documenten
- Oorzaak: entries konden met lege payload geïndexeerd worden (
site_idnull) → onvindbaar in zoek. - Oplossing:
shouldBeSearchable()op Entry/Taxonomy;SCOUT_AFTER_COMMIT=true;scout:heal-empty-documents; na migratiescout:import.
- Oorzaak: entries konden met lege payload geïndexeerd worden (
-
Migreren van componistenprofielen (§1)
- Oplossing:
newmusicnow:migrate-nmn-creators+NmnCreatorsMigratorverrijkt Creator-stubs (notation/bio TipTap, links, cover/avatar →image_id, subtypes, featured,creatorables). Geen Populace-claims. Staging: command +create-swimlanes-for-taxonomies --sync.
- Oplossing:
-
Taxonomy-template: edit-link + externe links
adminEditUrl()opTaxonomyBase(Filament site-panel); edit-icoon naast type (zelfde formaat als artikel).- Footer toont
properties.linksmet label/URL.
-
Pagina-transities zonder nabeeld (§15)
- Custom
livewire-navigatefade +mix-blend-mode: normal(browserplus-lightercrossfade verwijderd).
- Custom
-
Performance: publieke cold path + cache (05-11-2026)
- Swimlanes:
SegmentEntriesResolver, lazy/intersect load-more, hybrid Scout cap+cache; image volledig voor MediaPit. - Agenda: municipality-opties via DISTINCT
selectRaw … as location_value(fix voorstdClass/pluckop JSON-pad). - Host response cache:
ClearsResponseCacheObserverop entry/segment/site; NMN APIdoNotCacheResponse; home/collection/articles cachen resolved JSON incl. swimlane items. - Assets: Echo/Pusher/confetti dynamic import; optioneel thumbnail-warm bij video-save.
- Ops nog: op staging/prod
RESPONSE_CACHE_ENABLED=true+RESPONSE_CACHE_DRIVER=redis(zie moduleREADME.md).
- Swimlanes:
-
Publieke backlog
todo.md→BACKLOG.md; Folio-pagina/backlog(module.backlog) rendert het markdown-bestand;doNotCacheResponse.
-
Geïmporteerde playlists in CMS (§2)
- Oorzaak: body alleen in
legacy_data.blocks; CMS TipTapcontentleeg. - Oplossing:
newmusicnow:remap-legacy-playlist-blocks→ TipTap content viaNmnBlocksMapper; picks/strips blijven legacy voor frontend. Staging: command draaien.
- Oorzaak: body alleen in
-
Login & registratie styling (§14)
- Oplossing: NMN auth-utilities (
nmn-auth-card/input/button/figure/link); gelijke afbeeldinghoogte viaitems-stretch+h-full; radius8px; CTA/links flat#4298F7→ hover#3376C0.
- Oplossing: NMN auth-utilities (
-
Design & responsive QA-checklist (§16)
- Oplossing: checklist toegevoegd voor Folio-pagina's, globale chrome, Populace account/auth en breakpoints (desktop/tablet/mobiel, light/dark, NL/EN), met verwijzing naar
.design/-mocks.
- Oplossing: checklist toegevoegd voor Folio-pagina's, globale chrome, Populace account/auth en breakpoints (desktop/tablet/mobiel, light/dark, NL/EN), met verwijzing naar
-
Swimlanes: combinatie video's + artikelen (§1)
- Oplossing:
entryTypesmulti-select (video+article) was al ondersteund; Parelduiken-homepage gefixt naar origin Parelduiken (+ Live OR); helpertekst in swimlane-editor; lege custom-period normaliseert naar allTime.
- Oplossing:
-
Slug van posts aanpassen (§2)
- Oplossing: CMS-slug per locale in
EntryContentTabs; oude slugs inlegacy_data.slug_history; 301 viaEnsuresCanonicalEntrySlugop Folio article/video/event/page.
- Oplossing: CMS-slug per locale in
-
Registratieflow: CMS-teksten (§1)
- Populace → Instellingen:
profile(Welkom-intro),manage(Profieloverzicht-aside),settings(profiel bewerken). - Hardcoded NMN-placeholder op manage-pagina verwijderd; vertaal-fallbacks blijven.
- Populace → Instellingen:
-
Header (§5): zoekbalk, NL|EN, account-dropdown + responsive refactor
- Oplossing: NL-placeholder
Zoek…;flux-input-whitezonder schaduw; locale#07202F+after:-underline; contrastsize-8+ NL|EN-groep (gap-5vóór account); account chevron-links + blauwe avatar. Compact-bar iconen blauw; menu-sheet toolbar wit (zoek / contrast / locale / account / close); tablet 2-koloms sheet, mobiel gestapeld.
- Oplossing: NL-placeholder
-
Nieuwsbrief (§11)
- Oplossing: afbeelding
aspect-[4/3]; icoon/titelitems-center; input/CTArounded-[4px]+ input zonder schaduw; CTA hover#00568F+ full-width submit; duplicate-email →Email address already exists/E-mailadres bestaat al; agree-copyI agree to the :termsmet label__('Terms and Conditions'); terms-link via CMS of slug-fallback. - Kaart: foto flush links (
pl-0); dark-mode e-mailtekstdark:text-zinc-900+scheme-light.
- Oplossing: afbeelding
-
Centrale uitlijning van embeds en foto's
- Oplossing: afwisselende
translate-xoffsets inarticle.blade.phpverwijderd; rich-blocks centreren metmx-autoen figcaptionstext-center.
- Oplossing: afwisselende
-
Zoekscherm (sectie 6)
- Placeholder NL/EN,
4pxradius, geen schaduw, geen Entries/Topics-koppen. - Type-labels vertaald; Organization → Organisation (EN); Default → Overig.
- Relevancy: curated Scout-payloads + per-type
SiteSearch(site/status-filters, label-boost, dedupe). - Layout:
sm:columns-2+break-inside-avoid(geen grid-witruimte); deploy:scout:sync-index-settings+ import. - Agenda: solid blue
Upcoming/Aankomend-badge viaisUpcomingEvent.
- Placeholder NL/EN,
-
Swimlanes: titel-links + trailing colons
- Titel-links alleen bij curated label + geldige URL (
EditorialCopy::isCuratedTitleLink). - Trailing
:/:gestript van titel/beschrijving (withoutTrailingColon).
- Titel-links alleen bij curated label + geldige URL (
-
Mediaspeler (sectie 10)
- Auto-next bij
ended(geen self-replay); Speellijst/Mijn afspeellijst met live refresh. - Locale-switch: sink open + resume playback; inklap via max-height; expand/collapse tooltips.
- Auto-next bij
-
Firefox & browsercompatibiliteit (§15)
- Lange tags:
min-w-0/truncateop excerpt + taxonomy chips. - CMS meldingen: sluit database-notifications bij SPA-navigate/overlay/Escape; close-knop vrij van Firefox-scrollbar.
- Navigate: geen nabeeld —
livewire-navigatefade +mix-blend-mode: normal(i.p.v. root/plus-lighter).
- Lange tags:
-
CTA-block (§9)
- Button-styling + optioneel icoon (rich CTA + segment CTA).
- Uitlijning left/right in CMS (rich: ToggleButtons; segment: orientation).
- Mobiel: zachtere clip +
px-6 py-20zodat titel/knop binnen de band blijven. - Locale: lege EN-tekst valt terug op NL (
data_localized+module_link).
-
Netwerk-pagina (§16)
- Hero:
Netwerk/Network+ bestaande filter; clip-path breed links / taper rechts (design). - Lijst: list-layout (aspect-video + h2/type) i.p.v. blauwe cards.
- Portretten: volledige
image-relatie laden (partiële select brak MediaPit). - Duplicaten: lijst/filter dedupe’t op naam+type (voorkeur canonieke slug zonder
-N); migratie-dubbels blijven in DB.
- Hero:
-
Agenda-header (§16)
- Hero:
Agenda+ bestaande datum/locatie-filters; clip-path gelijk aan Netwerk (breed links). - Featured: ticker/beschrijving zonder tweede blauwe titelband.
- Hero:
-
Footer chrome (wit-op-blauw)
- Footer op
bg-grid-bluemet expliciet witte logo/adres/actions; NMN-iconen voor Zoeken/Account. - Service-pagina's (cookies/privacy) uit de footer-kolom; blijven in het mobiele menu.
- Nieuwsbriefkaart op
bg-grid-defaultboven diagonale blauwe band; afbeeldingaspect-[4/3]flush links; terms-label →__('Terms and Conditions').
- Footer op
-
Playlist op Dag van de Componist (§1)
site.resources.playlistsin module-features; DvdC playlists+videos vianewmusicnow:enable-dag-van-de-componist-playlist.
-
Homepage carousel (§7)
- Progress-spinner verwijderd; auto-advance blijft.
- Trailing colons via
EditorialCopy::withoutTrailingColonop titel/beschrijving. - CTA-button: meer rechter padding (
ml-2 mr-4op de tekstspan).
-
Tickertape design (§13)
- Letters/hartjes als uitsparing:
isolate+ lokalebg-grid-blue+ witte balkmix-blend-lighten/text-black;select-none. - Strakkere verticale padding + kleinere hartje-gaps.
- Marquee klikbaar via footer Support-link. Tekst/URL blijven CMS.
- Letters/hartjes als uitsparing:
-
Video thumbnails ontbreken in CMS
- Oorzaak: vumbnail
error.jpgi.p.v. beschikbare Vimeo/legacy stills; ontbrekendeimage_idop video's. - Oplossing: stored Vimeo stills + MediaPit thumb/oembed fallbacks;
VideoPosterServicezet poster bij edit/import (cc79aa0c0). - Bulk swimlane-posters:
newmusicnow:backfill-video-posters(niet viamigrate-nmn-medias).
- Oorzaak: vumbnail
-
Headers en headings in bodytekst
- Oplossing: H2/H3 toegevoegd aan de RichEditor-toolbar (en floating toolbars) in
EntryContentTabs; frontend prose rendert<h2>/<h3>al via TipTap.
- Oplossing: H2/H3 toegevoegd aan de RichEditor-toolbar (en floating toolbars) in
-
PDF-downloads op contentpagina's
- Oplossing: rich-editor Media-blok accepteert documents/PDF's en rendert die als downloadlink (caption of titel als label). Alternatief: CTA-blok met Link → File. Upload PDF's eerst in Media (type document). Downloadblokken zijn uitgesloten van image-offset selectors in het article-template.
-
Tagpagina's tonen geen inhoud
- Oorzaak:
/topic/{slug}toont alleen swimlane-segments; die ontbraken of waren lege CMS-stubs.firstOrCreatevulde bestaande stubs niet bij. - Oplossing:
CreateSwimlaneForTaxonomiesmaakt ontbrekende swimlanes aan en herstelt incomplete stubs; normaliseertsegmentable_typenaarTaxonomyBase. Daarna:php artisan newmusicnow:create-swimlanes-for-taxonomies --sync.
- Oorzaak:
-
Foutmelding buttons 'View on Vimeo'
- Oorzaak: embeds gebruikten
vimeo.com/{id}zonder privacy-hash; unlisted/private video's gaven Vimeo PrivacyError met knop "View on Vimeo". - Oplossing: player/CMS gebruiken privacy-hash embed-URL's via
VimeoPrivacyService/ opgeslagenplayer_embed_url; poster over mini-preview; auto-skip bij kapotte embeds; privacy/domain-instellingen in site/video CMS.
- Oorzaak: embeds gebruikten
20-09-2026
- De video linksonder is zwart tenzij de muiscursor eroverheen beweegt. Dit is niet de bedoeling: de video moet te zien zijn. Het full screen icoon is alleen zichtbaar als de muiscursor eroverheen beweegt. /// In de nieuwe opzet is een still te zien. Het is de bedoeling dat je de bewegende video ziet.
- Oplossing: docked mediaspeler toont live embed i.p.v. alleen een still (
livewire/media/player.blade.php).
- Oplossing: docked mediaspeler toont live embed i.p.v. alleen een still (
- Als een video klaar is, start dezelfde video aansluitend. Het is de bedoeling dat de volgende video uit de afspeellijst gaat afspelen.
- Oplossing: bij video-einde automatisch de volgende item uit de afspeellijst starten (niet opnieuw dezelfde).
- Bij de iconen ontbreekt het icoon naar de eigen pagina van de video. /// De tooltip van dit icoon moet hetzelfde worden gestild als de andere iconen.
- Oplossing: icoon/link naar de video-pagina toegevoegd; tooltip gestyled gelijk aan de overige player-iconen.
- De deelknop deelt de onderliggende pagina, niet de video die op dat moment in Mediaspeler actief is. Aanpassen naar het delen de link van de eigen pagina van de video. /// De deelknop werkt nu niet meer.
- Oplossing: deelknop deelt de URL van de actieve video-pagina.
- Bij een te lange tekst in de Mediaplayer valt het onderste deel weg, zie bijvoorbeeld https://staging.newmusicnow.nl/videos/bruckner-no-6-konrad-koselleck-and-bastiaan-woltjer-bc. Dit is niet de bedoeling: door te scrollen moet een gebruiker de hele tekst kunnen lezen. /// Scroll werkt nu goed. In de Mediaplayer de afstand titel en ondertitel vergroten, gelijk zoals op de pagina https://staging.newmusicnow.nl/videos/bruckner-no-6-konrad-koselleck-and-bastiaan-woltjer-bc. ‘Bruckner Symphony n°6’ en ‘Konrad Koselleck, Bastiaan Woltjer’ staat te dicht op elkaar.
- Oplossing: scrollbare tekst in de player + grotere spacing tussen titel en ondertitel.
- De titel van de afspeellijst is ‘Mijn afspeellijst’, maar ik ben niet ingelogd en ik heb de video’s niet gekozen. Titel aanpassen naar ‘Afspeellijst’ en pas weergeven als ‘Mijn afspeellijst’ zodra een gebruiker is ingelogd. Dan kan de lijst bestaan uit video’s die qua taxonomie aansluit bij de smaak en gebruikershistorie van de betreffende gebruiker. /// Titel is naar wens aangepast naar ‘Speellijst’. Maar als ik ben ingelogd, staat er nog steed ‘Afspeellijst’ en niet ‘Mijn afspeellijst’.
- Oplossing: label op auth-state — ‘Speellijst’ uitgelogd, ‘Mijn afspeellijst’ ingelogd (Livewire update zonder full refresh). Restpunt in §10 als refresh nog nodig is.
- Indien de Mediaplayer is uitgeklapt, moet dit zo blijven wanneer een gebruiker wisselt tussen light- en darkmode en tussen NL en EN.
- Oplossing:
showSink-state persisteren; theme/locale-wissels tellen niet als outside-click die de sink dichtklapt.
- Oplossing:
30-07-2026
- Subtaxonomies toevoegen
- Auto-taxonomies checken
- Playlists?`
- Default playlist toevoegen via home
- Taxonomieeen playlistable maken
- Video pages + taxonomieeen
- Player shuffle toevoegen, standaard op shuffle
- Sink verbergen on navigate
22-07-2026
- Projecten migreren naar events
- Migratieplan
- Populace
- Player
23-04-2026
- Cursor blijft staan in Safari
22-04-2026
- Charlie Crooijmans | charlie@dutchcomposersnow.nl | nX7!qP2@vL9#tR4$kM8%
- Dimitri van der Werf | dimitrivanderwerf@gmail.com | Yk5#Tw9!Hb3@Ns7$Qm2%
- Hesce Mourits | hesce@newmusicnow.nl | Qf3@Lm8!Zt2#Rp6$Vn1&
- In-Sook Koo | insook@newmusicnow.nl | Rp6$Vn1&Qf3@Lm8!Zt2#
- Jos Eilert | jos@dutchcomposersnow.nl | Ns7$Qm2%Yk5#Tw9!Hb3@
- Stella van der Linden | stella@newmusicnow.nl | Gt4#Hr7!Jv2@Lq5%
- Veerle van de Ven | veerle@newmusicnow.nl | Hs6$Qm2%Yk5#Tw9!Hb3@Ns7
30-03-2026
Algemeen
- Dubbelcheck: werkt de zoekfunctie zodra de website live is?
- Als ik ingelogd ben, krijg ik de foutmelding attached in de front-end als swimlanes proberen te laden.
- pages
- player
Agenda
- Binnen de agenda-items (na doorklik) ontbreken de gegevens nog die ingevuld zijn (datum, tijd, venue, locatie, prijs en ticketlink.
- Sectie met gerelateerde items (‘Meer in [stad]’ - zie design Maarten) ontbreekt nog
CMS
✔ De foutmelding bij een button zonder foto vindt nog plaats (zie attached). Kan het toevoegen van een foto optioneel gemaakt worden?
- Mogelijkheid nodig om posts als draft op te slaan; niet gelijk publiceren (mag ook later toegevoegd worden, geen prio voor vandaag).
Footer
- Login kan uit de footer, tenzij het functioneert met NMN-profielen.
- Donate veranderen naar Word Vriend en linken naar https://newmusicnow.nl/info/word-vriend-2