feat(fase-17): ChangelogModal component + unit tests

ChangelogModal renders the repo-root CHANGELOG.md (bundled at build
time via Vite's ?raw query, 5 levels up from the component file) in
an overlay+panel modal. Markdown is parsed inline (`#`/`##`/`###`
headers, `-`/`*` lists, `**bold**`) with HTML-escape on every input
line — input is static repo content so the surface is closed.

Esc and overlay-click both call `onClose`. The keydown listener is
attached only while `open` is true via a $effect.

Three new Paraglide messages (en/es): `settings_about_view_changelog`,
`changelog_modal_title`, `changelog_modal_close`.

Unit tests (CHM-U-01..04) follow the Spinner.test.ts pattern (Svelte 5
mount/unmount + flushSync for the Escape spec).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 01:17:08 +02:00
parent cb223a0c29
commit d11cf6ccef
4 changed files with 257 additions and 0 deletions

View File

@@ -180,6 +180,9 @@
"sync_conflicts_back": "Volver a ajustes",
"settings_about": "Acerca de",
"settings_about_version": "v{version} · {commit} · {date}",
"settings_about_view_changelog": "Ver historial",
"changelog_modal_title": "Historial de cambios",
"changelog_modal_close": "Cerrar",
"sync_offline": "Sin conexión — los cambios se sincronizarán al reconectar",
"sync_syncing": "Sincronizando…",
"undo": "Deshacer",