All releases

App release

LearnHouse 1.3.5

App1.3.5

17 features49 fixes10 other

H5P, Demo Organizations, Bug fixes and Improvements

This release includes 2 database migration(s). Back up your database before upgrading.

  • b1n2u3d4g5e6_add_nudge_tables.py
  • c7d8e9f0a1b2_add_demo_org_tables.py

Features

  • feat(editor): add H5P block button to the toolbar338c8d0c
  • feat(quiz): explicit single- and multiple-response questions594be17c
  • feat(email): let organizations set the sender display name6957f595
  • feat(editor): add embed-only H5P interactive content block32c1d10c
  • feat: add the demo entry points, routes and tests8c660b1a
  • feat(api): reconcile the demo organization in place instead of rebuilding ite5230dc4
  • feat(api): add the demo content bundle5eba830c
  • feat(api): keep the demo out of billing, email and other people's data54835f5c
  • feat(api): add the demo organization schema and its guardscd409e27
  • feat(web): Arabic typography, mirrored icons, and per-block content direction9062b5cc
  • feat(i18n): resolve text direction from the active locale44541de7
  • feat(api): learn delivery outcomes by asking, not by being told38b0e047
  • feat(activity): record user activity on enterprise deployments9967c3f8
  • fix(api): stop the hardening from breaking CORS, SCORM import and migration1c2f598b
  • feat(api): run nudges on their own tick, and seed the backlog automaticallya35d4cbb
  • feat(api): illustrations, inbox polish, reactivation and suppression145de9da
  • feat(api): lifecycle nudge emails for organization admins7c866b97
  • Merge pull request #1028 from learnhouse/feat/rtl-arabicf18d05be

Fixes

  • fix(deps): update all non-major dependencies8ffcef09
  • fix(ai): make course-plan tags a list, join to pipe at finalize84211ee7
  • fix(docker): move every image to bun 1.4.0 and drop the node build stagesa31d1870
  • fix(docker): build the SaaS frontend image with Node instead of Bun32d2ddd6
  • fix(deps): update all non-major dependencies1b42b008
  • fix(docker): build the frontend with Node instead of Bun735346a6
  • fix(web): repair DAUChart tooltip typing and add a CI type checkb5f819f2
  • fix(web): drop deprecated tsconfig baseUrl so the image build type-checks1ee08e87
  • fix(deps): update all non-major dependenciesb205d03d
  • fix(demo): make the storefront optional as a unit, and stop unlocking what nothing sweepsfe130490
  • fix: sort folders by org mode and hide certificate copy3702ecd5
  • fix(demo): stop an older Enterprise release breaking the whole demo sync976734e1
  • fix(ci): pin the bun image to the version the repo declares0ba72217
  • fix(deps): update all non-major dependencieseff075a6
  • fix(auth): invalidate sessions on password change and logoutbbf67289
  • fix(deps): update all non-major dependencies141c8f84
  • fix(deps): update dependency workos to v10.2.066628005
  • fix(web): don't paint the denial page before authorization is decidedbf56395a
  • fix(api): make application logs visible, and open the gates nudges shut83311146
  • fix(api): run the nudge job on boot, and say why when it doesn'ta489e0e7
  • fix(api): stop paging on provider rejections of a bad recipient address3ecba874
  • fix(security): make the superadmin surface Enterprise-only93504483
  • fix(lint): drop the now-unused is_multi_org_allowed import2bb5c2c8
  • fix(config): parse YAML-side boolean strings in _env_bool too86625e76
  • fix(cache): version the instance-info key, set PYTHONDONTWRITEBYTECODEbb096330
  • fix(web): upgrade tiptap to 3.29.2 to fix a crash while editingfb1d1658
  • fix(deps): update all non-major dependencies to v1.43.655f674de2
  • fix(web): give course-structure labels their own element so translation can't crash the page7b0c259c
  • fix(api): fail internal pack endpoints closed with 403 instead of 500f4f0f2c9
  • fix(deps): update dependency motion to v13a3894c7c
  • fix(deps): bump cryptography with workos, regenerate lockfiles3d7047e0
  • fix(deps): update all non-major dependencies82fd49ef
  • fix(config): harden mode detection, per-request instance info, env booleansa13d9915
  • fix(deps): update dependency ioredis to v6940712c3
  • fix(web): gate the whole dashboard, and explain a denial instead of flashing itde57c118
  • fix(ci): regenerate apps/web/bun.lock after dependency bumps54bc73c8
  • fix(deps): update all non-major dependenciesdf9cf41b
  • fix(api): leave billing alone, keep the authorization fixc8ccb0f4
  • fix(api): stop the hardening from breaking CORS, SCORM import and migration1c2f598b
  • fix(api): don't turn a missing org config into a finalize failurefcba5f84
  • fix(api): verify Resend webhooks properly, and cut the config surfacee5a51d1d
  • fix(api): keep SVG renderable and drop the unsatisfiable token rights gate4451b795
  • fix(api): validate each link-preview hop next to the request it guards08148294
  • fix(api): tighten authorization and input handling across service layer37b42224
  • fix(auth): bound the grace for sessions with no recorded auth methodc82caeb5
  • fix(config): fail loud on missing SaaS credentials instead of degrading quietly61ee8112
  • fix(auth): treat an unknown session auth method as unknown, not as a violatione3fcfe5f
  • fix(billing): resolve the internal key from either env name, restore fulfillment fallbacksf7690933
  • fix media content-type mismatch and preview iframe sandbox conflict52c62f21
  • Merge pull request #1054 from learnhouse/renovate/all-minor-patch33d5a470
  • Merge pull request #1053 from tbilah/fix/course-plan-tags6307b32e
  • Merge pull request #1050 from learnhouse/fix/saas-frontend-node-build6643e071
  • Merge pull request #1048 from learnhouse/renovate/all-minor-patch350ab6ee
  • Merge pull request #1049 from learnhouse/fix/typescript-6-baseurl76d8cfb0
  • Merge pull request #1047 from learnhouse/renovate/all-minor-patch48a5c73b
  • Merge pull request #1046 from learnhouse/fix/demo-storefront-capability-gateb7a85418
  • Merge pull request #1040 from learnhouse/fix/demo-store-provider-skewf75cff36
  • Merge pull request #1041 from learnhouse/fix/pin-bun-image-to-repo-versionac4a67aa
  • Merge pull request #1039 from learnhouse/renovate/all-minor-patch063600f8
  • Merge pull request #1033 from learnhouse/renovate/all-minor-patch27bb37be
  • Merge pull request #1034 from learnhouse/renovate/workos-cryptographye3f56843
  • Merge pull request #1008 from mchtter/fix/dash-admin-denial-uxc28889d2
  • Merge pull request #1032 from learnhouse/fix/nudge-gates-and-loggingc4a7b5c3
  • Merge pull request #1021 from learnhouse/fix/sentry-resend-recipient-rejection869a89cd
  • Merge pull request #1026 from learnhouse/fix/license-gating-hardeningdf6975ef
  • Merge pull request #1022 from learnhouse/fix/sentry-tiptap-delete-extension-crashec407be9
  • Merge pull request #1024 from learnhouse/chore/ruff-unused-import69220462
  • Merge pull request #1023 from learnhouse/fix/sentry-translated-dom-crashd9d714dd
  • Merge pull request #1020 from learnhouse/fix/sentry-internal-packs-key-guard46db78bf
  • Merge pull request #1017 from learnhouse/renovate/all-minor-patch2d2beea2
  • Merge pull request #1014 from learnhouse/renovate/motion-13.x12abf6c9
  • Merge pull request #1011 from learnhouse/renovate/all-minor-patch0b7beb81
  • Merge pull request #1013 from learnhouse/renovate/ioredis-6.x06eb3734
  • Merge pull request #1004 from learnhouse/renovate/all-minor-patch7d3d818f
  • Merge pull request #1001 from learnhouse/fix/billing-internal-key-and-fulfillmentc8d76f62

Performance

  • perf(config): memoise the config.yaml parse, resolve deployment mode once4dc64a31

Refactoring

  • refactor(web): convert physical direction utilities to logical ones6bfca121

Documentation

  • docs(config): document the LEARNHOUSE_SSL parsing change, correct a cost commentb85a69d3

Maintenance

  • chore(deps): regenerate lockfilesa23dcf2e
  • chore(deps): update astral-sh/setup-uv action to v10bd73af4c
  • chore(api): drop dead import that fails ruff on devbb00c436
  • chore(deps): update dependency @types/node to v268ea530bd
  • chore(deps): update dependency typescript to v6a67042d5
  • chore(deps): regenerate apps/web/pnpm-lock.yaml for motion v1387e925f5
  • chore(deps): regenerate apps/web/bun.lock for motion v132bbd9eb4
  • Merge pull request #1035 from learnhouse/renovate/astral-sh-setup-uv-10.xa74c7a06
  • Merge pull request #1018 from learnhouse/renovate/node-26.xf6814e30
  • Merge pull request #1019 from learnhouse/renovate/typescript-6.x4df66743
npx learnhouse update --to 1.3.5