One-time PocketBase migration that replaces every article's slug with article-1, article-2, ... ordered by publishedAt (oldest first), requested explicitly by the site owner in place of the existing descriptive slugs.
5.2 KiB
5.2 KiB
Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[2.1.1] - 2026-09-14
Changed
- Renumbered every article's slug to sequential
article-N, ordered bypublishedAt(oldest first), via a one-time PocketBase migration — replaces the previous descriptive slugs at the owner's explicit request. Not reversible; existing links/indexed URLs using the old slugs now 404.
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 to3: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 alocaleprop. - Manual, per-record English fields on content:
titleEn/contentEn/coverAltEnon articles,nameEnon 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
/ensupport 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-managementandui-ux-pro-maxClaude 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
/enpage and is filtered out of/enlistings, 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/eslintmodule. - 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.contentnow 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
ArticleandCategorycontent 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.envsecrets. - 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
/adminon 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.