diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..469ca9c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,98 @@ +# 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). + +## [2.1.0] - 2026-09-11 + +### Added + +- English version of the site (`/en/*`) alongside the Italian original, hand-rolled without an + i18n library: `/en`, `/en/blog`, `/en/blog/[slug]`, `/en/category/[slug]` and the corralito page + all get an English counterpart, sharing markup with their Italian page via a `locale` prop. +- Manual, per-record English fields on content: `titleEn`/`contentEn`/`coverAltEn` on articles, + `nameEn` on categories — translated by the editor in the admin UI, no auto-translation. +- English translation of the corralito training-courses page specifically (it was left Italian-only + when `/en` support first landed, then translated in a follow-up pass). +- Numbered pagination on the blog archive and category pages (first, last, current page and its + neighbors, collapsing gaps into `…`), replacing plain previous/next links. +- `claude-md-management` and `ui-ux-pro-max` Claude Code plugins, enabled repo-wide via + `.claude/settings.json`. + +### Changed + +- Redesigned the language switch: both languages are shown at once ("Italiano / English"), the + current one as plain non-interactive text, moved to the header's top-right corner instead of + stacked under the logo. + +### Fixed + +- An article/category with no English translation now 404s cleanly on its own `/en` page and is + filtered out of `/en` listings, instead of silently showing Italian text on an English URL. +- Pagination links no longer report every page as "current" to assistive technology — caused by + `NuxtLink`/`RouterLink`'s built-in active-state detection comparing only the route path, not its + query string. + +## [2.0.0] - 2026-09-11 + +### Added + +- `docs/` — architecture, content model, and frontend reference documentation. +- ESLint, via the official `@nuxt/eslint` module. +- Full test suite: unit (Vitest), integration (a real Nitro server against an ephemeral + PocketBase), and end-to-end (Playwright) — under `tests/` at the repo root. + +### Changed + +- Lightened the (still Strapi-based, at the time) CMS: dropped the unused cloud plugin, disabled + telemetry and promotional UI — a stopgap before the PocketBase migration below. +- Replaced the Strapi + PostgreSQL CMS with PocketBase: a single binary with embedded SQLite and + per-collection API rules. Frontend endpoints moved to `/content/*`; `/api/*` is now reserved for + PocketBase's own REST/file API. +- Local development now bind-mounts PocketBase's data directory (`pocketbase/pb_data/`) instead of + using a named Docker volume, so test data can be inspected or swapped directly on the host. +- `articles.content` now has an explicit 10000-character cap, instead of relying on an undocumented + PocketBase default that silently rejected longer articles. + +## [1.0.0] - 2026-08-28 + +Initial release. + +### Added + +- Strapi CMS with `Article` and `Category` content types. +- Nuxt frontend: blog index, article detail, and category pages. +- Docker Compose stack: PostgreSQL, Caddy reverse proxy, and the app services. +- Project documentation, license, and `.gitignore`; docs for the stack, dev workflow, production + deployment, and generating `.env` secrets. +- Editorial-magazine restyle of the frontend, with the CorralitoComing seal as site logo and + favicon (every size). +- Contact address and official social-brand links in the footer. +- Author name and publication time shown on articles. +- Responsive layout for phone, tablet, and desktop. +- Landing page content and a dedicated courses page. +- A language switcher supporting English, Italian, Spanish, and French (later removed — see + Removed, below). + +### Changed + +- Renamed the site to CorralitoComing and switched the interface to English (later reverted to + Italian-only, see Removed). +- Simplified the home page and navigation down to a single "read the latest article" link. +- The CMS admin panel is served under `/admin` on the public domain; every Strapi plugin path is + routed there, not just `/admin`. + +### Removed + +- The English/Italian/Spanish/French language switcher — reverted to an Italian-only interface, + relying on the visitor's browser to translate the page instead. + +### Fixed + +- ACME DNS resolution failures in the Caddy container. + +### Security + +- `ops/` (holds VPS credentials) added to `.gitignore` — never committed.