27 Commits

Author SHA1 Message Date
5e41c73cfd fixup! docs: add agenda estimated-time field design spec
All checks were successful
Client Check Build (NixCN CMS) TeamCity build finished
2026-05-07 16:58:59 +08:00
3edb321b3a docs: add implementation plan for agenda estimated-time field
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 16:16:11 +08:00
7bd27153ab docs: add agenda estimated-time field design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 16:12:19 +08:00
96453ae197 feat: add pagination and KYC detail modal to attendance page
All checks were successful
Client Prod Build (NixCN CMS) TeamCity build finished
Client Check Build (NixCN CMS) TeamCity build finished
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 01:53:31 +08:00
9d0e591412 docs(onboarding): reformat plan and spec to consistent tab indentation
All checks were successful
Client Check Build (NixCN CMS) TeamCity build finished
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 00:46:08 +08:00
18de60285e docs: add onboarding dialog implementation plan
6-task plan: schema → layout server → component → layout wire-up → E2E tests → lint/build.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 00:10:56 +08:00
66ca0ed2a0 docs: add onboarding dialog design spec
Mandatory username/nickname gate for newly registered users (UUID username).
Layout-level detection + named action + Bits UI dialog, no dedicated route.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 00:02:21 +08:00
e1009ed622 docs: add navigation progress bar design spec and implementation plan
All checks were successful
Client Check Build (NixCN CMS) TeamCity build finished
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 20:09:39 +08:00
972965e0ea fix(checkin): use SvelteMap for dedup cache, track plan + format docs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 19:34:49 +08:00
32555f21ab docs: add QR scanner dedup & strict validation design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 19:25:37 +08:00
705af7f30b docs: add token refresh race condition design doc
All checks were successful
Client Check Build (NixCN CMS) TeamCity build finished
Documents the production 401-on-rotation race, the four-layer client-side
fix (proactive refresh, in-process single-flight, rotation cache, 401
interceptor), the backend AT lifetime extension to 5min, and every
alternative considered with the reasoning behind each rejection.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 19:12:21 +08:00
a01c75a2ca chore: rename app to NixCN CMS and add browser title
Corrects misspelling "Nix CN CMS" → "NixCN CMS" across all source files,
docs, and tests; adds <title>NixCN CMS</title> to the root layout; documents
the correct spelling in CLAUDE.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 17:29:37 +08:00
17892b4546 fix(svelte5): wrap superForm and createKycState calls in untrack()
All checks were successful
Client Check Build (NixCN CMS) TeamCity build finished
superForm() and createKycState() called during component initialisation
were triggering reactive tracking warnings in Svelte 5 because they
access reactive state internally. Wrapping with untrack() prevents
spurious re-runs of the initialisation logic on subsequent reactive
updates.

Also converts the data.form cast in admin/events/new to $derived so it
stays in sync with SvelteKit page invalidations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 16:10:51 +08:00
4de2112a11 docs: update docker→podman/container references in spec and overview
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 13:30:47 +08:00
786e1c709e docs: mark M9 Polish as shipped in overview; fix 2 residual E2E tests
- overview.md: M9 row flipped to shipped, links to spec/plan added,
  roadmap paragraph updated with actual deliverables, conventions
  updated to reflect dual-theme support
- tests/e2e/auth.spec.ts: add GET /event/list override so the dashboard
  renders after the magic-link → token flow (was 500ing with no override)
- tests/e2e/profile.spec.ts: use { exact: true } on username assertion to
  avoid strict-mode violation (username 'alice' matched 3 elements)
- Formatting: prettier --write pass on polish spec/plan, layout.css,
  layout.svelte

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 13:27:37 +08:00
ccdbdea83b docs: add M9 Polish implementation plan
12 bite-sized tasks: light theme CSS, SSR transformPageChunk pipeline,
theme endpoint + navbar toggle with E2E coverage, 6 targeted E2E test
fixes (wrong mock shapes / wrong role selectors), and Dockerfile +
Caddyfile for production deployment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 12:54:14 +08:00
9c6fcba1df docs: add M9 Polish design spec
Covers three deliverables: light theme + SSR cookie toggle (form-action
approach, transformPageChunk in hooks.server.ts), multi-stage Dockerfile
+ Caddyfile for adapter-node production deploy, and fixes for 6 failing
E2E tests (option b: tests corrected to match existing code — wrong mock
shapes, wrong Playwright role selectors, and tests for features that were
never built).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 12:48:14 +08:00
1ce29e4276 docs: update M9 Polish — drop Storybook, add test-passing deliverable
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 12:18:06 +08:00
9bdc3ece72 feat: svelte init 2026-04-18 12:14:30 +08:00
b491aa3669 cleanup: everything 2026-04-18 12:14:04 +08:00
7349997ab5 feat: resolve backend error codes to human-readable messages on error page
All checks were successful
Client Check Build (NixCN CMS) TeamCity build finished
Uses getErrorMessage from the new exception.gen.ts dictionary to display
Chinese error descriptions instead of raw 13-char error codes in GlobalError.
Adds gen:errors script and supporting files for regenerating the dictionary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-28 13:38:13 +08:00
76921428b1 docs: add E2E test suite implementation plan
15 tasks covering Cypress setup, 92 test cases across 5 permission
levels, seed SQL, and Docker Compose CI configuration.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 19:53:03 +08:00
6f17e25334 docs: update E2E spec for CI + Docker Compose + SQL dump
Switch from local-only to CI execution with Docker Compose isolation.
Replace manual test data setup with SQL dump (seed.sql) including
relative timestamps for ongoing event. Add docker-compose.e2e.yml note.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 19:40:48 +08:00
1c8abbff14 docs: add E2E test suite design spec
Covers all user permission levels (Lv10/20/30/40/50), 12 feature
modules, and 92 test cases (happy path + error states) using Cypress
against a real backend with fixed test accounts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 19:31:30 +08:00
973a242604 fix: resolve build and lint issues from admin interface implementation 2026-03-26 19:54:32 +08:00
2e0377b5bc docs: add admin interface implementation plan
All checks were successful
Client Check Build (NixCN CMS) TeamCity build finished
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 10:59:16 +08:00
f8031dc557 docs: add admin interface design spec
All checks were successful
Client Check Build (NixCN CMS) TeamCity build finished
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 10:30:08 +08:00