- seed.py : 3 foyers avec codes fixes (DEVTEST2/3/4, RS/RP/PRO)
insérés avant les 363 réels ; existing_codes pré-chargé → zéro collision
- page citizen : dev hint mis à jour avec les 3 mêmes codes + profils
- CLAUDE.md : reformaté en guide de session
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add 2 dark palettes (Nuit, Ocean) to DisplaySettings with full SVG
theme tokens — all hardcoded SVG colors (grids, legends, text fills,
pills, dot strokes, drag handles) replaced with reactive bindings
- Update scoped CSS to use var(--color-*) and var(--svg-*) throughout
- Add Woodpecker CI pipeline (.woodpecker.yml): build → docker push → deploy
- Add multi-stage Dockerfiles for backend (Python) and frontend (Nuxt)
- Add production docker-compose with Traefik labels + dev override
- Remove old single-stage Dockerfiles and root docker-compose.yml
- Update Makefile with docker-dev target
- Exclude data files (pdf, xls, ipynb) from git
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reorganize the citizen page (/commune/[slug]) for voters: full-width
interactive chart with "Population" zoom by default, separate auth and
vote sections, countdown timer for vote deadline.
Backend: add vote_deadline column to communes with Alembic migration.
Admin: add deadline configuration card with datetime-local input.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CMS editor: formatting toolbar with H1-H3, bold, italic, strikethrough,
links, images, lists, blockquotes, code blocks, horizontal rules.
Keyboard shortcuts (Ctrl+B/I/D/K). Improved markdown preview rendering.
Import page: shows current data summary with year badge, stats grid,
last import date. Year input for new imports. Preview with sample table.
Backend: added data_year and data_imported_at fields to TariffParams,
returned in stats endpoint. Import sets data_imported_at automatically.
Seed sets data_year=2018.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>