627 Commits

Author SHA1 Message Date
Serreau Jovann
00a2ebe79d Add pwa:create:sw after pwa:compile in pwa_dev and pwa_prod commands
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 20:11:28 +01:00
Serreau Jovann
33ae25390c Add PHP exif extension to prod Dockerfile for PWA image processing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 20:09:50 +01:00
Serreau Jovann
0fd6aa5b07 Fix PWA commands: use pwa:compile instead of pwa:create:sw
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 20:09:10 +01:00
Serreau Jovann
9a73a235bc Fix PWA icons: remove sizes/type, let bundle auto-resize from source image
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 20:06:30 +01:00
Serreau Jovann
1fe7033251 Remove duplicate pwa_dev/pwa_prod Makefile targets
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 20:05:10 +01:00
Serreau Jovann
46e4d1c948 Ignore sw.js and workbox/ in git, generated by make pwa_prod on deploy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 20:00:43 +01:00
Serreau Jovann
17bb88c5f6 Add sw.js, workbox/, idb/ to ESLint ignores (auto-generated files)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:59:09 +01:00
Serreau Jovann
b4150c1248 Remove PWA screenshots from manifest config
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:55:33 +01:00
Serreau Jovann
743f2a83f8 Restore PWA screenshots in manifest config
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:55:13 +01:00
Serreau Jovann
7c0149b785 Update sw.js from pwa:create:sw, add PWA static paths to Caddy prod
- sw.js regenerated by Workbox with full cache strategies
- Add screen.png, site.webmanifest, workbox/*, idb/*, pwa/* to Caddy static paths

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:52:20 +01:00
Serreau Jovann
acb7e15b43 Remove manual SW code, Workbox handles everything via pwa:create:sw
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:48:31 +01:00
Serreau Jovann
350a6be2e5 Move navigation_preload under workbox config
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:46:16 +01:00
Serreau Jovann
99cacd529b Remove unsupported page_cache option from Workbox config
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:45:23 +01:00
Serreau Jovann
d22a02f01e Add offline page, navigation preload, page cache, and pwa:create:sw commands
- Create /offline route and neo-brutalist offline page with retry button
- Add navigation_preload: true for faster SW navigation
- Add page_cache: 50 entries, 24h, 3s network timeout
- Add pwa_dev/pwa_prod Makefile commands using pwa:create:sw

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:22:28 +01:00
Serreau Jovann
d150e2677f Add Workbox asset cache for CSS and JS files
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:20:55 +01:00
Serreau Jovann
7669fbca8c Add service worker with Workbox: cache manifest, image cache, font cache, skip_waiting
- sw.js with network-first strategy, versioned cache, auto-purge old caches
- Workbox: cache_manifest, image_cache (30 days, 200 entries), font_cache (30 days, 10 entries)
- skip_waiting + clients.claim for instant updates
- CSP nonce for SW registration script
- Remove sw.js and workbox from .gitignore

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:20:26 +01:00
Serreau Jovann
07b40e14e7 Add global Node, HTMLElement for ESLint no-undef in editor.js
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:17:19 +01:00
Serreau Jovann
887f0ca918 Move global L comment to top of file for ESLint no-undef rule
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:16:54 +01:00
Serreau Jovann
bbbf859e8f Increase navbar logo size: h-8 mobile, h-12 desktop
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:15:44 +01:00
Serreau Jovann
cae5d11bd8 Full mobile responsive for homepage, fix PHP CS Fixer import order
- Homepage: all text sizes responsive (320px→tablet→desktop)
- Background text text-[10rem] md:text-[30rem]
- Hero title text-4xl sm:text-5xl md:text-7xl lg:text-9xl
- Buttons smaller on mobile (px-6 py-4 md:px-10 md:py-6)
- Cards padding p-6 md:p-8, text sm on mobile
- Marquee text-base md:text-2xl
- CTA section responsive text and button sizes
- Fix AccountController: sort imports, use Event short class name

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:15:22 +01:00
Serreau Jovann
23992638d3 Add tests for editEvent, deleteEvent, toggles, and improve JS branch coverage
- Add 8 AccountController tests: editEvent GET/POST, access denied, delete, toggle online/secret, Stripe block
- Add editor.js test for text/element node handling in sanitizeNode
- Add cookie-consent test for banner without buttons (partial branch coverage)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:13:31 +01:00
Serreau Jovann
6fab96ab44 Full mobile responsive (320px) and tablet (768px) support across all templates
- All text-[20rem] background text → text-[8rem] md:text-[20rem]
- All text-8xl → text-5xl md:text-8xl
- All text-5xl emojis → text-3xl md:text-5xl
- edit_event: w-full md:w-[80%], poster column w-full lg:w-[350px]
- account/index: tab bar overflow-x-auto, events table overflow-x-auto
- admin/events: table overflow-x-auto
- register: tab buttons overflow-x-auto
- error 404/500: responsive padding p-6 md:p-12
- base footer: flex-col sm:flex-row for bottom bar
- Add PWA bundle (spomky-labs/pwa-bundle) with composer require files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:11:02 +01:00
Serreau Jovann
e101541185 Fix PWA screenshots config: use format instead of sizes/type
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:07:07 +01:00
Serreau Jovann
44eea74d49 Use real screenshot for PWA desktop wide install UI
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:06:35 +01:00
Serreau Jovann
6dd1464e61 Add PWA screenshots for mobile and desktop (wide) richer install UI
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:05:01 +01:00
Serreau Jovann
0a83f77c25 Set PWA display-override and portrait orientation only
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:04:29 +01:00
Serreau Jovann
e2aa30043c Fix PWA icons: separate any/maskable purpose, add manifest id, proper sizes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:04:06 +01:00
Serreau Jovann
237b3b23e2 Add 96x96 favicon icons to all PWA manifest shortcuts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:03:34 +01:00
Serreau Jovann
472d741f99 Complete PWA manifest: full name, description, lang, categories, shortcuts, orientation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:02:42 +01:00
Serreau Jovann
c4d65fcdf8 Configure PWA favicons with custom background, border radius and theme colors
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 19:01:08 +01:00
Serreau Jovann
0dd89d1b54 Add pwa_dev and pwa_prod commands using pwa:compile
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:59:58 +01:00
Serreau Jovann
f652665a06 Remove asset-map:compile commands, PWA bundle works dynamically via Twig
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:59:24 +01:00
Serreau Jovann
e3afbfacf0 Fix pwa_dev: clean compiled assets for dynamic mode, keep pwa_prod for compilation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:58:00 +01:00
Serreau Jovann
759436d850 Fix PWA: remove pwa:create (not exists), use asset-map:compile, fix favicon path
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:56:38 +01:00
Serreau Jovann
acfcd1e2df Add asset-map:compile before pwa:create in pwa_prod command
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:55:39 +01:00
Serreau Jovann
681c04bf85 Configure PWA: single pwa() call with favicon/theme injection, Imagick processor, remove duplicates
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:55:21 +01:00
Serreau Jovann
a794a10844 Add PWA bundle config and pwa() Twig function in base template
- Create pwa.yaml with manifest: name, icons (favicon.png), theme color
- Add {{ pwa() }} before stylesheets in base.html.twig head

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:54:11 +01:00
Serreau Jovann
689883b434 Add favicon, PWA commands (pwa_dev/pwa_prod), and prepare PWA deployment
- Add favicon.png link and apple-touch-icon in base.html.twig
- Add theme-color meta tag (#fabf04)
- Add pwa_dev and pwa_prod Makefile commands
- Add PWA asset generation step in Ansible playbook after cache clear
- Update Caddy static paths for favicon.png, marker.png, manifest.json, sw.js

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:53:36 +01:00
Serreau Jovann
187261170a Remove grey background behind custom map marker icon
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:48:01 +01:00
Serreau Jovann
0a758c0ccc Use custom marker.png for Leaflet map markers
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:46:39 +01:00
Serreau Jovann
b208c7529e Show full event poster without crop: object-contain instead of object-cover
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:44:07 +01:00
Serreau Jovann
4ce562df1f Adapt navbar for wide logo: remove border/shadow box, increase height, remove text label
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:42:37 +01:00
Serreau Jovann
c4e05bc5ba Add cdn.jsdelivr.net to CSP connect-src for Leaflet source maps
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:38:24 +01:00
Serreau Jovann
c1292bb2cd Switch Leaflet from unpkg to jsdelivr CDN to avoid sourcemap requests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:38:07 +01:00
Serreau Jovann
93ed10c170 Use CartoDB Positron light theme for event map, matches neo-brutalist design
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:37:32 +01:00
Serreau Jovann
91b52116c7 Replace OSM iframe with Leaflet map: marker, zoom, geocoding via Nominatim
- Add event-map.js module: loads Leaflet dynamically, geocodes address, renders map with marker at zoom 16
- Remove iframe, address text and OSM link below map
- Add CSP entries for unpkg (Leaflet), tile.openstreetmap.org (tiles), nominatim (geocoding)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:35:54 +01:00
Serreau Jovann
e2797e9731 Add analytics tunnels to dev Caddyfile: /stats/* and /assets/perf.js
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:36 +01:00
Serreau Jovann
bc2b386837 Show full dates (d/m/Y H:i), add OpenStreetMap embed below event description
- Change date display from d/m/Y + H:i to "Du d/m/Y H:i au d/m/Y H:i"
- Add map card with OSM iframe (300px), address text, and link to OpenStreetMap
- Add openstreetmap.org to CSP frame-src

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:31:07 +01:00
Serreau Jovann
de99ca5f62 Event detail: poster 250px left, description right in two-column layout
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:29:30 +01:00
Serreau Jovann
1dcf5a190d Add organizer info section and event contact form on event detail page
- Left: organizer card with logo, name, city, social icons, email
- Right: contact form (name, firstname, email, message) sent to organizer
- Add /evenement/{id}/contact POST route with email to organizer (replyTo sender)
- Create event_contact.html.twig email template
- Add flash messages for success/error

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 18:17:17 +01:00