diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d5b17ee..3ebced4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,9 @@ jobs: cache: npm - run: npm ci - run: npm run content:validate - - run: npm run typecheck + # typecheck must run AFTER a build once: Next.js generates the route + # types (.next/types) that typed App Router files reference. Running it + # first made CI fail on every clean clone. See docs/V1-UPGRADE-AUDIT.md §3.1. - run: npm run lint - run: npm test - run: npm run build @@ -25,3 +27,4 @@ jobs: BETTER_AUTH_URL: http://localhost:3000 BETTER_AUTH_SECRET: ci-secret-ci-secret-ci-secret-ci TURSO_DATABASE_URL: file:./data/learnpath.db + - run: npm run typecheck diff --git a/.gitignore b/.gitignore index 09f816b..ae761f2 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,7 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# python caches (brand asset render scripts) +__pycache__/ +*.pyc diff --git a/CHANGELOG.md b/CHANGELOG.md index fa0b0cd..bffc7bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,66 @@ # Changelog -## 0.1.0 — 2026-09-12 +## 1.0.0 — 2026-09-13 + +V1 product upgrade: audited, repaired, integrated, redesigned. + +### Repaired (verified defects) + +- **CI order:** `typecheck` ran before the build that generates Next's route types, failing every + clean clone. Workflow now typechecks after build; `layout.tsx` no longer depends on generated + globals either. +- **Progress sync:** re-marking an existing entity uploaded the wrong record (array tail instead of + the changed record). `mark()` now sends exactly the record that changed. +- **YouTube fallback:** DOM `onerror` on a cross-origin iframe never fires; the documented + "unavailable" state was unreachable. Now detected via the official IFrame Player API `onError`, + with alternatives + report so the path continues. +- **Notes corruption:** server-side `replace(/