Changelog
Overzicht van alle wijzigingen aan de website
7 maart 2026
feat: add mail SLA system, auto-assign, auto-reopen, filter fixes and changelog migration
fix: use ubuntu + deb-based Railway CLI install for deploy (matching working pattern)
fix: remove railway whoami (incompatible with project tokens), improve error output
fix: add railway whoami check and verbose deploy output
fix: improve email sender name and signature formatting
perf: optimize CI/CD - single checks job with node:20-alpine container
fix: add debug output to Railway deploy step
feat: consolidate Forgejo workflows into single CI/CD pipeline
fix: add FORGEJO_TOKEN to checkout steps for private repo access
feat: migrate CI/CD from GitHub Actions to Forgejo Actions with Railway deploy
feat: add Svix signature verification and support opened/failed webhook events
feat: show Resend delivery status in email stats table
fix: change transactional from address to hallo@notify.deduikvereniging.nl
fix: resolve Resend SDK type error for html field in sendEmail
feat: add delivery status tracking and Outlook-style email headers in tickets
feat: migrate all outgoing email from SMTP/Nodemailer to Resend API
6 maart 2026
chore: test Railway auto-deploy
5 maart 2026
fix: resolve high npm audit vulnerabilities
fix: prevent duplicate cron job execution with atomic database lock
4 maart 2026
fix: show AI prompts as editable text instead of placeholder
fix: allow clearing price/min/max on dives and auto-confirm pending registrations
feat: editable AI prompts, email error clearing, API health improvements
feat: add email retry button and fix period filter on email stats
fix: add SMTP env var fallbacks for transactional email
fix: save endTime and tentativeDate when creating a dive
3 maart 2026
fix: compute total in byType for email stats to prevent runtime error
refactor: centralize EmailLog logging in sendReply()
fix: add EmailLog logging for broadcast, compose and reply routes
1 maart 2026
fix: convert /auth/app-login from JSON response to 302 redirect
feat: add AI-powered spam detection for mail inbox
fix: add /auth/app-login route and fix session cookie name for iOS OAuth
feat: add HIBP password breach check and shared requirements component
28 februari 2026
feat: replace email proxy with direct SMTP, add stats and OAuth callback
feat: add DiveAuth (Authentik OIDC) login for board members
fix: remove IT-access gate from FtD analyze — available to all members
feat: add centralized AI proxy with rate limiting, cost tracking, and admin dashboard
26 februari 2026
feat: add mail attachments, compose, broadcast, WYSIWYG editor and preview
fix: prevent internal port 8080 leaking into non-www redirect
fix: resolve IT page overflow, limit webhook events, and swap mail filter default
fix: rename Expo Push label to iOS Pushnotifications in UI
feat: add APNs push notifications for IT alerts
fix: default mail filter to 'open' and show cron error details
feat: add conversation delete with S3 cleanup and confirmation modal
feat: add AI auto-priority and reply suggestions
fix: use bodyHtml for summaries to avoid CSS-polluted bodyText
fix: improve email summary prompt to describe content, not subject
feat: add summarize endpoint and backfill script
feat: add AI email summaries using Claude Haiku
fix: better CSS stripping from email preview text
fix: strip HTML/CSS artifacts from email preview text
fix: improve mail page layout and message display
fix: convert memberNumber to string before search
feat: add active/inactive toggle to mailbox cards
fix: map API field names in MailboxSettings
feat: add integrated email/ticket system
feat: add IT notification preferences to Expo push tokens
25 februari 2026
feat: add hourly granularity and session metrics to admin analytics API
fix: increase watermark opacity in secure document viewer
fix: add missing size classes to password validation icons
feat: add secure document viewer for Fit-to-Dive in admin mode
fix: add Reply-To header to contact form email
feat: add hasITAccess to User model and session response
fix: prevent double cron job execution caused by fallback trigger
refactor: migrate admin cron-jobs endpoints from cron-job.org to internal DB
feat: add web analytics admin endpoint for iOS app
fix: add Scalar API docs component and install missing dependency
feat: replace Expo Push with native APNs for iOS push notifications
23 februari 2026
fix: correct turningAge calculation for upcoming birthdays
feat: complete OpenAPI documentation with full request/response schemas
feat: document Better Auth login flow and Bearer token usage
fix: serve Scalar API docs as standalone HTML page via CDN
fix: open API docs link in new tab
fix: move ssr:false into client component for Next.js compatibility
fix: resolve ESLint warnings causing CI failure
fix: remove API Docs menu item from sidebar nav
fix: replace @scalar/nextjs-api-reference with @scalar/api-reference-react
feat: complete OpenAPI documentation for all 133 paths / 183 endpoints
feat: add OpenAPI documentation system with Scalar UI and redesign API Info page
22 februari 2026
fix: prefix unused destructured PII vars with underscore for ESLint
fix: resolve TypeScript error in bulk dive-registrations PII stripping
fix: security hardening - strip PII from public endpoints, add security headers
feat: add Web Vitals diagnostics with INP/LCP breakdowns and visibility filtering
fix: remove unused icon imports from WebVitalsDetail
feat: Web Vitals dashboard met attributie en device breakdowns
21 februari 2026
feat: improve Railway webhook event display with icons, context and metadata
feat: add cron jobs management UI and API routes
chore: update changelog.json with recent commits
fix: prevent push notification toggles from disappearing on endpoint rotation
fix: Railway webhook auth via query parameter en cleanup orphaned cron jobs
feat: add AI document validation, modal flow, and truthfulness confirmation for FtD
fix: trigger FtD AI analysis for both PDF and image uploads
feat: add AI-powered Fit-to-Dive document analysis with Claude Vision
20 februari 2026
fix: handle S3/R2 lowercase metadata keys for encrypted file content type
fix: prevent FtD edit from wiping encrypted file metadata
feat: replace Railway cron polling with webhook-based monitoring
fix: add missing birthdays preference to push subscribe route
feat: add 6 push notification types + Railway stats IT page
refactor: optimize Perplexity Sonar prompts and add search parameters
feat: replace Tavily with Perplexity Sonar for location descriptions
feat: split push settings per category, device deletion, toggle fix
feat: add Apprise notification gateway integration
fix: add birthdays to web push notification preferences
feat: bulk uitnodigingen versturen naar geselecteerde leden
fix: full-screen import modal, paginatie fix en SMTP throttling
feat: uitnodigingsmails bij import, anoniem veld en J/N boolean parsing
fix: vervang xlsx dependency door eigen CSV parser
feat: CSV/Excel leden import met wizard en kolom-mapping
chore: upgrade Gemini models van 2.0/1.5 naar 2.5 Flash
feat: WhatsApp opt-in, anonieme deelnemerslijst en bredere FtD tekst
perf: dynamic imports, ISR optimization, AVIF support and Suspense boundaries
perf: optimize dive queries and remove debug code
perf: parallelize database queries across 15 more API routes
perf: parallelize sequential database queries across 7 API routes
perf: add DNS resolution timing and IP check to debug endpoint
perf: add raw pg warm pool test to isolate Prisma adapter vs network latency
perf: add min pool connections to prevent cold connection overhead
fix: remove unused variables in debug endpoint (ESLint)
fix: resolve image loader width warning + add latency diagnostics
perf: disable SSL for Railway internal database connections
fix: update jspdf to 4.2.0 for security fix + add DB latency to debug endpoint
fix: disable Cloudflare cdn-cgi for local images and detect Railway in changelog
19 februari 2026
fix: adjust Short URLs table column widths for better spacing
fix: remove destination URL column from Short URLs table
fix: resolve overflow on Short URLs table with table-fixed layout
fix: use 302 redirect for short URLs to prevent browser caching
feat: add Short URLs management page to IT dashboard
fix: merge middleware into proxy.ts for Next.js 16 compatibility
chore: remove Plausible Analytics (replaced by own analytics)
feat: replace Shlink with built-in URL shortener on duik.link
fix: simplify security audit to only check production dependencies
chore: remove @lhci/cli dependency and lighthouserc.json
chore: remove bundle size workflow
chore: remove Lighthouse CI and leftover workflow files
18 februari 2026
feat: show dashboard link in hero for logged-in users
docs: update CLAUDE.md cron and deployment sections for Railway
chore: remove PM2/VPS/Vercel deployment artifacts
chore: clean up working tree and remove obsolete workflows
fix: overhaul cron trigger to use nextRunAt instead of shouldRunNow
feat: add non-www redirect and fix cron runner for Railway
feat: add health endpoint and update cron UI for Railway
fix: remove PM2 dashboard and fix IT page overflow
fix: add NEXT_PUBLIC_SITE_URL fallback for Railway build
revert: remove unused railpack.json and restore start script
fix: force HOSTNAME=0.0.0.0 in start command for Railway
fix: replace nixpacks.toml with railpack.json for Railway
fix: resolve all TypeScript errors blocking pre-push hook
feat: add standalone mode support for Railway deployment
chore: clean up env files, remove unused variables
chore: remove Docker and Directus files
fix: resolve 21 high npm audit vulnerabilities (fast-xml-parser DoS)
refactor: remove cron-job.org integration, use local cron runner only
11 februari 2026
chore: remove outdated scripts, test files, and Directus env vars
fix: update AWS SDK, jsPDF, and fast-xml-parser to resolve 22 high vulnerabilities
chore: remove obsolete Docker/Directus documentation
chore: update deps, fix lint warnings, remove Directus/Docker artifacts
fix: memberNumber type parsing, email verification on password reset, and birthday cron route
chore: add .gitattributes to enforce LF line endings
16 januari 2026
feat: add member number generation, canLogin check, and FtD alerts for members without FtD
fix: correct willingToBeDiveLeader field name in Prisma queries
feat: add admin dashboard alerts, copy dive, attendance stats, postcode normalization
feat: add event fields to blog posts + rename to Actueel
feat: add privacy policy page + fix birthday push deep linking
feat: add push notifications for all events + birthday notifications
feat: add memberId support for new member notifications deep linking
refactor: update push-test page to match IT dashboard layout
feat: add Expo push notifications support for mobile app
fix: remove demo birthday data from dashboard stats
feat: add Expo push notification preferences API
feat: add Expo push token registration endpoint
chore: add test birthday data for mobile app testing
fix: add dateOfBirth and memberNumber to /api/user/me response
15 januari 2026
feat: add firstName/lastName to dive registration user data
fix: include dive relation in user full API for mobile app
feat: add mobile app origins to trusted origins list
feat: add dashboard stats API endpoint for mobile app
feat: add hasPassword field to user API responses
fix: improve analytics event filtering and consolidate login events
chore: remove temporary debug endpoint
chore: add PID and CF headers to debug endpoint
fix: allow localhost access to debug endpoint
chore: add temporary debug endpoint for auth investigation
fix: use ternary instead of spread for socialProviders config
fix: remove hardcoded baseURL from auth client
fix: move baseURL inside initializeAuth for runtime evaluation
fix: remove NEXT_RUNTIME check and add debug logging for Google OAuth
fix: lazy evaluate Google OAuth credentials at runtime
feat: add Google OAuth social login with Better Auth
chore: exclude hono vulnerability from GitHub security audit workflow
chore: exclude hono vulnerability from npm audit (dev-only via @prisma/dev)
feat: add device/country filters and migrate events to custom analytics
13 januari 2026
fix: improve iOS/iPad detection in analytics
fix: TypeScript errors in Recharts and cron jobs mobile layout
feat: add StatCard component and consistent styling across IT dashboard
feat: enhance analytics dashboard UI with consistent icons and colors
fix: improve analytics map UX - smaller markers, hide reset button, fix reset
fix: make city markers visible on analytics map
feat: improve analytics map with click-to-zoom and fix session fingerprint
fix: zoom buttons use correct _setScale method and improve city markers
fix: viewsPerSession chart data key and add map zoom features
fix: gracefully handle missing city columns in analytics API
feat: add interactive analytics dashboard with city tracking
fix: improve WorldMap component with error handling and full-width layout
feat: migrate weather to Open-Meteo and fix map security vulnerability
feat: add privacy-friendly analytics system to replace Plausible
fix: correctly display CLS values with 3 decimals in web vitals dashboard
12 januari 2026
chore: remove old web-vitals implementation
feat: ad-blocker resistant web vitals tracking
revert: rename bubbles back to web-vitals
refactor: rename web-vitals to bubbles to avoid ad blocker detection
fix: prevent duplicate web vitals requests
feat: improve PWA appearance with proper icons and metadata
feat: add VAPID public key to GitHub Actions build
feat: add Web Push notifications for admin/IT users
feat: display recent emails in email proxy dashboard
feat: show extended error info in email proxy dashboard
fix: improve PM2 dashboard - hide empty timestamps and use live stats
fix: use null instead of 'unknown' for missing timestamps
fix: support PM2 log_date_format with timezone
fix: improve PM2 log timestamp parsing
fix: load .env file in PM2 ecosystem config
fix: remove pm2 jlist command, use only dump file
fix: add custom PM2 log path for duikvereniging project
fix: read PM2 logs directly from log files
feat: add XSS protection, fix TypeScript types, and improve PM2 integration
feat: add image upload support for Fit-to-Dive declarations
feat: improve mobile-friendliness across admin components
11 januari 2026
feat: redesign dashboards with Admin Dashboard Pattern
feat: various improvements and cleanup
feat: add Cookie Consent tracking and PM2 Dashboard
fix: extract download filename from Content-Disposition header
feat: add browser GPS geolocation with reverse geocoding for Fit-to-Dive downloads
feat: enable zero-downtime deployments with PM2 reload
fix: remove deprecated --skip-generate flag from prisma db push
fix: run prisma db push in GitHub Actions instead of VPS
feat: improve deploy-vps workflow
feat: add error tracking and display for cron runner
fix: update crontab config example in cron jobs page
fix: update CronJobDetail to use local cron API
fix: migrate daily-dive-notifications to use local Prisma database
fix: use dynamic imports in cron script for dotenv loading
fix: use relative imports for prisma in cron scripts
feat: add local cron runner system with UI
feat: add trial member expiry notification system
feat: add LAUNCH_MODE for user invitation emails
refactor: rename /api/admin/error-stats to /api/it/api-metrics
feat: add API tracking to 18 remaining endpoints (Batch 4f - Final)
feat: add API tracking to 15 admin user endpoints (Batch 4e)
feat: add API tracking to 13 admin endpoints (Batch 4d)
feat: add API tracking to 20 admin endpoints (Batch 4c)
feat: add API tracking to 5 admin endpoints (Batch 4b)
feat: add API tracking to 10 admin endpoints (Batch 4a)
feat: add API tracking to 8 public/admin endpoints (Batch 3)
feat: add API tracking to 10 user endpoints (Batch 2)
fix: remove proxy and internal log-performance endpoint
feat: add API tracking to 8 high-priority endpoints (Batch 1)
feat: add production-ready API tracking wrapper with test implementation
fix: improve /it/api-info page layout and error handling
10 januari 2026
fix: store feedback screenshots as public files
fix: disable encryption for feedback screenshots
feat: block AVIF uploads and remove debug code
fix: skip Cloudflare Image Resizing for AVIF files (unsupported format)
fix: normalize malformed URLs in fixImageUrl to prevent triple slashes
chore: add debug logging to fixImageUrl
chore: add debug logging to image loader
chore: add image URL comparison debug page
fix: add env fallbacks in next.config.js to ensure vars are always available
fix: remove redundant npm ci step that breaks standalone build
test: add image loader test page for debugging
fix: add NEXT_PUBLIC_R2_CUSTOM_DOMAIN to GitHub Actions build
fix: add fallback for R2_CUSTOM_DOMAIN in listFilesInFolder
feat: add extensive MediaLibrary debug logging
fix: add R2 custom domain to remotePatterns for loader to work
feat: add MediaLibrary debug logging
fix: ensure fixImageUrl returns R2 URLs for Cloudflare Image Resizing
feat: add VPS media library diagnostic script
fix: encrypt feedback screenshots for privacy protection
fix: ensure Cloudflare Image Resizing works for R2 custom domain URLs
fix: remove isDevelopment check from Cloudflare Image Loader
feat: add blog post image migration to R2 custom domain script
feat: migrate to R2 custom domain URLs for Cloudflare Image Resizing
fix: handle leading slash in s3-proxy route keys
fix: use relative URLs for Cloudflare Image Resizing
fix: enable Cloudflare Image Resizing for /api/s3-proxy/ URLs
fix: allow public/ keys without leading slash in s3-proxy route
fix: improve error logging in s3-proxy route for debugging
fix: use NODE_ENV for development check to prevent hydration errors
feat: use R2 custom domain for public files with Cloudflare Image Resizing
fix: serve /api/s3-proxy/ routes directly without Cloudflare transform
revert: remove timeout config from prisma Pool - back to original
revert: remove force-dynamic flags from pages added in previous commits
fix: add force-dynamic to blog post pages and fix image loader
fix: use Cloudflare Image Resizing for /api/s3-proxy/ routes
fix: increase database timeouts and make pages dynamic
fix: syntax error in generate-changelog.js - remove extra closing brace
fix: use Next.js image optimization for /api/s3-proxy/ routes
fix: prevent database connection during build time
fix: R2_S3_* environment variables support + improved s3-proxy error handling
fix: /api/files/ geen transformatie + domein migratie documentatie
fix: toon welke S3 provider wordt gebruikt in migratie script
fix: verbeter error handling in migratie script
fix: voeg CopyObjectCommand toe aan S3 exports voor migratie script
feat: update folder structuur naar public/ en private/ in root
feat: voeg R2 setup guide en test script toe
fix: gebruik /api/s3-proxy/ URLs met encoding voor publieke uploads
fix: herken /api/s3-proxy/ URLs in alle image helper functies
fix: implement correct Cloudflare Image Resizing with proxy route
refactor: remove hardcoded fallback URL in Cloudflare loader
fix: use absolute URLs with proxied domain for Cloudflare Image Resizing
feat: migrate to Cloudflare Image Resizing with S3 public/private folders
feat: enable Cloudflare Image Resizing for public S3 images
fix: bypass Cloudflare Image Resizing for /api/files/ proxy routes
feat: add Cloudflare Image Resizing env vars to deploy workflow
chore: add env debug endpoint for troubleshooting
fix: resolve URL formatting issues in Cloudflare image loader
feat: implement Cloudflare Image Resizing for better performance and cost savings
9 januari 2026
revert: switch deploy back to GitHub-hosted runner
feat: use self-hosted runner only for deploy job
revert: switch all workflows back to GitHub-hosted runners
feat: migrate all workflows to self-hosted runner
feat: use self-hosted runner for deploy and lighthouse workflows
fix: PM2 git metadata via environment variables and stop/start
fix: load PATH and use npx fallback for PM2 in deployment
feat: add PM2 git metadata and manual Lighthouse trigger
chore: rebuild with correct VPS site URL
fix: update Lighthouse env vars (remove Directus)
fix: correct check names in wait-for-checks
fix: add permissions for wait-on-check action
feat: implement workflow dependencies
chore: cleanup VPS deployment workflow
feat: vervang afmeld button door dashboard link in bevestigingsmails
fix: correct memberNumber field location in email subscriptions
feat: add email subscriptions management to IT dashboard
feat: improve calendar subscription instructions
fix: resolve all ESLint warnings
feat: redesign email preferences and calendar section
feat: add dynamic countdown to upcoming dive section
feat: improve dashboard notifications styling
fix: add missing slug field in getUpcomingDives
feat: improve upcoming dive display on dashboard
feat: show feedback type labels in list and detail views
fix: map feedback type labels to correct backend values
fix: improve error visibility and feedback notifications
feat: disable all feature flags - always use new functionality
chore: remove deprecated Directus migrate scripts
fix: comment out deprecated Directus SDK imports in migrate scripts
fix: resolve all TypeScript errors and build issues
feat: duik suggestie verbeteringen en locatie weergave
8 januari 2026
fix: los ESLint warnings op (ongebruikte imports en unescaped entities)
refactor: verwijder Cloudflare Image Resizing, terug naar Next.js Image Optimization
fix: Gebruik Next.js Image Optimization voor API routes
fix: Gebruik originele URLs voor externe images
fix: Proxy Directus assets via lokale route
fix: Encode alleen protocol slashes voor Cloudflare Image Resizing
fix: URL-encode externe URLs voor Cloudflare Image Resizing
fix: Voorkom dubbele 'Het Bestuur' menu item
fix: Gebruik cloudflareImageLoaderInline functie in CloudflareImage component
chore: Verwijder ongebruikte cloudflareImageLoaderInline imports
fix: Cloudflare Image Resizing development fallback
fix: Cloudflare Image Resizing development fallback
feat: Automatische API monitoring via middleware voor alle routes
chore: Verwijder ongebruikte imports
feat: Hernoem Error Tracking naar API Info met uitgebreide API informatie
fix: Prisma client cache invalidation voor nieuwe models
fix: TypeScript errors in error tracking
feat: Error tracking en API performance monitoring
feat: Web Vitals tracking en IT dashboard uitbreidingen
feat: implement Web Vitals tracking with Plausible and API endpoint
fix: preserve adminRole and adminBio when updating member profile without these fields
perf: critical LCP optimizations - unoptimized hero image and image caching config
feat: add all required environment variables to build process for VPS deployment
7 januari 2026
test: deployment workflow verification
docs: add SSH key troubleshooting guide
fix: bestuursfoto's server-side URL formatting
fix: bestuursfoto's en TypeScript errors
fix: Fix TypeScript errors - duplicate prisma import
feat: Migreer duiken en registraties naar Prisma database met vereenvoudigde flow
perf: Optimaliseer caching strategie voor Prisma database migratie
fix: Verwijder ongebruikte isPending variabelen uit useTransition
perf: Optimaliseer INP (Interaction to Next Paint) voor betere gebruikerservaring
fix: Escape apostrophes in PagesManagement component
feat: Migreer Pages en Bestuur naar Prisma database
fix: herstel standaard AI prompt voor duiklocaties
fix: verwijder ongebruikte imports uit MembershipContent
refactor: herindeling dashboard en naamwijziging Profiel naar Mijn Gegevens
fix: verbeter responsive knop en badge limiet in DiveCard
6 januari 2026
fix: ondersteun Directus registraties als ENABLE_DIVES_MANAGEMENT uit staat
feat: pas Compact List Item Pattern toe op admin pagina's en verbeter UI
feat: pas DMARC email tekst aan en gebruik Compact List Item Pattern voor Fit-To-Dive accesslog
fix: testimonial bewerken en verwijderen functionaliteit
fix: verbeter weergave deelgenomen duiken in admin gebruikerspagina
feat: toon alle brevetten in duiker toevoegen formulier
feat: voeg verwijder functionaliteit toe voor deelnemers
fix: verwijder ongebruikte fullName variabele
feat: wijzig Certificaat naar Brevet en voeg CSV export toe
fix: verbeter certificate mapping met certificate-types definitie
feat: vul telefoonnummer en brevet automatisch in bij duiker selectie
fix: verwijder date_created veld uit Directus query
fix: verbeter Directus dive registraties ophalen
fix: los TypeScript errors op voor proeflid en dieetwensen
feat: voeg proeflid flag en dieetwensen functionaliteit toe
feat: implementeer security fase 2 - email validatie, rate limiting en input sanitization
feat: implementeer security fase 1 - webhook verificatie, file validation en error handling
docs: voeg curl commands toe voor testen van alle emails
fix: voeg ALV email test toe aan all-emails endpoint
feat: voeg ALV registration confirmation email toe aan test endpoint
fix: verwijder laatste directe SMTP calls uit dive suggestion emails
refactor: verwijder alle directe SMTP calls uit email functies
fix: verwijder direct SMTP check uit sendALVRegistrationConfirmationEmail
feat: voeg logging toe voor email methode detectie
chore: update email proxy configuration
fix: TypeScript error voor from adres parsing
feat: integreer Email Proxy Service voor email verzending
feat: integreer Email Proxy Service voor email verzending
revert: terug naar werkende SMTP configuratie
fix: pas TLS configuratie aan voor poort 465 SSL handshake problemen
fix: verhoog ook timeouts in hoofdconfiguratie
fix: verhoog SMTP timeouts voor betere compatibiliteit met cloud providers
fix: verwijder initEmailService call uit getTransporter om recursie te voorkomen
fix: voorkom oneindige recursie in SMTP transporter initialisatie
feat: automatische fallback naar poort 587 als 465 faalt
fix: verwijder restrictieve TLS configuratie die SMTP verbinding blokkeert
fix: verbeter SMTP diagnostiek en troubleshooting
fix: verbeter SMTP configuratie en error handling
fix: verbeter SMTP configuratie voor betere connectiviteit
fix: verbeter error logging voor ALV registratie email
feat: voeg eet- en dieetwensen veld toe aan ALV aanmeldingen
5 januari 2026
fix: negeer ook lodash.template vulnerability via @oclif
fix: corrigeer npm audit JSON parsing in security checks
chore: verwijder audit temp bestanden en voeg toe aan gitignore
docs: bevestig dat dotenv-vault niet in productie build komt
fix: update check:all script to ignore dev-only vulnerability
fix: negeer lodash.template vulnerability in dev-only dependency
fix: verwijder resterende delete functies uit DivesManagement
fix: verwijder ongebruikte delete functionaliteit uit DivesManagement
fix: verwijder argument van loadDives aanroep
feat: herstructureren duikaanmeldingen en autocomplete fix
fix: transformeer Prisma object naar email interface formaat in dive registration
fix: los TypeScript errors op in dive registration route
docs: migreer van .env.local naar .env en update documentatie
fix: lint warnings in ALVManagement en DiveRegistrationsManagement
fix: TypeScript errors in ALV, Dive en SectionHeader componenten
feat: ALV URL structuur, dubbele aanmelding preventie, admin delete, email met .ics
feat: ALV functionaliteit met bijlagen, WYSIWYG editor en deelbare links
fix: verwijder ongebruikte total state
fix: verwijder unused variable en escape quotes
feat: duikvoorstellen met locatie matching en gecategoriseerd admin menu
fix: Remove unused id variable in blog post edit page
fix: Blog posts ID handling en list styling verbeteringen
fix: voeg check toe voor Prisma client initialisatie in createTestimonial
fix: verwijder te strikte database check en repareer syntax error
fix: voeg automatische sort bepaling toe aan createTestimonial
refactor: verwijder handmatige Directus input en voeg automatische sort toe
fix: verplaats getTestimonialPhotoUrl naar client-safe module
feat: voeg file upload toe aan testimonial form
fix: los lint warnings op in testimonials code
feat: migreer testimonials van Directus naar Prisma
docs: voeg Neon gratis plan analyse toe
docs: voeg Neon integraties documentatie toe
docs: voeg Neon migratie success document toe
docs: voeg post-migratie checklist toe voor Neon
docs: update Neon quick start met branch informatie
docs: voeg Neon migratie guides toe
docs: voeg Neon vs Supabase vergelijking toe
docs: voeg kosten vergelijking toe en goedkopere alternatieven
docs: voeg gedetailleerde HA vergelijking en stappenplan toe
fix: voeg Auth Cancelled error vertaling toe
feat: uitbreiden Better Auth error vertalingen
fix: server-side hasVoted check voor polls
fix: escape quotes in JSX voor lint compliance
refactor: vervang alle alert() en confirm() met inline messages
fix: poll voting issues - userId check en Nederlandse errors
fix: translate poll error message and show results after voting
fix: graceful Prisma degradation for Lighthouse CI
fix: improve Directus error handling for Lighthouse CI
fix: deployment errors - gitleaks en lighthouse CI
4 januari 2026
fix: rename headers variable to avoid conflict with next/headers
fix: TypeScript errors in trigger route en poll vote
fix: eslint errors in PollForm en PollStats
docs: update compliance status na verbeteringen
refactor: compliance verbeteringen - client components en SectionHeader
docs: voeg compliance audit rapport toe
chore: archiveer Dockerfiles en email-design preview bestanden
chore: archiveer docker-compose bestanden
chore: archiveer overige Directus bestanden en voeg deprecation notices toe
chore: archiveer Directus deployment bestanden en documentatie
fix: los semver security vulnerability op via npm override
feat: verbeter IT dashboard homepage
fix: los type errors en linting warnings op
feat: verbeter cron job management UI en functionaliteit
3 januari 2026
chore: sluit infisical.ts uit van type checking
chore: verwijder hardcoded user ID en email defaults
feat: voeg model selector toe voor AI beschrijving generatie
fix: Apply Safari modal fixes to all modals according to styleguide
docs: Add Safari modal compatibility patterns to styleguide
fix: Safari desktop - prevent 'Vraag code aan' button from being cut off
fix: Modal max-width - respect max-w-lg on desktop, only use calc on small screens
fix: Safari desktop modal button overflow issue
fix: Modal Safari compatibiliteit en wachtwoord redirect
fix: Lint warnings opgelost (unused vars en quotes)
feat: AI-powered beschrijving generatie voor duiklocaties
2 januari 2026
feat: Duiklocaties beheer met Prisma database migratie
feat: voeg reset script toe om git commits database opnieuw te vullen
perf: optimaliseer database opslag - schrijf alleen nieuwe commits
fix: gebruik PrismaPg adapter voor database connectie in generate-changelog script
feat: voeg database opslag toe voor git commits
fix: los laatste linting errors op
feat: improve bundle size report with better metrics and artifact upload
fix: remove deprecated eslint config and empty middleware to resolve Next.js 16 warnings
fix: add statuses:write permission to all workflows for Vercel notifications
fix: add gitleaks.toml config and allowlist comments to prevent false positives
fix: remove unsupported status parameter and add permissions to Vercel notification workflows
fix: update documentation examples to avoid false positives in secrets scan
fix: add status parameter to Vercel deployment check notifications
fix: update Vercel deployment checks to work for production deployments
fix: quote Vercel notification names for YAML syntax
feat: add Vercel deployment check notifications to GitHub Actions workflows
fix: remove docker build workflow and disable TypeScript/ESLint checks in Vercel builds
fix: limit secrets scan to current commit only
fix: update secrets scan workflow and remove false positive from docs
chore: setup pre-push checks and GitHub Actions workflows
Add @floating-ui/dom as explicit dependency - Fix CI build error
Verbeter spacing tussen dashboard componenten - Consistent spacing tussen alle kaarten en secties - Verklein spacing van 6/10 naar 4/8 voor compactere layout - Pas spacing toe op alle dashboard en admin pagina's
Verbeter audit log: paginatie, compacte layout, CSV export voor Excel, verwijder redundante reason kolom
fix: verbeterde build-time detectie voor S3_REGION check
fix: lazy initialization voor alle S3 environment variables
fix: lazy initialization voor encryption library om build errors te voorkomen
fix: Better Auth initialization met betere build-time detectie
fix: lazy initialization voor S3 en Better Auth om build errors te voorkomen
feat: audit log retentie policy met automatische cleanup
feat: audit logging met download reden, verbeterde datum/tijd formatting en IP geolocation
Consolideer componenten en navigatie, voeg style guide toe
Fix React Hook dependency warnings in UsersManagement
1 januari 2026
Verbeter spacing tussen secties en koppen, fix lint errors
Dashboard en admin mobile-friendly maken, MFA beheer verbeteren en diverse UI aanpassingen
Fix TypeScript compile error in PasskeyManagement
Gebruik PostgreSQL DATE type voor geboortedatum
Verbeter login/registratie formulieren en voeg verplichte geboortedatum toe
feat: implementeer 'Ingelogd blijven' functionaliteit met toggle switch
Feature: Auto sign-in na email verificatie
Fix: email_verified_at wordt nu automatisch gezet via Better Auth afterEmailVerification callback
Fix: email_verified_at timestamp, verwijder redundante email_verification_tokens tabel, en verbeter MFA login flow
Fix Prisma 7 compatibiliteit - downgrade naar Prisma 6
Fix TypeScript type-check voor Prisma Client
Fix Prisma Client generatie op Vercel
Fix Prisma Client import - clear all caches
Fix Prisma Client TypeScript import issue
Fix Prisma Client generatie en build
Update database configuratie naar externe server
Fase 1: Prisma database setup voor user management
Add Prisma files to .gitignore for user management
Update environment files: security fixes and user management prep
Fix border-radius voor afbeeldingen in email cards op mobiel
Gebruik SVG logo's en maak email header subtieler
Maak email header subtieler met logo
Verwijder preview bestand email-modern-design.ts
Moderniseer alle email templates met nieuw design
Fix: Verwijder dubbele border lijn in nieuwe duiken email beschrijving
Fix: Herstel originele responsive prose classes voor beschrijvingen
Fix: Verwijder text-sm van prose p en li om originele lettergroottes te herstellen
Cleanup: Verwijder ongebruikte dive-description CSS class
Revert: Zet website layout terug naar originele sidebar layout
Fix: Verbeter beschrijving layout in nieuwe duiken email - label boven, tekst eronder
Refactor: Compleet nieuwe layout - beschrijving full-width met max-width, sidebar items eronder
Fix: Geef beschrijving nog meer ruimte (70% in plaats van 60%)
Fix: Geef beschrijving meer ruimte op desktop door grid layout aan te passen
Fix: Nieuwe dive-description class met directe Tailwind responsive classes voor desktop
Fix: Voeg responsive prose styling toe via CSS media queries voor desktop
Fix: Gebruik Tailwind arbitrary variants voor responsive prose styling op desktop
Improve: Betere desktop typografie voor duik beschrijvingen
Fix: Vervang let met const voor linter warnings
Fix: Expand location_id relatie in alle email endpoints voor correcte locatie weergave
Fix: Verbeter location_id expansie met location_id.* syntax en handmatige fallback
Fix: Corrigeer fields referentie in getDiveByDateAndSlug fallback query
Fix: Verbeter location_id relatie expansie voor aankomende duiken met fields[] array syntax
Fix: Verbeter commentaar structuur in unsubscribe route
Voeg List-Unsubscribe headers toe en implementeer one-click unsubscribe + email tester endpoint
Optimaliseer cron job voor betaald cron-job.org account met configurable timeout en hogere batch limits
Fix: Voorkom dubbele verkorte URLs door race condition checks en betere filtering
31 december 2025
Verplaats Shlink API key naar environment variables voor betere beveiliging
27 december 2025
Fix: parseFloat voor dive.price in New Dives Email om toFixed() fout te voorkomen
Verwijder AWS SES implementatie en terug naar SMTP-only
Fix: Gebruik AWS SES API direct in plaats van Nodemailer transporter (TypeScript compatibiliteit)
Fix: TypeScript error - gebruik optional chaining voor AWS_ACCESS_KEY_ID
Voeg AWS SES email support toe met automatische detectie en Barracuda delist request template
Verbeter poll stem opslag: gebruik cookies (transparant via Cookiebot) met localStorage fallback
Fix: Schakel ESLint regel uit voor Cookiebot script (vereist voor vroeg laden)
Voeg Cookiebot cookie consent management toe
24 december 2025
Fix: Daily dive notifications kijkt nu naar duiken sinds gisteren in plaats van alleen vandaag
Voeg uitgebreide logging toe voor datum debugging in calendar URL generatie
Combineer aantal en namen van deelnemers in één regel in iCal feed
Detecteer en vervang oude format calendar short URLs
Verbeter URL logging en cache instellingen voor calendar feed
Voeg voornamen van deelnemers toe aan iCal calendar feed
Verbeter check voor bestaande calendar short URLs en voeg uitgebreide logging toe
Verbeter calendar feed: check bestaande short URLs, verwijder colon escape, gebruik adres als locatie
Verbeter calendar feed: verwijder inschrijflink, fix reminder volgorde en newline handling
Fix TypeError: price.toFixed is not a function - voeg type checking toe voor price veld
Voeg iCal line folding toe en verbeter escaping voor calendar feed compatibiliteit
Voeg debug logging toe aan calendar feed en verbeter escaping van speciale karakters
Fix calendar feed: corrigeer GPS property handling om lege calendar te voorkomen
Voeg uitgebreide calendar features toe om deelname te stimuleren
Verhoog timeouts en delays voor Shlink API om timeout problemen op te lossen
Updated deps
Fix ESLint warnings en voeg calendar URL generatie toe aan post-deploy script
Voeg calendar_short_url toe aan Dive fields en implementeer iCal feed met calendar short URLs
Fix: Vervang interne API call door directe slug generatie logica
Fix: Verwijder dubbele errors declaratie in shorten-urls cron job
Verbeter error handling en status codes voor cron jobs
Fix Directus filter queries: gebruik URLSearchParams en verbeter error handling
Fix ESLint errors: unused variables en prefer-const warnings
Migreer shorten-urls cron job naar cron-job.org voor Hobby plan
Feature: Automatische WhatsApp short URLs en slug generatie via Shlink
Sitemap: Voeg ontbrekende pagina's en blog posts toe
23 december 2025
Documentatie: Automatische slug generatie voor Directus flows
Fix: verwijder ongebruikte redirect import
Plausible tracking uitgebreid: outbound links, file downloads, 404 errors en ecommerce revenue
Nieuwe URL structuur voor duiken: /duiken/[datum]/[slug] met backward compatibility
UTM parameters toegevoegd aan alle links in emails voor betere tracking
Ondersteuning voor self-hosted Plausible Analytics toegevoegd
5 december 2025
Disable ESLint rule for dialog stopPropagation handlers
Fix accessibility errors: add onKeyDown handlers to dialog elements
Fix workflow to properly check for ESLint errors only
Update workflow to only fail on ESLint errors, not warnings
Fix remaining linter errors and disable problematic warnings
Fix indentation in FeedbackWidget fieldset
Fix fieldset closing tag in FeedbackWidget
Fix remaining accessibility errors: add dialog roles and fieldset for labels
Fix syntax error: remove duplicate closing bracket in DiveWeatherWidget
Fix remaining ESLint errors: scripts unused vars, accessibility improvements
Fix ESLint errors: remove unused variables, fix prefer-const, update ts-ignore to ts-expect-error
Remove old .eslintrc.json file (replaced by eslint.config.js)
Migrate ESLint to flat config format for ESLint 9 compatibility
Update Node.js version to 20 for Next.js 16 compatibility in CI workflows
Fix TypeScript error: diveId scope in catch block
Update contributieprijs van €60 naar €65 per jaar
27 november 2025
Fix: Toon alle duiken van dit kalenderjaar in statistieken
21 november 2025
Toon zowel duik beschrijving als locatie beschrijving op duikpagina
19 november 2025
Fix ronde foto weergave in bestuur modal op mobiel - voeg aspect-square en object-center toe voor correcte crop
17 november 2025
Verhoog gewicht van temperatuur in duikcijfer berekening
Fix: tekst afkapping op mobiel voor email subscription banner
Add penningmeester email notification when payment link cannot be generated
7 november 2025
Fix TypeScript error: ensure lat/lon are always assigned
Fix weather forecast: gebruik directe coördinaten, adres en betere error handling
3 november 2025
Voeg Plausible tracking toe voor Feedback formulier met properties
Switch Plausible terug naar gehoste versie in plaats van self-hosted
2 november 2025
feat: Configureer Plausible voor self-hosted met custom domain
feat: Voeg 'Delen' kop toe boven agenda en WhatsApp knoppen
feat: Plaats agenda en WhatsApp knoppen naast elkaar in compacte layout
feat: Verplaats inschrijfknop onder deelnemerslijst en verbeter vol-status
perf: Optimaliseer netwerkafhankelijkheidsstructuur voor kritieke keten
style: Pas faciliteiten grid layout aan naar 2 kolommen mobiel, 3 kolommen desktop
feat: Maak titel op DiveCard klikbaar naar dive pagina
refactor: Gebruik altijd faciliteiten uit location_id in plaats van dive.facilities
fix: Update current_participants bij annulering van duik registratie
fix: Voeg critters dependency toe voor optimizeCss feature
perf: Optimaliseer resource load delay voor betere performance
feat: Voeg development logging toe voor address lookup API's
feat: Gebruik PDOK FREE API als primaire adres lookup bron
fix: Wrap useSearchParams in Suspense boundary voor build compatibiliteit
feat: Voeg Plausible tracking toe voor annulering en email subscriptions
docs: Voeg Plausible Analytics setup documentatie toe
feat: Vervang Vercel Analytics met Plausible Analytics en voeg custom events toe
perf: Optimaliseer resource loading om Speed Insights scores te verbeteren
perf: Voorkom JavaScript render blocking met lazy loading
fix: Maak archief pagina static generation compatible met force-cache
fix: Maak sitemap static generation compatible met force-cache
fix: Corrigeer return type van getDiveFacilities naar undefined
fix: Corrigeer TypeScript types voor locatie helper functies
feat: Implementeer duiklocaties database en diverse verbeteringen
Fix: Vervang laatste todayString referentie door todayNL
Fix: Vervang todayString door todayNL in alle filters
Fix: Gebruik Nederlandse tijdzone voor datum filtering (timezone fix)
Fix: Force dynamic rendering voor kalender/homepage zodat oude duiken direct verdwijnen
Fix: Duiken verdwijnen nu op de dag na de duik (geen gisteren meer op kalender)
1 november 2025
Verbeter GitHub API authenticatie en error handling voor changelog
Voeg GITHUB_TOKEN configuratie toe aan env.example
Fix: Gebruik altijd GitHub API op Vercel + ondersteuning private repos
Voeg GitHub API fallback toe voor changelog op Vercel (shallow clone fix)
Vereenvoudig changelog: haal alle commits op tijdens build ipv incrementeel
Fix: Toon alle commits in changelog ipv alleen eerste 100
Verbeter changelog: voeg nieuwe commits toe ipv volledig overschrijven
Voeg gegenereerde changelog.json toe
Voeg build-time changelog generatie toe voor Vercel productie
Fix: Voeg expliciete types toe aan git.ts callbacks
Fix: Voeg description toe aan PageHeader in changelog
Fix: Verwijder subtitle prop van PageHeader in changelog pagina
Verbeter changelog: voeg dateRaw toe voor juiste sortering
Voeg changelog pagina toe met git commits, subtiele link in footer
Fix: Maak dummy payment link als placeholder API key wordt gebruikt, geen link als API key ontbreekt
Verbeter: Geen dummy payment link bij ontbrekende Mollie API key - email toont bericht over penningmeester
Fix: Pas sendDiveSuggestionStatusEmail aanroep aan naar plat object structuur
Fix: Voeg page_url toe aan FeedbackEmailData test data
Fix: Pas MembershipEmailData test data aan naar juiste interface velden
Fix: Pas sendAdminConfirmationEmail aanroep aan naar juiste parameters
Fix: Gebruik testDive ipv testRegistration voor dive parameter
Fix: Voeg limit=-1 toe aan subscription queries om alle subscribers op te halen
Voeg test API toe om alle emails in een keer te versturen voor layout check
Verwijder universele transparent regel en voeg table/td transparantie toe
Forceer transparante achtergrond in emails met !important
Verwijder witte achtergrond uit emails: gebruik native email client achtergrond
Verbeter foto layout in nieuwe duiken email: maak foto aansluitend op detail-box
Fix: voorkom dat envelope icoon ook in uitgeklapte header langwerpig wordt
Fix: voorkom dat envelope icoon rondje langwerpig wordt
Voeg duikfoto toe aan nieuwe duiken email en hardcode links naar productie URL
Voeg TEST_SECRET toe aan env.example
Test endpoint: test volledige flow met echte subscriptions uit Directus
Voeg test endpoint toe voor nieuwe duiken email
Fix logo URL in emails: gebruik altijd publieke productie URL
Voeg uitgebreide logging toe voor token hash debugging en normaliseer ID
Fix token hash verificatie: normaliseer email en voeg debugging toe
Verwijder CancelNotification van kalender (niet meer nodig)
Voeg bevestigingspagina toe voor annuleringen
Fix annuleerlink: voeg notification toe en verbeter logging
Fix TypeScript: Replace secondaryColor with accentColor in email template
Fix TypeScript: Use spread operator for registration object in cancel admin email
Fix TypeScript error: Add missing dive_id field in cancel registration admin email
Ensure unsubscribe and cancel links always use public production URL
Fix: Ensure registration ID is available for cancel link in dive registration emails
Add detailed Directus setup guide for email subscriptions
Add email subscription system with unsubscribe and dive registration cancellation
Fix ESLint warning: capture mapRef.current at effect start
Fix datum en tijd velden grootte op mobiel voor duik-voorstellen formulier
Fix build errors: Leaflet CSS import en ESLint warnings
Activeer alle email functionaliteit met Directus flows
Duik voorstellen flows en validatie updates
Duik voorstellen functionaliteit met interactieve kaart
Automatische bevestiging voor gratis duiken
29 oktober 2025
Poll functionaliteit toegevoegd aan homepage
âš¡ LCP optimalisaties: preconnect, WebP format en lazy loading
Fix: Voeg cross-env toe voor Windows compatibiliteit van bundle analyzer
Optimalisatie #3: Implementeer bundle analyzer voor JavaScript bundle analyse en optimalisatie
Optimalisatie #2: Implementeer bulk fetch voor dive registrations - vermindert API calls van N naar 1
Optimalisatie #1: Verhoog bestuurspagina cache naar 1 uur (bestuursleden veranderen niet vaak)
Verbeter SWR cache logging - maak onderscheid tussen cache hits en API calls duidelijker
Voeg client-side logging toe voor SWR cache debugging
Fix hoisting error - verplaats calculateDiveScore functies buiten component
Implementeer SWR voor client-side caching van weather API calls - voorkom onnodige API requests
Verbeter logging door de hele site - consistente emoji-based logging voor alle API routes en Directus functies
Fix inconsistent participant pills loading - better error handling en logging
Verwijder contact sectie van bestuurspagina
Voeg retry logica toe voor deelnemers ophalen op mobiel
Maak alle deelnemer pillen oranje en verbeter refresh snelheid met no-cache
Maak deelnemer pillen oranje consistent met buttons
Fix bestuur kaarten centrering met flex-wrap voor piramide layout
Centreer bestuurskaarten voor piramide uitlijning
Vervang klok icon door verjaardagstaart icon bij leeftijd
Voeg leeftijd en certificering toe aan bestuur modal
Maak Lees verder knop oranje op bestuur kaarten
Voeg modal toe voor volledige bio op bestuurspagina met max hoogte kaarten
Update bestuur pagina: WYSIWYG voor bio en oranje contact knop
Voeg Bestuur pagina toe met Directus integratie en documentatie
Verbeter email template met uitgebreidere voorbereidingstips voor duiken
Voeg 24-uurs herinnering toe aan agenda items voor duiken
Voeg UTM-parameters toe aan WhatsApp share link voor duiken
Voeg UTM-parameters toe aan alle social share links voor tracking
Voeg helpende tekst toe bij screenshot upload met lampje emoji
Maak feedback verzenden knop oranje voor consistentie met andere CTAs
Verbeter feedback formulier layout - overzichtelijker met visuele secties
Maak icoontje positie consistent in volgende duik kaart (items-start)
Maak label tekstgrootte consistent in statistieken sectie (text-lg)
Verwijder underline bij location link hover - oranje kleur is voldoende feedback
Pas contactformulier button op Word lid pagina aan naar oranje gradient
Voeg oranje hover states sitebreed toe (subtiel)
Voeg subtiele oranje accenten toe als secondary accentkleur
Pas Hero tekst aan: binnen- en buitenland -> mooiste binnenwateren
Verwijder bedrag uit Hero en maak CTA knop aantrekkelijker
Update Hero tekst voor meer impact en conversie
Maak 'Word lid' knoppen opvallender met oranje gradient en subtiele animaties
Pas 'Word Lid' aan naar 'Word lid' in navigatie en pagina's
Pas hoofdlettergebruik aan in titels en koppen
Vervang logo.jpg door logo.png
Vervang SVG logo door logo.jpg in header en gebruik als favicon
Voeg KVK nummer toe aan contactpagina
Update tekst: 'Bekijk alle nieuws' naar 'Bekijk al het nieuws'
Verhoog testimonials carousel interval naar 10 seconden
Update testimonials subtekst: voeg 'van QDiving' toe
Fix ESLint waarschuwing: escape quotes in testimonials
Voeg testimonials carousel toe en verbeter menu structuur
Update: BlogPost types en documentatie - Voeg user_created/updated velden toe - Voeg archived status optie toe - Update documentatie met status beheer sectie
Feat: Blog/Nieuws functionaliteit (Actueel)
Contact pagina & footer updates
Fix: Membership form file upload en slimme validatie
Move scroll anchor to wrapper div to keep step indicator visible on mobile
Add email confirmation and spam folder reminder to all forms
Improve form scroll position to keep step indicator visible on mobile
Add external link icon to Fit2Dive link and update URL to duikkeuring article
Fix scroll behavior in multi-step form - keep form in view instead of jumping to page top
Add local development setup with live backend configuration
Move contact section to left column under membership benefits
Add definitive iOS Safari date input width fix with flex container and CSS !important
Replace direct email/phone links with contact form links on membership and about pages
Remove overflow-hidden from date inputs to prevent iOS picker cutoff
Fix iOS Safari date input width with overflow wrapper
Upgrade address lookup to Pro6PP API with PDOK fallback
Add automatic address lookup by postal code and house number
Add stronger iOS Safari date input width fix with box-border and maxWidth
Move membership fee text below 'Wat krijg je als lid?' heading
Fix iOS date input width while preserving native date picker
Fix date input width on iOS Safari
Add 2-step membership form with diving experience and Fit2Dive upload
Add two-column layout for Word Lid page on desktop
Update Word Lid benefits: focus on safety and social diving with meals
Improve Word Lid page with better benefits section and add admin documentation
Fix dynamic server usage error for all API routes
Add complete SEO optimization with Open Graph, sitemap, and OG image
Fix Lighthouse CI assertions - disable non-essential checks
Remove redundant Vercel deploy workflow
Adjust desktop menu breakpoint to 1190px for better tablet support
Fix iPad navigation: use hamburger menu for tablets
Use consistent droplet icon for precipitation widget
Use location address for better geocoding accuracy
Fix TypeScript error: make dive time optional in forecast widget
Add weather forecast widget for individual dive pages
Set weather location to Vinkeveen diving spot
Improve weather score algorithm and fix mobile layout
Add dive weather widget with graceful degradation
Weather status
Add debug logging for screenshot upload
Fix ESLint warning for screenshot preview
Add screenshot upload to feedback widget
28 oktober 2025
Organize documentation in docs/ folder
Update feedback button to orange gradient matching next dive badge
Remove debug logging from feedback API
Fix TypeScript error in feedback API payload
Fix feedback API to handle 204 No Content response
Improve feedback API error logging with direct fetch
Export Directus client for feedback API route
Add feedback widget system
Fix build errors: move themeColor to viewport, remove experimental CSS
Optimize performance: images, JS, CSS for PageSpeed 99+
Fix deprecated packages and security vulnerabilities
Fix ESLint configuration
Fix font preload warning and optimize console logs
Add Lighthouse CI for automatic performance monitoring
Add package-lock.json with SWC dependencies
Optimize CSS for better performance
Enable Next.js image optimization for better performance
Add Vercel Analytics and Speed Insights
Add Vercel Speed Insights
Remove debug logging - stats working
Add debug logging for participants
Count pending and confirmed registrations, exclude cancelled
Fix: Correct Settings collection name to lowercase 'settings'
Clean up: Remove debug files and restore production settings
Add debug logging for stats
Add date debug endpoint
Add production CMS hostname for images
Remove vercel.json - not needed for Vercel deployment
Fix vercel.json voor deployment
Over ons
Over ons
aanmelden werkt
Duikkalender
27 oktober 2025
Deel 2
Basis staat