Skip to main content
Plio Academy
Changelog

What's shipped

Every feature, fix, and improvement — in reverse chronological order.

Q3 2026

webB-135

admin/impersonate: impersonation form has no confirmation step

webB-136

bulk-import-students: per-row DB errors swallowed, import reports success

webB-137

admin/sql-snippets/[id]: reject action has no confirmation dialog

webB-138

admin/export: date range labels missing htmlFor — not associated with inputs

webB-139

admin/faq: form inputs missing htmlFor/id label associations

webB-140

community-submissions: layer-1 word filter blocks layer-2 classifier, student gets no reason

webB-141

HouseholdMembers: co-guardian revoke uses browser confirm() — not accessible

webB-142

certificates/[id]: safePdfUrl validates protocol only — no domain allowlist

webB-143

dashboard/parent/sessions: billing checkout is a GET link — no loading state or error

webB-144

admin/analytics: SparkBar bars have no aria-label — data invisible to screen readers

webB-145

admin/exit-tickets: tier filter <a> tags should be <button> for keyboard a11y

webB-146

HouseholdMembers: invite email input missing htmlFor/id label association

webB-147

admin/notifications: arrow-only link has no accessible label

webB-148

learn/[tier]/certificate: sign-in redirect loses destination URL

webB-150

admin/sql-snippets/[id]: snippetId from useParams not validated before API call

webB-133

Adult learner ownership guards missing across 16+ action files

webB-132

instructor.ts getCourseProgressOverview missing auth guard

webB-131

Gradebook page reads role directly from JWT claims (no fallback)

webB-130

grants/actions.ts used non-existent "super_admin" role

webB-129

Admin Stripe portal override lacks audit trail

webB-128

SRS actions block adult learners (selfClerkUserId not checked)

webB-127

Placement quiz blocks adult learners — age cap + ownership guard

webB-123

Roleplay page should gate on tier completion before unlock

webB-120

Eventbrite env vars not confirmed set in prod — events page empty

crmB-119

CRM — audit and fix broken features after CSP/auth fixes

crmB-117

CRM — Academy health monitoring via GraphQL

academyB-118

LMS SaaS Admin — educator multi-tenant instance management

PlatformHP-019

CI workflows blocked by Vercel preview-deployment auth wall

PlatformHP-018

Migration journal drift — 22 orphan files, 2 dead entries, missing exit_tickets

PlatformHP-015

Fix F676 migration journal entry — add idx 85 board_resolutions to _journal.json

AnalyticsHP-014

Plausible analytics — exclude student-facing routes (/learn/*, /kid/*)

PlatformHP-001

Scaffold fix — acknowledge academy uses Knex + capture academy sub-CLAUDE

PlatformHP-002

Renumber duplicate Drizzle migrations 0030-0032 + regenerate snapshot

PlatformHP-003

Remove nested package-lock.json inside apps/academy/packages/web/

PlatformHP-005

Fix pre-existing academy TypeScript errors in enrollmentStore + guardianStore

PlatformHP-006

F360 — remove console.log from layer1-qa.ts academy server

PlatformHP-008

Fix window.loadPyodide TypeScript error in SlideContent.tsx (PythonPlayground

PlatformHP-004

Replace console.log with console.error in retry-webhooks cron route

PlatformHP-007

F370 — rebase onto develop + regenerate migration for community_submissions

PlatformHP-009

Replace non-null assertions in F430 learning-velocity route

PlatformHP-011

Replace non-null assertion in F431 cohort impact PDF route

PlatformHP-012

Replace non-null assertions in import-clerk route (F617)

PlatformHP-013

Add Zod runtime validation to quiz-responses, retrieval-practice, lesson-progress

PlatformHP-016

Fix asl-feedback.ts — replace bare `db` singleton import with createDb()

PlatformHP-017

Fix F677 migration journal — add idx 95 press_pitch to _journal.json

PlatformF353

Seed script — add Tier-2 Mechanics + Educator Certification tracks

PlatformF352

React 19 Compiler compliance refactor (25 warnings → 0)

PlatformF335

Printable Certificate of Completion (PDF)

PlatformF336

Dark mode toggle

PlatformF337

Student avatar SVG library expansion

PlatformF338

Lesson bookmarking / resume-where-you-left-off

PlatformF340

Offline mode for completed lessons (service worker)

PlatformF341

Instructor bulk message to cohort

PlatformF342

Admin analytics dashboard

PlatformF343

Curriculum import/export CLI

QAQ4

Lighthouse CI budgets on develop PRs

QAQ5

axe-core Playwright integration (CI-gated)

QAQ7

Load test — academy GraphQL + web APIs (k6)

QAQ8

Visual regression — Chromatic (nonprofit free tier)

QAQ9

DB migration dry-run CI job

QAQ11

Lesson manifest content validator (Zod)

QAQ12

Browser matrix — Playwright multi-project

PlatformF360

Lio Tutor Layer 1 — pre-baked Q&A per lesson

PlatformF361

Lio Tutor Layer 2 — Ollama Llama 3.2 3B on Render ($25/mo)

PlatformF362

Lio Tutor UI — LioTutor.tsx bottom-drawer chat

PlatformF363

Lio Tutor — topic guardrails + prompt-injection defense

PlatformF364

Lio Tutor Layer 3 — Claude Haiku emergency fallback

PlatformF370

Community — admin pre-publish moderation queue

PlatformF371

Community — anonymous student display (no real handles)

PlatformF372

Community — external link blocking + allowlist

PlatformF373

Community — keyword filter + profanity screen

PlatformF374

Community — re-enable in child mode

PlatformF380

Adaptive quiz difficulty engine

InteractiveF381

Interactive code playground (beyond quiz)

PlatformF420

Adaptive placement quiz (D-030 A17)

ContentC1

Spanish pilot — translate 6 lessons + Spanish Lio voice

ContentC10

Tier 3 AI Engineering curriculum design (16-20 lessons, ages 15+)

PlatformF390

Mobile app — Capacitor wrapper for academy SPA

PlatformF430

Learning velocity dashboard (per-student time-on-task + completion rate)

PlatformF431

Cohort impact reports — PDF export for funders

PlatformF400

FERPA compliance audit + documentation

PlatformF402

DPA template enhancement + attorney review coordination

PlatformF500

Decommission Remotion pipeline + add HeyGen/Cloudflare Stream VIDEO block

PlatformF501

Wire an interactive primitive into a production lesson (establish pattern)

PlatformF503

Pilot Lesson 1 — E01 "Hello, Lio!" (Explorers, 5-8) in Coursera-style

PlatformF506

Pilot Lesson 2 — B01 (Builders, 9-12) in Coursera-style

PlatformF507

Pilot Lesson 3 — I01 (Innovators, 13-17) in Coursera-style

ContentF508

Pilot retrospective — evaluate 3 pilots, decide scaling path

InteractiveF502

Author manifest.json for all 43 mini-games + link to lesson IDs

PlatformF442

Redis session cache — cut Clerk session lookups

PlatformF600

Spike — learn-anything graph schema study for Skill Manifest (F356)

PlatformF356

Skill Domain Manifest — tag all 128 lessons with lesson-meta.json

PlatformF357

Strength Profile Aggregation Layer

ContentC11

Depth Track pilot — 3 concept-origin lessons sourced from build-your-own-x

PlatformF602

Spike — Kolibri learner-profile-under-facility data model study

PlatformF603

Install ts-fsrs + wire retrieval-prompt spacing into exit-ticket flow

InteractiveG001

Perception-domain prototype — "Lio sees what you see" (tfjs-models, on-device)

PlatformF601

Spike — GitHub Skills interaction pattern study for Lio Tutor loop

PlatformF604

Spike — Twenty + CiviCRM data model study for Plio internal CRM features

PlatformF605

Admin Grants Tracker — grants.gov + USAspending + ProPublica daily digest

ContentC12

Operator runbook — beancount + fava for Plio books + paperless-ngx for documents

ContentC13

Operator runbook — Open Collective Foundation fiscal sponsorship application

PlatformF606

Self-host listmonk — parent + donor newsletter pipeline

ContentC14

Operator runbook — LanguageTool (self-hosted grammar) + Zotero (citation

ContentC15

Operator runbook — Gusto (payroll setup) + Kimai (volunteer time tracking)

PlatformF611

CSTA + ISTE standards tagging on every lesson

PlatformF612

Kid-safe project gallery — moderated drawings + code + AI projects

PlatformF613

Mastery graph + spaced-review scheduler

ContentF614

Educator resource PDFs — per-lesson, no-login, classroom-ready

PlatformF615

Innovator typed-code capstone — "Ship a real PWA" track

PlatformF616

AI literacy track — "How Lio thinks" (Builder + Innovator)

PlatformF617

CRM extension — F604 schema proposals (grants_received, pledges, events,

PlatformF618

AI grant drafter + non-gov scraper — Claude API + Playwright crawlers

PlatformF619

Lio Advisor — build from docs/product/parent-dashboard-spec.md

PlatformF620

Donor portal — GiveForms self-host + Stripe + 990-prep export

PlatformF621

Volunteer portal — thin layer over Kimai + attestation PDFs

ContentF622

Docs — CRM functionality map + ops-stack visual index

PlatformF623

Tech debt — middleware.ts → proxy.ts (Next.js 16 deprecation)

PlatformF624

Tech debt — Sentry config migrate off disableLogger + automaticVercelMonitors

PlatformF625

Clerk session token — add metadata claim via dashboard + update guard rules

PlatformF626

Observability — Sentry user tagging + route breadcrumbs + env-aware sample

PlatformF627

Observability — structured request logging via pino + log-level env

PlatformF628

Accessibility — WCAG 2.2 AA sweep across /admin + /dashboard + /learn

PlatformF629

Accessibility — focus-trap + Escape close on every admin modal

PlatformF630

Performance — Next.js Image component sweep + OG image caching

PlatformF631

Performance — ISR + stale-while-revalidate on public marketing pages

PlatformF632

SEO — JSON-LD structured data + sitemap enrichment + robots tuning

PlatformF633

Admin UX — saved filters + shareable query URLs on contacts/deals/grants

PlatformF634

Admin UX — bulk actions on contacts list (tag, export, merge, delete)

QAF635

Q — Playwright E2E for sign-in + /admin + parent-dashboard golden paths

QAF636

Q — security audit — OWASP ASVS L1 checklist + dep vuln scan

ContentF637

i18n — Spanish audio parity for all Explorer + Builder lessons

PlatformF638

Tech debt — CSP nonce on JSON-LD <script> in RootLayout

PlatformF639

ESLint custom rule — block clinical-term + definitive language in parent-facing

QAF640

Q — Lighthouse CI gate on / /about /programs /dashboard /admin

QAF641

Q — load test baseline with k6 — 500 concurrent students, lesson player

PlatformF642

Parent engagement — nurture email sequence (signup → 7 days)

PlatformF643

Parent engagement — reactivation campaign for 14+ day inactive

PlatformF644

Content linter — dubitative language scan across all lesson manifests

PlatformF645

Content tooling — lesson manifest preview page + audio length validator

PlatformF646

Dev experience — Storybook for primitives gallery + docs

PlatformF647

Data integrity — foreign key audit + referential consistency script

PlatformF648

Security — CSRF token test suite + double-submit pattern for server actions

PlatformF649

Security — API rate-limit tightening (per-user, not just per-IP)

PlatformF650

i18n polish — ES UI-strings audit + fallback reporting

PlatformF651

Admin UX — activity timeline polish — pin, filter by actor, export

PlatformF652

Admin UX — global command palette (Cmd+K) across /admin

PlatformF653

Accessibility — keyboard shortcuts audit + help overlay (press ?)

QAF654

Q — axe + pa11y on every primitive in Storybook build

PlatformF655

Dev experience — prebuild check script (fast fail before pnpm build)

ContentF656

Content — seeded quiz variants (A/B) for every Builder lesson

PlatformF657

Polish — breadcrumb nav across /admin routes

PlatformF658

PII-scrub logger + tutor-transcript redaction test

ContentF659

Runbooks — incident response + secret rotation + backup restore drill

PlatformF660

Guardian struggle-alert surface + first-7-day checklist + year-end donor

PlatformF661

Accessibility — WebVTT captions pipeline + OpenDyslexic font toggle

PlatformF662

Pre/post assessment schema + effect-size reporting for grant packets

PlatformF663

California AI-Literacy Framework (AB-2876) alignment + tagging

PlatformF664

Teachable-Machine-style in-lesson ML training primitive (COPPA-safe, on-device)

PlatformF665

Lio Advisor — AI-generated "Ask your child" conversation starters in weekly

PlatformF666

Open Badges 3.0 verifiable credentials per tier completion + capstone

PlatformF667

Clever + ClassLink rostering spec + "coming soon" landing page

PlatformF668

Grants pipeline stages + deadline calendar (extend F605/F618)

ContentF669

990/state-filing compliance calendar + COI forms (Formbricks self-host)

PlatformF670

Google Ad Grants enrollment + UTM attribution → donor funnel (Plausible/PostHog)

PlatformF671

Donor moves-management — cultivation stages + stewardship cadence

PlatformF672

School DPA/MSA e-sign via Documenso self-host + renewal alerts

ContentF673

Fund accounting — restricted/unrestricted ledger on top of beancount

PlatformF674

Volunteer shift scheduling + skill matching + 990 Part VI auto-export

PlatformF675

Sponsor tier + contract-milestone tracker in CRM

ContentF676

Board portal — BookStack minutes wiki + resolutions tracker + COI workflow

PlatformF677

Social scheduling — Mixpost self-host + press/media-contacts CRM extension

PlatformF678

Mandated-reporter protocol — child-disclosure detector + triage pipeline

PlatformF679

AI safety — red-team suite + nightly eval harness for Lio Tutor

PlatformF680

Earned revenue — teacher PD, Advisor Pro, curriculum API licensing

PlatformF681

Research infra — IRB templates, de-identification pipeline, researcher role

PlatformF682

Alumni longitudinal tracking — opt-in at Innovator exit, annual outcomes

ContentF683

Design system — tokens + Figma kit + brand guidebook + press kit

PlatformF684

Public roadmap + changelog + status page (BetterStack free tier)

PlatformF685

Integration ecosystem — outbound webhooks + public read-only API + OpenAPI

ContentF686

Key-person continuity — operator handoff + on-call rotation + credentials

PlatformF687

Neurodivergent UI modes — ADHD focus, autism-friendly, dysgraphia voice input

PlatformF688

International expansion readiness — GDPR audit, FR locale, RTL groundwork

ContentF689

Mental-health safe-messaging policy across parent-facing copy

PlatformF690

Parent community — Discourse self-host (COPPA-safe adults-only forum)

PlatformF691

Rural / low-bandwidth — 2G testing + audio-only lessons + offline ZIP pack

ContentF692

Thought leadership — op-ed pipeline + CFP tracker + whitepaper program

ContentF693

Paid workshops + events — OCF Eventbrite integration + ticketing

PlatformF694

Sibling/family ops — multi-child household, co-guardian, shared dashboard

PlatformF695

SLO doc + error budgets + Sentry alert-rule codification

PlatformF696

Feature flags via PostHog — gradual rollout + kill switches

ContentF697

Email deliverability — SPF + DKIM + DMARC + bounce handling

PlatformF698

Cookie consent / CMP — COPPA-aware + bilingual

PlatformF699

Read-only admin SQL console via Metabase self-host

ContentF700

DR / RTO drill — measured + documented recovery time

PlatformF701

Distributed tracing — OpenTelemetry + Sentry Performance

PlatformF702

Parent notification template library — every event type

PlatformF703

Referral program — parent-refers-parent with reward tracking

PlatformF704

Testimonials pipeline — collect + curate + approve + publish

PlatformF705

Birthday + milestone automated recognition from Lio

ContentF706

Content A/B test framework — variant system for lesson slides

ContentF707

Seasonal + holiday content pack — 6 themed variants

PlatformF708

Canvas LMS + Google Classroom + Seesaw integration stubs + specs

PlatformF709

Teacher gradebook v1 — cohort + per-student view

PlatformF710

Student portfolio — opt-in public showcase (extension of F612)

PlatformF711

Certificate of completion PDF per tier + capstone

PlatformF712

Recurring-donor upgrade flow + retention + corporate match

PlatformF713

Cookie-less privacy-friendly analytics — Plausible alongside PostHog

PlatformF714

Caliper Analytics compliance — edu interop standard

ContentF715

Holiday + cultural awareness content — authenticity review

PlatformF716

Parent peer mentorship matching

PlatformF717

Admin read-only SQL snippets library + approval flow

ContentF718

Terms of Service + Privacy Policy refresh — bilingual, COPPA-compliant

ContentF719

ADR retrospective — consolidate first 50 decisions into rationale index

PlatformF720

Performance budget CI gate — per-page bundle size + LCP ceiling

PlatformF721

Sign-language video track — deaf accessibility pilot on 5 lessons

ContentF722

Reading-age + ELL adaptation per lesson — Lexile-score filter

PlatformF723

Backup verification — monthly restore-smoke-test cron

PlatformF724

Admin onboarding walkthrough — first-login tour of 24 routes

ContentF725

Press kit assembler — generate on-demand brand packet

opsS4-001

Provision all production env vars in Vercel

opsS4-002

Stripe dashboard: webhook + product subscriptions

opsS4-003

Clerk dashboard: webhook + metadata schema

opsS4-004

Resend domain verification for plio.academy

opsS4-005

Run Drizzle migrations against production Neon branch

QAS4-020

End-to-end Stripe → Clerk smoke test

QAS4-021

Verify all 36 crons fire in Vercel cron dashboard

PlatformS4-033

Annual COI re-acknowledgment cron

PlatformS4-040

Mobile app — React Native or PWA path decision

PlatformS4-041

CRM SaaS — multi-tenancy for second revenue stream

PlatformS4-042

Beancount sync for cashflow + 990-EZ Part II expense lines

PlatformS4-043

SlideContent.tsx — split 3193-line monster component

PlatformS4-044

Lighthouse CI + Web Vitals dashboard

PlatformS4-046

Capture donor mailing address for IRS Schedule B

PlatformS4-047

Block-based lesson editor — admin UI for authoring slides without JSON

PlatformS4-048

Code submission storage — code_submissions table + gradebook column

PlatformS4-049

Hint system — per-slide hints with progressive reveal

PlatformS4-050

Solution reveal — show correct answer after 2+ failed attempts

PlatformS4-051

Cohort session links — upcoming live class scheduling

PlatformS4-052

Mastery gate flag — optional requiresMastery per lesson

PlatformS4-053

Course bundles — named lesson collections within a tier

PlatformS4-054

Pro tier — add 'pro' tier to VALID_TIERS, routes, and lesson schema

PlatformS4-055

Practice slide type — code submission with no answer reveal

ContentS4-062

i17 AI Safety and Alignment — update slides using Nicky Case metaphors

PlatformS4-063

codeRef field — add attribution URL to lesson JSON schema

PlatformS4-047a

Lesson editor — lesson list + metadata form at /admin/curriculum/lessons

PlatformS4-047b

Lesson editor — slide list + reorder + delete at /admin/curriculum/lessons/[tier]/[id]/slides

PlatformS4-047c

Lesson editor — narration + audio + contentType slide edit form

PlatformS4-047d

Lesson editor — new lesson creation wizard

ContentS4-064

Cybersecurity track — scaffold lesson shells cy-i01 through cy-i08 (Innovator-Cyber)

ContentS4-065

Cybersecurity track — scaffold lesson shells cy-p01 through cy-p08 (Pro-Cyber)

ContentS4-066

Data Science track — scaffold lesson shells ds-b01 through ds-b06 (Builder-Data)

ContentS4-067

Data Science track — scaffold lesson shells ds-i01 through ds-i08 (Innovator-Data)

ContentS4-068

DevOps track — scaffold skeleton ds-dev01 through ds-dev06 (Pro-DevOps)

PlatformS4-069

Live tutoring — real-time 1-on-1 and small-group sessions (video + chat)

PlatformS5-001

Mid-lesson resume — persist current slide index on advance

PlatformS5-002

Adaptive retry loop — retry missed quiz questions before lesson completes

PlatformS5-003

Teacher assignment UI — create, schedule, and assign lessons to students

PlatformS5-004

Homepage — surface /hour-of-ai above the fold

PlatformS5-005

District RFQ form — public quote request routed to CRM deals pipeline

PlatformS5-006

Social proof counters — live stats on homepage

PlatformS5-007

Grant outcome PDF auto-trigger on grant close_date

PlatformS5-008

Volunteer shift conflict guard — overlap detection on shift create/edit

PlatformS5-009

Donor receipt portal — self-service giving history at /donors/[token]

PlatformS6-001

Student dashboard — surface streak count prominently

PlatformS6-002

Cohort learning leaderboard — weekly XP ranking within cohort

PlatformS6-003

Mastery gating — lock next lesson until current lesson mastery achieved

PlatformS6-004

Spaced repetition — resurface weak quiz questions via exit-ticket

PlatformS6-005

Real-time classroom view — instructor sees live student progress

PlatformS6-006

Placement / diagnostic quiz — skip already-mastered lessons at track entry

PlatformS6-007

Content search — full-text search across all lessons

PlatformS6-008

Instructor audio feedback on student gallery submissions

PlatformS6-009

Parent daily summary email — what my child did today

PlatformS6-010

Advisor conversation history UI — parents see AI advisor chat log

adminS6-011

Fix admin contracts page — wire to contracts DB table

adminS6-012

Fix academy health page — replace broken GraphQL call with real DB metrics

adminS6-013

Email campaign send/schedule action in admin UI

PlatformS6-014

VAPID push notification keys — generate + document setup

PlatformS6-015

Public portfolio — student-controlled visibility toggle

PlatformS7-001

Fix stub lesson shell — redirect to 404 instead of playing fake content

PlatformS7-002

Rate-limit public/unauthenticated server actions — lms-lead, placement quiz

adminS7-003

Admin loading skeletons — add loading.tsx to all admin sub-routes

adminS7-004

Admin governance — board meeting countdown + docs section

PlatformS7-005

Placement quiz silent fail — handle zero quiz slides gracefully

PlatformS7-006

Community waiting-list — email capture on /parents/community stub page

PlatformS7-007

Assessment results admin view

PlatformS7-008

Error boundaries — add error.tsx + loading.tsx to all dashboard sub-routes

PlatformS8-001

Wire /impact page to real DB student/lesson metrics

PlatformS8-002

Add notify-policy-update cron to vercel.json schedule

PlatformS8-003

Pipeline seeding — create default CRM pipelines via migration

PlatformS8-004

Fix sw.js pre-committed hash — gitignore the generated file

PlatformS8-005

SRS card rating — handle DB error gracefully in ReviewSession

PlatformS8-006

PD course content — author 3 starter MDX modules

PlatformS8-007

Portfolio alt text — fix missing alt on student drawing images

PlatformS9-001

Fix /dashboard/student SRS due-cards badge (S6-004 incomplete)

PlatformS9-002

Fix /donate page — remove from sitemap or add pre-register flow

securityS9-003

Rate-limit /api/donors, /api/announcements, /api/faq public endpoints

PlatformS9-004

Stripe webhook — handle payment_failed, subscription_updated, invoice_failed

PlatformS9-005

StudentProfileContext — surface error state on profile load failure

seoS9-006

Add missing pages to sitemap.ts

PlatformS9-007

Lesson client silent catch — add Sentry capture + toast on save failure

PlatformS9-008

PD enrollment — add self-serve cancellation to educator dashboard

PlatformS10-001

Fix webhook retry — actually replay non-Stripe deliveries

PlatformS10-002

Fix mentor-matching cron — resolve real emails via Clerk

adminS10-003

Admin students list — add pagination

PlatformS10-004

Student notification preferences page

adminS10-005

Add nav links to learning-velocity and lesson-quality reports

PlatformS10-006

Create saas_subscriptions table + unblock S9-008 PD cancellation

securityS10-007

Add SRI hash to Redoc CDN script tag on /docs/api

PlatformS10-008

Implement event NPS survey cron (R6-001)

PlatformS10-009

PD module error logging, pipeline 404 message, integrations ETA badges (R6-004/005/006)

PlatformLMS-001

Adult learner — signup path, Clerk role, student_profile self-ownership

PlatformLMS-002

Co-guardian invite + accept flow

PlatformLMS-003

COPPA enforcement in code — age-gate messaging and data access

PlatformLMS-004

Creator competency gate — application + test before teaching

PlatformLMS-005

Guardian-Creator matching system

PlatformLMS-006

Bidirectional messaging — creator↔guardian and creator↔learner

PlatformLMS-007

Real-time chat — sync creator↔guardian and creator↔learner (13+)

PlatformLMS-008

Age-18 transition — learner chooses guardian link status

PlatformLMS-009

Volunteer role — deprecate or redirect to creator path

PlatformLMS-010

Researcher role — policy decision + disposition

crmCRM-001

Staff members + departments schema and directory

crmCRM-002

Department-scoped CRM navigation and access gates

crmCRM-003

Role-aware UI — hide/disable write controls per department

crmCRM-004

Department home dashboards — per-role landing page

PlatformS11-001

Standards alignment — per-standard mastery tracking + district export

PlatformS11-002

On-demand guardian progress report PDF download

PlatformS11-003

Summative assessments + creator gradebook

PlatformS11-004

Rich portfolio builder — annotations, cover, categories

crmS11-005

Donor lifecycle automation — upgrade, lapsed, anniversary sequences

PlatformS11-006

Live class tools — polls, raised hand, emoji reactions

PlatformS11-007

Streak freeze + recovery mechanic

PlatformS11-008

Personalized lesson sequencing post-placement

PlatformS11-009

Gallery social layer — comments, reactions (COPPA-gated)

crmS11-010

Volunteer self-service scheduling + hours log

crmS11-011

Public event registration + ticketing

PlatformS11-012

Creator analytics dashboard — session stats, drop-off, revenue

PlatformS11-013

Verifiable certificate LinkedIn sharing + Open Badges

PlatformS12-001

Automated weekly family digest email

crmS12-002

Grant-ready funder impact report PDF export

PlatformS12-003

Public trust and transparency page

PlatformS12-004

Creator revenue dashboard + session billing

PlatformS12-005

District pilot funnel + Clever roster sync UI

PlatformS12-006

AI lesson generator for creators (Lio-powered)

PlatformS12-007

Lio structured roleplay / conversation scenarios

PlatformS12-008

1:1 tutoring booking calendar + post-session AI recap

PlatformS12-009

Differentiated learning groups (creator-assigned)

PlatformS13-004

Student-owned goal setting + weekly self-monitoring

PlatformS13-005

Parent conversation starters — family co-pilot nudges

crmS13-006

E-Rate eligibility + SOPPA state compliance matrix

crmCRM-010

Support ticket internal/external split + internal IT board

crmCRM-011

Operations department — 8th CRM department with scoped dashboard

crmCRM-005

Clean contact type enum + add funder and vendor types

crmCRM-006

Board members table — governance tracking

crmCRM-007

LMS support ticket system — submit, route, resolve

crmCRM-008

Vendor / contractor management

crmCRM-009

Funder relationship profiles — grant CRM enrichment

PlatformS13-001

Guardian two-way class updates — creator announcements + direct reply

PlatformS13-002

XP leagues + weekly leaderboard (age-gated social)

PlatformS13-003

Mid-lesson formative checks — exit tickets + live response heatmap

PlatformINFRA-001

Error handling hardening — consistent result type + error boundaries

PlatformINFRA-002

Structured logging + Sentry error monitoring

crmCRM-012

Integration gateway — single entry point for all external webhooks

crmCRM-013

Dead Letter Queue + exponential backoff (5 retries)

crmCRM-014

API quota monitoring + throttle at 80% burst limit

crmCRM-015

Schema normalization engine — ISO 8601 dates, E.164 phones

crmCRM-016

Conflict resolution + SSOT — protected fields, source hierarchy

crmCRM-017

Global deduplication service — email/UUID lookup before insert

crmCRM-018

State-dependent validation — deal stage requires contract attachment

crmCRM-019

Bi-directional webhook sync — CRM changes push to downstream tools (<60s)

crmCRM-020

Audit log — every API change logs source, field, old/new value

crmCRM-021

Sandbox environment — staging schema mirror for UAT

lmsS14-001

Multi-entity subscription model — Accounts/Tenants separate from Users

lmsS14-002

MRR/ARR calculation engine — real-time revenue dashboard

lmsS14-003

Renewal automation — deal created 90 days before expiry, +5% uplift

lmsS14-004

Usage-based PQL triggers — Product Qualified Lead flagging

lmsS14-005

Customer health score — churn prediction, <40% triggers alert

lmsS14-006

Tenant isolation — every DB query filtered by tenantId

lmsS14-007

GDPR right-to-erasure — purge user data across all SaaS tables

lmsS14-008

Cohort retention report — % active at 6 months by signup month

lmsS14-009

CAC/LTV ratio — executive dashboard rolling 30-day

lmsS15-001

Hierarchical learning objects — Certification > Course > Module > Lesson > Asset

lmsS15-002

Prerequisites & gating logic — lock objects until prerequisite complete

lmsS15-003

Seat management + time-bound access with 30-day expiry notification

lmsS15-004

xAPI / telemetry ingestion — LRS statement capture

lmsS15-005

Weighted gradebook — immutable final grade on submission

lmsS15-006

Dynamic certificate PDF on course completion

lmsS15-007

Recertification workflow — re-enroll or flag non-compliant at 11 months

lmsS15-008

Behavioral nudge — inactivity trigger after 7 days with resume link

lmsS15-009

Instructor group-view dashboard — struggling learners, bulk message

PlatformS16-001

Video placeholder UX — replace ▶︎ stubs in I01, B01, I-CAPSTONE chapters

PlatformS16-002

HuntTimer — require child confirm before auto-advancing in E01 Ch2

PlatformS16-003

Chapter replay affordance — Replay button on completed lesson chapters

opsS16-004

Remove duplicate HP-007 entry in BACKLOG.yaml

ContentS16-005

i17 AI Safety — Nicky Case intern + mesa-opt + corrigibility metaphors

PlatformS16-006

Color-blind mode — deuteranopia + protanopia toggles in a11y panel

PlatformS16-007

Progress export CSV — guardian download from student overview page

PlatformS16-008

Explorer co-pilot mode — shared parent+child lesson UI for ages 5–8

PlatformS17-001

Weekly challenges — 3 rotating challenges with XP bonus + leaderboard entry

PlatformS17-002

Screen-time controls — guardian daily limit + quiet-hours config

PlatformS17-003

Milestone celebration — confetti + sound on badge earn / tier complete

PlatformS17-004

Discussion threads — per-lesson Q&A section (COPPA-safe)

PlatformS17-005

Bulk student import — CSV upload into cohort (instructor tool)

PlatformS17-006

S16-008 Explorer co-pilot — implement shared parent+child UI for E01

PlatformS18-001

Lesson filtering — topic + duration filters on tier catalog pages

PlatformS18-002

Lesson bookmarks — save-for-later toggle on lesson cards

PlatformS18-003

Related lessons — 'Up next' suggestions on lesson completion screens

PlatformS18-004

Learning paths — curated sequences displayed as 'paths' on tier pages

PlatformS19-001

Teacher gradebook — wire real lesson completion + quiz scores

PlatformS19-002

Streak activity heatmap on student dashboard

PlatformS19-003

Lesson notes — student can jot a private note during a lesson

PlatformS19-004

Quiz performance insights — show per-slide accuracy after lesson completion

PlatformS19-005

Teacher cohort overview — class-wide mastery heatmap by concept

PlatformS19-006

Lesson progress — 'Continue where you left off' hero on learn landing page

PlatformS20-001

Fix lesson filters — server-side filter + sort using URL search params

PlatformS20-002

Lesson ratings — 1-5 star rating on lesson completion

PlatformS20-003

Social sharing — share lesson progress and certificates

PlatformS20-004

Dark mode toggle — expose UI switcher in settings

PlatformS20-005

Student goals — display and set weekly XP goal on student dashboard

PlatformS20-006

Parent digest customization — frequency picker in parent settings

infraOPS-001

Set LiveKit env vars in production

webB-151

parent/settings: offline-pack empty state uses href='#' dead link

webB-152

ActivityTimeline: pinnedAt field missing from Activity interface, cast silences TS

webB-153

SendEmailModal: uses window.location.reload() instead of router.refresh()

webB-154

EnrollmentManager: remove student from cohort fires without confirmation

webB-155

SendCampaignButton: uses browser confirm() for bulk send action

webB-156

support/[id]: screenshotUrl from DB rendered as href without protocol check

webB-157

student dashboard: lesson card falls back to href='#' when info not found

webB-158

student/portfolio/edit: window.confirm() for category delete

webB-159

parent/student/[id]/portfolio: window.location.reload() after create

webB-160

admin/contacts/CsvImportModal: window.location.reload() after import

webB-161

admin/pipelines/KanbanBoard: window.location.reload() after deal add

webB-162

admin/deals/DealActivityLog: window.location.reload() after log

webB-163

admin/curriculum/slides/SlidesPanel: window.confirm() for delete slide

webB-164

admin/volunteers: revokeVolunteer fires without confirmation

webB-165

admin/development/funders/[id]: funder.website href lacks protocol check

webB-166

admin/contacts/QuickAddModal: form labels missing htmlFor/id pairs

webB-167

actions/portfolio: deletePortfolioEntry missing revalidatePath

webB-168

admin/tutor-interviews: recordingUrl/lessonRecordingUrl hrefs lack https:// check

webB-169

admin/contacts/ActivityTimeline: attachment att.url lacks https:// check

webB-170

admin/governance: linkedBookstackPageUrl and fileUrl hrefs lack https:// check

webB-171

ParentAccountMenu: Stripe portal URL used as window.location.href without https:// check

webB-172

parent/settings/SettingsClient: co-guardian revoke fires without confirmation

webB-173

PortfolioBuilderClient: optimistic entry field update has no rollback on failure

webB-174

LessonSearchBar: fetch error silently swallowed — no user feedback

webB-175

admin/settings/fields: window.confirm() for field delete

webB-176

admin/faq: window.confirm() for FAQ entry delete

webB-177

admin/announcements: window.confirm() for announcement delete

webB-178

admin/grants/narrative-library: window.confirm() for block delete

webB-179

notifications: DB-sourced link rendered without protocol guard

webB-180

FunderReportForm: signedUrl passed to window.open without https guard

webB-181

a11y: icon-only buttons missing aria-label in 3 files

webB-182

admin/settings/tags: window.confirm() for tag delete and merge

webB-183

admin/settings/team: window.confirm() for member remove

webB-184

admin/settings/templates: window.confirm() for template delete

webB-185

admin/development/funders/FunderForm: window.confirm() for funder delete

webB-186

admin/integrations/webhooks: window.confirm() for webhook delete

webB-187

a11y: CreatorApplicationClient form inputs missing htmlFor/id

Q2 2026

PlatformF362

Lio Tutor UI — lessonId context, 200-char cap, emoji chips, audit log

PlatformHP-007-history

F370 — rebase onto develop + regenerate migration for community_submissions

PlatformF370

Community — admin pre-publish moderation queue