Nieuwe Muziek Fonds

Begin met typen om te zoeken.

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 + VideoPosterService deels 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 bij filled($record->image->caption); geen fallback op title/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.subscribe root + copy expliciet text-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-0 op titelregels in excerpt/cards.
    • Oplossing: excerpt-link/header min-w-0; titel line-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, icoon sm (was size-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 ended loop hard uitzetten + pauzeren; daarna playNext() alleen als nextId bestaat en ≠ current.
  • Mediaspeler: doorspelen bij taalwissel

    • Sink blijft open, maar afspelen stopt bij NL↔EN; video moet doorlopen (positie behouden).
    • Oplossing: rememberPlaybackPosition op livewire:navigate + resumePlayback herstelt currentTime en 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 $refresh op navigate/focus/auth-login-success; wire:key op 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 uit nl.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-0 bij newsletter-image; card pb-0 + image self-end flush 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-blue met background-attachment: fixed achter witte mix-blend-lighten-balk; alleen glyph-laag translate3d.

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-figure zonder vaste min-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 forceren border-radius: 8px !important inclusief Flux-input wrappers.

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-creators verrijkt Creator-taxonomie-stubs (legacy_type=newmusicnow.creators) met notation/bio (TipTap), links/e-mail in properties, cover/avatar → image_id, subtypes, attributes.featured, entry-links via creatorables, en genres/orgs via taxonomy_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). Daarna create-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):
      1. Zorg dat de legacy-DB op staging/prod actueel is (DB_NMN_DATABASE).
      2. Inventariseer: php artisan newmusicnow:migrate-nmn-entries --dry-run --limit=0 --profile — vergelijk totals met Base-entries (nmn:article / nmn:video).
      3. Draai de pipeline met --limit=0 (entries default anders 20/type): entries → medias → video-moods → events → municipalities → (optioneel) creators → swimlanes. Zie module README.md § Delta migration (posts since last run).
      4. Check stats (created = nieuw, updated = her-upsert) + spot-check recente artikelen/video’s/events op staging.
      5. Daarna dit item [x] met datum + created/updated-samenvatting.
    • 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 entryTypes werkte al; Parelduiken stond op categorie Live i.p.v. origin Parelduiken. Homepage-lane nu op origin Parelduiken + Live (OR), allTime; CMS-helper + lege custom-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.playlists ontbrak in module.json (CMS-switch onzichtbaar); DvdC-site had playlists/videos uit.
    • Oplossing: feature in module.json; newmusicnow:enable-dag-van-de-componist-playlist zet 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

  • SEO: standaard robots-instelling

    • Stel index, follow standaard in voor alle content.
    • Laat deze standaardinstelling ook gelden voor toekomstige posts.
    • Voorkom dat dit telkens handmatig ingesteld moet worden.
  • 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.jpg werd gebruikt terwijl legacy_data.thumbnail / Vimeo-stills beschikbaar waren; video's misten soms image_id (MediaPit preview).
    • Oplossing: MediaPreviewUrl / ThumbnailCacheService prefereren opgeslagen Vimeo-stills en MediaPit thumb/oembed-fallbacks; VideoPosterService koppelt een poster (image_id) bij edit/import. Commit cc79aa0c0.
    • Bulk (grijze swimlane-thumbs zonder Twill-cover): php artisan newmusicnow:backfill-video-posters (--dry-run, --limit=, --sleep-ms=). Los van migrate-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 hetzelfde vimeo_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 → queue translations (TranslateMissingModelTranslationsJob) vanuit Entry/Taxonomy saved observers. Fase 1 scalars: entry title/subtitle/description, taxonomy name/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 op translations, 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 tab manage (Profieloverzicht-aside), settings voor profiel bewerken. Frontend leest site-auth settings met vertaal-fallbacks; hardcoded NMN-placeholder verwijderd.
  • 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 in EntryContentTabs; bij wijziging archiveert EntryObserver de oude slug in legacy_data.slug_history; route binding + EnsuresCanonicalEntrySlug geven 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

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

5. Header

  • Zoekbalk: Nederlandse placeholder

    • Pas 'Search…' aan naar 'Zoek…' in de Nederlandse versie.
    • Oplossing: header-placeholder via __('Search…'); NL-vertaling Zoek… in lang/nl.json.
  • Zoekbalk: schaduw verwijderen

    • Verwijder de schaduw van de zoekbalk.
    • Oplossing: shadow-none! toegevoegd aan utility flux-input-white in app.css.
  • NL | EN: kleur aanpassen

    • Pas de kleur #265689 aan naar #07202F.
    • Gebruik geen donkerblauw.
    • Oplossing: actieve/hover locale-links gebruiken #07202F i.p.v. text-blue-700.
  • 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.5 underline (niet border-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 + icoon md; contrast+NL|EN als groep (gap-2); ruimte naar account via outer gap-5.
  • 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 / arrow in 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]; avatar bg-blue-500 text-white (niet Flux grijs).
  • Header & navigatie refactor (desktop / tablet / mobiel)

    • Oplossing: organisms/header.blade.php volgens 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 — iconen text-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 met border-b; slanted bg-grid-blue.

6. Zoekscherm

  • Zoekscherm: Nederlandse placeholder aanpassen

    • Vervang 'Zoek items en onderwerpen' door:
      • 'Zoek optreden, muziek of componist…'
    • Oplossing: nl.json vertaling voor Search performance, music or composer….
  • Zoekscherm: Engelse placeholder aanpassen

    • Vervang 'Search entries and topics' door:
      • 'Search performance, music or composer…'
    • Oplossing: nieuwe placeholder-string in livewire/search.blade.php.
  • 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 Flux rounded-xl/rounded-lg).
  • 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/Topics headings 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 via entryTypeLabel/taxonomyTypeLabel in search.
  • Zoekresultaten: categorie Default/Standaard herzien

    • Onderzoek of 'Default' en 'Standaard' getoond moeten worden.
    • Mogelijk vervangen door 'Overig'.
    • Oplossing: Default-groep toont nu __('Other') → NL Overig (i.p.v. Standaard).
  • Zoekresultaten: relevancy + completeness

    • Eén Scout-take(48) + groupBy(type) liet dominante types de top vullen; entry-index was een ruwe toArray()-dump.
    • Oplossing: curated toSearchableArray + Meilisearch searchableAttributes/ranking (config/scout.php); SiteSearch query't per type met site-circle + published-filter en exact/prefix-boost; dubbele labels binnen een type weggefilterd.
    • Ops: scout:sync-index-settings + scout:import voor EntryBase en TaxonomyBase na deploy.
  • 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; modal max-w-3xl; titels line-clamp-2.
  • Zoekresultaten: Upcoming-badge op agenda

    • Toekomstige/lopende agenda-items (zelfde dag-regel als agenda: end of anders start ≥ vandaag) tonen een blauwe badge.
    • Oplossing: SiteSearch::isUpcomingEvent; flux:badge color="blue" variant="solid" (bg-blue-500); NL __('Upcoming') → Aankomend.

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/animate verwijderd uit livewire/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::withoutTrailingColon op titel/beschrijving in de carousel; EN CMS-copy lokaal ook opgeschoond in site.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-4 in atoms/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::withoutTrailingColon op titel/beschrijving in de swimlane-weergave.
  • Performance: snellere swimlane-loading

    • Publieke queries via SegmentEntriesResolver (single source); #[Lazy] + wire:intersect i.p.v. wire:poll.
    • Hybrid “Gerelateerd”: Scout take(48) + cache nmn:hybrid:{site}:{entry}:{locale}; invalidatie bij entry-save.
    • Covers: volledige image-relatie laden (MediaPit heeft type/legacy velden nodig; te smalle select gaf grijze placeholders).
    • Provisioning-jobs: batch prefetch bestaande hybrid/taxonomy-swimlanes per chunk van 200.

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 via IconSelect); segment-CTA gebruikt x-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 ToggleButtons alignment 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-path titel en CTA-knop af.
    • Oplossing: zachtere mobiele clip (10%/90%); desktop blijft 25%/75%; content px-6 py-20 safe-zone + full-width kolom op mobiel.
  • 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_localized behandelt lege strings als ontbrekend; segment-CTA titel/beschrijving via data_localized; module_link label valt terug op app.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; disableLoop voorkomt 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 via auth()->check(); playlist $refresh op livewire: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); resumePlayback na livewire:navigated.
  • Mediaspeler: animatie inklappen

    • Pas de uitklapanimatie ook toe op het inklappen.
    • Gebruik dezelfde animatie in omgekeerde richting.
    • Oplossing: alleen max-height animeren (vaste inner h-[60vh]); correcte ease-[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.

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 op bg-grid-default boven 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-center i.p.v. items-start in newsletter.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-light in newsletter.subscribe.
  • Nieuwsbrief: linker padding weg bij afbeelding

    • Foto flush links in de kaart (pl-0); rechts padding behouden; formulier op mobiel houdt px-8.
  • 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.terms blijft leidend; fallback naar pagina-slug voorwaarden / terms / conditions; generieke labels → __('Terms and Conditions').
  • Nieuwsbrief CTA-button: styling

    • Border-radius: 4px.
    • Hoverkleur: #00568F.
    • Oplossing: submit-button rounded-[4px] hover:bg-[#00568F].

12. Footer

  • Footer: wit-op-blauw + kolomlayout

    • Oplossing: bg-grid-blue op de footer; witte logo/adres/actions; NMN-iconen Zoeken/Account; service-links uit footer-kolom (alleen in menu-sheet).
  • 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)

  • 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-lighten over lokale bg-grid-blue (isolate); hartjes mee-uitsparend; select-none. (bg-clip-text oogde 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-gap gap-3 md:gap-4 (was gap-8 md:gap-12). Marquee linkt naar footer Support-URL.

14. Login & Registratie

Referentie:

  • https://staging.newmusicnow.nl/login

  • https://staging.newmusicnow.nl/register

  • 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, geen aspect-video) op login/register/forgot/reset.
  • Login/registratie: border-radius

    • Controleer de border-radius van alle formulierelementen.
    • Pas deze aan naar 8px conform 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-button flat #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-link op forgot/sign-in/create-one links (tekst + underline).

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-buttons max-w-full/truncate zodat 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-persist topbar + 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-events voor de close-control.
  • Pagina-transities: nabeeld / ghosting

    • Livewire wire:transition.navigate animeert livewire-navigate, niet root; browser-default crossfade + plus-lighter gaf een nabeeld.
    • Oplossing: custom fade op ::view-transition-*(livewire-navigate) met mix-blend-mode: normal, nieuwe snapshot bovenop, prefers-reduced-motion uit.

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.md als markdown; doNotCacheResponse zodat updates direct zichtbaar zijn.
  • 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.
  • 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.
  • Event (detail) — /agenda/{slug} · pages/agenda/[Event:slug].blade.php · module.event
    • Timetable. Mocks: NMN Desktop Event.png, NMN Mobiel Event.png.
  • 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.
  • 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.
  • 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); queue translations only (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.
  • Scout: lege Meilisearch-documenten

    • Oorzaak: entries konden met lege payload geïndexeerd worden (site_id null) → onvindbaar in zoek.
    • Oplossing: shouldBeSearchable() op Entry/Taxonomy; SCOUT_AFTER_COMMIT=true; scout:heal-empty-documents; na migratie scout:import.
  • Migreren van componistenprofielen (§1)

    • Oplossing: newmusicnow:migrate-nmn-creators + NmnCreatorsMigrator verrijkt Creator-stubs (notation/bio TipTap, links, cover/avatar → image_id, subtypes, featured, creatorables). Geen Populace-claims. Staging: command + create-swimlanes-for-taxonomies --sync.
  • Taxonomy-template: edit-link + externe links

    • adminEditUrl() op TaxonomyBase (Filament site-panel); edit-icoon naast type (zelfde formaat als artikel).
    • Footer toont properties.links met label/URL.
  • Pagina-transities zonder nabeeld (§15)

    • Custom livewire-navigate fade + mix-blend-mode: normal (browser plus-lighter crossfade verwijderd).
  • 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 voor stdClass/pluck op JSON-pad).
    • Host response cache: ClearsResponseCacheObserver op entry/segment/site; NMN API doNotCacheResponse; 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 module README.md).
  • 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 TipTap content leeg.
    • Oplossing: newmusicnow:remap-legacy-playlist-blocks → TipTap content via NmnBlocksMapper; picks/strips blijven legacy voor frontend. Staging: command draaien.
  • Login & registratie styling (§14)

    • Oplossing: NMN auth-utilities (nmn-auth-card / input / button / figure / link); gelijke afbeeldinghoogte via items-stretch + h-full; radius 8px; CTA/links flat #4298F7 → hover #3376C0.
  • 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.
  • Swimlanes: combinatie video's + artikelen (§1)

    • Oplossing: entryTypes multi-select (video+article) was al ondersteund; Parelduiken-homepage gefixt naar origin Parelduiken (+ Live OR); helpertekst in swimlane-editor; lege custom-period normaliseert naar allTime.
  • Slug van posts aanpassen (§2)

    • Oplossing: CMS-slug per locale in EntryContentTabs; oude slugs in legacy_data.slug_history; 301 via EnsuresCanonicalEntrySlug op Folio article/video/event/page.
  • 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.
  • Header (§5): zoekbalk, NL|EN, account-dropdown + responsive refactor

    • Oplossing: NL-placeholder Zoek…; flux-input-white zonder schaduw; locale #07202F + after:-underline; contrast size-8 + NL|EN-groep (gap-5 vóó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.
  • Nieuwsbrief (§11)

    • Oplossing: afbeelding aspect-[4/3]; icoon/titel items-center; input/CTA rounded-[4px] + input zonder schaduw; CTA hover #00568F + full-width submit; duplicate-email → Email address already exists / E-mailadres bestaat al; agree-copy I agree to the :terms met label __('Terms and Conditions'); terms-link via CMS of slug-fallback.
    • Kaart: foto flush links (pl-0); dark-mode e-mailtekst dark:text-zinc-900 + scheme-light.
  • Centrale uitlijning van embeds en foto's

    • Oplossing: afwisselende translate-x offsets in article.blade.php verwijderd; rich-blocks centreren met mx-auto en figcaptions text-center.
  • Zoekscherm (sectie 6)

    • Placeholder NL/EN, 4px radius, 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 via isUpcomingEvent.
  • Swimlanes: titel-links + trailing colons

    • Titel-links alleen bij curated label + geldige URL (EditorialCopy::isCuratedTitleLink).
    • Trailing :/: gestript van titel/beschrijving (withoutTrailingColon).
  • 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.
  • Firefox & browsercompatibiliteit (§15)

    • Lange tags: min-w-0/truncate op excerpt + taxonomy chips.
    • CMS meldingen: sluit database-notifications bij SPA-navigate/overlay/Escape; close-knop vrij van Firefox-scrollbar.
    • Navigate: geen nabeeld — livewire-navigate fade + mix-blend-mode: normal (i.p.v. root/plus-lighter).
  • 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-20 zodat 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.
  • Agenda-header (§16)

    • Hero: Agenda + bestaande datum/locatie-filters; clip-path gelijk aan Netwerk (breed links).
    • Featured: ticker/beschrijving zonder tweede blauwe titelband.
  • Footer chrome (wit-op-blauw)

    • Footer op bg-grid-blue met 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-default boven diagonale blauwe band; afbeelding aspect-[4/3] flush links; terms-label → __('Terms and Conditions').
  • Playlist op Dag van de Componist (§1)

    • site.resources.playlists in module-features; DvdC playlists+videos via newmusicnow:enable-dag-van-de-componist-playlist.
  • Homepage carousel (§7)

    • Progress-spinner verwijderd; auto-advance blijft.
    • Trailing colons via EditorialCopy::withoutTrailingColon op titel/beschrijving.
    • CTA-button: meer rechter padding (ml-2 mr-4 op de tekstspan).
  • Tickertape design (§13)

    • Letters/hartjes als uitsparing: isolate + lokale bg-grid-blue + witte balk mix-blend-lighten / text-black; select-none.
    • Strakkere verticale padding + kleinere hartje-gaps.
    • Marquee klikbaar via footer Support-link. Tekst/URL blijven CMS.
  • Video thumbnails ontbreken in CMS

    • Oorzaak: vumbnail error.jpg i.p.v. beschikbare Vimeo/legacy stills; ontbrekende image_id op video's.
    • Oplossing: stored Vimeo stills + MediaPit thumb/oembed fallbacks; VideoPosterService zet poster bij edit/import (cc79aa0c0).
    • Bulk swimlane-posters: newmusicnow:backfill-video-posters (niet via migrate-nmn-medias).
  • 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.
  • 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. firstOrCreate vulde bestaande stubs niet bij.
    • Oplossing: CreateSwimlaneForTaxonomies maakt ontbrekende swimlanes aan en herstelt incomplete stubs; normaliseert segmentable_type naar TaxonomyBase. Daarna: php artisan newmusicnow:create-swimlanes-for-taxonomies --sync.
  • 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 / opgeslagen player_embed_url; poster over mini-preview; auto-skip bij kapotte embeds; privacy/domain-instellingen in site/video CMS.

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).
  • 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.

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

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

Dag van de Componist in Utrecht   LR (credit   Jostijn Ligtvoet) (1)

Nieuwe muziek direct in je inbox

Volledig scherm openen Volledig scherm sluiten
Vorige video 30 seconden terug 30 seconden vooruit Volgende video
Verwijderen uit afspeellijst Like
Open videopagina Delen

FaKruTu Dakar Edition

FaKruTu Dakar Edition is a vibrant mix of Senegalese percussion, vocals, and electric grooves by the FaKruTu Trio. Recorded live at TivoliVredenburg during the 15th anniversary of the World Music Forum NL, the performance showcases energetic and soulful music that crosses cultural boundaries.

FaKruTu Dakar Edition is a musical experience that spans from Dakar to Amsterdam, bringing together a passionate powerhouse of established musicians from Senegal, Netherlands, and the United States. Senegalese percussion and songs blend with the eclectic and electric grooves of the FaKruTu Trio. The band has built a reputation for delivering high-energy, soulful performances that get the audience on their feet. This concert was recorded at TivoliVredenburg on November 1, 2022, during the 15th anniversary of the World Music Forum NL.Performers:Sean Fasciani (NL) - bassStefan Kruger (NL) - drumsMark Tuinstra (NL) - guitarMola Sylla (SN/NL) - vocalsOké Sène (SN/NL) - percussionBao Sissoko (SN/NL) - koraIn collaboration with World Music Forum NL and Old Roots New Routes.

Speellijst