Commit graph

305 commits

Author SHA1 Message Date
isUnknown
6ad0545ea4 about : unhtml title
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 26s
2026-06-17 08:00:02 +02:00
isUnknown
d93582b0a1 feat: add mecaniques-gamification standalone page
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 47s
Page statique non listée avec template PHP autonome (sans Vite/Svelte).
Affiche les 60 mécaniques de gamification avec filtre et retournement de cartes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 17:28:19 +02:00
isUnknown
df535a6ecb update Kirby
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 44s
2026-06-09 14:40:05 +02:00
isUnknown
fd3522c1f9 white paper > form > error message : improve error message
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 21s
2026-06-08 17:06:23 +02:00
isUnknown
ba43eceaf5 chore: remove Emailable debug log
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 15:17:06 +02:00
isUnknown
4705433238 fix: fail closed on Emailable HTTP errors, fail open on network errors only
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 22s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 15:14:15 +02:00
isUnknown
9c2e1ee4fa white paper > form : update message to fit brevo
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 39s
2026-06-08 15:00:02 +02:00
isUnknown
d087012ea8 feat: validate email via Emailable, remove auto-download, fix keyboard nav in inputs
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 32s
- Plug Emailable API into checkEmailDeliverability (fail open if no key)
- Show inline red error + shake animation on email field when address is undeliverable
- Remove window.open auto-download after form submission; success now checks result.success
- Disable arrow-key slide navigation when an input or textarea is focused

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 14:57:03 +02:00
isUnknown
4ea4cd91f5 debug: log hostname and Brevo api_key in download-white-paper route
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 22s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 11:51:33 +02:00
isUnknown
733140b393 fix: expose Brevo upsert result in download-white-paper route response
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 5m30s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 11:27:16 +02:00
isUnknown
e7f9849888 security: gitignore env-specific config files and untrack config.world.game.php
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 28s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 07:40:26 +02:00
isUnknown
dbba73ea62 feat: connect white paper download form to Brevo
Refactors the download route into clean single-responsibility functions
and adds Brevo contact sync (list ID configurable via brevo_whitepaper.list_id).
Includes a stub for future external email deliverability validation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 07:37:32 +02:00
isUnknown
d12c31641f white papers > contact : slugify wp name and lock edition
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 25s
2026-06-02 10:56:54 +02:00
isUnknown
ec7aab8b6a fix: add explicit escape param to fputcsv to silence PHP 8.3+ deprecation
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 50s
Whoops converts the E_DEPRECATED into an exception, causing a 500.
Pass '"' and '\\' explicitly to match the current default behavior.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 17:47:21 +02:00
isUnknown
e97a3501ed fix: preload white paper titles to avoid UUID recursive resolution
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 21s
kirby()->page($uuid) triggers a full site tree scan which can fail
depending on server config. Instead, load livres-blancs children once
and build a uuid→title map for O(1) lookups in the contact loop.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 17:40:52 +02:00
isUnknown
5ae8dd0d17 fix: replace toPages() with direct UUID resolution in CSV export
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 40s
site()->find(false, false, ...uuids) passed booleans to a typed variadic
parameter, which can throw on PHP 8.1+. Resolve each UUID individually via
kirby()->page($uuid) and add null guard for page('livres-blancs').

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 17:35:02 +02:00
isUnknown
5d2e78367e fix: remove stale lowercase whitepaper key before writing updated whitePaper
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 21s
toStructure()->toArray() returns lowercase keys, so reading 'whitepaper'
then writing 'whitePaper' left both keys in the array, producing duplicate
YAML keys on re-encode. unset the lowercase key first to keep the file clean.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 17:16:08 +02:00
isUnknown
7ceb07f2b0 fix: force default language on contactDatabase write to prevent silent drop in EN context
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 24s
Kirby's Form system strips translate:false fields when the current language
is not the default, so update() in an EN request silently discarded the
contactDatabase payload. Explicitly passing the default language code ensures
the write always targets white-papers.fr.txt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 16:58:45 +02:00
isUnknown
effe6ec547 feat: add CSV export button in panel for contact database
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 21s
- Plugin csv-export: authenticated route /wg-export/contacts generates
  CSV with UTF-8 BOM, semicolon separator, white-paper titles resolved
- Panel section with k-button wired to the route, index.css for spacing
- white-papers.yml dataTab converted to sections to host the custom section
- Filename format: YYMMDD-contacts.csv

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 14:00:23 +02:00
isUnknown
fb29a8fb98 white papers : disabled change slug
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 38s
2026-06-01 13:51:36 +02:00
isUnknown
1cbad99143 fix: contact database read/write mismatch overwrote all entries
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 21s
Read was from the white-paper page, write was to livres-blancs — so
each submission started from an empty (or wrong) entries array and
replaced the full database. Both now read from livres-blancs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 13:48:13 +02:00
isUnknown
82e69c7259 fix: redirects 301 not firing — three bugs
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 26s
- toPages()->first() instead of toPage() (pages field stores YAML array)
- Force read from default language content to avoid empty rules on FR requests
- Add error.php template so Kirby uses the error controller (without it,
  Kirby fell back to default template and ignored site/controllers/error.php)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 10:01:49 +02:00
isUnknown
dbeca5e095 feat: add editable 301 redirects via dedicated panel page
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 21s
- New "Redirections" page in panel (blueprint + content) with a structure
  field: old URL (text) → target page (pages field, auto-resolves URL)
- error.php controller intercepts 404s, checks redirect map, fires go() 301
- Cache (file driver) invalidated on redirections page update or slug change
- Removed catch-all route that was breaking Kirby multilingual routing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 09:47:59 +02:00
isUnknown
91ac702f3c fix: strip trailing slash in normalizePath so /policy/ resolves correctly
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 49s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 09:22:17 +02:00
isUnknown
ac807c0a4f update tobimori seo config
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 28s
2026-05-26 07:08:31 +02:00
isUnknown
4d9509dec2 feat: add film grain effect and purple base to preloader
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 23s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 18:25:04 +02:00
isUnknown
a33e2467d8 perf : replace bg image in preloader with CSS gradient
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 20s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 18:17:31 +02:00
isUnknown
7ba18dcd9d perf : replace loading flash with background preloader, parallel sub-page fetch
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 25s
- Add #preloader div with scrollable-page-background.png as CSS background,
  matching the Svelte bg-fixed image so the transition is imperceptible
  (image is cached by the time Svelte requests it)
- Revert #ssr-content to visually-hidden (clip) for Google Wave 1 crawl
- Prevent scrollbar flash by adding overflow:hidden to html,body inline
  before main.css loads
- Parallel-fetch sub-page data (/blog/slug.json) alongside parent in initRouter
  so Blog/WhitePapers components receive prefetched data on mount — eliminates
  the list→article flash on direct navigation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 18:05:06 +02:00
isUnknown
56e4e55791 analytics : add Google Analytics (gtag.js) snippet
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 26s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 15:08:07 +02:00
isUnknown
459fadf0a4 seo : inject semantic html in kirby templates for bot indexing
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 28s
Each page template now renders its content in a visually-hidden #ssr-content
div (sr-only technique) so search engine crawlers see real HTML without
impacting the Svelte app layout. Shared snippets handle nav, footer contact
info, and article cards.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 15:24:40 +02:00
isUnknown
4d4832beda blog > cards > chapo : parse html
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 22s
closes #73
2026-05-14 08:36:59 +02:00
isUnknown
952375e6f5 white paper > intro : keep html formating. closes #76
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 23s
2026-05-14 08:34:56 +02:00
isUnknown
35f160f9d1 white paper : fix form-area height. closes #78
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 27s
2026-05-14 08:28:02 +02:00
isUnknown
bf041f4f7a policy : add privacy policy page
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 28s
Blueprint, PHP templates, Svelte view (static title + body blocks), i18n key and App routing. Page is unlisted, excluded from frontend navigation, and all panel change options are disabled.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 18:10:54 +02:00
isUnknown
12227dc50c seo : fix sitemap empty in prod, set canonical base to world.game
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 28s
- Add config.world.game.php with debug=false so robots.index=true in prod
- Fix canonical.base to https://world.game

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 13:56:36 +02:00
isUnknown
a27b9a3989 seo : configure sitemap with priorities and canonical base
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 35s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 13:54:00 +02:00
isUnknown
56ac349cc7 white paper : remove max length
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 31s
2026-05-05 16:35:53 +02:00
isUnknown
9aed12e61f ci : split deploy workflow into prod and preprod
All checks were successful
Deploy Production / Deploy to Production (push) Successful in 33s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-05 07:32:46 +02:00
isUnknown
b5a3dde43b hide footer on footer hidden page on mobile
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
2026-04-22 15:46:42 +02:00
isUnknown
4698f683ed white-paper : cover mobile positioning - refs #69
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 15:44:29 +02:00
isUnknown
c476ed0761 white-paper : cover responsive positioning - refs #69
All checks were successful
Deploy / Deploy to Production (push) Successful in 20s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 15:39:37 +02:00
isUnknown
34bc05066f app : scroll to top on slide change - closes #72
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 14:22:01 +02:00
isUnknown
0ca55bed5d white-paper : track downloaded page per contact - refs #70
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-22 13:29:44 +02:00
isUnknown
77c4a06b30 white-paper : image size - linked to #69
All checks were successful
Deploy / Deploy to Production (push) Successful in 21s
2026-04-22 13:22:54 +02:00
isUnknown
a7e2a9b886 article > video block : set responsive height - closes #67
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s
2026-04-22 13:18:41 +02:00
isUnknown
5ca0b1f610 article > video block : full width
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s
2026-04-22 13:11:48 +02:00
isUnknown
0c74d82089 portfolio : fix left mockup grid column start
All checks were successful
Deploy / Deploy to Production (push) Successful in 26s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 15:10:41 +02:00
isUnknown
a3806811a9 blueprints : make structure fields consistently translatable or not
All checks were successful
Deploy / Deploy to Production (push) Successful in 23s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 15:08:48 +02:00
isUnknown
6caa69a30a blueprints : add translate: false to all non-translatable fields
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 15:01:22 +02:00
isUnknown
a933745dd4 header : move fixed positioning to header tag for correct offsetHeight closes #65
All checks were successful
Deploy / Deploy to Production (push) Successful in 22s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 14:45:05 +02:00