What's new
Product updates and fixes, shipped continuously. Newest first.
July 2026
- Fixed
fix(export): guest share link 401'd — public routes were shadowed by /api auth middleware
#355 - Added
feat(export): guest download of course exports via capability share link
#354 - Added
feat(canvas): one-way push of CW-built modules + assignments to Canvas
#353 - Fixed
fix(canvas): exclude already-imported Canvas courses from the pickers
#352 - Added
feat(canvas): flag Canvas-imported courses in the database
#351 - Fixed
fix(canvas): import is structure-only — no student data at import time
#350 - Added
feat(canvas): import a Canvas course as a new CourseWise course from the Integrations page
#349 - Fixed
fix(canvas): admins blocked from connecting Canvas — move connection routes off /api/teacher/*
#348 - Added
feat(canvas): Canvas LMS import — teacher token connect + course structure import (P0+P1)
#347 - Fixed
fix(api): course export downloads Gamma decks missing from R2
#345 - Added
feat(api): course export round 2 — attendance matrix, PPT decks, readable submissions
#344 - Added
feat(api): course export — final grades only + syllabus, calendar, attendance
#342
June 2026
- Added
feat(quiz): lockdown / exam mode — type-only + tab-switch flagging
#341 - Fixed
fix(web): show loading state in grading detail while a submission loads
#340 - Added
feat(shared): admin token carries teacher:grades + quizzes:write scopes
#339 - Fixed
fix(web): grading nav dropdown — searchable + no dismiss on inner scroll
#338 - Fixed
fix(api): never expose quiz question explanations to students
#337 - Added
feat(web): move grading roster into a top nav toolbar (assignments & quizzes)
#336 - Added
feat(announcements): per-announcement "allow comments" toggle
#335 - Fixed
fix(api): register announcement migrations 0043-0047 in drizzle journal
#334 - Added
feat(announcements): add priority (normal/high/urgent)
#333 - Added
feat(announcements): M4 — email fan-out, rolling alert, scheduled publish
#332 - Added
feat(announcements): M3 — comments + emoji reactions
#331 - Added
feat(announcements): M2 — pin, attachments, targeted group audience
#330 - Added
feat(announcements): M1 core — tables, CRUD, student feed, unread badge
#329 - Added
feat(web): big letter grade at end of student my-grade hero
#328 - Added
feat(web): tidy student homework columns; show grade as score/max
#327 - Added
feat(web): tidy student/teacher table columns for materials & presentations
#326 - Added
feat(web): blocking loading modal on students page & group counts in filter chips
#325 - Improved
refactor(web): PreparingGradesDialog delegates to shared LoadingDialog
#324 - Added
feat(web): blocking loading modal on attendance load & session switch
#323 - Added
feat(web): move attendance session selection into a roster nav-bar dropdown
#322 - Added
feat(web): redesign teacher attendance page with search, status filter & session picker
#320 - Added
feat(web): use-case pages — K-12, higher ed, individual educators (GEO)
#319 - Added
feat(web): comparison pages — CourseWise vs Canvas / Classroom / Moodle (GEO)
#318 - Fixed
fix(web): canonical/sitemap use trailing-slash form to match served URLs
#317 - Added
feat(web): per-page title/description/canonical + Pricing FAQ JSON-LD (GEO)
#316 - Added
feat(web): prerender public pages for AI/search crawlers (GEO)
#315 - Fixed
fix(web): use fsuac.com as the canonical domain for GEO files
#314 - Added
feat(web): GEO/SEO foundations — robots, sitemap, llms.txt, JSON-LD
#313 - Fixed
fix: keep the top-nav unread badge in sync with the messages page
#312 - Fixed
fix: scroll a message thread to the latest message on open
#311 - Added
feat: searchable student picker for quiz waves
#310 - Added
feat: add "Remember me" on login for a 30-day session
#309 - Fixed
fix: keep user signed in when extending session from the timeout dialog
#308 - Added
feat: lock submissions after a course ends (opt-in per course)
#307 - Fixed
fix: sort expired modules to the bottom on the student modules page
#306 - Fixed
fix: group messages between the same two people into one conversation
#305 - Fixed
fix: repair broken i18n keys + add locale parity/usage guard tests
#304 - Added
feat: read-only "view submission" icon next to each student in the subsection
#303 - Improved
refactor: rectangular, single-select status filter chips
#302 - Added
feat: status filter chips for the submissions/attempts subsections
#301 - Added
feat: expandable per-item submissions subsection on Assignments & Quizzes
#300 - Added
feat: make the gradebook group filter searchable + keyboard-navigable
#299 - Added
feat: filter the gradebook by group, sectioned by group set
#298 - Fixed
fix: show late penalty on graded submissions in the grading detail
#297 - Added
feat: open message attachments inline in the browser
#296 - Fixed
fix: put the gradebook open-submission link on the status row
#295 - Added
feat: highlight ungraded submissions + open-submission link in gradebook
#294 - Fixed
fix: vertically center the gradebook score and ungraded-count cells
#293 - Added
feat: gradebook ungraded-count column + inline group names
#292 - Added
feat: expandable inline grading in the gradebook roster
#291 - Added
feat: gradebook shows group name, drops letter/overrides columns
#290 - Added
feat: inline view button in grading roster search rows
#289 - Added
feat: search grading inboxes by student name/email
#288 - Added
feat: quizzes table toolbar + per-row "…" actions menu
#287 - Added
feat: searchable recipient picker in the message composer
#286 - Added
feat: messages compose bar + "Message teacher" button
#285 - Added
feat: assignments table toolbar + per-row "…" actions menu
#284 - Added
feat: materials table toolbar + per-row "…" actions menu
#283 - Added
feat: read-only assignment requirements dialog on the submissions page
#282 - Added
feat: move per-module actions into a "…" overflow menu
#281 - Added
feat: auto-update the gradebook and count past-due missing work as 0
#280 - Added
feat: link to a student's gradebook from the students roster
#279 - Improved
design: richer totals tiles under the admin AI usage chart
#278 - Added
feat: move "Set missing to 0" to the course level
#277 - Fixed
fix: accept zip/py (and code files) in upload pickers client-side
#276 - Added
feat: admin dashboard AI usage chart (neurons/requests/tokens over time)
#275 - Improved
web: enable attachments in the message compose dialog
#274 - Improved
web: add New message button to the Messages page
#273 - Added
feat: message attachments (word/excel/pdf/code files)
#272 - Added
feat: profile page with AI usage (neurons) chart and history
#271 - Improved
web: offer the AI tutor to teachers and admins on material detail
#270 - Added
feat: AI tutor chat on reading materials (Workers AI, free beta)
#269 - Improved
web: replace all native confirm() with a unified ConfirmDialog
#268 - Improved
perf: batch final-grade recalc, parallelize dashboards, add hot-path indexes
#267 - Improved
Gradebook: "Set missing to 0" bulk action
#266 - Improved
Discussions: paginate posts; teacher grading grouped by student
#265 - Improved
Gradebook: letter from score only; Override column shows override count
#264 - Improved
Gradebook roster: remove the per-row override edit button
#263 - Improved
Allow grading draft submissions
#262 - Improved
Gradebook roster: search + letter-grade filter toolbar
#261 - Improved
Gradebook: score any assignment, even with no submission
#260 - Improved
Gradebook: grade group-submission members who didn't personally submit
#259 - Improved
Weighted scoring rule for assignment and quiz sets
#258 - Improved
Course schedule + module scheduling, gray-out, publish/unpublish
#257 - Improved
Redesign admin and teacher alerts pages with rich context
#256 - Improved
Admin dashboard: system activity chart (ECharts) + panel redesign
#255 - Improved
Gradebook student page: single expand/collapse-all toggle
#254 - Improved
Gradebook student page: merged score/max column, hero letter, colored status
#253 - Improved
Gradebook student rows: drop inline feedback input, status as outline badge
#252 - Improved
Gradebook student page: fix row alignment and ungraded badge counting
#251 - Improved
Redesign teacher per-student gradebook page
#250 - Added
feat: allow zip file uploads in submissions
- Improved
web: quiz ViewAttemptsButton shows pending/total with amber grading indicator
- Improved
web: move view-submissions/attempts pill button first in row actions
- Improved
Redesign assignment grading page (+ submission-time fact tile)
#249 - Improved
Redesign teacher quiz grading page
#248 - Improved
Redesign student quiz completion summary as a professional results view
#247 - Added
feat: unarchive action for archived quizzes (with confirmation)
#246 - Improved
web: show datetime-local editors in local time, not UTC
#245 - Improved
web: add quizzes to a set via multi-select (match assignment sets)
#244 - Improved
Quizzes: quiz sets (best-of / average bundles)
#243 - Improved
Quizzes: tester schedules (staggered availability)
#242 - Improved
Assignments: cover-sheet briefing for the not-open-yet student view
#241 - Improved
Quizzes: don't let a stale attempt hijack the not-yet-started briefing
#240 - Improved
Quizzes: redesign student pre-start view as an assessment briefing
#239 - Improved
Attendance: daily cron auto-closes sessions left open over 24h
#238 - Improved
Students: hide invitation code when all codes are expired/invalid
#237 - Improved
Performance + Manage + Alerts: finish the back-office design sweep (#236)
#236 - Improved
Assessment + Engagement: unify list pages on the section header (#235)
#235 - Improved
Learn pages: redesign reading materials + presentations (#234)
#234 - Improved
Course pages: shared masthead for overview/syllabus/modules (#233)
#233 - Improved
Dashboard: redesign all three role dashboards (#232)
#232 - Improved
Admin: redesign the courses page (#231)
#231 - Improved
Web: extend the editorial system to the rest of the public surface (#230)
#230 - Improved
Web: editorial redesign of homepage, features, and auth pages (#229)
#229 - Improved
Assignments: align late-penalty form section + show the rule to students (#228)
#228 - Improved
Assignments: redesign form + late-submission penalty policy (#227)
#227 - Improved
Modules: compact content chips — icon + count, name on hover (#226)
#226 - Improved
Assignments: grey out the submission section once the window closes (#225)
#225 - Improved
Assignments: clear "deadline passed" notice when late submission is off (#224)
#224 - Improved
Assignments: allow late submission past the deadline (#223)
#223 - Improved
Attendance: self-sign opens 5 minutes before session start
#222 - Improved
Uploads: allow Excel (.xls/.xlsx) and CSV
#221 - Improved
Attendance: let teachers edit a session
#220 - Improved
Course export: delete ZIPs after 72h and surface the policy
#219 - Improved
Auth: refresh access token and retry on 401 (fixes spurious 401s)
#218 - Improved
Gamma: allow generating from materials OR instructions alone
#217 - Improved
Course export: async ZIP of materials + gradable items, emailed link
#216 - Improved
Assignments list: shrink-0 on status + move icons so sizes never diverge
#215 - Improved
Assignments list: match status + move-to-module icons to action-icon size
#214 - Fixed
Fix stale set member count after grouping assignments
#213 - Improved
Manage sets dialog: widen and keep each set on one row
#212 - Improved
Assignment sets: set up via multi-select on the Assignments page
#211 - Improved
Assignment sets: average / best-of roll-up that feeds a category
#210 - Improved
Course settings: term + start/end dates on one row
#209 - Improved
Course home: time-based progress bar from start/end dates
#208 - Improved
Teacher course home: grading-progress bar under the title card
#207 - Improved
Course home: progress bar under the title card
#206
May 2026
- Improved
Assignments: search box (title + module)
#205 - Improved
Assignments: confirm before archive / unarchive
#204 - Improved
Assignments: teacher action to unarchive an archived assignment
#203 - Improved
Finalize legal pages for publication
#202 - Improved
Student unsubmit + order grading list by submission status
#201 - Improved
Final grade: exclude not-yet-started attendance sessions
#200 - Improved
Gradebook redesign + posted-only final grades (and FERPA review)
#199 - Improved
Public changelog page generated from git history
#198 - Improved
Roster: richer password-reset dialogs (student info, expiry, color)
#197 - Improved
Student Modules: add 'to do & upcoming' status panel
#196 - Improved
Roster: confirm before sending a student password reset link
#195 - Improved
Password reset: self-service + admin/teacher-initiated
#194 - Fixed
Fix: group submit no longer 409s "conflict with another change"
#193 - Improved
Submissions: multiple files + visible "what I submitted"
#192 - Improved
Submissions: grade group assignments as one unit
#191 - Improved
Modules: per-item pending tasks instead of aggregate counts
#190 - Fixed
Fix: language menu background renders transparent
#189 - Added
Add French locale + click-to-open language picker
#188 - Improved
i18n: localize ContactPage + DataRequests form UI
#187 - Improved
Alerts: group by student by default
#186 - Improved
Teacher Alerts: collapsible rows + type filter + course scope note
#185 - Improved
Attendance: let teachers edit records on closed sessions
#184 - Improved
Disable Generate-with-AI button on course Overview
#183 - Improved
Attendance: default to absent; drop the Pending state + filter
#182 - Improved
Attendance: clickable status chips filter the roster
#181 - Improved
Attendance: real confirm dialog for delete-session
#180 - Improved
Attendance: pending default + chronological session order
#179 - Improved
Invitations: show "Expired" once expiresAt has passed
#178 - Improved
Wire capacity hint into TeacherGroupSetsPage too
#177 - Improved
Group-set dialogs: real-time capacity hint
#176 - Improved
SideNav: count badges on more per-course items
#175 - Improved
SideNav: outlined-square badge with active-students count
#174 - Fixed
Fix: each group's assign picker owns its own selection
#173 - Improved
Students page: collapsible groups in the grouped view
#172 - Improved
Group-set resize + per-group capacity override
#171 - Improved
Attendance: redesign roster section (compact, professional)
#170 - Improved
Student account hard-delete (admin + teacher)
#169 - Improved
Match submission badge height to action icon (h-8)
#167 - Fixed
Fix Assignments submission count: exclude drafts, dedupe by group
#166 - Improved
Split-pill ungraded/total badge next to view-submissions icon
#165 - Improved
Outline ungraded/total badge on Assignments view-submissions action
#164 - Improved
Remove API tokens link from top nav
#163 - Added
Add Modify-student dialog to Students page (name + student#)
#162 - Fixed
Fix Stay-signed-in race that logged the user out anyway
#161 - Improved
Onsite messaging V1
#160 - Added
Add client-side pagination to Students roster (teacher + student)
#159