diff --git a/CLAUDE.md b/CLAUDE.md index 02b1a68..74bab58 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,7 +10,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co **Fase 16: loading spinner** — `Spinner.svelte` (sizes sm/md/lg = 16/24/40px, `currentColor` for theme, `motion-reduce:animate-none`, `role="status"` + sr-only `m.loading()`) integrated at 7 loading sites (auth splash + search + notes archive + create-collective modal + manage page: members-list / invite generator / add-common-item button). No DB migration; reuses existing `m.loading()`. Added 5 Vitest unit (SP-U-01..05) + 3 Playwright e2e (SP-E-01..03). Vitest config gained `resolve.conditions: ['browser']` + `server.deps.inline: [/^svelte/]` so Svelte 5's `mount()` resolves the browser entry; see `docs/history/fase-16-spinner.md`. **Final cumulative MVP2 (fases 9–16): 177 pgTAP + 179 Vitest integration + 52 Vitest unit + 96 Playwright + 1 gated rate-limit = 505 tests green; 3 skipped.** -**v1.0 — in progress (1/4 ✅):** four fases on `mvp2` branch (will retag at the end). Aimed at producing the first tagged release. **Fase 17: versioning + CHANGELOG + about modal** — shipped 2026-05-19 (`docs/history/fase-17-versioning-changelog.md`); root `CHANGELOG.md` with `[v0.0.0-beta]` backfill of Fases 0–16 (58 bullets, `[new]/[fix]/[tweak]` prefixes), `scripts/check-changelog.mjs` linter wired into `just check`, `ChangelogModal.svelte` rendering the CHANGELOG via `?raw` build-time import (5 levels up from the component file), `/settings` › About "Ver historial" trigger, deploy-script HEAD tag warn (5s) + 4th `` column appended to `.deploys.log` (compat-safe; rollback `--list` surfaces it), `package.json` bumped to `1.0.0-rc.0` + local `v1.0.0-rc.0` tag (no push). | **Fase 18 shopping list flow** — required title (client + DB tightening), `#N` auto-numbering parsed from prefix per collective, `collectives.default_list_title` + `collective_list_titles` catalog with admin-only RPCs, autocomplete union catalog + last-10 titles (`plan/fase-18-shopping-list-flow.md`, migration 027) | **Fase 19 emoji avatars** — `EMOJI_CATALOG` lazy-load per category (faces / food / animals / objects, ~280 codepoints, Unicode 14 baseline for iOS<17 compat), new `EmojiPicker.svelte` replacing the 8-emoji hardcoded selector at 4 sites (`plan/fase-19-emoji-avatars.md`, no migration) | **Fase 20 Euskera locale** — `messages/eu.json` via machine-translate seed + `[needs review]` marker, `users.language` check constraint extended to `('en','es','eu')`, `accept-language` parser + selector in `/settings`; v1.0.0 tag lands at the end of this fase (`plan/fase-20-euskera-locale.md`, migration 028). +**v1.0 — COMPLETE (4/4 ✅, 2026-05-19, tag `v1.0.0`).** Four fases on `mvp2` branch produced the first tagged release. **Fase 17: versioning + CHANGELOG + about modal** — root `CHANGELOG.md` with `[v0.0.0-beta]` backfill of Fases 0–16 (58 bullets, `[new]/[fix]/[tweak]` prefixes), `scripts/check-changelog.mjs` linter wired into `just check`, `ChangelogModal.svelte` rendering the CHANGELOG via `?raw` build-time import, `/settings` › About "Ver historial" trigger, deploy-script HEAD tag warn (5s) + 4th `` column appended to `.deploys.log` (compat-safe; rollback `--list` surfaces it); see `docs/history/fase-17-versioning-changelog.md`. **Fase 18: shopping list flow** — required title (client + DB tightening), `#N` auto-numbering parsed per-collective per-prefix from typed value, migration 027 (`collectives.default_list_title` + `collective_list_titles` table + `add_list_title` / `remove_list_title` SECURITY DEFINER RPCs, P0002 on non-admin), `CreateListModal.svelte` replaces the empty-create-then-rename flow with prefilled default + suggestion chip + auto-suffix on submit, `/collective/manage` "Títulos sugeridos" subsection (admin write, member read-only). pgTAP 019; see `docs/history/fase-18-shopping-list-flow.md`. **Fase 19: emoji avatars** — `EMOJI_CATALOG` (~280 codepoints, Unicode 14 baseline for iOS<17 compat) across faces/food/animals/objects, new `EmojiPicker.svelte` with tabbed lazy-rendered grids + arrow-key nav replacing the 8-emoji hardcoded selector at 4 sites (settings / onboarding / create-collective modal / manage); no migration; see `docs/history/fase-19-emoji-avatars.md`. **Fase 20: Euskera locale** — `messages/eu.json` machine-translated seed flagged with `[needs review]`, migration 028 (`users.language` check extended to `('en','es','eu')`), `accept-language` recognises `eu`/`eu-ES`/`eu-FR`, "Euskera" option in `/settings`; pgTAP 020; see `docs/history/fase-20-euskera-locale.md`. **Release v1.0.0 cut from commit `d1f6d3a`** (CHANGELOG `[Unreleased]` flushed to `## [v1.0.0]`, `package.json` bumped to `1.0.0`, local tag `v1.0.0`, no push). **Final cumulative v1.0 tests (`just test-all`): 196 pgTAP + 187 Vitest integration + 89 Vitest unit + 108 Playwright + 1 gated rate-limit = 581 tests green; 3 skipped (2 Realtime presence — upstream `handle_out/3` bug `supabase/realtime#1617`; 1 rate-limit — gated). Delta vs MVP2 close: +19 pgTAP + +8 integration + +37 unit + +12 e2e = +76 tests across v1.0 fases 17–20.** ## Documentation Map diff --git a/README.md b/README.md index 3025c45..2b23bd8 100644 --- a/README.md +++ b/README.md @@ -28,12 +28,12 @@ | ↳ Fase 14 — PWA hardening | ✅ | | ↳ Fase 15 — Common items management | ✅ | | ↳ Fase 16 — Loading spinner | ✅ | -| **v1.0** — Fase 17 → 20 | 📋 Planificada | -| ↳ Fase 17 — Versioning + CHANGELOG | 📋 | -| ↳ Fase 18 — Shopping list flow | 📋 | -| ↳ Fase 19 — Emoji avatars | 📋 | -| ↳ Fase 20 — Euskera locale | 📋 (cierra `v1.0.0`) | -| Suite de tests (pgTAP + Vitest + Playwright) | ✅ **505 tests verdes** (177 pgTAP + 179 integración + 52 unit + 96 E2E) + 1 rate-limit gated (`just test-rate-limit`). 3 skipped en `just test-all` (2 Realtime presence — upstream `handle_out/3` bug; 1 rate-limit — gated). | +| **v1.0** — Fase 17 → 20 | ✅ Completa (rama `mvp2`, tag `v1.0.0`, 2026-05-19) | +| ↳ Fase 17 — Versioning + CHANGELOG | ✅ | +| ↳ Fase 18 — Shopping list flow | ✅ | +| ↳ Fase 19 — Emoji avatars | ✅ | +| ↳ Fase 20 — Euskera locale | ✅ (`v1.0.0`) | +| Suite de tests (pgTAP + Vitest + Playwright) | ✅ **581 tests verdes** (196 pgTAP + 187 integración + 89 unit + 108 E2E) + 1 rate-limit gated (`just test-rate-limit`). 3 skipped en `just test-all` (2 Realtime presence — upstream `handle_out/3` bug; 1 rate-limit — gated). | ---