 Juan DenisandClaude Fable 5
|
7d4543312c
|
feat(themes): add 11 bundled Venezuelan seed themes
Turpial, Araguaney, Orquídea, Apamate, Ceiba, Azulejo, Guacamaya, Cacao,
Papelón, Onoto (dual dark+light) and Tepuy (radius override) — named after
Venezuelan national symbols and nature. Authored in
frontend/src/data/themes/, synced to backend via sync-bundled-themes.mjs
(17 bundled themes total). check-theme-tokens + backend theme suites pass.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-23 10:22:23 -04:00 |
|
 Juan DenisandClaude Opus 4.8
|
c20a9f14f2
|
feat(themes): backend model, API, and registry pipeline (plan 60 Phase 2-3)
Themes are data, not code — so the backend is a simple validated-JSON store,
no zips/checksums/permissions.
- Theme model + migration 078_themes
- theme_tokens.py: server-side mirror of the token whitelist + validators
(the gate: a malicious/malformed theme never reaches the DB)
- theme_service: bundled-seed loading, import/list/delete, panel default,
pre-auth public/active
- /api/v1/themes: /installed, /import (admin), DELETE (admin), /default
get+set (admin), unauthenticated /public/active for login/setup, plus
/registry + /registry/<slug>/install
- theme_registry_service: offline-tolerant registry fetch (TTL + last-good +
bundled fallback), mirrors the extension registry pattern
- bundled seed themes synced to app/data/themes + themes_index.json
- 18 proving tests (server-side validation sanitizes url()/;/} smuggling,
admin gate, panel-default → public/active, offline fallback, install flow)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-23 00:24:00 -04:00 |
|