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 4.0.5. This includes Spring Framework 7.0.6, Spring Security 7.0.4, Hibernate 7.2.7, Spring Data 4.0.4, and Spring AI 2.0.0-M4. Server administrators must review theirapplication-prod.ymlfor relocated configuration keys (25+ package relocations). See Pull Request #12381 for full details.⚠️ Liquibase upgraded from 4.27.0 to 5.0.2. Existing installations upgrading from 8.8.6 will have checksums recalculated automatically.⚠️ Database schema consolidated: 66 incremental changelogs folded into the initial schema. Upgrade from 8.8.6 is required — skipping intermediate versions will fail. See Pull Request #12401.⚠️ Token authentication now default: The default repository authentication order changed frompassword,token,sshtotoken,ssh,password. See Pull Request #12456.⚠️ Sentry configuration changed: Default DSN is now disabled, PII collection is disabled by default, and data scrubbing is enabled for all Sentry messages. See Pull Request #12357.⚠️ Apollon upgraded to v4: The modeling diagram editor has been upgraded from@ls1intum/apollonv3 to@tumaet/apollonv4. See Pull Request #12189.⚠️ Build plan phases: Programming exercises now use a new phases-based build plan format for LocalCI, moving away from the Aeolus/Windfile model. Existing build configurations may need to be updated. See Pull Request #12265.⚠️ Weaviate configuration (for global search): Administrators deploying global search need to configure the Weaviate vector database with an embedding model and optionally an OpenAI-compatible API key. See Pull Request #12021 and Pull Request #12324.⚠️ FACT Docker image updated: The default FACT Docker image changed tols1tum/artemis-fact-minimal-docker:1.1.0. See Pull Request #12266.
Removed Features & Deprecated Code
- ❌ Judgement of Learning (JoL) self-assessment feature has been removed. Students can no longer rate their own mastery of competencies. The
CompetencyJolentity, related endpoints, and all UI components have been deleted. See Pull Request #12288. - ❌ Deprecated AthenaResource forwarding endpoints removed (zero callers).
- ❌
NotificationTypeenum deleted (dependent service already removed). - ❌
SubmissionType.ILLEGALenum value removed, with Liquibase migration. - ❌
Lecture.visibleDatefield removed from entity, DTOs, and client code, with Liquibase migration to drop the column. - ❌
faqEnabledflag removed from courses. FAQ management is now always available for instructors; student visibility is based on whether accepted FAQs exist. ⚠️ Apollon drag-and-drop quizzes temporarily disabled via feature flag due to the Apollon v4 upgrade. See Pull Request #12484.
Improvements
Programming exercises: Enable collaborative live editing in online code editor for editors by @Elfari1028 in #12195Programming exercises: Synchronize review comments between active users by @IcanCUthere in #12174Programming exercises: Show review comment count in file browser by @IcanCUthere in #12173Programming exercises: Enable instructors to view the exercise version history by @IcanCUthere in #12255Programming exercises: Add build plan phases by @matyasht in #12265Programming exercises: Normalize CRLF to LF in problem statement sync to fix collaborative editing offsets by @Elfari1028 in #12361Integrated code lifecycle: Prioritize token authentication as default repository auth method by @bassner in #12456Quiz exercises: Allow instructors to generate quizzes with AI by @MaximilianAnzinger in #12246Quiz exercises: Add Markdown for AI Quiz Generation by @MaximilianAnzinger in #12289Quiz exercises: Prevent editing during and after quiz running by @krusche in #12139Communication: Allow users to mark messages as unread by @ayca-cevdet in #12079Communication: Add "Unread" sidebar category and enhance channel sorting by @Kiara65 in #12192Communication: Ensure answer posts are always displayed when sent by @anian03 in #12227Communication: Hide markdown text actions when not applicable by @anian03 in #12158Exam mode: Add room management for instructors by @SamuelRoettgermann in #12044Adaptive learning: Allow instructors to execute a full workflow involving all sub-agents in plan mode by @Yhmidi in #12198Adaptive learning: Improve standardized competency management layout and import validation by @jaylann in #12234Learning analytics: Add sorting and filtering to competency management table by @louis-heinrich in #12231Lectures: Create PDF viewer with deep linking by @vivienxr in #12257Lectures: Create deep linking for HLS video player by @vivienxr in #12323Lectures: Follow-up for PDF viewer by @vivienxr in #12369Lectures: Improve transcription documentation and add UI hint by @Nayer-kotry in #12389Iris: Enable Autonomous Tutor Responses in Communication Channels by @toukhi in #12130Iris: Redesign chat-widget header by @thynguyentumde in #12200Iris: Redesign Iris thinking state and add status indicator for Iris widget when minimized by @thynguyentumde in #12260Iris: Add interactive MCQ rendering in chat by @alretum in #12278Iris: Add MCQ carousel, response persistence, and content-aware quiz generation by @alretum in #12355Iris: Redesign chat items with entity on sidebar by @krusche in #12322Iris: Improve design of summary bubbles by @vivienxr in #12310Iris: Deeplink citation bubbles by @vivienxr in #12348Iris: Add prompt scaffolding features to Iris empty state by @thynguyentumde in #12380Iris: Introduce context selection for new dashboard chats by @Senan04 in #12396Iris: Show used and created memories in chat by @bassner in #12225Iris: Add Memiris (disabled by default) by @bassner in #12232Iris: Add AI answer panel with split view to global search by @Nayer-kotry in #12236Iris: Improve about-iris links and redirect docs to edutelligence site by @bassner in #12314Iris: Nebula to Pyris migration by @Nayer-kotry in #12459Tutorial groups: Improve tutorial group management by @marlonnienaber in #12096Hyperion: Add "Generate with AI" button to start Java programming exercise creation from an empty repo by @sawys777 in #11934Hyperion: Add problem statement quality issue detection and AI-assisted fixes by @HawKhiem in #12182Hyperion: Add competency inference and difficulty assessment to problem statement checklist by @HawKhiem in #12183Hyperion: Persist consistency issues as review comments by @IcanCUthere in #12155Hyperion: Add repository selection for AI generation and overview for generation progress by @sawys777 in #12333Hyperion: Track LLM usage for programming exercise generation by @sawys777 in #12126Hyperion: Improve consistency check accuracy by @khinevich in #12290General: Add global search to navbar (behind feature toggle) by @Nayer-kotry in #12146General: Design new Artemis landing page for unauthenticated users by @thynguyentumde in #12356General: Add course onboarding wizard and improve course overview page by @krusche in #12285General: Add deletion summaries for all exercises to prevent accidental deletions by @matyasht in #12020General: Improve participation user experience by @DominikRemo in #12335General: Improve organization management by @ayca-cevdet in #12186General: Improve exercise management page layout and reduce table width by @matyasht in #12400General: Improve landing page text for accuracy, clarity, and messaging by @krusche in #12480General: Improve link action in markdown editor by @anian03 in #12117
Bugfixes
Programming exercises: Fix review comments not showing at the correct line in the editor by @IcanCUthere in #12273Programming exercises: Fix popup blocker when opening online IDE in Safari by @IcanCUthere in #12275Modeling exercises: Fix dark mode theming in Apollon editor by @FelixTJDietrich in #12399Communication: Fix naming for delete message buttons by @anian03 in #12386Exam mode: Fix intermittent live event delivery and test run submission errors by @krusche in #12479Adaptive learning: Fix learning path navigation overview when course learner profile is missing by @MaximilianAnzinger in #12419Adaptive learning: Fix creating knowledge area when no competencies exist by @jaylann in #12259Learning analytics: Fix AtlasML health indicator and configuration defaults by @MaximilianAnzinger in #12197Iris: Fix thinking state container display bug by @thynguyentumde in #12387Tutorial groups: Fix Bugs Found in 9.0 Pre-Release Testing Session by @marlonnienaber in #12421General: Fix system notification layout overflow and persist dismissals by @krusche in #12175General: Fix an issue with the markdown editor which is hidden after switching between preview and edit by @ayca-cevdet in #12264General: Fix result selection for modeling and text submissions with multiple assessments by @krusche in #12147
Development
- Upgrade to Spring Boot 4, Spring Framework 7, and Spring AI 2.0.0-M4 by @krusche in #12381
- Consolidate database schema for 9.0 release by @krusche in #12401
- Convert multiple controllers to use DTOs and upgrade Hibernate to 6.6 by @krusche in #12317
- Migrate Atlas endpoints to exclusive DTO usage by @krusche in #12230
- Change Grading Scale endpoints to use DTOs by @LeZhen1105 in #12145
- Replace entity types with DTOs in Iris REST endpoints and WebSocket by @bassner in #12245
- Extend practice mode and Athena feedback support to text and modeling exercises by @laadvo in #12251
- Upgrade Apollon to the next major version 4 by @tamang29 in #12189
- Bump Apollon to 4.2.15 by @tamang29 in #12483
- Migrate core module to Angular signals and Vitest by @krusche in #12022
- Migrate communication module to signals, primeng dialogs, and vitest by @krusche in #12336
- Migrate remaining decorators to Angular signals for zoneless compatibility by @krusche in #12362
- Migrate small shared components to Angular signals, vitest and zoneless by @AjayvirS in #12143
- Introduce new UI components for tutorial group management rewrite by @marlonnienaber in #12286
- Introduce second batch of new UI components for tutorial group management rewrite by @marlonnienaber in #12329
- Refactor UI components for tutorial group management by @marlonnienaber in #12368
- Add endpoint for global exercise search by @Nayer-kotry in #12217
- Add global search lecture endpoint and results component by @Nayer-kotry in #12191
- Add UI for global exercise search by @Nayer-kotry in #12284
- Add embedding model to Weaviate setup by @florian-glombik in #12021
- Add weaviate OpenAI API support by @florian-glombik in #12324
- Write exercise metadata to Weaviate by @florian-glombik in #12127
- Improve Sentry privacy compliance by @otoriphoenix in #12357
- Improve input validation for URLs, paths, and regex patterns by @krusche in #12185
- Improve LTI URL validation by @krusche in #12311
- Improve path validation order in drag-and-drop file import by @krusche in #12384
- Improve local development setup and fix passkey saml2 conflict by @krusche in #12241
- Improve LocalVC request validation, code quality, and test coverage by @krusche in #12328
- Improve LocalVC test coverage for auth, tokens, access logging, and SSH by @krusche in #12334
- Add ScienceSettingService and refactor resource by @MaximilianAnzinger in #12327
- Simplify comment deletion by removing custom repository implementation by @krusche in #12345
- Scope ESLint to Angular client webapp and add separate lint configs by @krusche in #12346
- Fix exception when canceling assessment with lazy feedbacks by @krusche in #12347
- Fix foreign key constraint violations during course reset by @bensofficial in #12341
- Fix CI pipeline failures after DTO conversion merge by @krusche in #12320
- Fix lazy initialization exception on account endpoint by @krusche in #12477
- Fix production build crash by updating esbuild to 0.27.5 by @krusche in #12481
- Speedup count students in group for postgres by @krusche in #12374
- Add Helios flakiness scores to PR comments by @MarcosOlivaKaczmarek in #12321
- Add interactive comparison page to documentation by @krusche in #12388
- Display links to unresolved comments if ready to merge check fails by @florian-glombik in #12337
- Fix flaky ProgrammingExerciseLocalVCIntegrationTest by @krusche in #12352
- Fix flaky and broken E2E tests by @MarcosOlivaKaczmarek in #12340
- Fix e2e tests for login and new Apollon modeling editor by @krusche in #12398
- Fix weaviate search integration tests by @florian-glombik in #12342
- Fix E2E test comment not being posted to PRs by @MarcosOlivaKaczmarek in #12247
- Fix E2E JUnit report showing only 1 test by @MarcosOlivaKaczmarek in #12319
- Integrate custom E2E reports dashboard for test reporting by @MarcosOlivaKaczmarek in #12202
- Stabilize all e2e tests execution modes by @krusche in #12316
- Switch e2e tests from mysql to postgres by @krusche in #12313
- Speed up e2e tests by switching to C and fixing flaky tests by @krusche in #12240
- Restore stopping stale processes when running e2e tests locally by @krusche in #12383
- Cleanup SSH agent after test server deployment by @bensofficial in #12354
- Stabilize postgres server tests by @krusche in #12300
- Fix flaky server tests and improve github action by @krusche in #12220
- Improve e2e test documentation by @krusche in #12339
- Use self-hosted runners for deployment by @bensofficial in #12318
- Add feature flag to temporarily disable Apollon drag-and-drop quiz by @bensofficial in #12484
- Remove Judgement of Learning (JOL) feature by @bassner in #12288
- Highlight non-graded AI feedback in blue in code editor by @az108 in #12235
- Update server dependencies by @krusche in #12344
- Update client dependencies by @krusche in #12377
- Update dependencies by @krusche in #12385
- Update Docker Setup Documentation with Required Configuration by @DominikRemo in #12261
- Update dead links in README by @krusche in #12378
- Fix outdated documentation links for assessment and statistics pages by @az108 in #12304
- Add documentation for programming exercise collaboration features by @IcanCUthere in #12262
- Fix tutorial groups integration test and adjust thresholds by @florian-glombik in #12271
- Fix instructor code editor container component test by @MaximilianAnzinger in #12269
- Update fact docker image by @krusche in #12266
- Improve consistency check benchmark scripts to create code snapshots and integration with pecv bench by @khinevich in #12308
- Extend Hyperion consistency check benchmark script with dataset config and persistent result reporting by @khinevich in #12267
- Disable comment threads for consistency issues during approach evaluation by @khinevich in #12306
- Rename course-title-bar-test by @Kiara65 in #12229
Full Changelog: 8.8.6...9.0.0