# 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.1] - 2026-09-14 ### Fixed - Language switch no longer overlaps the header logo on narrow viewports (~390px, e.g. iPhone 14 Pro): it now stacks centered above the wordmark on phones, and only moves to the header's top-right corner from tablet width up. - Article card thumbnails no longer use an overly aggressive portrait crop (`4:5`) that sliced through text baked into cover images — changed to `3:2`, matching the featured cover on the home page and the article detail page. ## [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.