1.3.2
Assignments improvements and bug fixes
✨ Features
- Merge pull request #952 from learnhouse/feat/welcome-email-org-whitelabel (
b149bd4e) - feat(email): org-scope and white-label the account welcome email (
0dd130d8) - Merge pull request #935 from SenithVijayantha/feat/language_translations_for_paste_from_clipboard_button (
36a22884) - feat: add language trnaslations for paste from clipboard button text (
6d5d7681) - Merge pull request #934 from learnhouse/feat/docs-api-reference (
5b792a0e) - feat(docs): reference v2 — auth rights, search/SEO/llms, playground upgrades, docs-aligned layout (
afcb75da) - feat(docs): add full API reference generated from the live OpenAPI spec (
a22450fb) - Merge pull request #932 from SenithVijayantha/feat/paste_img_from_clipboard_to_course_thumbnail_input (
e1577942) - Merge pull request #933 from learnhouse/feat/scorm-large-package-upload (
ba5935c3) - feat(scorm): large-package upload with progress, parallel S3 transfer, streaming playback (
2f445c67) - feat(web): show an upgrade prompt when a plan limit is reached (
95f9106f) - feat: add paste from clipboard button to the Course Thumbnail input in the Create Course dialog (
59de6370) - feat(api): harden free-tier abuse surfaces against invite-spam relay (
deb0a3fc) - Merge pull request #926 from learnhouse/feat/scorm-and-resource-activities (
eb717765) - feat(activities): show unpublished courses + per-type counts in resource picker (
21d87bf4) - feat(activities): add Resource activity + SCORM upload picker card (
fd04e5c2) - Merge pull request #921 from learnhouse/feat/activation-and-monetization-improvements (
351c1d7d) - feat(audio): add "Speak" monologue mode and a length selector (
64a7f1e3) - feat(audio): generate a podcast discussion script from a topic, then narrate it (
5205436e) - feat: activation + monetization improvements and AI podcast/audio generation (
be516976) - feat: use i18n strings for course mobile view (
49a579c8) - feat(scorm): support 5GB SCORM uploads (proxy timeouts + UI copy) (
be309799)
🐛 Bug Fixes
- Merge pull request #954 from learnhouse/fix/security-hardening (
d7002ec7) - fix(security): sanitize dynamic URLs at href/redirect sinks (
451fb2d3) - fix(security): validate course export archive path before serving (
1e9ff315) - fix(security): bump python base image to 3.14.6-slim-bookworm (
d0fe96ef) - fix(security): patch high-severity transitive advisories (
c40f71b9) - Merge pull request #946 from learnhouse/renovate/major-react-email-monorepo (
6f1974ba) - fix(deps): update @react-email/components to v1 (1.0.12) (
efc097d3) - Merge pull request #947 from learnhouse/renovate/loops-7.x (
ae6a0f18) - Merge pull request #949 from learnhouse/renovate/resend-6.x (
edca1075) - Merge pull request #951 from learnhouse/renovate/workos-9.x (
e639432f) - fix(deps): update loops to v7 (
e2716363) - fix(deps): update resend to v6 (
dc0b7bf3) - fix(deps): update workos to v9 (9.1.0) (
53c2ea22) - Merge pull request #948 from learnhouse/renovate/pydantic-ai-slim-2.x (
82f0acee) - fix(deps): update dependency pydantic-ai-slim to v2 (
d1b13865) - Merge pull request #940 from learnhouse/renovate/all-minor-patch (
d8bf2fee) - fix(ci): reconcile web lockfiles and de-flake account-age tests (
6ab92388) - fix(deps): update all non-major dependencies (
4e787ad1) - Merge pull request #938 from learnhouse/fix/learner-onboarding-blockers (
3d636d07) - fix(web): certificate rendering, learner name & completion, plan gating, i18n (
9b44e48c) - fix(web): assignment learner & grading UX (
a2cdace2) - fix(assignments): admin completion reporting, AI-gen authorization & webhook events (
894a580a) - fix(certifications): completion integrity & certificate lifecycle (
e0aea375) - fix(security): restrict assignment submission files to owner or instructor (
89aa0f70) - fix(assignments): grading engine correctness & submission integrity (
dea18d93) - Merge pull request #950 from learnhouse/renovate/major-shiki-monorepo (
87176c36) - fix(deps): update dependency shiki to v4 (
702e7c83) - Merge pull request #937 from learnhouse/fix/billing-plan-write-hardening (
aa8bee1e) - fix(billing): harden the Stripe plan-write path against silent upgrade drops (
eed8a168) - fix(courses): derive pasted thumbnail extension from clipboard image type (
2911f032) - fix(api): enforce plan/usage limits that were silently bypassed (
73b30a1b) - fix(courses): make Share Course links absolute (#923) (
36ac3adc) - fix(activities): allow same-origin framing for resource routes (
14577ca8) - fix(activities): typecheck + lint on changed files (
964c5d89) - fix(audio): stop generated scripts being cut off mid-sentence (
e2bd1987) - fix: enforce member limit on the invite path so the upgrade gate works (
223bc070) - Merge pull request #927 from learnhouse/fix/headless-usergroups-api-tokens (
16539e75) - fix(api): allow API tokens on /usergroups with org-boundary guards (
b1c44aad) - Merge pull request #925 from gutocarollo/fix/assignment-task-submission-uuid-scope (
8be60533) - fix(assignments): scope task submission uuid updates (
65c719e0) - fix: use two ampersands (
33267b94) - Merge pull request #920 from learnhouse/feat/scorm-5gb-timeouts-and-copy (
07ea6876) - fix(scorm): allow same-origin framing of SCORM content (
34a6a291)
♻️ Refactoring
- Merge pull request #929 from gutocarollo/fix/catalog-pagination-refactor (
86936b96) - refactor(web): share catalog pagination controls (
85816575)
📚 Documentation
- docs: document AI audio/podcast generation and media-model env vars (
dd64c708)
🔧 Maintenance
- Merge pull request #944 from learnhouse/renovate/node-26.x (
60fb7934) - chore(deps): update dependency @types/node to v26 (
d52397fa) - Merge pull request #953 from learnhouse/chore/renovate-weekly-schedule (
bccb95a0) - chore(renovate): run dependency updates weekly instead of biweekly (
52b31fc5) - Merge pull request #942 from learnhouse/renovate/actions-setup-node-7.x (
ba72aa54) - Merge pull request #941 from learnhouse/renovate/actions-checkout-7.x (
bae5d635) - Merge pull request #943 from learnhouse/renovate/major-github-artifact-actions (
a855aa85) - chore(deps): update actions/upload-artifact action to v7 (
c3fdf85c) - chore(deps): update actions/setup-node action to v7 (
1b21ba86) - chore(deps): update actions/checkout action to v7 (
93cc561b) - Merge pull request #922 from rzmk/rzmk/hide-on-activity (
a66eea34) - chore: hide hint and reference file when empty on student activity (
5a43c93d) - Merge pull request #914 from rzmk/get-started-mobile (
2ce22930) - chore: show Get Started on mobile for unauthenticated users (
9b000334)
🎉 New Contributors
- @gutocarollo made their first contribution!
- @SenithVijayantha made their first contribution!
👥 Contributors
@gutocarollo, @rzmk, @SenithVijayantha, @swve
📦 Getting Started
New installation:
npx learnhouse setupUpgrade to this version:
# Back up your database first
npx learnhouse backup
# Update to this specific version
npx learnhouse update --version 1.3.2Docker image:
docker pull ghcr.io/learnhouse/app:1.3.2Warning
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
Full Changelog: 1.3.1...1.3.2