Commit Graph
100 Commits
Author SHA1 Message Date
Rotimi Best cde7b501d1 docs: invite students guide 2026-06-08 00:47:33 +01:00
Rotimi Best 82d2ba4014 chore: increase the cache for mutable manifest 2026-06-08 00:47:08 +01:00
Rotimi Best e1e56a70be fix: courseNo vs coursesNo mismatch on course save 2026-06-08 00:45:00 +01:00
Rotimi Best 5f07184b29 fix: NoSuchKey, The specified key does not exist. 2026-06-07 23:47:14 +01:00
Rotimi Best d7225a77b2 chore: move templates images to cdn 2026-06-07 23:23:27 +01:00
Rotimi Best 03dcf812a5 feat: fit ai chat trigger to center of page
- Updated the CSS classes for the AI assistant bar to adjust positioning based on the new side panel width variable.
- Introduced a new `onWidthPreview` prop in the SidePanelRail component to handle live resizing and update the side panel width dynamically.
- Added width state management in the SidePanelStore to ensure proper width handling during panel interactions.
- Improved layout handling in the course layout component to accommodate the new side panel width adjustments.
2026-06-07 23:21:19 +01:00
Rotimi Best 4eee866e85 feat: make video uploads faster
- Implemented a new endpoint to delete failed manual p1080 renditions, restoring the master manifest and updating metadata.
- Enhanced the HLS upload process with better error handling and cleanup for aborted uploads.
- Introduced tests for HLS encoder functionality to ensure correct selection of rungs based on video source properties.
- Updated video upload component to manage reserved asset IDs and perform cleanup on abo
2026-06-07 23:20:42 +01:00
Rotimi Best 27a612e92f feat: let AI chat read lesson video transcripts on demand
Add get_lesson_transcript (teacher) and read_lesson_transcript (student)
tools that fetch a lesson's uploaded-video transcript from media_transcript
by the video assetIds. The agents call them only when a question is about
the video's spoken content, so text-only chats keep a cacheable prefix.
2026-06-07 22:30:12 +01:00
Rotimi Best 4221f93584 feat: enhance HLS upload process with concurrency control and presign batching
- Introduced a concurrency gate to limit parallel uploads, preventing R2 overload.
- Implemented batching for presign requests, allowing up to 1500 paths per request.
- Added content type mapping for HLS uploads to ensure correct MIME types.
- Refactored upload logic to utilize the new concurrency and presign features, improving reliability and performance.
2026-06-07 21:17:47 +01:00
Rotimi Best 48ce4d4d64 chore: update queue dashboard authentication and improve course component handling
- Replaced email/token-based authentication with HTTP Basic Auth for the queue dashboard in production.
- Updated course components to use courseId instead of courseSlug for better consistency.
- Adjusted role-based security checks to utilize isStudentExperience for conditional rendering.
- Enhanced view-as-student functionality to redirect correctly based on courseId.
2026-06-07 20:32:37 +01:00
Rotimi Best 3561dc0fda fix: undo org search from tenant-router 2026-06-07 19:35:24 +01:00
Rotimi Best 2f1b6376ff ci: use pnpm/action-setup@v4 so CI reads the pinned pnpm version
The openapi/storybook/embeds workflows pinned pnpm 8 and cypress pinned
pnpm 6 via action-setup@v2. The repo's lockfile is lockfileVersion 9.0
(written by the pinned packageManager pnpm@10.19.0), which pnpm 8/6 cannot
read — it ignored the lockfile and --frozen-lockfile failed with
ERR_PNPM_LOCKFILE_CONFIG_MISMATCH. Drop the explicit version and let
action-setup@v4 resolve pnpm from the packageManager field, matching the
already-working publish-mcp / publish-course-app workflows.
2026-06-07 19:05:15 +01:00
Rotimi Best 59164c8cee chore: untrack .claude local artifacts
.claude/skills is now a symlink to the repo-root skills/ dir, so the
duplicate tracked copy under .claude/skills/ no longer exists on disk and
showed as a permanent deletion. Drop it from tracking and gitignore the
symlink plus the scheduled_tasks.lock runtime file.
2026-06-07 18:57:45 +01:00
Rotimi Best fa6ca75f67 fix(core): declare moved deps (redis, pdf-parse, mammoth, jszip) in @cio/core
These were used by the redis client and document-parsing services that moved
from apps/api into packages/core, but the dependencies stayed in apps/api,
breaking the @cio/core build with TS2307 module-not-found errors. Move them
(and @types/pdf-parse) to where the code now lives.
2026-06-07 18:50:06 +01:00
Rotimi Best d5b07d356e feat: HLS streaming, transcripts, agent course generation & landing-page course previews (#663)
New features:
- HLS video encoding/streaming (hls routes, hls-encoder) and a media
  transcripts pipeline (transcripts route + media-transcript queries)
- AI assistant chat vs. run model: agent-course-generation worker/queue,
  run-monitor pane, chat-changes card, content ask-ai bar
- Per-theme course-page previews across org landing-page themes (bold,
  classic, corporate, editorial, etc.) with a shared course token/component set
- View-as-student mode and login-link / link-invite invite flows

Refactor:
- Extract packages/core consolidating config (env, storage, dashboard-url),
  services and utils previously duplicated under apps/api/src/config
- Remove legacy agent service modules (chat-tools, chat-context,
  context-window, document, fetch-url, lesson-content)
- Relax Cross-Origin-Resource-Policy to allow cross-origin media embedding
- Add format script to tenant-router so turbo run format covers it
2026-06-07 18:43:05 +01:00
Rotimi Best a2e70779a0 fix: update Dockerfile to change port and memory settings 2026-06-06 09:24:19 +01:00
Rotimi Best 9f5c117fa8 docs: add walkthrough widget PRD (#661) 2026-05-29 14:22:04 +01:00
Rotimi Best 7ee544230f fix(dashboard): proxy API auth on custom domains 2026-05-28 08:57:28 +01:00
Rotimi Best 730bcee553 fix: send memberid on checkout 2026-05-27 20:44:56 +01:00
Rotimi Best 607377f191 fix: broken upgrade 2026-05-27 18:35:32 +01:00
Rotimi Best 591a56af2d fix: keep english terms in other translations 2026-05-27 15:28:19 +01:00
Rotimi Best a6331f0d6a fix: update translations 2026-05-27 15:17:05 +01:00
Rotimi Best d855b45eda fix: placeholder names inside {…} were translated 2026-05-27 14:57:21 +01:00
Rotimi Best 9082cbebf4 chore: add more agent upcoming features 2026-05-27 11:55:40 +01:00
Rotimi BestandCursor f0ef45fd67 fix(api): stop SSR org lookups from hitting the global rate limit
Resolve sessions before rate limiting so keys are per-user, exempt trusted server API key calls and get-session, and raise the GET /organization budget for layout loads.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 11:44:57 +01:00
Rotimi Best 78ab13f54b feat: preview templates, thumbnail features, 2 new org templates 2026-05-23 12:24:57 +01:00
Rotimi Best 4fdd4115b9 chore: marketing updates and video player improvement 2026-05-22 01:28:18 +01:00
Rotimi Best f0fad9512c chore: force pnpm i in upload api spec workflow 2026-05-21 22:59:55 +01:00
Rotimi Best 594bb615d8 debug: reorder comment 2026-05-21 22:34:11 +01:00
Rotimi Best e7bb0f2f26 debug: trigger ci 2026-05-21 22:30:51 +01:00
Rotimi Best 30e5f9cd54 chore: auto compact chat 2026-05-21 19:46:17 +01:00
Rotimi Best 4e4119d597 fix(agent): base64-envelope /agent/* bodies to bypass Render CF WAF 2026-05-21 19:43:23 +01:00
Rotimi Best a4d86dc3c2 debug: update proxy logs 2026-05-21 18:06:25 +01:00
Rotimi Best fbbce6b7c0 fix: ci fixes, tenant router debug, select width improvement 2026-05-21 17:52:28 +01:00
Rotimi Best 0657c32c97 feat: connect sentry to dash and api 2026-05-21 17:18:08 +01:00
Rotimi Best 25a4b1fd19 chore: improve width size on community ask page. 2026-05-21 16:40:05 +01:00
Rotimi Best 6f84002fa5 chore: community page fixes. 2026-05-21 16:38:35 +01:00
Rotimi Best 9435490c43 chore: improve posthog session identificaion 2026-05-21 15:08:40 +01:00
Rotimi Best 9043bede59 chore: handle case where theme is undefined 2026-05-21 14:11:30 +01:00
Rotimi Best ec92fc5083 fix: approximated not verifying domain, change request type for /agents
route
2026-05-21 14:05:37 +01:00
Rotimi Best c1bbd02f8e chore: improve ui experience of custom domain setup 2026-05-21 11:30:12 +01:00
Rotimi Best 61cbb258ea chore: move lms to myclassroomio.com and use approximated for custom
domain
2026-05-21 11:29:47 +01:00
Rotimi Best c090b7b4d6 fix: truncate long error message in ai chat 2026-05-21 11:02:46 +01:00
Rotimi Best c875f7bf86 chore: use primary color for sidebar active state 2026-05-21 10:42:56 +01:00
Rotimi Best 29b02c0011 chore: auto enroll, custom domain improvement, course pricing style improv. 2026-05-20 21:58:42 +01:00
Rotimi Best 38c0c0b4f0 feat: enhance tenant provisioning hook to support OAuth state resolution for organization enrollment 2026-05-20 17:12:00 +01:00
Rotimi Best f82e4ff4c4 debug: tenant provisioning hook 2026-05-20 16:50:07 +01:00
Rotimi Best f7570d9a21 refactor: remove request logging from createProfileHook for cleaner output 2026-05-20 16:35:32 +01:00
Rotimi Best 266f9f2b22 chore: simplify workflow for self hosters. 2026-05-20 16:33:11 +01:00
Rotimi Best da71598e4a feat: add console logging for layout data in dashboard 2026-05-20 16:01:07 +01:00
Rotimi Best cbf1218186 chore: move orgRole back to session 2026-05-20 15:58:43 +01:00
Rotimi Best 4e52a618e5 feat: add view transcription to video card in edit mode 2026-05-20 15:57:52 +01:00
Rotimi Best a4bd49eb85 feat: implement OAuth handoff mechanism with Redis for secure token management and payload storage 2026-05-20 14:32:39 +01:00
Rotimi Best fe455dd3f7 fix: users can retriger transcription 2026-05-20 14:07:45 +01:00
Rotimi Best e66a8d8441 refactor: enhance logging in auth handler to include detailed response information for better debugging 2026-05-20 13:51:23 +01:00
Rotimi Best f7d6f81901 chore: move orgRoles from session to Redis 2026-05-20 11:52:49 +01:00
Rotimi Best 31f8636e7e refactor: remove unnecessary logging in app.ts 2026-05-20 09:30:35 +01:00
Rotimi Best fdec206100 refactor: reorganize imports in app.ts for better structure and clarity; enhance auth request handling with detailed logging 2026-05-20 09:20:23 +01:00
Rotimi Best 94c75779bf refactor: enhance API routing to include direct handling of /api/auth/* for improved auth flow 2026-05-20 09:04:55 +01:00
Rotimi Best 71fbb2101c feat: auto enroll into org as student and oauth improvements 2026-05-20 08:32:56 +01:00
Rotimi Best d21d89f250 refactor: simplify API request URL handling by utilizing the full URL from the input directly 2026-05-20 07:20:09 +01:00
Rotimi Best e97832e6d9 refactor: update API routing to use /proxy prefix for same-origin requests 2026-05-20 07:03:18 +01:00
Rotimi Best 1234fdb8a1 feat: add centralized error handling in hooks.server.ts for improved error logging and debugging 2026-05-20 01:00:17 +01:00
Rotimi Best cf6f24fd40 refactor: improve base URL handling for auth client to support dynamic environments and enhance cookie security 2026-05-20 00:49:39 +01:00
Rotimi Best ae36b87c16 refactor: update API base URL handling to support same-origin requests and enhance auth cookie management 2026-05-20 00:30:25 +01:00
Rotimi Best bad837a4cb feat: add tenant-router Cloudflare Worker with routing for classroomio domains and update dependencies 2026-05-19 23:53:51 +01:00
Rotimi Best 0f388ae0d3 feat: add hosted embed URL functionality and enhance widget embed options with tabbed interface 2026-05-19 16:32:42 +01:00
Rotimi Best eec65283a4 refactor: streamline publicWidgetsRouter definition for improved readability 2026-05-19 11:25:25 +01:00
Rotimi Best 8a07d4d839 refactor: rename and enhance CORS path handling for public API and widgets 2026-05-19 11:23:07 +01:00
Rotimi Best 274acad987 refactor: reorganize imports in auth.ts for better clarity and maintainability 2026-05-19 10:25:08 +01:00
Rotimi Best 35e780b39d feat: enhance CORS handling with public API support and session management 2026-05-19 10:24:18 +01:00
Rotimi Best 917a71ccce feat: support custom domain in TRUSTED_ORIGIN 2026-05-19 09:59:56 +01:00
Rotimi Best 86ebe9ef62 chore: update start script in package.json and adjust Svelte adapter configuration for improved deployment flexibility 2026-05-19 08:15:35 +01:00
Rotimi Best 65962b49d5 chore: remove vitest configuration file and update TypeScript paths in analytics package 2026-05-19 08:00:01 +01:00
Rotimi Best a683ef74b0 chore: add @cio/analytics dependency to dashboard build pipeline 2026-05-19 07:44:26 +01:00
Rotimi Best e1bf0394a8 chore: add css-tree package to api and update pnpm lock file 2026-05-19 07:08:51 +01:00
Rotimi Best 19a1243215 refactor: remove BlurFade component from hero and various sections for cleaner markup and improved performance 2026-05-19 07:02:50 +01:00
Rotimi Best 3562bd570e fix: correct base path in Vite config for documentation 2026-05-19 06:49:16 +01:00
Rotimi Best de53990275 chore: trigger docs build 2026-05-19 06:44:08 +01:00
Rotimi Best bf55f7ce5b feat: implement asset fetching and routing for docs in worker and add server hooks 2026-05-19 05:45:11 +01:00
Rotimi Best 4bcff3813a chore: worker setup for docs 2026-05-19 05:28:50 +01:00
Rotimi Best 6272ab107f refactor: streamline text and title generation model creation by consolidating provider logic 2026-05-19 04:58:47 +01:00
Rotimi Best 1d10b852b5 chore: update website name in wrangler config and refactor compliance seeding logic 2026-05-19 04:51:43 +01:00
Rotimi Best 246f90484e chore: remove CoreFeatures component from index export 2026-05-19 04:45:33 +01:00
Rotimi Best 2f710e1739 chore: remove supabase ci/cd 2026-05-19 04:44:19 +01:00
Rotimi Best 1c08193712 chore: remove unused core-features component and ai-assistant package 2026-05-19 04:43:38 +01:00
Rotimi Best b705e4d42c fix: Object.values missing (TS2550) 2026-05-19 04:39:48 +01:00
Rotimi Best 0048f267e2 fix: deployment errors 2026-05-19 04:32:32 +01:00
Rotimi Best ac3a2c14a7 feat: certificates, landing pages, ai tutor, website update, compliance 2026-05-18 03:47:22 +01:00
Rotimi Best c31ad63955 chore: ai, public course and other ui improvements 2026-05-09 06:05:03 +01:00
Rotimi Best 5717dd8004 feat: widgets and ai chat 2026-04-27 11:40:38 +01:00
Rotimi Best ae1801f85f fix build 2026-04-12 18:26:06 +01:00
Rotimi Best 8ea0ab0a76 Refactor app state management: replace globalStore.isStudent with isOrgStudent across multiple components for improved clarity and consistency. Update related logic to utilize isSelfPacedLikeCourse for self-paced course checks. 2026-04-12 18:07:33 +01:00
Rotimi Best 31cc45a277 update lock file again 2026-04-12 13:26:03 +01:00
Rotimi Best 51d3a397ec update lock file 2026-04-12 10:43:57 +01:00
Rotimi Best d6e812d08b feat: enhance API and middleware functionality: add public API routes, implement program and course member checks, and improve rate limiting for invite acceptance. Update OpenAPI spec generation to focus on public API endpoints and add new middleware for automation key scopes. Include new documentation for lesson AI features and public API tests. 2026-04-12 08:58:41 +01:00
Rotimi Best 5a8f50f67b feat: certification rules, content sanitization, handle draft course updates and reset content, better redis logging 2026-03-30 08:24:55 +01:00
Rotimi Best ff2ad59377 Implement textarea validation for character limits in submission service; enhance user feedback with error messages for minimum and maximum character requirements. Update translations and UI components to support new validation features. 2026-03-29 09:50:24 +01:00
Rotimi Best acccbee110 fix eferenceError: require is not defined in ES module scope. 2026-03-29 00:31:02 +01:00
Rotimi Best 95fcf86e4a Enhance performance logging in course loading process by measuring load times for organization courses and tags API calls; include self-hosted environment variable in logs for better observability. 2026-03-28 23:28:59 +01:00