{"app":"TeachPal","changelog":{"0.1.0":"Initial demo","0.2.0":"Teacher analysis, feedback editor, print report","0.2.1":"Version control","0.3.0":"College/University levels, grade scales, citation formats","0.3.2":"Landing page, navigation, fixed rendering","0.4.0":"College/University pricing, Create Account, all placeholder pages, updated roadmap","0.5.0":"Gradebook, student roster, CSV import (Pro), 30-student free limit, downloadable template","0.6.0":"Bonus points, extra credit, curve grading (flat free / advanced Pro), waitlist backend, student data policy","0.6.1":"Bug fix -- gradebook By Assignment tab not switching (tab namespace collision, panel overflow:hidden clipping active indicator)","0.6.2":"Bug fix -- By Assignment tab still broken: stray </div> closing .panel early, causing tab-panel content to render outside its container","0.6.3":"Bug fix -- Tab switching rebuilt using inline styles instead of CSS classes -- eliminates all CSS/class dependency","0.6.4":"Bug fix -- Gradebook JS SyntaxError: nested backtick template literals in renderRoster, viewStudent, and import preview causing entire script to fail","0.6.5":"Bug fix -- Gradebook JS SyntaxError: non-ASCII characters (em dash, middle dot, symbols) inside JS string literals breaking browser parser","0.6.6":"Bug fix -- SyntaxError persisted: checkmark in modal JS + arrows/symbols in curve grading JS also crashing page. Fixed all non-ASCII across all script blocks.","0.6.7":"Bug fix -- Complete gradebook JS rewrite: removed all HTML string concatenation, all special chars in JS, used DOM createElement instead. Guaranteed clean.","0.6.8":"Bug fix -- Non-ASCII chars in shared CSS comments causing SyntaxError on every page.","0.6.9":"Bug fix -- Root cause: Python escape in gradebook JS rendered as real newline breaking split() call.","0.7.0":"Housekeeping: roadmap grouped sections with repeating headers, missing roadmap versions restored, debug routes removed.","0.7.1":"Bug fix -- Nav active highlight: Curve/Bonus never highlighted, Integrations and Teacher of Year shared empty key highlighting both simultaneously.","0.7.2":"Photo & Scan Upload: Claude Vision API reads handwritten and printed work from photos, annotated with grade level and subject context","0.7.3":"Nav redesign: two-row layout -- core tools on top row, product info pages on second row -- replaces single scrolling row","0.7.4":"Bug fix -- Nav links right-aligned instead of centered. Added justify-content:center to both nav rows.","0.7.5":"Nav fix -- Row 2 now aligns with row 1 using CSS grid + invisible spacers matching logo and button widths.","0.7.6":"Wording fix -- Scan page upload area now says upload to be scanned instead of scan or drop, clarifying what the step actually does.","0.7.7":"Wording fix -- Removed photo-specific language from scan page, now says image to cover photos, screenshots, and scans.","0.7.8":"Upload & Grade: combined scan + document upload into one Upload tab. Handles images (Claude Vision), Word .docx, PDF (text + scanned), and .txt files.","0.7.9":"Wording fix -- Upload drop zone now shows all accepted file types instead of image-only language.","0.8.0":"Bug fix -- Upload page showed no feedback after selecting a non-image file. Now shows icon, file name, size, and ready confirmation for all file types.","0.8.1":"Bug fix -- Grades from Grade and Upload pages not appearing in Gradebook. syncGrades now auto-creates student if not in roster instead of silently dropping the grade.","0.8.2":"UX -- When a graded student is not in the gradebook roster, show a modal asking teacher to confirm the name and add them, or skip. Prevents silent errors from misspellings.","0.8.3":"UX -- Name mismatch detection on Upload page: Claude reads student name from paper, compares to typed name, shows amber warning if they differ.","0.8.4":"Bug fix -- Name mismatch check was images-only. Now applies to all file types: Word docs, PDFs, and text files too.","0.8.5":"UX overhaul -- Grades now save immediately on Grade and Upload pages. If student not in roster, inline prompt appears right there to add or skip. No more navigating to gradebook.","0.8.6":"Bug fix -- Apostrophe in JS string caused SyntaxError on Upload and Grade pages. Reworded confirmation message to avoid single-quote inside single-quoted string.","0.8.7":"Student Profiles & Progress Tracking: dedicated /student/<id> page with progress chart, subject breakdown, grade history, at-risk indicators, AI learning path history, and private teacher notes. Full Profile button added to gradebook modal.","0.8.8":"Bug fix -- Full Profile button and openFullProfile() never made it into the build. Added to student modal and gradebook JS.","0.8.9":"Dev mode -- IS_PRO set to true, FREE_LIMIT set to 9999 for local testing. Revert before launch.","0.9.0":"Assignment Generator: new Assign tab generates targeted practice for whole class or individual students. Four output formats: practice questions, full assignment, essay prompts, activity/project. Auto-loads student weak areas from grade history.","0.9.1":"Bug fix -- CSV import added duplicate students if name already existed in roster. Now detects duplicates, skips them, and shows summary of imported vs skipped.","0.9.10":"Parent Reports: generate professional email and printable report card style reports for one student or the whole class. Teacher controls exactly what data is shared. Includes grade summary, feedback highlights, strengths, growth areas, and next steps.","0.9.11":"Bug Report Form: teachers can submit bugs with type, title, description, steps to reproduce, expected vs actual, page, browser, and severity. Saved to bug_reports.csv. Admin export at /bug-report-export.","0.9.12":"Nav redesign: all tabs moved to single centered second row. Top row is logo and buttons only. Cleaner and less cluttered.","0.9.13":"Roadmap overhaul: updated all versions to reflect what was actually built vs planned. Added missing features (AI vs Teacher tracking, grade editing, name mismatch, CSV dedup, Copyleaks stub, refactor, internal plagiarism DB). Removed stale entries.","0.9.14":"Roadmap additions: v1.2.6 Student Data Retention in-app enforcement, multi-campus pricing note, v2.4.5 EasyOCR local scanning option.","0.9.15":"Bug fix -- Roadmap showed duplicate entries: new sections added alongside old ones that were never removed. Old planned and future sections replaced with clean updated versions.","0.9.16":"Roadmap correction -- added v0.9.16 Railway deployment and v0.9.17 SQLite migration as prerequisites before v1.0.0 launch. Expanded v1.0.0 to include super-admin backdoor, onboarding, ToS acceptance, and production config revert.","0.9.17":"Railway deployment: all secrets and feature flags (ADMIN_KEY, IS_PRO, FREE_LIMIT, DEBUG, SECRET_KEY) moved to environment variables. IS_PRO and FREE_LIMIT now injected from Python into JS at render time. Flask secret_key set from env. app.run debug flag env-controlled. Production WSGI via Gunicorn. Procfile, requirements.txt, railway.toml, .env.example added.","0.9.18":"SQLite migration: all browser localStorage replaced with server-side SQLite database. New /api/* REST endpoints for students, grades, notes, learning paths. Shared tpApi JS helper injected on every page. Data now persists permanently on server. tp_notifications remain in sessionStorage (ephemeral by design).","0.9.2":"Bug fix -- saveLearningPath not defined on Upload page causing network error after successful grade. Function was missing from upload page script block.","0.9.3":"Feature -- Delete individual grade entries from student modal and full profile page. Teachers can remove a misassigned grade without deleting the entire student record.","0.9.4":"Feature -- Full grade editing: teachers can edit score, max score, grade, student feedback, and teacher notes on any saved grade. Edited grades show a teal edited badge.","0.9.5":"Feature -- AI vs Teacher grade tracking: AI grade permanently stored, teacher edits tracked separately, variance calculated per grade, >20% variance triggers dashboard alert, student profile shows Teacher Avg vs AI Avg vs Variance stats.","0.9.6":"Feature -- Academic integrity detection: AI-generated content and ghostwriting analysis on every submission. Confidence levels, specific signals, teacher recommendation, and full limitations disclosure.","0.9.7":"UX fix -- Assignment generator now outputs plain text worksheets instead of markdown. Real blank line writing space instead of underscore lines. Looks like an actual printable worksheet.","0.9.8":"Bug fix -- Assignment generator capped at 3000 tokens causing incomplete output (7 of 10 questions). Increased to 8000 tokens.","0.9.9":"UX fix -- Assignment generator was printing (blank space for student response) labels. Now leaves actual blank lines silently.","1.0.0":"PUBLIC LAUNCH: Teacher registration and login (werkzeug password hashing). Session-based auth guards all app pages and API routes. Per-teacher data isolation via teacher_id foreign key on all four data tables. Founder super-admin dashboard at /admin (ADMIN_KEY protected) showing all teachers, usage stats, bug reports, and waitlist. Nav updated to show logged-in teacher name and logout. IS_PRO and FREE_LIMIT reverted to production values (false / 30). IS_PRO now per-teacher field in DB, overrideable by admin.","1.0.1":"Legal pages: /terms (Terms of Service) and /privacy (Privacy Policy) added as public routes -- no login required. Full content covering FERPA, COPPA, GDPR, data retention, AI processing disclosure. Register form TOS/Privacy links now point to real pages (were href='#' placeholders). Footer Legal and Support columns updated with real links. Create Account footer link now goes to /register.","1.0.2":"v1.0.0 gap fixes: school_name and grade_level_taught added to teachers table and register form. Session timeout after 30min inactivity via PERMANENT_SESSION_LIFETIME. First-login onboarding wizard at /onboarding. Admin panel gains password reset and teacher impersonation. Roadmap updated to match handoff v2 (v0.9.17-v1.0.1 marked Done, new v1.0.1-v1.0.3 planned, Clever moved to v1.3.0, DeltaMath to v1.0.2, duplicate v1.0.5 removed). About page tech stack corrected (SQLite, Railway, Claude API). Pricing redesigned: real prices shown with Beta Founder Pricing promotion badges."},"current":"1.0.2"}
