Changelog

What we've shipped.

Every feature, fix, and ops-change to Sheet2Classroom. In reverse chronological order.

A note on the timeline below. The first dozen entries are all dated April 21–22, 2026, because the entire MVP — scaffold, auth, wizard, backup layer, landing — shipped in a compressed two-day burst. Normal cadence from here on is weekly-ish, with post-verification merges + real user feedback shaping what follows.
  1. Apr 23, 2026Feature

    /appv2 promoted to /app — single canonical app tree

    Dashboard, browse-all-assignments, snapshots, per-student restore, grade histogram, and the assignment combobox are no longer behind a /appv2 prefix. The old frozen /app tree is gone; /appv2 was renamed to /app in one move, all internal links were rewritten, and the v1/v2 variant split was retired from the shared nav.

    • Single /app/* route tree — no more v1/v2 split
    • AppNav dropped its variant prop; Dashboard + History links are always shown
    • Internal hrefs and imports rewritten in one sed pass
    • robots.ts deduped private-route list
  2. Apr 22, 2026Feature

    Dashboard + assignment combobox

    A multi-course dashboard aggregating pushes/snapshots/expiring backups across everything you teach. Assignment name input now shows a dropdown of existing coursework so you can update instead of creating.

    • New /app/dashboard with hero stats, activity feed, per-course grouping, and expiring-backup warnings
    • Type-ahead dropdown on assignment title — pick existing coursework to auto-switch to Update mode
    • Dashboard icon in the app nav
    • Public changelog (this page)
  3. Apr 22, 2026Feature

    Browse all assignments, snapshots, per-student restore, grade histogram

    Four feature drops shipped in one wave.

    • Browse every assignment in a course at /app/course/[id]/assignments
    • One-click "Save snapshot" — backs up current grades without pushing
    • Per-student restore: checkboxes on every row in the restore preview
    • Grade distribution histogram on the push preview — bars over max tint red
  4. Apr 22, 2026Fix

    Sign-out crash + button feedback

    Sign out was crashing with "This page couldn't load" because of an inline server action binding issue in Next 16 + Turbopack. Moved to a shared actions file + added pending state.

    • Dedicated src/app/actions.ts with signInWithGoogle + signOutAndGoHome
    • Loading spinner + "Signing out…" text + disabled state via useFormStatus
    • Cursor changes to wait during sign-out
  5. Apr 22, 2026Feature

    Restore-with-diff + readability pass

    No more "OK/Cancel for show" on restore. Every destructive action now previews the exact change before committing.

    • Restore now fetches current grades and shows a Now → Will-revert-to table
    • Loud warning when student-visible grades will change
    • Assignment mode card redesigned: bigger, clearer, with "SELECTED" pill
    • Stat cards use tabular-nums + 3x larger values
    • Saved-mapping chip reads as a real chip with a proper Reset button
  6. Apr 22, 2026Feature

    Update-existing-assignment with mandatory backup

    Detect when an assignment title already exists. Offer Create New or Update — never silently overwrite.

    • Full diff table: current grade → new grade per student
    • Red warning for grades already visible to students
    • Every backup restorable for 30 days via Upstash Redis
    • Push history page with filter + restore per entry
  7. Apr 22, 2026Feature

    Name-match + interactive resolver

    Personal-Gmail students whose email is hidden by Google can now be matched by name from the class roster.

    • New classroom.rosters.readonly scope fetches the roster directly
    • Fuzzy name matching: exact + token-subset (middle names OK)
    • Duplicate-name detection → shows in unmatched with candidate picker
    • Inline dropdown on every unmatched row to pick the right student manually
  8. Apr 21, 2026Feature

    Full visual overhaul

    Linear/Moneyflow-inspired layout. Emerald brand. Plus Jakarta Sans. Animated hero grid. Scroll-triggered section reveals.

    • Hero with animated 4-card grid — Drafts first, Smart matching, Last push, Undo any push
    • Framer Motion scroll animations with staggered children
    • Favicon + OG image regenerated
    • Dark mode removed — light theme only per teacher feedback
  9. Apr 21, 2026Feature

    Wizard MVP

    Four-screen flow shipped: pick course, paste sheet, map columns, preview and push.

    • Google Classroom + Sheets integration
    • Grade format parsing: numbers, "85/100", "85%", "85 pts"
    • Auto-guess columns from header names
    • Draft-first grading by default
    • Rollup pre-push check: no assignment created if zero matches
  10. Apr 21, 2026Feature

    Production deploy

    Domain sheet2classroom.app live on Vercel with NextAuth v5 + Google OAuth.

    • Scaffold: Next.js 16, NextAuth v5, Tailwind v4, googleapis
    • Privacy policy + Terms of service pages
    • OAuth consent screen submitted to Google as "Gradebook"

Have a feature idea or a bug report?

Email support@sheet2classroom.app