64 lines
2.9 KiB
Markdown
64 lines
2.9 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project are documented in this file.
|
||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||
|
||
## [Unreleased]
|
||
|
||
## [1.1.0] — 2026-07-23
|
||
|
||
Profile geography moved to the Loire-Atlantique · Vendée · Morbihan zone, and
|
||
the CV restructured.
|
||
|
||
### Changed
|
||
- Landing profile block: `Zone` (Loire-Atlantique · Vendée · Morbihan) replaces
|
||
the former `Localisation actuelle`; every mention of Yerres and of the planned
|
||
Nantes relocation removed, including the ZenQuality timeline entry.
|
||
- Presence stated as an explicit order of preference on both surfaces — full
|
||
remote, then hybrid or on-site inside the zone, Paris only as a fallback and
|
||
capped at 1–2 days per month.
|
||
- CV restructured: technical skills promoted above professional experience,
|
||
"Centres d'intérêt" dropped, markup trimmed 656 → 424 lines.
|
||
- `CLAUDE.md` content rules: geography note rewritten to the zone model, with an
|
||
explicit guard against reintroducing Yerres.
|
||
|
||
### Added
|
||
- `CV_Bastien_CHANOT_General.{html,pdf}` — general CV variant kept beside the
|
||
served one. Repo-only: not linked from the landing, not in the Dockerfile
|
||
COPY whitelist.
|
||
|
||
## [1.0.0] — 2026-07-06
|
||
|
||
First tagged release. Landing page + CV live at https://bchanot.fr, served by
|
||
a hardened nginx container behind the host reverse proxy.
|
||
|
||
### Security
|
||
- Container runs unprivileged: `nginxinc/nginx-unprivileged` digest-pinned,
|
||
uid 101, internal port 8080; base at 1.30-alpine (nginx/1.30.3) covering
|
||
CVE-2026-42945. Compose hardening: `read_only`, `cap_drop: ALL`,
|
||
`no-new-privileges`, loopback-bound port.
|
||
- Security headers (CSP, X-Content-Type-Options, X-Frame-Options,
|
||
Referrer-Policy, Permissions-Policy) re-included in every nginx location
|
||
(add_header inheritance trap closed); `server_tokens off`; CSP `script-src`
|
||
pinned to the inline script's sha256 hash; dotfile requests 404 ahead of
|
||
the caching locations.
|
||
|
||
### Changed
|
||
- Palette strictly tokenized: 6 brand hexes + documented functional neutrals
|
||
+ white-on-dark family; off-palette colors mapped to tokens.
|
||
- CSS deduplicated via grouped selectors (landing cards, CV headers / date
|
||
chips / roles / tags); dead rules and no-op declarations removed.
|
||
- Unused Google Fonts faces trimmed from both pages (CV proven
|
||
render-identical; landing verified at 375 px and 1440 px).
|
||
- CV date chips in French with en-dashes; language/interest tags as true
|
||
pills; profile geography aligned landing ↔ CV (Nantes relocation).
|
||
- `prefers-reduced-motion` disables transitions as well as animations;
|
||
decorative CTA arrows removed from the accessibility tree.
|
||
- PDF served uncompressed (already flate-compressed); single container
|
||
healthcheck (image `HEALTHCHECK`, inherited by compose).
|
||
|
||
### Added
|
||
- `version.txt` and this CHANGELOG — the release lineage starts here.
|