Assignments improvements and bug fixes
This release includes 4 database migration(s). Back up your database before upgrading.
a2b3c4d5e6f7_unique_assignment_submission_rows.pye7f8a9b0c1d2_add_pass_threshold_to_assignment.pyf1a2b3c4d5e6_unique_certificateuser_user_certification.pyr5s6t7u8v9w0_add_resource_activity_subtype.py
Features
- feat(email): org-scope and white-label the account welcome email0dd130d8
- feat: add language trnaslations for paste from clipboard button text6d5d7681
- feat(docs): reference v2 — auth rights, search/SEO/llms, playground upgrades, docs-aligned layoutafcb75da
- feat(docs): add full API reference generated from the live OpenAPI speca22450fb
- feat(scorm): large-package upload with progress, parallel S3 transfer, streaming playback2f445c67
- feat(web): show an upgrade prompt when a plan limit is reached95f9106f
- feat: add paste from clipboard button to the Course Thumbnail input in the Create Course dialog59de6370
- feat(api): harden free-tier abuse surfaces against invite-spam relaydeb0a3fc
- feat(activities): show unpublished courses + per-type counts in resource picker21d87bf4
- feat(activities): add Resource activity + SCORM upload picker cardfd04e5c2
- feat(audio): add "Speak" monologue mode and a length selector64a7f1e3
- feat(audio): generate a podcast discussion script from a topic, then narrate it5205436e
- feat: activation + monetization improvements and AI podcast/audio generationbe516976
- feat: use i18n strings for course mobile view49a579c8
- feat(scorm): support 5GB SCORM uploads (proxy timeouts + UI copy)be309799
- Merge pull request #952 from learnhouse/feat/welcome-email-org-whitelabelb149bd4e
- Merge pull request #935 from SenithVijayantha/feat/language_translations_for_paste_from_clipboard_button36a22884
- Merge pull request #934 from learnhouse/feat/docs-api-reference5b792a0e
- Merge pull request #932 from SenithVijayantha/feat/paste_img_from_clipboard_to_course_thumbnail_inpute1577942
- Merge pull request #933 from learnhouse/feat/scorm-large-package-uploadba5935c3
- Merge pull request #926 from learnhouse/feat/scorm-and-resource-activitieseb717765
- Merge pull request #921 from learnhouse/feat/activation-and-monetization-improvements351c1d7d
Fixes
- fix(security): sanitize dynamic URLs at href/redirect sinks451fb2d3
- fix(security): validate course export archive path before serving1e9ff315
- fix(security): bump python base image to 3.14.6-slim-bookwormd0fe96ef
- fix(security): patch high-severity transitive advisoriesc40f71b9
- fix(deps): update @react-email/components to v1 (1.0.12)efc097d3
- fix(deps): update loops to v7e2716363
- fix(deps): update resend to v6dc0b7bf3
- fix(deps): update workos to v9 (9.1.0)53c2ea22
- fix(deps): update dependency pydantic-ai-slim to v2d1b13865
- fix(ci): reconcile web lockfiles and de-flake account-age tests6ab92388
- fix(deps): update all non-major dependencies4e787ad1
- fix(web): certificate rendering, learner name & completion, plan gating, i18n9b44e48c
- fix(web): assignment learner & grading UXa2cdace2
- fix(assignments): admin completion reporting, AI-gen authorization & webhook events894a580a
- fix(certifications): completion integrity & certificate lifecyclee0aea375
- fix(security): restrict assignment submission files to owner or instructor89aa0f70
- fix(assignments): grading engine correctness & submission integritydea18d93
- fix(deps): update dependency shiki to v4702e7c83
- fix(billing): harden the Stripe plan-write path against silent upgrade dropseed8a168
- fix(courses): derive pasted thumbnail extension from clipboard image type2911f032
- fix(api): enforce plan/usage limits that were silently bypassed73b30a1b
- fix(courses): make Share Course links absolute (#923)36ac3adc
- fix(activities): allow same-origin framing for resource routes14577ca8
- fix(activities): typecheck + lint on changed files964c5d89
- fix(audio): stop generated scripts being cut off mid-sentencee2bd1987
- fix: enforce member limit on the invite path so the upgrade gate works223bc070
- fix(api): allow API tokens on /usergroups with org-boundary guardsb1c44aad
- fix(assignments): scope task submission uuid updates65c719e0
- fix: use two ampersands33267b94
- fix(scorm): allow same-origin framing of SCORM content34a6a291
- Merge pull request #954 from learnhouse/fix/security-hardeningd7002ec7
- Merge pull request #946 from learnhouse/renovate/major-react-email-monorepo6f1974ba
- Merge pull request #947 from learnhouse/renovate/loops-7.xae6a0f18
- Merge pull request #949 from learnhouse/renovate/resend-6.xedca1075
- Merge pull request #951 from learnhouse/renovate/workos-9.xe639432f
- Merge pull request #948 from learnhouse/renovate/pydantic-ai-slim-2.x82f0acee
- Merge pull request #940 from learnhouse/renovate/all-minor-patchd8bf2fee
- Merge pull request #938 from learnhouse/fix/learner-onboarding-blockers3d636d07
- Merge pull request #950 from learnhouse/renovate/major-shiki-monorepo87176c36
- Merge pull request #937 from learnhouse/fix/billing-plan-write-hardeningaa8bee1e
- Merge pull request #927 from learnhouse/fix/headless-usergroups-api-tokens16539e75
- Merge pull request #925 from gutocarollo/fix/assignment-task-submission-uuid-scope8be60533
- Merge pull request #920 from learnhouse/feat/scorm-5gb-timeouts-and-copy07ea6876
Refactoring
Documentation
- docs: document AI audio/podcast generation and media-model env varsdd64c708
Maintenance
- chore(deps): update dependency @types/node to v26d52397fa
- chore(renovate): run dependency updates weekly instead of biweekly52b31fc5
- chore(deps): update actions/upload-artifact action to v7c3fdf85c
- chore(deps): update actions/setup-node action to v71b21ba86
- chore(deps): update actions/checkout action to v793cc561b
- chore: hide hint and reference file when empty on student activity5a43c93d
- chore: show Get Started on mobile for unauthenticated users9b000334
- Merge pull request #944 from learnhouse/renovate/node-26.x60fb7934
- Merge pull request #953 from learnhouse/chore/renovate-weekly-schedulebccb95a0
- Merge pull request #942 from learnhouse/renovate/actions-setup-node-7.xba72aa54
- Merge pull request #941 from learnhouse/renovate/actions-checkout-7.xbae5d635
- Merge pull request #943 from learnhouse/renovate/major-github-artifact-actionsa855aa85
- Merge pull request #922 from rzmk/rzmk/hide-on-activitya66eea34
- Merge pull request #914 from rzmk/get-started-mobile2ce22930
npx learnhouse update --to 1.3.2