Skip to content

10.4

Choose a tag to compare

@bensofficial bensofficial released this 23 Oct 04:57
· 144 commits to develop since this release
d8594cc

⭐️ 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 demo profile 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 #14212
  • Communication: Add formatted message editing by @krusche in #14254
  • Communication: Open conversations at the first unread message and count replies as unread by @krusche in #14288
  • Exam mode: Enhance exam checklist table for exercise groups and points by @julian-christl in #14278
  • Global search: Find channels only by their name by @bassner in #14302
  • Iris: Filter the admin dashboard by AI selection by @bassner in #14314
  • Iris: Remove the Memiris integration by @bassner in #14315
  • Lectures: Add TUM.Live course connections by @bassner in #13693
  • Programming exercises: Set the starting experience level for the online IDE by @spethso in #14173
  • Programming exercises: Improve participation submissions and build controls by @krusche in #14290
  • Programming exercises: Wait for build queue room during bulk build triggers by @krusche in #14291
  • General: Allow interested parties to start Artemis with demo data by @MaximilianAnzinger in #13416
  • General: 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 #14284
  • Communication: Fix forwarded message access and clarify permission errors by @krusche in #14319
  • Communication: Hide resolved posts after status change when unresolved filter is active by @julian-christl in #14283
  • Lectures: Show slides without inverted colors in dark mode by @krusche in #14293
  • Programming exercises: Serialize the checkout and pull of a working copy by @krusche in #14311
  • Programming exercises: Fix an edge case which prevents deleting an exercise while builds deliver results by @krusche in #14297
  • Programming exercises: Improve validation of repository paths by @krusche in #14334
  • Quiz exercises: Prevent practice initialization from colliding with live participation by @krusche in #14317
  • General: 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, the Memiris toggle 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 data for 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-url and api-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) and max-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 demo profile creates demo accounts with the publicly documented password demo1234. See #14109.

Security hardening

Performance

  • Reduce database calls during programming exercise creation by @krusche in #14253

AI services and adaptive learning

API, client architecture, and code quality

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