Releases: ls1intum/Artemis
9.4
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Highlights
- 📅 New exercise timeline for programming and modeling exercises: Instructors now configure all exercise dates from release to assessment on a unified, easier-to-use exercise timeline. Programming exercises received several usability improvements, and modeling exercises replace the previous separate date pickers with the same timeline.
- 🖼️ Images in the repository view: Students and instructors can now view images directly in the repository view of programming exercises, without cloning the repository.
- 🧠 Generate AI quiz questions from course competencies: In addition to free-topic generation, instructors can now generate quiz questions from selected course competencies. Artemis grounds the questions in the competencies and their linked lecture content, so they align with the course's learning objectives.
- 🔍 Iris answers in global search: The global search now shows an inline Iris answer card above the search results. Ask a question and an AI-generated answer with lecture source citations appears directly in the search view.
- 🤖 Turn review comments into exercise improvements: When creating a programming exercise with AI assistance, instructors can now leave review comments on the generated code, select those review threads, and have the next generation run implement exactly that feedback in the template, solution, and test repositories.
- 🎯 Easier-to-read feedback: Feedback for modeling, text, and file upload exercises now uses one consistent layout, so students find points, comments, and AI feedback suggestions presented the same way across these exercise types.
- ⚡ Exam administration stays fast for large exams: The student list in exam management now loads quickly and supports searching, sorting, and filtering, even for exams with thousands of registered students.
Important information for administrators
- REST API paths follow a new module-based convention: All account, course, and admin REST endpoints were migrated to a consistent module-name URL prefix, and an architecture rule now enforces this convention across the codebase. All old paths keep working through backward-compatible legacy aliases (responses carry
Deprecation/Sunsetheaders), so existing integrations are not broken. However, external tools and scripts that call the Artemis REST API should migrate to the new paths, as the legacy aliases are scheduled for removal after the sunset date 2026-09-30. See #12811 and #12822.
Improvements
Programming exercises: Improve the usability of the exercise timeline by @marlonnienaber in #12762Programming exercises: View images directly in the repository view by @Claudia-Anthropica in #12639Programming exercises: Split build templates into a compile and a test phase for the integrated code lifecycle by @matyasht in #12725Quiz exercises: Take the course context into account when generating quizzes with AI by @louis-heinrich in #12728Quiz exercises: Validate the title length of short answer questions while editing by @MaximilianAnzinger in #12533Modeling exercises: Replace the separate date pickers with the unified exercise timeline by @marlonnienaber in #12821Exam mode: Make requesting AI feedback in test exams more reliable by @laadvo in #12794Exam mode: Speed up the exam students view with server-side pagination, sorting, and searching by @ayca-cevdet in #12701Assessment: Align the user interface for AI feedback suggestions in the assessment editors by @musaberkay in #12765Assessment: Standardize the feedback display for modeling, text, and file upload exercises by @musaberkay in #12226Iris: Show an inline Iris answer card directly in global search results by @Nayer-kotry in #12612Iris: Detect and save the printed page numbers of lecture slides so slide pages can be linked correctly by @vivienxr in #12682Iris: Polish the chat layout: better placement of the scroll-to-bottom button and the thinking indicator by @thynguyentumde in #12771Hyperion: Select code review threads as feedback and have AI-assisted code generation implement them by @sawys777 in #12376Adaptive learning: Add orchestration mutation tools for the Atlas Companion by @jaylann in #12746Lectures: Make the slider of the YouTube player smoother by @vivienxr in #12601Tutorial groups: Move management actions into the title bar and remove duplicated page titles by @krusche in #12797Global search: Improve the formatting of search results by @florian-glombik in #12754Global search: Automatically set search filters based on the current page by @florian-glombik in #12756General: Polish the landing page FAQ accordion and feature cards by @thynguyentumde in #12770
Bugfixes
Programming exercises: Fix adding and removing environment variables in the build configuration of the exercise form by @matyasht in #12789Programming exercises: Fix changing the assessment type when updating an exercise by @Lyynnnx in #12805Programming exercises: Fix the customized build configuration using the wrong build template for non-Java exercises by @matyasht in #12876Quiz exercises: Show the correct participation status for students by @laadvo in #12842Quiz exercises: Fix "Invalid Input" persisting after deleting and restoring the only question by @MaximilianAnzinger in #12544Quiz exercises: Fix re-uploading deleted drag item images by @Nihad74 in #12884Exam mode: Fix an issue when importing an entire exam with a programming exercise by @matyasht in #12792Exam mode: Make the exam checklist also consider failed exercise preparations by @matyasht in #12777Exam mode: Fix the exam checklist wrongly reporting unprepared individual exams after removing a student by @Lyynnnx in #12868Iris: Fix the collapsed exercise side panel for users who opted out of AI features by @Nihad74 in #12852Adaptive learning: Fix a JSON serialization cycle for exercises with competency links by @jaylann in #12795Communication: Fix a visual issue with the announcement dialog by @Lyynnnx in #12799Global search: Exclude channels from search results when communication is disabled by @Lyynnnx in #12839General: Fix practice mode becoming unavailable after the due date by @krusche in #12896General: Fix the "Forgot password" link and spacing on the sign-in page by @krusche in #12890
Development
Server architecture & REST API
- Extract the notification module from communication by @krusche in #12793
- Move Jenkins CI code into a separate module by @krusche in #12810
- Split the programming module into multiple smaller modules by @krusche in #12813
- Declutter the core module by relocating feature code to its owning modules by @krusche in #12816
- Migrate account, course, and admin REST controllers to a module-name URL prefix by @krusche in #12811
- Enforce a consistent REST API path convention with backward-compatible legacy aliases by @krusche in #12822
- Migrate tutorial group REST responses to DTOs by @WoH in #12687
- Change complaint endpoints to use DTOs by @LeZhen1105 in #12395
- Migrate competency and Iris REST endpoints to DTOs by @dogusaytok in #12726
- Use DTOs for text, online, and exercise units by @WoH in #12787
- Fix a Jackson cyclic-reference race by returning cycle-free DTOs by @krusche in #12791
- Add an optional courseIds filter to the global search lecture endpoint by @Nayer-kotry in #12803
- Convert unidirectional
@OrderColumnto bidirectionalmappedByfor quiz entities by @krusche in #12640 - Add an entity usage architecture test to all modules and fix detection false positives by @krusche in #12804
- Strengthen REST best-practice architecture rules (autho...
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
9.2
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Important information for administrators
- New two-part version scheme: Starting with this release, Artemis uses a two-part version scheme
X.Y(e.g.9.2) instead of the previous three-partX.Y.Z(e.g.9.1.2). The canonical form of this release is9.2, not9.2.0. Three-part hotfix versions (9.2.1,9.2.2, ...) remain valid as exceptions for emergency bugfix releases. Internally,9.2compares as9.2.0; deployments upgrading from9.1.xwill boot normally without any manual intervention. See #12695 for details. - Aeolus retired: The Aeolus CI build plan generator has been removed. Server administrators should remove any
artemis.continuous-integration.aeolus.*configuration keys from theirapplication-prod.ymlif present. See #12536.
Improvements
General: Improve exercise participations and scores views by @ayca-cevdet in #12382General: Disable edits of users if SAML2 is active by @dfuchss in #12542General: Hide graded/practice mode badge when no submission exists by @DominikRemo in #12683Programming exercises: Limit course and exercise short name length by @krusche in #12662Exam mode: Align exam management buttons by @matyasht in #12675Assessment: Support local LLM choice for feedback generation by @maximiliansoelch in #12650Iris: Unify chat session types, services, repositories and resources by @Senan04 in #12504Hyperion: Fix instructor checklist bugs and improve UI/UX by @HawKhiem in #12546Hyperion: Trigger solution, template, and test repository generation via "Generate with AI" by @sawys777 in #12555
Bugfixes
General: Fix passkey modal not being displayed by @florian-glombik in #12539General: Fix SAML2 login landing on landing page instead of dashboard by @krusche in #12659
Development
- Switch version scheme from
major.minor.patchtomajor.patchby @bassner in #12695 - Remove Aeolus by @matyasht in #12536
- Add server-side problem statement rendering endpoint by @Predixx in #12332
- Add calendar to OpenAPI Spec by @anian03 in #12597
- Use DTO records for student submissions in quizzes by @krusche in #12595
- Change grade step endpoints to use DTOs by @LeZhen1105 in #12609
- Migrate exam mode client module to Angular 21 signals, Vitest, and PrimeNG dialogs by @krusche in #12603
- Fix local Moodle LTI setup by @WoH in #12511
- Patch Thymeleaf SSTI advisory and document httpclient5 pin by @krusche in #12658
- Update dependencies by @krusche in #12676
- Cancel superseded PR workflow runs to reduce CI queue pressure by @krusche in #12646
- Stabilize CI pipeline by @krusche in #12677
- Stabilize two flaky server tests by @krusche in #12680
- Add fast multi-node E2E runner that launches nodes from WAR by @krusche in #12679
- Speed up build workflow by reusing .war artifact for the PR docker image by @krusche in #12692
New Contributors
Full Changelog: 9.1.2...9.2
9.1.2
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Improvements
General: Improve passkey error handling by @florian-glombik in #12482Hyperion: Add code replacement suggestions for consistency issues by @IcanCUthere in #12258Programming exercises: Use the integrated Smetana layout engine for PlantUML diagrams by @krusche in #12008Exam mode: Merge student exams page into students page by @matyasht in #12558Quiz exercises: Add global editor-driven AI quiz refinement by @louis-heinrich in #12496General: Document course user management for instructors by @Claudia-Anthropica in #12630Lectures: Create combined view with Iris and materials by @vivienxr in #12501
Bugfixes
General: Fix result history dropdown motivational messages by @laadvo in #12584Communication: Fix missing length check when forwarding messages by @anian03 in #12516Quiz exercises: Fix an issue with start now in large courses by @krusche in #12586Quiz exercises: Fix missing title and submit button in preview and solution mode by @DominikRemo in #12591Programming exercises: Validate programming exercise problem statement length by @SedaOran in #12560Quiz exercises: Show missed deadline message for non-participating students by @DominikRemo in #12613Lectures: Validate course ownership before applying edits by @simongundelwein in #12644
Development
- Stabilize local multi-node e2e tests by @krusche in #12585
- Fix helios flakiness scores not appearing in e2e pull request comments by @MarcosOlivaKaczmarek in #12589
- Replace string based delegation markers with Spring AI tool calls by @jaylann in #12373
- Update pmd to 7.22.0 in Java exercise templates by @krusche in #12593
- Copy selected components for quiz edit design migration by @louis-heinrich in #12596
- Update github deployment actions to use new self-hosted runners by @bensofficial in #12624
- Update Artemis homepage URL in readme.md by @bensofficial in #12628
- Store result.feedbacks unordered to avoid the @OrderColumn null-index race by @krusche in #12610
- Remove Hibernate L2 entity caches and disable second-level cache by @krusche in #12594
- Improve server code by @krusche in #12635
- Support null ID in Athena feedback DTOs by @maximiliansoelch in #12629
- Update client and server dependencies by @krusche in #12637
- Patch dependabot alerts and add weaviate health check by @krusche in #12638
- Clear client service state on logout by @krusche in #12608
- Fix flaky open API generation and client build by @florian-glombik in #12636
- Allow VS Code extension endpoints for Scorpio tool tokens by @Predixx in #12394
- Update documentation dependencies by @krusche in 334ae97
- Update client dependencies by @krusche in a9654bf
- Update server dependency httpclient5-cache by @krusche in 05897d6
- Downgrade httpclient5 to fix Hazelcast cluster formation by @bensofficial in #12652
New Contributors
- @simongundelwein made their first contribution in #12644
Full Changelog: 9.1.1...9.1.2
8.7.5
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Development
- Improve LocalVC request validation, code quality, and test coverage by @krusche in #12328
- Update server dependencies by @krusche in #12344
- Downgrade hazelcast and fasterxml and upgrade spring-boot-starter dependencies by @Michael-Breu-UIbk in #12548
Full Changelog: 8.7.4...8.7.5
9.1.1
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Bugfixes
Quiz exercises: Fix an issue with quiz participations on multi node environments by @krusche in #12578Quiz exercises: Fix apollon drag-and-drop quiz generation by @FadyGergesRezk in #12559Quiz exercises: Remove temporary Apollon drag-and-drop feature flag by @FelixTJDietrich in #12580
Development
New Contributors
- @FadyGergesRezk made their first contribution in #12559
Full Changelog: 9.1.0...9.1.1
9.1.0
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Improvements
Quiz exercises: Add editor driven AI refinement for multiple choice questions by @louis-heinrich in #12375Lectures: Add YouTube video source support with transcription error feedback by @bassner in #12543Iris: Added suggestion chips on empty state for Lecture and Exercise context by @thynguyentumde in #12515General: Restore one click result feedback link alongside result history dropdown by @DominikRemo in #12518General: Update DTO documentation by @KonstiAnon in #12156General: Improve header styling in exercise management table by @rabeatwork in #12487General: Add passkey autofill by @florian-glombik in #12307
Bugfixes
Programming exercises: Fix NPE during import when SCA flag is null by @bensofficial in #12523Quiz exercises: Fix typo in short answer question visual mode explanation by @SedaOran in #12499Quiz exercises: Fix import quiz dialog not loading results on initial open by @SedaOran in #12506Adaptive learning: Fix generate competencies documentation link by @MaximilianAnzinger in #12508Lectures: Make deep linking scroll to material by @vivienxr in #12488Lectures: Fix deep linking for videos in units with several attachments by @vivienxr in #12557Iris: Skip Iris when user opted out of AI by @bassner in #12550General: Fix landing page loading time issues by @thynguyentumde in #12502
Development
- Fix run configuration profile order by @florian-glombik in #12489
- Disable E2E test for quiz exercise with apollon drag and drop question by @bensofficial in #12497
- Update gateway host name for test server deployments by @bensofficial in #12505
- Fix angular syntax highlighting issues in IntelliJ by @matyasht in #12359
- Fix gateway host public key for test server deployments by @bensofficial in #12507
- Update Hermes push notification relay URLs by @bensofficial in #12525
- Increase max instantiated beans threshold to 139 by @bensofficial in #12527
- Update maintainer table in README.md by @MaximilianAnzinger in #12535
- Change Complaint response endpoints to use DTOs by @LeZhen1105 in #12360
- Add passkey integration tests by @florian-glombik in #12218
- Add content extraction service for programming exercises by @jaylann in #12531
- Update client dependencies by @krusche in #12490
- Update E2E testing Playwright documentation by @MarcosOlivaKaczmarek in #12521
- Hide sidebar entry when module feature is disabled by @krusche in #12514
- Update dependencies by @krusche in #12554
- Restore saml2 auto configuration after spring boot 4 upgrade by @bassner in #12564
- Fix SyntaxError in PR comment scripts from unsafe output interpolation by @MarcosOlivaKaczmarek in #12520
- Update rand and python-dotenv dependencies by @krusche in #12573
- Remove Nebula package and relocate TUM Live integration by @bassner in #12537
- Add documentation for the review system within programming exercises by @IcanCUthere in #12524
- Add documentation for AI-assisted problem statement operations by @HawKhiem in #12545
New Contributors
Full Changelog: 9.0.0...9.1.0
9.0.0
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Important information for administrators
- Migration path: Version 9.0.0 is designed for fresh installations of Artemis or upgrades from version 8.8.6 only, due to significant database migration cleanups. All 66 incremental Liquibase changelogs from 8.x have been consolidated into a new initial schema.
- AI services: When upgrading to 9.0.0, ensure to upgrade all Edutelligence services such as Pyris, Atlas, Athena etc. to version 2.0.0!
- Nebula retired: The Nebula service (part of Edutelligence) has been retired. The features are now part of Pyris. Nebula deployments can be shut down and Nebula configuration should be removed.
- Pre-deployment testing: We strongly recommend thoroughly testing this release in a test environment before deployment on production systems, as it includes extensive updates and breaking changes (see below).
- Spring Boot 4 upgrade: The server has been upgraded from Spring Boot 3.5 to Spring Boot 4.0.5, along with Spring Framework 7, Spring Security 7, Hibernate 7.2, and Spring AI 2.0.0-M4. Server administrators should carefully review their
application-prod.ymlfor any relocated or changed configuration keys. - Global Search: The new search is implemented as a runtime feature toggle that can be enabled via the admin panel or
application-local.yml
Release highlights
🔍 Global Search
A new global search modal accessible via Cmd+K / Ctrl+K allows users to quickly search across exercises, lectures, and other content from anywhere in Artemis. An AI answer panel powered by Iris provides contextual answers alongside search results in a split view.
🏠 Redesigned Landing Page
A new public landing page greets unauthenticated visitors at the root URL, replacing the previous login-only view. The page showcases key features via a tabbed spotlight with demo videos, displays partner university logos, includes an expandable FAQ section, and provides clear call-to-action buttons. Authenticated users are automatically redirected to their dashboard.
🧠 Iris Chat UI Overhaul
The Iris AI assistant has received a comprehensive UI redesign: a new chat widget header with inline session switcher, redesigned thinking state with animated status feedback and a status indicator when minimized, redesigned chat items with entity display on the sidebar, improved summary bubbles, citation deep linking into the new PDF viewer, prompt scaffolding with suggestion chips for the empty state, and memory display showing used and created memories in chat. The lecture content processing pipeline has been fully migrated from Nebula to Pyris with capacity-aware dispatch, heartbeat-based stuck detection, and automatic re-queuing on Iris restart.
🎯 Iris Context Selection
Previously, opening a new chat on the dashboard initialized it with the entire course as context. Now, users can select a specific exercise or lecture as chat context through a new context selection interface, making Iris responses more targeted and relevant.
🧩 Iris In-Chat Quiz Generation
Students can now request AI-generated multiple-choice quiz questions directly within the Iris chat. Iris responds with an interactive MCQ carousel grounded in actual lecture content, supporting multi-question sets with score tracking, inline answering with correct/incorrect feedback and explanations, citation links back to lecture material, and response persistence across sessions. The server detects MCQ-formatted JSON in LLM responses and renders them as interactive components instead of plain text.
🤖 Autonomous Tutor Responses in Communication Channels
Iris can now proactively respond to student posts in course communication channels without requiring students to explicitly open the Iris chat. When enabled via the new AutonomousTutor feature toggle (disabled by default), a dedicated iris-bot user posts AI-generated replies directly into conversation threads. The AI autonomously decides whether to reply based on confidence. Reply forwarding respects AI consent preferences — posts from students who opted out are never forwarded, and their content in threads is redacted before being sent to Pyris.
✨ AI-Powered Exercise Creation (Hyperion)
Instructors can now create programming exercises with AI using a new "Generate with AI" button that initializes an empty repository (avoiding default template files as LLM context) and kicks off LLM-based code generation with progress tracking and repository selection. Hyperion also adds an AI-powered quality checklist panel to the problem statement editor that detects issues like vague wording, missing task structure, and unclear grading criteria, with one-click AI-generated fixes (individual, bulk, or multi-select). Additional checklist sections provide competency inference and difficulty assessment. Consistency issues are persisted as review comments.
📝 AI Quiz Generation
Instructors can generate quiz questions with AI via a dedicated modal in the quiz creation/edit view (requires Hyperion). The modal allows configuring topic, language, number of questions, question types (single-choice, multiple-choice, true/false), difficulty, and an optional prompt. Generated questions are previewed with Markdown rendering and can be appended to the quiz.
📄 PDF Viewer with Deep Linking
A new in-app PDF viewer displays lecture slides directly within Artemis when opening a lecture unit card with a PDF attachment. Deep linking is supported via URL query parameters, allowing Iris citation bubbles and other features to link directly to specific pages. The viewer includes zoom controls and a live page indicator.
🏗️ Build Plan Phases
A new phases-based build plan format for LocalCI. Each phase has a name, script, execution condition (e.g. always or only after the due date), and result paths. Instructors can edit, reorder, and configure phases through the UI. Existing configurations are automatically converted. Build success/failure determination is now phase-aware: phases with result paths expect test feedback, while phases without result paths use exit codes.
🏫 Exam Room Management
Exam room management is now accessible to instructors (previously admin-only) via the "Distribute" button on the exam Students page. The UI has been simplified and the room upload/management workflow is now co-located with student distribution for easier access.
📊 Improved Competency Management
The competency and prerequisite management tables now support client-side column sorting (Title, Taxonomy, Soft Due Date, Mastered Students), a live search/filter bar, and a "no results" row. A new bulk server endpoint returns course-level progress for all competencies in a single call instead of N individual requests. The standardized competency import has also been improved with better layout and client-side JSON validation.
👥 Collaborative Live Editing in Online Code Editor
Multiple instructors and editors can now concurrently edit code files in the online code editor (template, solution, tests, and auxiliary repositories) with conflict-free synchronization. The feature includes cursor awareness showing other users' positions, live file tree synchronization (create/delete/rename with rename resilience), and a new-commit alert notification when another user pushes changes while the editor is open.
🎓 Course Onboarding Wizard
A new 5-step guided onboarding wizard (General Settings, Enrollment, Communication, Assessment, Explore Artemis) helps instructors configure essential course settings immediately after creation. Progress is persisted on each step so it is not lost if the user navigates away. Courses that haven't completed onboarding auto-redirect instructors to the wizard. FAQ management is now always available, with student visibility based on whether accepted FAQs exist.
📝 Redesigned Exercise Participation & Management
The student exercise experience has been consolidated into a single split-panel interface using ExerciseSplitPanelComponent. Problem statement, editor/submission area, Iris chatbot, discussion, example solution, and complaints are all accessible without page navigation. New header components provide a unified exercise title with metadata, a result history dropdown for browsing previous submissions, and a participation mode toggle for switching between graded and practice modes. Practice mode with AI feedback (Athena) has been extended to text and modeling exercises. The instructor exercise management page has also been streamlined: shortened button labels, consolidated date and points columns, and visual status indicators replacing text.
🎨 Next-Generation Modeling Editor (Apollon)
The modeling editor has been completely redesigned from the ground up, introducing a modern architecture that significantly improves performance, scalability, and usability. The new editor delivers a much smoother and more responsive modeling experience, especially for large and complex diagrams. Interactions such as creating, editing, and navigating models are now faster and more intuitive, reducing friction for both students and instructors. Beyond performance, the rewrite lays the foundation for future innovation in modeling-based learning, enabling more advanced features and tighter integration with AI-driven feedback and assessment. The new editor is available directly within Artemis and can also be explored independently without an account:
👉 https://apollon.aet.cit.tum.de
Breaking Changes
Infrastructure & Configuration
⚠️ Nebula removed: The Nebula transcription path for lecture content processing has been fully replaced by Pyris. See Pull Request #12459.⚠️ Spring Boot 4 upgrade: Major framework upgrade from Spring Boot 3.5 to...
8.8.6
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Development
- Fix foreign key constraint violations during course reset by @bensofficial in #12341
- Update server dependencies by @krusche in #12344
Full Changelog: 8.8.5...8.8.6
8.8.5
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Note: This update contains security improvements and should be installed.
Development
- Update server dependencies by @krusche in 96e4d34
- Update client dependencies by @krusche in 049e9bf and af8355d
- Improve LocalVC request validation, code quality, and test coverage by @krusche in #12328
Full Changelog: 8.8.4...8.8.5