Sheet tab is 'WorldPlay' not 'Booking Sheet'. Dates use DD/MM/YYYY
format. Room/bed columns are at indices 2/4 not 0/1. Room numbers
carry down for multi-bed rooms. Added 'Couch' to hh-living bed types.
Changed valueInputOption to RAW to prevent formula injection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sheet names with spaces need single-quoting in range strings,
otherwise 'Booking Sheet!A:J' fails to parse.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Users can now attend individual days at €10/day instead of full-week
only (€50). Partial-week attendees get Commons Hub accommodation at
per-night rates (€40 shared, €50 double). Villa restricted to
full-week. Booking sheet writes guest names only on selected days.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Users who registered but didn't pay can now visit /pay, enter their
email, and go straight to accommodation selection + Mollie checkout
without re-registering.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Live spots counter (X of 60 remaining) with progress bar on registration sidebar
- Cancellation policy on step 2: 70% refund >1 month, 30% refund >1 week, none <1 week
- Updated sidebar perks to reflect actual offering (was "priority booking when tickets open")
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Convert single-step registration into a two-step flow:
- Step 1: Registration info → saves to JSON + Google Sheet with awaiting_payment status
- Step 2: Accommodation selection + price summary → creates Mollie checkout → redirects
On payment completion, Mollie webhook updates status, assigns bed on booking sheet,
sends confirmation email, and adds to Listmonk.
New files: api/booking-sheet.js, payment-success.html
New routes: /api/create-checkout-session, /api/mollie/webhook, /api/payment-status
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add logos for CCA, Commons Hub, Class Wargames, and INDEP
- Remove hyperlinks from convener names (plain text with affiliations)
- Add "Powered by the Mycostack in the spirit of P4P" footer link
- Update Dockerfile to copy images directory
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add date (June 7–13, 2026) and location (Commons Hub, Austria) to hero section
- Remove floating cards from about section, switch to single-column layout
- Update Digital Publishing text to remove TBC partner names
- Update organizer team text with new orgs and CCA/Commons Hub collaboration
- Remove "Reality is a design space" tagline from all footers
- Add conveners, sponsors, and promotional partners sections to footer
- Update accommodation, food, and cost estimate text on financial transparency page
- Fix email domain: hello@worldplay.earth → hello@worldplay.art
- Update confirmation email template with revised copy and bullet list
- Remove tagline from confirmation email
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update default SMTP_USER and EMAIL_FROM to use the domain-specific
newsletter mailbox instead of the shared noreply@jeffemmett.com address.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Switch from GOOGLE_CREDENTIALS env var (JSON string) to file-based
service account loading via GOOGLE_SERVICE_ACCOUNT_FILE, with fallback
to the env var for backwards compatibility. Mount the service account
JSON as a read-only volume. Add tls.rejectUnauthorized=false for
Mailcow self-signed cert.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All email sending now uses mail.rmail.online as the SMTP host,
replacing the legacy mx.jeffemmett.com hostname.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Swap email sending from Resend API to self-hosted Mailcow at
mx.jeffemmett.com. Uses SMTP_PASS env var instead of RESEND_API_KEY.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replaced HTTP API calls with direct database insertions
- More reliable than API auth which requires session tokens in Listmonk v5+
- Added pg package for PostgreSQL connectivity
- Handles both new subscribers and existing ones (updates attributes)
- Merges WORLDPLAY attributes with any existing subscriber data
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- New registrations with newsletter=yes are automatically added to WORLDPLAY list
- Stores registration metadata (role, interests, location) as subscriber attributes
- Handles existing subscribers by adding them to the list
- Connected to Listmonk via internal Docker network
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change community-grid from CSS grid to flexbox
- Add justify-content: center for centering
- Add flex sizing for responsive card layout
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add pointer-events: none to glitch pseudo-elements
- Add z-index and position to nav-links for reliable clicking
- Add cursor: pointer to nav links
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change COPY index.html to COPY *.html
- Ensures financial-transparency.html is included in container
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Create dedicated financial-transparency.html page in worldplay theme
- Add route for /financial-transparency in server.js
- Fix gradient text highlight CSS (add color:transparent, display:inline)
- Add .highlight-text utility class for CTA section
- Update link to use local page instead of CCG25 external link
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add proper CSS rules for 4th and 5th floating cards
- Position Parallel worlding and Guerrilla futuring to not overlap
- Remove inline styles from new floating cards
- Remove website design credit from footer
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add floating concepts: Parallel worlding, Guerrilla futuring
- Replace Speculative fiction with Economic sci-fi
- Fix all example URLs with correct links
- Update Digital Publishing description
- Convert Playing with Reality to bullet points
- Update Who should attend with comprehensive list
- Change contribution field to multi-select checkboxes
- Update Ready to Play? to Ready to Hijack Reality?
- Fix Location footer link
- Add organizing team info (Rok, Pekko, Carolina)
- Add website credit
- Add Maker Spaces & Equipment section
- Add Financial Transparency section with CCG25 link
- Update server.js for multi-select contribute handling
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix "sustaining...sustaining" → "to support the network"
- Shorten "Everything for Everyone" title
- Change "7 days of worldbuilding" → "7 days of peerticipatory worldplay"
- Remove location badge overlay from Commons Hub image
- Fix venue image z-index to display properly
- Add "Guerrilla Futuring" to form thread options
- Change "co-labs" → "mycollabs" in registration perks
- Add hyperlinks to examples (Yes Men, Ministry for the Future,
Half-Earth Socialism, Nordic Larp Wiki, etc.)
- Style linked examples with cyan hover effect
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Registration data sent to Google Sheet (all fields)
- Confirmation email sent via Resend
- Beautiful HTML email template matching site design
- Both integrations are optional (gracefully disabled if not configured)
Environment variables needed:
- RESEND_API_KEY: Resend API key for emails
- GOOGLE_SHEET_ID: Google Sheet ID for registrations
- GOOGLE_CREDENTIALS: Service account JSON credentials
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Health check was using localhost which resolved to IPv6 [::1],
but the server binds to 0.0.0.0. Changed to 127.0.0.1.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added worldplay.art and www.worldplay.art to Traefik router
- Updated www redirect to point to worldplay.art
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Removed "Avant-garde revolutionaries LARPing as commons economists"
as a bold headline - phrase now only appears naturally in body text.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- About section: Full 3 paragraphs with complete descriptions
- Community section: Full bullet point descriptions
- Programme section: Complete track titles, full descriptions,
and all examples from original copy
- Location section: Full Commons Hub description
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Express server with health check
- Single-page HTML site
- Docker + docker-compose setup
- Traefik integration for worldplay.jeffemmett.com
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>