9.3
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Important information for administrators
- Breaking change: Athena, Apollon, LDAP, and SAML2 now require module-feature YAML flags: The Spring profiles
athena,apollon,ldap, andsaml2have been removed and replaced with the existing module-feature toggle pattern. Any deployment that previously activated these features via--spring.profiles.active=…,athena|apollon|ldap|saml2must add the correspondingartemis.<x>.enabled: trueflag to its environment YAML before upgrading. Artemis exits at startup if the flag is missing. SAML2 deployments additionally need to inline (or--spring.config.additional-location) theapplication-saml2.yml.exampletemplate; without it,info.saml2.*is undefined and the SAML2 login button silently disappears. See #12711 for the full migration recipe. - LTI Moodle integration restored: An incompatibility introduced by the Spring Boot 4 upgrade had silently broken Moodle launches. Administrators who run an LTI Moodle integration should re-test their setup after upgrading. See #12769.
- Client package manager is now pnpm: Self-hosters who build the client from source need
corepack enableto activate the pinned pnpm version, then usepnpm install/pnpm start/pnpm run buildinstead of the npm equivalents. See #12699 and #12731.
Improvements
Iris: Add dedicated Iris onboarding flow for first-time users by @thynguyentumde in #12397Iris: Drop EU location qualifiers from the AI experience picker by @bassner in #12700Adaptive learning: Add advisory competency orchestrator for programming exercises by @jaylann in #12606Quiz exercises: Quiz editor design migration by @louis-heinrich in #12599Quiz exercises: Support nested Apollon selections in quiz generation by @FadyGergesRezk in #12611Exam mode: Enable Athena AI feedback for submitted test exams by @laadvo in #12570Team exercises: Support AI feedback requests for team exercises by @maximiliansoelch in #12702Lectures: Extend deep linking for YouTube videos by @vivienxr in #12600File upload exercises: Show assessment dashboard button by defaulting assessment type to manual by @Claudia-Anthropica in #12705Modeling exercises: Remove obsolete automatic assessment option from the editor by @musaberkay in #12727General: Improve landing page core web vitals by @krusche in #12541General: Refine course overview and onboarding wizard styling by @krusche in #12598General: Align course management card buttons with refreshed course overview styling by @krusche in #12764General: Add courses and public messages to global search by @florian-glombik in #12720General: Extend searchable global search entities by @florian-glombik in #12353General: Add Weaviate health translation by @bassner in #12732
Bugfixes
General: Restore LTI Moodle integration broken by Spring Boot 4 upgrade by @krusche in #12769General: Load translations earlier to fix raw keys on first render by @krusche in #12753Quiz exercises: Fix missing submit button when starting practice mode by @laadvo in #12748Communication: Fix system notifications in admin user interface not being displayed by @angatha in #12708Communication: Fix user selector scrolling inside dialog by @anian03 in #12498Iris: Fix wrong permission denied alert on AI experience page when Memiris feature is disabled by @krusche in #12709Programming exercises: Replace non-printable characters in automatic feedback of Java blackbox template by @b-fein in #12661
Development
- Migrate Athena, Apollon, LDAP, and SAML2 from Spring profiles to module-feature toggles by @krusche in #12711
- Extract course and admin modules from core by @krusche in #12784
- Reorganize user and account code into a dedicated
accountpackage by @krusche in #12712 - Move calendar into separate module by @anian03 in #12681
- Switch the client package manager from npm to pnpm by @krusche in #12699
- Switch the client run configuration from npm to pnpm by @laadvo in #12731
- Migrate to ESLint 10 and update client dependencies by @krusche in #12763
- Upgrade dependencies by @krusche in #12716
- Update qs client dependency by @krusche (direct commit f0e7a6d)
- Update python dependencies by @krusche (direct commits 28ec1af, a294237)
- Update tomcat version by @krusche (direct commit 9ef64b7)
- Add Docker readiness and liveness probes by @bassner in #12760
- Add LTI 1.3 interop test coverage and harden Lti13LaunchFilter exception handling by @krusche in #12778
- Stabilize multi-node fast e2e runner and fix server-side concurrency races by @krusche in #12713
- Dedupe stacked e2e runs and fix release-published build trigger by @krusche in #12698
- Fix shell-quote injection in prod-like-deployment workflow by @krusche in #12721
- Fix flaky LocalCIDockerImageIntegrationTest by @florian-glombik in #12672
- Fix server tests by @krusche (direct commit 16fc4c0)
- Mock apollon editor to improve client test stability by @florian-glombik in #12703
- Fix client style issues in parse-links service test by @maximiliansoelch in #12744
- Fix open api generation dropping types by @florian-glombik in #12678
- Fix client SBOM to include tree-shaken transitive dependencies by @krusche in #12710
- Only generate sbom for production builds by @krusche in #12735
- Add documentation for consistency check by @khinevich in #12651
New Contributors
Full Changelog: 9.2...9.3