Repository navigation
10.4
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Highlights
-
✍️ Messages are edited as formatted text: Writing a message meant editing Markdown source and checking a separate preview. The message and reply editor now shows formatting, links and course references directly while typing. See #14254.
-
📬 Conversations open at the first unread message: Conversations open where the reader left off, while fully read conversations open at the newest message. Thread replies now also count as unread for their recipients. See #14288.
-
📋 Scores and participations share one page: Instructors and tutors switched between two pages to manage participations, check results and export. Both now live on Participations, one row per participation with its latest result; old Scores links redirect there. See #14212.
-
🏗️ Build controls for instructors: The participation submissions page shows queued and running builds and refreshes results when a build finishes. "Trigger All" now waits for room in the build queue instead of queueing every build at once, so student pushes are not held back. See #14290 and #14291.
-
🎥 Courses can be connected to TUM.Live: Instructors can connect an Artemis course to a TUM.Live course from Course Management → TUM.Live, approving the connection in TUM.Live. This first step covers connecting and disconnecting, not video upload. See #13693.
-
🧪 Artemis can start with a complete demo course: The opt-in
demoprofile seeds a course with users in every role, exercises of every type in different states, a test exam, lectures, competencies, tutorial groups and messages. See #13416 and #14109.
Improvements
Assessment: Merge scores and participations pages by @SultanTheHL in #14212Communication: Add formatted message editing by @krusche in #14254Communication: Open conversations at the first unread message and count replies as unread by @krusche in #14288Exam mode: Enhance exam checklist table for exercise groups and points by @julian-christl in #14278Global search: Find channels only by their name by @bassner in #14302Iris: Filter the admin dashboard by AI selection by @bassner in #14314Iris: Remove the Memiris integration by @bassner in #14315Lectures: Add TUM.Live course connections by @bassner in #13693Programming exercises: Set the starting experience level for the online IDE by @spethso in #14173Programming exercises: Improve participation submissions and build controls by @krusche in #14290Programming exercises: Wait for build queue room during bulk build triggers by @krusche in #14291General: Allow interested parties to start Artemis with demo data by @MaximilianAnzinger in #13416General: Seed a complete demo course for the demo profile by @MaximilianAnzinger in #14109
Bugfixes
Communication: Fix forwarded message previews and thread scrolling by @krusche in #14284Communication: Fix forwarded message access and clarify permission errors by @krusche in #14319Communication: Hide resolved posts after status change when unresolved filter is active by @julian-christl in #14283Lectures: Show slides without inverted colors in dark mode by @krusche in #14293Programming exercises: Serialize the checkout and pull of a working copy by @krusche in #14311Programming exercises: Fix an edge case which prevents deleting an exercise while builds deliver results by @krusche in #14297Programming exercises: Improve validation of repository paths by @krusche in #14334Quiz exercises: Prevent practice initialization from colliding with live participation by @krusche in #14317General: Restore SAML2 compatibility with identity provider metadata by @krusche in #14312
Development
Important information for administrators
-
⚠️ Switch off the Memiris feature toggle before deploying the new Pyris: Artemis no longer integrates Memiris. Before a Pyris version without Memiris is deployed, theMemiristoggle must be off on every Artemis using it; the database columns stay for now, so a rollback still works. See #14315. -
🔑 SAML2 starts again with all identity provider metadata: A newer commons-codec made SAML2 fail at startup with
Unable to base64 decode datafor valid certificates with other line layouts, reported after an upgrade to 10.3.1. Artemis now pins commons-codec to 1.22.1; no configuration change is needed. See #14312. -
🎥 The TUM.Live connection is off by default: To offer it, register Artemis as an application in TUM.Live and set
artemis.tum-live.integration-enabled,api-base-url,web-base-urlandapi-key. Without them, nothing changes. See #13693. -
🏗️ Bulk builds wait for queue room: The new
artemis.continuous-integration.bulk-trigger.max-queued-jobs-per-build-slot(default 2, 0 disables the wait) andmax-wait-minutes(default 180) limit how many bulk builds are queued at once. See #14291. -
🧪 Never enable the demo profile on a production server: The
demoprofile creates demo accounts with the publicly documented passworddemo1234. See #14109.
Security hardening
- Fix security alerts and update dependencies by @krusche in #14332
- Enforce a 5000 character limit on answer message content by @HannesHarbeck in #13939
- Add server-side length validation for the lecture unit description by @HannesHarbeck in #14017
- Add server-side length validation for the plagiarism verdict message by @HannesHarbeck in #14055
- Improve reliability and OpenSSF practices by @krusche in #14258
- Record OpenSSF silver badge and label competency help by @krusche in #14270
- Refresh OpenSSF Gold assessment evidence by @krusche in #14289
Performance
AI services and adaptive learning
- Coordinate single-worker exercise generation by @FelixTJDietrich in #13828
API, client architecture, and code quality
- Reduce duplicated client and server implementation by @krusche in #14294
- Share grading editor templates by @krusche in #14272
- Split the presentation management page into smaller components by @jsuckart in #14307
- Fix hanging redis live save compare and set by @krusche in #14295
Operations, logging, and build
Tests and CI
- Fix CI execution and exam participation races by @krusche in #14292
- Cancel superseded e2e runs reliably by @krusche in #14256
- Wait for PostgreSQL TCP readiness by @krusche in #14287
- Stabilize exam boundary and search index test fixtures by @krusche in #14271
- Stabilize the shared build agent spies in integration tests by @krusche in #14298
- Stabilize the shared mail service spy in integration tests by @krusche in #14296
- Make the exam reload test deterministic by @krusche in #14318
- Isolate http mocks from periodic lecture synchronization by @krusche in #14331
- Improve server vulnerability scanner test coverage by @krusche in #14279
- Improve student export and csv formatting test coverage by @krusche in #14280
- Expand meaningful server test coverage by @krusche in #14286
Full Changelog: 10.3.1...10.4