Enforced=#84cc16, Passed=#65a30d, Progress=#a3e635, Guidelines=#d9f99d
Links and accents use lime-600 (#65a30d) from Agiliton brand palette.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Self-hosted maplibre-gl.js, vector tiles from maps.clicksports.de
style.json. No raster rendering needed — uses WebGL directly.
Same approach as held.de dealer map.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
TileServer GL renderer times out on raster requests.
Needs headless GL renderer fix — tracked separately.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Leaflet, TopJSON, Chart.js, Mermaid served from /js/
- Leaflet CSS from /css/leaflet.min.css
- World atlas GeoJSON from /data/countries-110m.json
- Zero external CDN requests (GDPR compliant)
- Map tiles from maps.clicksports.de (fixed missing Noto Sans font)
- Attribution: clicksports maps + OpenMapTiles + OpenStreetMap
- window.load for script initialization (load order fix)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
MapLibre inline style JSON was mangled by Hugo minifier.
Leaflet + OSM tiles is simpler and works reliably.
Updated map colors to Agiliton green palette.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Nav shows About + Topics links again
- Language switcher is a proper dropdown (current lang + translations)
- Article sidebar with sticky TOC + recent articles list
- Wider content area (64rem) with 240px sidebar
- Responsive: sidebar hidden on mobile
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Local woff2 files for latin + latin-ext (DE/FR support).
No external font requests for privacy/GDPR compliance.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add Newsreader font (darioamodei.com-inspired literary serif)
- Warm light background (#fafaf9) with Agiliton lime/emerald accents
- 20px body text, 32px line-height for research publication feel
- Sans-serif UI elements (nav, tags, TOC) for contrast
- 800px max content width for focused reading
- Status badges updated to green palette
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
maps.clicksports.de vector tile style.json returns 503 on render.
Fall back to OSM raster tiles until tile server is fixed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace Leaflet+OSM with MapLibre GL JS consuming vector tiles
from maps.clicksports.de (TileServer GL). Choropleth overlay via
TopoJSON remains the same.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add centralized data/countries.json with all 17 countries (EN/DE/FR)
- Add Leaflet choropleth world map with TopoJSON boundaries
- Add stats banner shortcode (enforced/passed/progress/guidelines counts)
- Add Chart.js charts (status donut, age limits bar, legislation timeline)
- Add Mermaid timeline of legislation milestones 2020-2026
- Refactor child-safety-map table to use data file (DRY)
- Update all 3 language articles (EN/DE/FR)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Enable showRelatedContent + showSummary in article config
- Add IndexNow ping step to CI deploy pipeline
- Fix site.webmanifest branding (was Congo, now Internet for Kids)
- Update llms.txt to include French language section
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Menu links used url= which doesn't prepend language prefix.
Changed to pageRef= which resolves per-language correctly.
Also fixed root redirect using http:// instead of https://
by reading X-Forwarded-Proto from gateway proxy.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replaces broken agiliton.eu/vpn links with tracked redirect via
go.agiliton.eu, which fires Rybbit analytics before forwarding
to the App Store.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Previously, :latest was pushed during build before any validation.
If health checks failed, rollback restored locally but Watchtower
re-pulled the broken :latest from registry, undoing the rollback.
Now: build pushes only SHA tag, deploy uses SHA tag locally,
new promote job pushes :latest only after smoke tests pass.
Rollback also pushes restored image as :latest to registry.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The {32} quantifier in the language redirect regex was being consumed
by nginx's config parser as a block delimiter, truncating the pattern
and causing pcre2_compile to fail with missing closing parenthesis.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Enables instant URL submission to Bing, Yandex, and other
IndexNow-supporting search engines.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
About, privacy, and imprint pages showed "1 January 0001" because
they have no date frontmatter. Disabled showDate, showReadingTime,
showAuthor on all static pages across EN/DE/FR.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- French Hugo config (languages.fr.toml)
- All 6 content pages translated: homepage, about, imprint, privacy,
global overview article, France social media ban article
- Child-safety-map shortcode updated with French table + legend
- Nginx redirect updated to include /fr/ path
- CI smoke tests now verify /fr/ endpoint
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- docker-compose.yml in repo (replaces inline generation in CI)
- /health nginx endpoint for container health checks
- HEALTHCHECK directive in Dockerfile
- CI pipeline: build → deploy → health check → smoke test → rollback on failure
- Smoke tests verify /health, /en/, /de/ after deploy
- Automatic rollback to previous image on health/smoke failure
- workflow_dispatch with force_deploy option
- Deploy-guard audit logging
IFK-6
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
/about/ and /tags/ were 404ing after Docker migration since the
redirect rule was previously in the gateway nginx config.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Docker build on push to main, deploy to infra VM on port 3006.
Gateway nginx updated to proxy internetforkids.ong → infra:3006.
IFK-6
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Based on Die Zeit/AFP reporting from April 1, 2026. Covers Senate vote,
Arcom blacklist system, timeline, comparison with Australia.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- No more external CDN dependencies (jsdelivr)
- Fully bilingual EN/DE table with country flags
- Color-coded status badges
- Mobile-responsive
- Consistent with privacy policy (no external resources)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Imprint and Privacy Policy pages in EN/DE with translationKey
- Footer links now point to local pages instead of agiliton.eu
- Privacy policy documents: no cookies, no external fonts, Rybbit self-hosted
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Restore contentDir for EN/DE (lost in config migration)
- Fixes /about/ 404 and DE content nesting under /en/
- Add Impressum + Datenschutzerklärung footer links to agiliton.eu
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Switch to profile homepage layout with author headline and bio
- Richer homepage content with topic overview (EN/DE)
- Show taxonomies on articles and lists
- Configure header, footer, scroll-to-top
- Remove theme attribution from footer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Warm avocado color scheme, light mode default — friendly for families
- Congo language configs in config/_default/languages.{en,de}.toml
- Renamed extend partials to Congo convention (hyphens)
- Override warnings.html for Hugo 0.159 compatibility (.Author removed)
- All shortcodes and custom partials preserved
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace ananke with PaperMod theme (git submodule)
- Configure PaperMod: reading time, breadcrumbs, search, dark mode
- Localize menus for EN/DE
- Register internetforkids.ong in Rybbit (site ID: a0ab05916d6c)
- Migrate partials from ananke _partials/ to PaperMod extend_head/footer
- Set up webhook-based auto-deploy on push to main
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>