-
5efd7a38c8
docs: add new engineer onboarding checklist
Rotimi Best
2026-07-21 02:06:06 +01:00
-
a18be030c6
docs(prd): add calendar-invite reuse and internal-audience decisions to workshops PRD
Rotimi Best
2026-07-20 15:32:49 +01:00
-
b398836c04
docs(prd): mark public-courses and reset-student-course-progress as done
Rotimi Best
2026-07-20 01:31:13 +01:00
-
55e6ddd37e
docs(prd): add automated release process PRD
Rotimi Best
2026-07-20 01:21:38 +01:00
-
16803bfa3d
docs(prd): add workshop assessment and certificate (CE mode) to workshops PRD
Rotimi Best
2026-07-20 00:59:53 +01:00
-
8e5d6e4bd9
docs(prd): add workshops PRD
Rotimi Best
2026-07-19 16:44:05 +01:00
-
0f23453f91
fix(api): use admin app URL for teacher auto-enroll email links (#771)


2026-07-19 13:50:12 +01:00
-
e09b3caa8a
fix(i18n): translate untranslated English strings in all locale files (#770)


2026-07-19 12:39:40 +01:00
-
0822f5f5a3
fix(dashboard): course landing page editor section and currency bugs (#768)

Rotimi BestandRotimi Best
2026-07-19 12:09:38 +01:00
-
6c3a982daf
feat(course): auto-enrol button for paid course join requests (#769)

Rotimi BestandRotimi Best
2026-07-19 12:02:11 +01:00
-
634ffeab0f
docs(prd): integration-first revision of forms product PRD
Rotimi Best
2026-07-18 12:17:40 +01:00
-
27229cf8fe
fix: canonical exercise completion, teacher course completion & upsert member fixes (#767)

Rotimi BestandRotimi Best
2026-07-16 22:10:13 +01:00
-
ca3fdd5b6a
fix(dashboard): lesson nav build error and add CI build check (#765)


2026-07-16 12:34:03 +01:00
-
3ef286ed39
fix(dashboard): use learner view for lesson lock empty states (#764)


2026-07-16 11:29:59 +01:00
-
7a867dad45
chore(release): student course progress, email preference table, token auth docs & lesson lock fix (#762)
Rotimi Best
2026-07-16 10:49:01 +01:00
-
-
c35456b821
docs: add token auth guide (#752)
Rotimi Best
2026-07-16 10:22:04 +01:00
-
b7711ffae2
feat(dashboard): show course progress in student sidebar (#761)
Rotimi Best
2026-07-16 10:19:50 +01:00
-
f3d1a885b9
feat(notifications): per-org member email preferences table (#751)


2026-07-16 10:04:28 +01:00
-
9681770270
fix(dashboard): show locked notice instead of teacher empty state on lessons (#760)

Rotimi BestandRotimi Best
2026-07-16 09:56:35 +01:00
-
-
c9b7c79365
fix(billing): downgrade orgs when Polar subscription is revoked (#759)
Rotimi Best
2026-07-16 00:57:31 +01:00
-
3980aa0a9b
feat(dashboard): restyle lesson transcript and summarize actions (#758)

Rotimi BestandRotimi Best
2026-07-15 22:28:40 +01:00
-
656fa4fa7e
feat(dashboard): add content page options menu (#757)

Rotimi BestandRotimi Best
2026-07-15 22:28:23 +01:00
-
bfafc685e0
fix(exercise): persist completion policy and improve dev build workflow (#754)

Rotimi BestandRotimi Best
2026-07-15 03:26:56 +01:00
-
fdc19aac41
feat(dashboard): add Show transcript and Summarize lesson buttons in lesson view (#748)


2026-07-13 11:18:28 +01:00
-
3fbfa4b09f
feat(website): update AI builds section headline to company knowledge positioning (#750)


2026-07-13 10:53:21 +01:00
-
fa060f5f6d
feat(notifications): email notification preferences (#747)

Rotimi BestandRotimi Best
2026-07-13 10:33:19 +01:00
-
14db5363e7
docs: fix railway.mdx steps failing
Rotimi Best
2026-07-13 02:18:42 +01:00
-
5e8188fbd3
fix: replace stale program references (#749)
Rotimi Best
2026-07-13 02:09:57 +01:00
-
484e4fb674
docs: replace Railway and Coolify screenshots with compressed WebP
Rotimi Best
2026-07-13 01:40:27 +01:00
-
faa8eae011
docs: rename programs references to cohorts
Rotimi Best
2026-07-13 01:09:01 +01:00
-
54fa0875c8
docs: prd and pp updates
Rotimi Best
2026-07-13 01:02:15 +01:00
-
d1deb1be22
fix(dashboard): improve AI chat word wrapping readability (#746)


2026-07-13 00:24:23 +01:00
-
2815a61437
fix(dashboard): fix instructor avatar upload on course landing page (#745)
Rotimi Best
2026-07-13 00:01:11 +01:00
-
7439f1f510
fix(dashboard): keep enroll join button visible with loading state (#744)
Rotimi Best
2026-07-12 23:21:23 +01:00
-
8bd07a524c
fix(org): auto-enroll idempotency, signup enrollment, and pending invite gate (#729)


2026-07-12 22:46:44 +01:00
-
7eaff0040c
fix(dashboard): make course list rows real links like cards (#743)

Rotimi BestandRotimi Best
2026-07-12 22:46:25 +01:00
-
7605395f44
fix(dashboard): respect defaultMode light and track=false for color mode (#742)

Rotimi BestandRotimi Best
2026-07-12 22:07:36 +01:00
-
bce0f582ce
fix(dashboard): redirect to course start after auto-enroll (#741)

Rotimi BestandRotimi Best
2026-07-12 22:06:40 +01:00
-
8bed9f6b4e
refactor(billing): system email + single-query backfill for the student cap (#735)
Rotimi Best
2026-07-12 20:16:12 +01:00
-
7392be04d7
fix(dashboard): stop rendering mode-watcher init script as visible page text (#740)


2026-07-12 18:28:35 +01:00
-
8288f157b3
fix(email): include course name in student welcome subject (#739)


2026-07-12 18:04:07 +01:00
-
51f90bf450
fix(dashboard): make upgrade plan modal mobile responsive (#736)


2026-07-12 17:54:11 +01:00
-
877b45b1a3
fix(dashboard): honor sidebar theme preference on all routes (#738)


2026-07-12 17:52:23 +01:00
-
46feccd0fd
fix(dashboard): restore paid course payment modal on landing page (#737)


2026-07-12 12:22:53 +01:00
-
fd8bec3e70
feat(billing): enforce free-plan student cap across the app (#733)
Rotimi Best
2026-07-12 11:33:04 +01:00
-
0b5247bed3
fix(org): route admin and tutor invites to app domain (#731)
Rotimi Best
2026-07-12 09:16:39 +01:00
-
f181bb483a
fix(website): cache GitHub stars on server and show in nav (#734)

Rotimi BestandRotimi Best
2026-07-12 09:14:55 +01:00
-
c03c08fc84
fix(email): make team org invites more transactional (#732)


2026-07-11 22:22:36 +01:00
-
1a9c240501
fix(website): cache GitHub stars on server for 3 hours (#730)


2026-07-11 21:31:25 +01:00
-
ce0dd376e6
fix(dashboard): respect URL tenant org for multi-org students (#727)


2026-07-11 09:17:45 +01:00
-
0836d9b5bb
refactor(z-index): introduce a shared named z-index scale (#723)


2026-07-11 08:25:11 +01:00
-
c0f82d9573
fix(auth): sync profile email verification with auth user (#726)


2026-07-11 06:38:28 +01:00
-
2fb6b1c477
fix(auth): strip internal port from OAuth redirects on BYOD domains (#728)


2026-07-11 06:17:26 +01:00
-
3eb5e1268d
fix(dashboard): stop enroll effect loop and duplicate verify emails (#721)
Rotimi Best
2026-07-10 16:05:30 +01:00
-
-
e4406481d6
fix(dashboard): stop enroll effect loop and duplicate verify emails

Cursor AgentandRotimi Best
2026-07-10 07:53:03 +00:00
-
-
e04d024a3a
fix(sidebar): scope elevated mobile z-index to course sidebar (#720)
Rotimi Best
2026-07-10 08:43:37 +01:00
-
-
b888725125
fix(sidebar): scope elevated mobile z-index to course sidebar

Cursor AgentandRotimi Best
2026-07-10 07:36:06 +00:00
-
-
035d976d14
fix(dashboard): enroll verify flow and org-aware verification email (#718)
Rotimi Best
2026-07-10 06:59:52 +01:00
-
-
9cedaf8153
fix(dashboard): address PR feedback on enroll load and copy

Cursor AgentandRotimi Best
2026-07-10 05:51:36 +00:00
-
893681de3e
fix(sidebar): raise mobile sidebar above sticky lesson headers (#719)
Rotimi Best
2026-07-10 06:19:37 +01:00
-
-
553c126e3c
fix(sidebar): raise mobile sidebar above sticky lesson headers

Cursor AgentandRotimi Best
2026-07-10 05:15:39 +00:00
-
daae6c1d40
fix(course): keep lesson header below mobile sidebar

Cursor AgentandRotimi Best
2026-07-10 05:12:32 +00:00
-
-
5de1f51e76
fix: address PR review comments on enroll and verify email

Cursor AgentandRotimi Best
2026-07-10 04:51:30 +00:00
-
a6d06f356f
feat(email): make verify-email org-aware like other transactional mail

Cursor AgentandRotimi Best
2026-07-10 04:22:16 +00:00
-
f262a092ed
fix(dashboard): keep unverified users on enroll page after join

Cursor AgentandRotimi Best
2026-07-10 04:18:40 +00:00
-
-
be0085f090
fix(dashboard): save validation feedback, public site light mode, global verify modal (#716)


2026-07-10 01:55:13 +01:00
-
35f5216839
fix(org): favicon fallback, OG logo styling, and Discord embed CDN URLs (#714)


2026-07-09 13:38:49 +01:00
-
bd2585f8fd
docs(self-hosted): rework Railway + Coolify self-hosting guides with walkthroughs and explicit env vars (#700)
Abdulmuizz Hamzat
2026-07-09 10:01:24 +01:00
-
22a3e6484b
fix(org): show org logo for favicon and OG image (#713)


2026-07-08 03:28:38 +01:00
-
3d15bc0a01
fix(org): OG redesign, public meta URLs, and org-site meta copy (#712)


2026-07-07 23:33:48 +01:00
-
b8fca607aa
feat(org): dynamic open graph images for school sites (#709)


2026-07-07 22:15:11 +01:00
-
af95c6280c
fix(dashboard): prevent CDN caching of HTML pages to fix stale builds after deploy
Rotimi Best
2026-07-07 21:13:43 +01:00
-
2e402efa78
chore(ci): publish
latest from main and retire the edge tag (#711)
Abdulmuizz Hamzat
2026-07-07 12:59:33 +01:00
-
e8181b296b
chore(dashboard): add SVG logo variants alongside existing PNGs
Rotimi Best
2026-07-07 07:17:11 +01:00
-
bce38aa530
fix(dashboard): show course cards in landing page settings preview (#697)

Rotimi BestandRotimi Best
2026-07-06 20:51:17 +01:00
-
8a22ee60bc
fix(website): restore dotted hero backgrounds on PageHeader (#705)


2026-07-02 13:20:14 +01:00
-
0ed0e3864d
fix(api): return Zod validation errors from public API routes (#708)


2026-07-02 12:56:58 +01:00
-
a337363965
fix(ui): respect iframe width and height in org landing embed section (#706)


2026-07-02 12:39:20 +01:00
-
1ec0c34ba7
fix(dashboard): use default highlighting for API quick-start snippets (#707)


2026-07-02 12:21:22 +01:00
-
efdcfba68d
feat(api): purge Cloudflare CDN before and after OpenAPI spec upload (#704)


2026-07-02 12:11:00 +01:00
-
ec61bfe7d9
feat(cohorts): rename Programs to Cohorts with data migration (#694)


2026-07-02 12:10:31 +01:00
-
fe9f8c441f
feat(api): public API plan gating, docs auth, and dashboard snippets (#701)


2026-07-02 11:24:33 +01:00
-
447e54b1f4
chore(db): add script to fix landing page #courses links and Programs labels
Rotimi Best
2026-07-01 10:38:37 +01:00
-
78a2b85ad3
feat(courses): add type, search, and pricing filters to org landing page
Rotimi Best
2026-07-01 10:36:53 +01:00
-
8d2f2a6d2d
fix(landing-page): render iframe embed codes instead of stripping them
Rotimi Best
2026-06-30 09:24:43 +01:00
-
c72558f8f1
fix(course): treat null isUnlocked as unlocked in progression logic
Rotimi Best
2026-06-30 09:16:50 +01:00
-
a61942feb9
feat: configurable upload file size limits via .env (#695)
Rotimi Best
2026-06-29 12:48:51 +01:00
-
65420320e7
feat(ai-assistant): odt support, document-to-lesson attach, upload UX fixes
Rotimi Best
2026-06-29 12:28:58 +01:00
-
773fc873c2
feat(lms): add student certificates page and sidebar nav (#696)
Rotimi Best
2026-06-29 11:49:27 +01:00
-
d242215277
docs: prd for public course comments
Rotimi Best
2026-06-29 07:22:45 +01:00
-
8c14bfad45
fix(exercise): show correct submitted state and real questions for students
Rotimi Best
2026-06-29 07:18:58 +01:00
-
513ab5e81f
fix(hls): scope cookie name per-asset to prevent multi-video 403s
Rotimi Best
2026-06-29 02:09:50 +01:00
-
a41cc38b7b
fix(ui): deduplicate seek-blocked notification in video player
Rotimi Best
2026-06-29 01:36:34 +01:00
-
55abf982ed
fix(question-types): realign registry ids with the question_type table
Rotimi Best
2026-06-29 01:07:02 +01:00
-
eb4cd22ac5
chore(db): add migration dropping position from asset_usages unique key
Rotimi Best
2026-06-28 23:08:17 +01:00
-
07491ae609
feat(media): paginate library video picker with total count
Rotimi Best
2026-06-28 23:06:08 +01:00
-
f18e5600f6
fix(media): prevent attaching an asset to a target twice
Rotimi Best
2026-06-28 23:05:57 +01:00
-
42231b3ee1
fix: filter library videos in lesson with videos in the current lesson
Rotimi Best
2026-06-28 22:21:05 +01:00
-
202fd30445
fix: enable adding video from library to another lesson
Rotimi Best
2026-06-28 21:41:53 +01:00
-
47b85a9697
Merge branch 'main' of https://github.com/classroomio/classroomio
Rotimi Best
2026-06-28 13:19:37 +01:00
-