Changelog

What's new

Product updates and fixes, shipped continuously. Newest first.

July 2026

  1. Fixed

    fix(export): guest share link 401'd — public routes were shadowed by /api auth middleware

    #355
  2. Added

    feat(export): guest download of course exports via capability share link

    #354
  3. Added

    feat(canvas): one-way push of CW-built modules + assignments to Canvas

    #353
  4. Fixed

    fix(canvas): exclude already-imported Canvas courses from the pickers

    #352
  5. Added

    feat(canvas): flag Canvas-imported courses in the database

    #351
  6. Fixed

    fix(canvas): import is structure-only — no student data at import time

    #350
  7. Added

    feat(canvas): import a Canvas course as a new CourseWise course from the Integrations page

    #349
  8. Fixed

    fix(canvas): admins blocked from connecting Canvas — move connection routes off /api/teacher/*

    #348
  9. Added

    feat(canvas): Canvas LMS import — teacher token connect + course structure import (P0+P1)

    #347
  10. Fixed

    fix(api): course export downloads Gamma decks missing from R2

    #345
  11. Added

    feat(api): course export round 2 — attendance matrix, PPT decks, readable submissions

    #344
  12. Added

    feat(api): course export — final grades only + syllabus, calendar, attendance

    #342

June 2026

  1. Added

    feat(quiz): lockdown / exam mode — type-only + tab-switch flagging

    #341
  2. Fixed

    fix(web): show loading state in grading detail while a submission loads

    #340
  3. Added

    feat(shared): admin token carries teacher:grades + quizzes:write scopes

    #339
  4. Fixed

    fix(web): grading nav dropdown — searchable + no dismiss on inner scroll

    #338
  5. Fixed

    fix(api): never expose quiz question explanations to students

    #337
  6. Added

    feat(web): move grading roster into a top nav toolbar (assignments & quizzes)

    #336
  7. Added

    feat(announcements): per-announcement "allow comments" toggle

    #335
  8. Fixed

    fix(api): register announcement migrations 0043-0047 in drizzle journal

    #334
  9. Added

    feat(announcements): add priority (normal/high/urgent)

    #333
  10. Added

    feat(announcements): M4 — email fan-out, rolling alert, scheduled publish

    #332
  11. Added

    feat(announcements): M3 — comments + emoji reactions

    #331
  12. Added

    feat(announcements): M2 — pin, attachments, targeted group audience

    #330
  13. Added

    feat(announcements): M1 core — tables, CRUD, student feed, unread badge

    #329
  14. Added

    feat(web): big letter grade at end of student my-grade hero

    #328
  15. Added

    feat(web): tidy student homework columns; show grade as score/max

    #327
  16. Added

    feat(web): tidy student/teacher table columns for materials & presentations

    #326
  17. Added

    feat(web): blocking loading modal on students page & group counts in filter chips

    #325
  18. Improved

    refactor(web): PreparingGradesDialog delegates to shared LoadingDialog

    #324
  19. Added

    feat(web): blocking loading modal on attendance load & session switch

    #323
  20. Added

    feat(web): move attendance session selection into a roster nav-bar dropdown

    #322
  21. Added

    feat(web): redesign teacher attendance page with search, status filter & session picker

    #320
  22. Added

    feat(web): use-case pages — K-12, higher ed, individual educators (GEO)

    #319
  23. Added

    feat(web): comparison pages — CourseWise vs Canvas / Classroom / Moodle (GEO)

    #318
  24. Fixed

    fix(web): canonical/sitemap use trailing-slash form to match served URLs

    #317
  25. Added

    feat(web): per-page title/description/canonical + Pricing FAQ JSON-LD (GEO)

    #316
  26. Added

    feat(web): prerender public pages for AI/search crawlers (GEO)

    #315
  27. Fixed

    fix(web): use fsuac.com as the canonical domain for GEO files

    #314
  28. Added

    feat(web): GEO/SEO foundations — robots, sitemap, llms.txt, JSON-LD

    #313
  29. Fixed

    fix: keep the top-nav unread badge in sync with the messages page

    #312
  30. Fixed

    fix: scroll a message thread to the latest message on open

    #311
  31. Added

    feat: searchable student picker for quiz waves

    #310
  32. Added

    feat: add "Remember me" on login for a 30-day session

    #309
  33. Fixed

    fix: keep user signed in when extending session from the timeout dialog

    #308
  34. Added

    feat: lock submissions after a course ends (opt-in per course)

    #307
  35. Fixed

    fix: sort expired modules to the bottom on the student modules page

    #306
  36. Fixed

    fix: group messages between the same two people into one conversation

    #305
  37. Fixed

    fix: repair broken i18n keys + add locale parity/usage guard tests

    #304
  38. Added

    feat: read-only "view submission" icon next to each student in the subsection

    #303
  39. Improved

    refactor: rectangular, single-select status filter chips

    #302
  40. Added

    feat: status filter chips for the submissions/attempts subsections

    #301
  41. Added

    feat: expandable per-item submissions subsection on Assignments & Quizzes

    #300
  42. Added

    feat: make the gradebook group filter searchable + keyboard-navigable

    #299
  43. Added

    feat: filter the gradebook by group, sectioned by group set

    #298
  44. Fixed

    fix: show late penalty on graded submissions in the grading detail

    #297
  45. Added

    feat: open message attachments inline in the browser

    #296
  46. Fixed

    fix: put the gradebook open-submission link on the status row

    #295
  47. Added

    feat: highlight ungraded submissions + open-submission link in gradebook

    #294
  48. Fixed

    fix: vertically center the gradebook score and ungraded-count cells

    #293
  49. Added

    feat: gradebook ungraded-count column + inline group names

    #292
  50. Added

    feat: expandable inline grading in the gradebook roster

    #291
  51. Added

    feat: gradebook shows group name, drops letter/overrides columns

    #290
  52. Added

    feat: inline view button in grading roster search rows

    #289
  53. Added

    feat: search grading inboxes by student name/email

    #288
  54. Added

    feat: quizzes table toolbar + per-row "…" actions menu

    #287
  55. Added

    feat: searchable recipient picker in the message composer

    #286
  56. Added

    feat: messages compose bar + "Message teacher" button

    #285
  57. Added

    feat: assignments table toolbar + per-row "…" actions menu

    #284
  58. Added

    feat: materials table toolbar + per-row "…" actions menu

    #283
  59. Added

    feat: read-only assignment requirements dialog on the submissions page

    #282
  60. Added

    feat: move per-module actions into a "…" overflow menu

    #281
  61. Added

    feat: auto-update the gradebook and count past-due missing work as 0

    #280
  62. Added

    feat: link to a student's gradebook from the students roster

    #279
  63. Improved

    design: richer totals tiles under the admin AI usage chart

    #278
  64. Added

    feat: move "Set missing to 0" to the course level

    #277
  65. Fixed

    fix: accept zip/py (and code files) in upload pickers client-side

    #276
  66. Added

    feat: admin dashboard AI usage chart (neurons/requests/tokens over time)

    #275
  67. Improved

    web: enable attachments in the message compose dialog

    #274
  68. Improved

    web: add New message button to the Messages page

    #273
  69. Added

    feat: message attachments (word/excel/pdf/code files)

    #272
  70. Added

    feat: profile page with AI usage (neurons) chart and history

    #271
  71. Improved

    web: offer the AI tutor to teachers and admins on material detail

    #270
  72. Added

    feat: AI tutor chat on reading materials (Workers AI, free beta)

    #269
  73. Improved

    web: replace all native confirm() with a unified ConfirmDialog

    #268
  74. Improved

    perf: batch final-grade recalc, parallelize dashboards, add hot-path indexes

    #267
  75. Improved

    Gradebook: "Set missing to 0" bulk action

    #266
  76. Improved

    Discussions: paginate posts; teacher grading grouped by student

    #265
  77. Improved

    Gradebook: letter from score only; Override column shows override count

    #264
  78. Improved

    Gradebook roster: remove the per-row override edit button

    #263
  79. Improved

    Allow grading draft submissions

    #262
  80. Improved

    Gradebook roster: search + letter-grade filter toolbar

    #261
  81. Improved

    Gradebook: score any assignment, even with no submission

    #260
  82. Improved

    Gradebook: grade group-submission members who didn't personally submit

    #259
  83. Improved

    Weighted scoring rule for assignment and quiz sets

    #258
  84. Improved

    Course schedule + module scheduling, gray-out, publish/unpublish

    #257
  85. Improved

    Redesign admin and teacher alerts pages with rich context

    #256
  86. Improved

    Admin dashboard: system activity chart (ECharts) + panel redesign

    #255
  87. Improved

    Gradebook student page: single expand/collapse-all toggle

    #254
  88. Improved

    Gradebook student page: merged score/max column, hero letter, colored status

    #253
  89. Improved

    Gradebook student rows: drop inline feedback input, status as outline badge

    #252
  90. Improved

    Gradebook student page: fix row alignment and ungraded badge counting

    #251
  91. Improved

    Redesign teacher per-student gradebook page

    #250
  92. Added

    feat: allow zip file uploads in submissions

  93. Improved

    web: quiz ViewAttemptsButton shows pending/total with amber grading indicator

  94. Improved

    web: move view-submissions/attempts pill button first in row actions

  95. Improved

    Redesign assignment grading page (+ submission-time fact tile)

    #249
  96. Improved

    Redesign teacher quiz grading page

    #248
  97. Improved

    Redesign student quiz completion summary as a professional results view

    #247
  98. Added

    feat: unarchive action for archived quizzes (with confirmation)

    #246
  99. Improved

    web: show datetime-local editors in local time, not UTC

    #245
  100. Improved

    web: add quizzes to a set via multi-select (match assignment sets)

    #244
  101. Improved

    Quizzes: quiz sets (best-of / average bundles)

    #243
  102. Improved

    Quizzes: tester schedules (staggered availability)

    #242
  103. Improved

    Assignments: cover-sheet briefing for the not-open-yet student view

    #241
  104. Improved

    Quizzes: don't let a stale attempt hijack the not-yet-started briefing

    #240
  105. Improved

    Quizzes: redesign student pre-start view as an assessment briefing

    #239
  106. Improved

    Attendance: daily cron auto-closes sessions left open over 24h

    #238
  107. Improved

    Students: hide invitation code when all codes are expired/invalid

    #237
  108. Improved

    Performance + Manage + Alerts: finish the back-office design sweep (#236)

    #236
  109. Improved

    Assessment + Engagement: unify list pages on the section header (#235)

    #235
  110. Improved

    Learn pages: redesign reading materials + presentations (#234)

    #234
  111. Improved

    Course pages: shared masthead for overview/syllabus/modules (#233)

    #233
  112. Improved

    Dashboard: redesign all three role dashboards (#232)

    #232
  113. Improved

    Admin: redesign the courses page (#231)

    #231
  114. Improved

    Web: extend the editorial system to the rest of the public surface (#230)

    #230
  115. Improved

    Web: editorial redesign of homepage, features, and auth pages (#229)

    #229
  116. Improved

    Assignments: align late-penalty form section + show the rule to students (#228)

    #228
  117. Improved

    Assignments: redesign form + late-submission penalty policy (#227)

    #227
  118. Improved

    Modules: compact content chips — icon + count, name on hover (#226)

    #226
  119. Improved

    Assignments: grey out the submission section once the window closes (#225)

    #225
  120. Improved

    Assignments: clear "deadline passed" notice when late submission is off (#224)

    #224
  121. Improved

    Assignments: allow late submission past the deadline (#223)

    #223
  122. Improved

    Attendance: self-sign opens 5 minutes before session start

    #222
  123. Improved

    Uploads: allow Excel (.xls/.xlsx) and CSV

    #221
  124. Improved

    Attendance: let teachers edit a session

    #220
  125. Improved

    Course export: delete ZIPs after 72h and surface the policy

    #219
  126. Improved

    Auth: refresh access token and retry on 401 (fixes spurious 401s)

    #218
  127. Improved

    Gamma: allow generating from materials OR instructions alone

    #217
  128. Improved

    Course export: async ZIP of materials + gradable items, emailed link

    #216
  129. Improved

    Assignments list: shrink-0 on status + move icons so sizes never diverge

    #215
  130. Improved

    Assignments list: match status + move-to-module icons to action-icon size

    #214
  131. Fixed

    Fix stale set member count after grouping assignments

    #213
  132. Improved

    Manage sets dialog: widen and keep each set on one row

    #212
  133. Improved

    Assignment sets: set up via multi-select on the Assignments page

    #211
  134. Improved

    Assignment sets: average / best-of roll-up that feeds a category

    #210
  135. Improved

    Course settings: term + start/end dates on one row

    #209
  136. Improved

    Course home: time-based progress bar from start/end dates

    #208
  137. Improved

    Teacher course home: grading-progress bar under the title card

    #207
  138. Improved

    Course home: progress bar under the title card

    #206

May 2026

  1. Improved

    Assignments: search box (title + module)

    #205
  2. Improved

    Assignments: confirm before archive / unarchive

    #204
  3. Improved

    Assignments: teacher action to unarchive an archived assignment

    #203
  4. Improved

    Finalize legal pages for publication

    #202
  5. Improved

    Student unsubmit + order grading list by submission status

    #201
  6. Improved

    Final grade: exclude not-yet-started attendance sessions

    #200
  7. Improved

    Gradebook redesign + posted-only final grades (and FERPA review)

    #199
  8. Improved

    Public changelog page generated from git history

    #198
  9. Improved

    Roster: richer password-reset dialogs (student info, expiry, color)

    #197
  10. Improved

    Student Modules: add 'to do & upcoming' status panel

    #196
  11. Improved

    Roster: confirm before sending a student password reset link

    #195
  12. Improved

    Password reset: self-service + admin/teacher-initiated

    #194
  13. Fixed

    Fix: group submit no longer 409s "conflict with another change"

    #193
  14. Improved

    Submissions: multiple files + visible "what I submitted"

    #192
  15. Improved

    Submissions: grade group assignments as one unit

    #191
  16. Improved

    Modules: per-item pending tasks instead of aggregate counts

    #190
  17. Fixed

    Fix: language menu background renders transparent

    #189
  18. Added

    Add French locale + click-to-open language picker

    #188
  19. Improved

    i18n: localize ContactPage + DataRequests form UI

    #187
  20. Improved

    Alerts: group by student by default

    #186
  21. Improved

    Teacher Alerts: collapsible rows + type filter + course scope note

    #185
  22. Improved

    Attendance: let teachers edit records on closed sessions

    #184
  23. Improved

    Disable Generate-with-AI button on course Overview

    #183
  24. Improved

    Attendance: default to absent; drop the Pending state + filter

    #182
  25. Improved

    Attendance: clickable status chips filter the roster

    #181
  26. Improved

    Attendance: real confirm dialog for delete-session

    #180
  27. Improved

    Attendance: pending default + chronological session order

    #179
  28. Improved

    Invitations: show "Expired" once expiresAt has passed

    #178
  29. Improved

    Wire capacity hint into TeacherGroupSetsPage too

    #177
  30. Improved

    Group-set dialogs: real-time capacity hint

    #176
  31. Improved

    SideNav: count badges on more per-course items

    #175
  32. Improved

    SideNav: outlined-square badge with active-students count

    #174
  33. Fixed

    Fix: each group's assign picker owns its own selection

    #173
  34. Improved

    Students page: collapsible groups in the grouped view

    #172
  35. Improved

    Group-set resize + per-group capacity override

    #171
  36. Improved

    Attendance: redesign roster section (compact, professional)

    #170
  37. Improved

    Student account hard-delete (admin + teacher)

    #169
  38. Improved

    Match submission badge height to action icon (h-8)

    #167
  39. Fixed

    Fix Assignments submission count: exclude drafts, dedupe by group

    #166
  40. Improved

    Split-pill ungraded/total badge next to view-submissions icon

    #165
  41. Improved

    Outline ungraded/total badge on Assignments view-submissions action

    #164
  42. Improved

    Remove API tokens link from top nav

    #163
  43. Added

    Add Modify-student dialog to Students page (name + student#)

    #162
  44. Fixed

    Fix Stay-signed-in race that logged the user out anyway

    #161
  45. Improved

    Onsite messaging V1

    #160
  46. Added

    Add client-side pagination to Students roster (teacher + student)

    #159