Commit Graph

75 Commits

Author SHA1 Message Date
Bastian Wagner
ec6c34e341 test: verify first visible vertical slice
Drives the full world/travel flow in Chromium via Playwright against the
live API and seeded Postgres, capturing the three required desktop
viewports and comparing them against the accepted design reference.

Fixes two evidenced defects found during verification:
- world-page scene sizing overflowed the viewport at all three required
  desktop sizes, pushing the footer (and, at 1440x900/1366x768, the travel
  button) below the fold; scene height now accounts for surrounding chrome
  so nothing is clipped.
- the generic HTTP-failure fallback message was hardcoded in English while
  the rest of the UI is German; now uses a matching German string.

Adds Playwright as a web devDependency for this and future browser
verification passes (no product-code dependency).
2026-08-19 10:13:40 +02:00
Bastian Wagner
2f53e5ba80 docs: add visible slice local workflow
Document the migration/seed/API/web workflow in a root README, add an
API e2e smoke test that always checks /api/health and additionally
exercises the real DatabaseModule/seeded data plus the arrivesAt
validation rejection when DATABASE_URL is available, and add a
`test:e2e` root script.

Also fix `.env` loading so the documented root-level `.env` is actually
found: `main.ts` never loaded dotenv at all, and `data-source.ts`
loaded it relative to `process.cwd()`, which is `apps/api` (not the
repo root) whenever npm runs a `--workspace` script. Both now resolve
the repo-root `.env` explicitly. Also narrowed the CLI migrations glob
to numeric-prefixed files so it no longer tries to load the colocated
`*.migration.spec.ts` as a migration.

Verified end-to-end against a real PostgreSQL instance: migrate, seed
twice (idempotent), start the API, and exercise every documented route
including a rejected POST /api/travel body containing arrivesAt.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-19 09:41:16 +02:00
Bastian Wagner
6c35c18018 bilder 2026-08-19 09:06:10 +02:00
Bastian Wagner
8e6e77b027 fix: avoid duplicate world map background loads 2026-08-19 09:02:14 +02:00
Bastian Wagner
1a30eb3491 fix: harden world travel presentation 2026-08-19 08:51:26 +02:00
Bastian Wagner
1e2bfe6e4b feat: render interactive ashen fields world 2026-08-19 08:25:42 +02:00
Bastian Wagner
fce03e220d fix: optimize shell accessibility and assets 2026-08-19 07:42:28 +02:00
Bastian Wagner
b9e5c66c8e feat: build dark fantasy application shell 2026-08-18 22:36:21 +02:00
Bastian Wagner
6304703d67 fix: clear recovered travel errors 2026-08-18 22:07:08 +02:00
Bastian Wagner
a738c61611 fix: harden world travel polling 2026-08-18 21:52:54 +02:00
Bastian Wagner
610c404759 feat: add signal-driven world state 2026-08-18 21:36:27 +02:00
Bastian Wagner
c641168c7d feat: expose current world location 2026-08-18 20:57:30 +02:00
Bastian Wagner
d06f05047b feat: add server authoritative travel flow 2026-08-18 20:30:09 +02:00
Bastian Wagner
e9b111daf8 feat: expose health and demo character APIs 2026-08-18 20:00:40 +02:00
Bastian Wagner
0615bb1841 fix: seed character at resolved south gate 2026-08-18 19:45:05 +02:00
Bastian Wagner
c35859a4de fix: preserve seeded location identities 2026-08-18 19:40:13 +02:00
Bastian Wagner
067134b684 feat: seed demo character and first locations 2026-08-18 19:30:31 +02:00
Bastian Wagner
a97152cded test: assert migration execution order 2026-08-18 19:17:57 +02:00
Bastian Wagner
21f701e904 fix: harden world travel migration 2026-08-18 19:03:21 +02:00
Bastian Wagner
492765d8ca feat: add world travel database schema 2026-08-18 18:27:21 +02:00
Bastian Wagner
1210ba2d15 fix: prefix API routes 2026-08-18 18:13:48 +02:00
Bastian Wagner
2903a0d670 chore: configure angular and postgres foundation 2026-08-18 18:02:40 +02:00
Bastian Wagner
4a689238e6 docs: plan first visible vertical slice 2026-08-18 17:18:17 +02:00
Bastian Wagner
a6ebaf0493 docs: specify first visible vertical slice 2026-08-18 17:12:23 +02:00
Bastian Wagner
9e92731645 chore: bootstrap ashen realms monorepo 2026-08-18 17:01:21 +02:00