Releases
Changelog
v0.1.1production
Changelog
All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
0.1.1 (2026-08-30)
Features
- activities: configurable points + question-limit up to 20 (issues #3, #4) (a453b22)
- activities: reading-comprehension type always ships a passage (issue #1) (6c9fd06)
- add governed activity catalog and streamline quality gates (4f92aa7)
- add parent+child logout, parent points ledger view (a7fcfb1)
- admin: Activities Master template view/edit panel + activityCount column (A1/A2) (a906eaf)
- admin: super-admin console MVP — login, session, dashboard, quota editor, audit (issue #9) (caf5ddc)
- auth: DB-backed child PIN rate limiting (replaces in-memory Map) (95273f4)
- child: landing revamp — themes, avatar, self PIN change, badges; parent child-profile page (#20, #7) (d7b6e6a), closes #17
- clean open kanban issues — #39 email OTP redirect+salt, #40 resend countdown, #38 reward status, #36 clickable cards, #33 schedule calendar, #26 pass threshold, #23 dashboard tabs (94baf98)
- Codex UI/layout/CSS changes — globals.css, page.tsx, changelog, docs layout, dashboard, child-shell, trellis-brand component, home-variants/6 (5129a2e)
- complete Phase 0 — auth, onboarding (COPPA), email, super-admin, middleware, tests (ceef679)
- database connected (Prisma 7 adapter-pg) + seed Free plan + 20 tables verified (d6a43b8)
- DeepSeek V4 Flash as production LLM (thinking=disabled for clean JSON) (70996a5)
- entitlements: DB-driven AI generation quota + raise Free tier to 20 (unblocks UAT) (cbf0255), closes #14
- family lookup by email (issue #6) — new /api/auth/families/by-email endpoint, email-first child login, rate limiter, migration (89171cd)
- family-code child login (unique, kid-friendly); child logout → landing page; show family code on dashboard (8db7f76)
- home page sign-in modal popup (issue #41) — parent/kid login options (f844a00)
- Increment 6 generation accounting — credits, token ceilings, previews, admin controls (53d9322)
- increment-8: 8A canonical library schema, RLS, and key/fingerprint helpers (fff5042)
- increment-8: 8B candidate capture + shadow canonical lookup (4890d44)
- increment-8: 8C canonical serving + family exposure history (cd94a67)
- increment-8: 8D family library items, access classes, downgrade/restore, Starter one-use (b5ad416)
- increment-8: 8E selected-question replacement, successor previews, explanation release (042ef63)
- increment-8: 8F library-cap enforcement, admin metrics, cutover observability (c1a8035)
- increment-8: B1-B3 UX — topic-suggestion panel, list-view default, assign vs schedule (3f556c7), closes #50
- issues #42 + #43 — multiple parents (max 3, invite API, dashboard section) + new vs returning user UX (signup page, home CTA) (9cbb7b5)
- issues #44 (remove Add another child button), #45 (rename Children→My family), #46 (card/list toggle + pagination in activity library) (0d59494)
- onboarding: Getting Started guide for new families on the dashboard (issue #14) (896b111)
- parent: add another child + reset PIN + unlock locked child (issue #17) (45611c0), closes #18
- phase-1: core loop — math quiz generation, activity library, scheduling, grading, points ledger, child today/play UI (10b1962)
- phase-2: rewards catalog + redemption flow, message board, pending approvals (1a4c89b)
- release: auto-generated changelog + /changelog page with version/env badge (issue #5) (9bad392)
- rewards CRUD + email OTP login (inc 4, #5/#7) + child theme/avatar, activity overlap, JSON-extract fixes (inc 5, #24-#31) (68b3f7f)
- rls: enforce Postgres RLS via withFamilyContext (SET LOCAL role=authenticated + app.family_id) (07ac6b8)
- ui: magenta/gold homepage design + prompted onboarding + docs (b90c042)
- ui: shadcn/ui init + brand theme + redesigned landing, logins, dashboard; user guide by tech-writer (0cba15a)
Bug Fixes
- activities: regenerate button re-runs generation with current params (issue #2) (b1abc6b)
- admin: login page no longer wrapped by the guarded console layout (307 loop) (e19f5aa)
- auth: add /parent/error page + correct NEXTAUTH_URL scoping docs (preview OAuth) (4291c78)
- auth: child PIN hashing uses a code-constant pepper (env-independent) — fixes login across environments (issue #19 follow-up) (834fcde)
- auth: child PIN hashing uses a code-constant pepper (env-independent) — fixes login across environments (issue #19 follow-up) (ce7eae7)
- auth: email OTP session JWT salt must match cookie name over HTTPS (issue #39) (c5f4a51)
- auth: middleware must pass secureCookie to getToken — prod OAuth bounce (ea7012d)
- build: generate Prisma client before build — unbreaks Vercel deploys (54bf611)
- build: wrap EmailLoginForm in Suspense for useSearchParams prerender (Vercel build) (90726e7)
- ci: apply RLS before browser journeys (be7c4de)
- ci: build disposable databases from Prisma schema (cbfc0a9)
- ci: isolate production-build journey doubles (cf3a0e2)
- ci: scope journey-only environment (8c67392)
- correct imports and forward-only queries for Prisma 7 (8a37afc)
- correct LLM endpoint IP + model name; handle reasoning-model output (max_tokens, think-strip, error surfacing) (4dcf409)
- email: use notifications.trellislearning.net sender domain (issue #16) (9253f5d)
- middleware: allow /parent/signup without auth (a7cd7f4)
- redirect to onboarding when parent has no account; add auth diagnostics (2e35bd4)
- rewards: show assignment picker in edit mode (issue #35, sub of #21) (5f9ada3)
- rls: make rls-policies.sql idempotent (DROP POLICY IF EXISTS) for safe re-run on prod (9254526)
- security: move family-code lookup to POST body — codes no longer appear in URLs/logs (issue #19) (e3effe0)
- security: revoke child sessions on PIN reset, IP throttling, argon2 PIN hashing (post-#17 review) (c4df132)
- security: sanitize error messages in POST catch blocks (W1-W3) (f562e96)
- security: verify child session — close sibling IDOR across child routes (a10f56d)
- seed: add Reading category topics and difficulty mappings for governed cohort (dc5c4e6)
- seed: Math Quiz creditCostMode GENERATED_CONTENT -> GENERATED_QUESTIONS (8c171c2)
- sign-in-modal: replace 'Already have an account? Sign in' with 'Don't have an account? Sign up here' → /parent/signup (e245982)
[0.1.0] — 2026-08-17
Added
- Postgres Row-Level Security: family-scoped RLS on all 17 tables, enforced
per-request via withFamilyContext (SET LOCAL role = authenticated +app.family_id). App-level authorization retained as defense-in-depth.
- Child login by family code: unique kid-friendly 6-char code, DB-backed PIN
rate limiting.
- Phase 1 core loop: AI activity generation (math quiz), assignments,
auto-grading, points ledger.
- Phase 2 rewards & messages: rewards catalog, instant/approval redemptions,
child message board with a safety filter.
- Parent & child auth: Google OAuth for parents, signed child sessions,
logout, parent points ledger.
- UI: redesigned landing/logins/dashboard, onboarding prompt, docs & user guide.
- Security hardening: sibling IDOR fix, error-message sanitization, input
length limits on AI prompts.
Changed
- Production LLM switched to DeepSeek V4 Flash (thinking disabled for clean JSON).
- DB environment policy: dev/staging → TEST project only; prod → PROD project only.