Releases: ls1intum/Artemis
7.1.0
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Note
This release contains a performance degradation in the display of exercise details in course management due to issues with the latest Hibernate 6.5.x upgrade. Please do not install this version and switch directly to 7.1.1.
Improvements
Programming exercises
: Improve repository view and allow download by @pzdr7 in #8541Programming exercises
: Improve the diff viewer with Monaco's built-in code diff by @pzdr7 in #8540Programming exercises
: Add GenAI feedback requests by @undernagruzez in #8199Integrated code lifecycle
: Add triggers to delete unused docker images by @BBesrour in #8517Integrated code lifecycle
: Offer deletion of build plans when using Jenkins by @b-fein in #8543Integrated code lifecycle
: Simplify repository handling for commit history by @krusche in #8546Integrated code lifecycle
: Add duration in build queue view by @BBesrour in #8608Integrated code lifecycle
: Add option to clone repositories using SSH by @krusche in #8110Tutorial groups
: Add utilization and attendance to tutorial groups sidebar by @rabeatwork in #8586Adaptive learning
: Enable users to view standardized competency details on json import by @rstief in #8475Adaptive learning
: Add export of standardized competency catalog to a json file by @rstief in #8616Adaptive learning
: Add source display to standardized competencies by @rstief in #8638Communication
: Enable code of conduct when communication is enabled by @sarpsahinalp in #8577Lectures
: Group lectures in sidebar by start and end date by @rabeatwork in #8588Exam mode
: Change test case default visibility to after results release date by @florian-glombik in #8451Exam mode
: Display assessment check table in ExamChecklist component by @eceeeren in #8120Exam mode
: Use events instead of notifications for exercise updates by @coolchock in #8123General
: Add placeholder message if student isn't enrolled in any courses by @zhngharry in #8503General
: Show navbar menu in every student view by @rabeatwork in #8564General
: Improve translations by @krusche in 32c2864
Bugfixes
Programming exercises
: Fix an issue when re-evaluating results by @Strohgelaender in #8628Programming exercises
: Fix recent build results when switching between exercises by @rabeatwork in #8640Programming exercises
: Fix diff view for renamed files by @pzdr7 in #8634Integrated code lifecycle
: Add timeout when stopping hanging containers in edge cases by @laurenzfb in #8587Quiz exercises
: Navigate back to exercise overview correctly during quiz creation by @rabeatwork in #8642
Development
- Fix link to development process guidelines by @MaximilianAnzinger in #8593
- Fix quiz exercise drop location e2e test by @muradium in #8581
- Speedup docker image cleanup information retrieval by @krusche in #8604
- Update naming convention in server and client coding guidelines by @BBesrour in #8584
- Fix link to PR naming convention in template by @florian-glombik in #8596
- Update client dependencies by @krusche in #8606
- Bump hibernate version by @julian-christl in #8617
- Update server dependencies and improve server test output by @krusche in #8620
- Fix flaky server test by @BBesrour in #8568
- Add multi node e2e tests with playwright by @BBesrour in #8599
- Add multiple cards as user interface components for the new sidebar by @egekurt123 in #8554
- Implement getBuildStatus for Local CI by @laurenzfb in #8468
- Add support for multiple Artemis instances in Athena by @undernagruzez in #8635
- Use object mapper and streams to improve and simplify the code by @krusche in #8372
- Improve XML parsing by @krusche in #8462
- Move rotate icon css to global style by @rstief in #8646
- Add documentation about the usage of TreeSet in domain objects by @Hialus in #8550
- Fix version table check for MySQL by @Hialus in #8652
- Extract build agent git service by @krusche in #8595
- Update server dependencies by @krusche in #8663
- Fix playwright e2e multi-node compose file by @BBesrour in #8666
- Update playwright e2e test dependencies by @krusche in #8627
- Add e2e playwright tests for programming exercise team participation by @muradium in #8559
- Add e2e playwright tests for exam announcement by @muradium in #8630
- Fix missing course participants in playwright e2e tests by @muradium in #8633
- Update maintainers by @FelixTJDietrich in #8661
- Add more interested universities by @krusche in f3948cc
- Update to Hibernate 6.5.2 by @krusche in 5d703c7
Reviewers with the highest level of commitment
Full Changelog: 7.0.5...7.1.0
7.0.5
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Improvements
Integrated code lifecycle
: Separate build agent summary and details view by @mateusmm01 in #8395Communication
: Relocate resolved icon on messages page by @egekurt123 in #8486
Bugfixes
Lectures
: Fix an issue with a readonly validation for attachments by @az108 in #8531General
: Fix exercise archival for courses and exams by @julian-christl in #8527General
: Fix validation for entity deletion confirmation by @zhngharry in #8448
Development
- Add e2e playwright tests for exam results page by @muradium in #8505
- Adjust playwright e2e tests by @az108 in #8547
- Update documentation with the new Artemis development process by @bgeisb in #8089
- Enable disabled submission policy integration tests by @JohannesWt in #8556
- Update dependencies by @krusche in #8560
- Support Pyris V2 by @Hialus in #8286
- Remove java assert statements by @Strohgelaender in #8574
- Fix failing attachment client test by @az108 in #8573
- Unify capitalization of GitHub issue categories by @Strohgelaender in #8569
- Add IntelliJ run configuration for Jenkins+LocalVC by @b-fein in #8538
- Add architecture test for endpoint naming conventions by @Strohgelaender in #8493
- Fix cases of ignored return values by @Strohgelaender in #8575
- Delay scheduled task to speed up application start by @krusche in #8557
- Add branch naming conventions to documentation by @rstief in #8504
- Refactor package names by @krusche in 4d2367c
- Use TaskScheduler for Docker container cleanup by @krusche in 766f0fc
New Contributors
- @bgeisb made their first contribution in #8089
- @zhngharry made their first contribution in #8448
Full Changelog: 7.0.4...7.0.5
7.0.4
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Improvements
Integrated code lifecycle
: Force remove timed-out containers by @laurenzfb in #8553Tutorial groups
: Add sidebar to student view by @rabeatwork in #8533
Bugfixes
Programming exercises
: Read all test report XML files in OCaml by @just-max in #8497General
: Handle error when course title too long by @sarpsahinalp in #8544
Development
- Add documentation for production setup using Docker by @BBesrour in #8400
- Add e2e tests for programming exercise teams by @muradium in #8532
- Refactor LTI classes by @basak-akan in #8172
- Fix flaky playwright e2e test by @sarpsahinalp in #8548
- Improve error handling when sending emails fails by @krusche in #8555
New Contributors
Full Changelog: 7.0.3...7.0.4
7.0.3
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Improvements
Programming exercises
: Display error message for title and shortname conflicts on localVCS by @florian-glombik in #8523Programming exercises
: Improve tooltips and exercise summary on the instructor details page by @florian-glombik in #8530Integrated code lifecycle
: Trim docker image name to avoid white space issues by @krusche in #8518Integrated code lifecycle
: Always create submission results for failed build jobs by @laurenzfb in #8534Integrated code lifecycle
: Add finished build jobs view by @mateusmm01 in #8436Integrated code lifecycle
: Add checks for the docker image architecture by @Hialus in #8490Modeling exercises
: Provide automatic feedback with Athena by @matthiaslehnertum in #8048Adaptive learning
: Add import of standardized competency into course by @rstief in #8467Communication
: Add course wide search, filtering and sorting for chat messages by @egekurt123 in #8331Assessment
: Add internal assessment notes for tutors by @chrisknedl in #8174General
: Add a "More" option to the new navigation bar on the left by @edkaya in #8412General
: Reduce navigation bar height by @rabeatwork in #8539General
: Improve German language consistency by @egekurt123 in #8491
Bugfixes
Programming exercises
: Prevent unnecessary page refreshes when opening repositories by @pzdr7 in #8496Programming exercises
: Fix Jenkins template for C by @julian-christl in #8499Programming exercises
: Remove image pull progress build logs by @Strohgelaender in #8525Programming exercises
: Display automatic assessment history correctly by @rabeatwork in #8542Integrated code lifecycle
: Fix an issue with binary file conversions before build execution by @krusche in #8519Integrated code lifecycle
: Fix test results path for C exercises by @Strohgelaender in #8522Iris
: Remove Iris from code editor by @MichaelOwenDyer in #8306Tutorial groups
: Fix the contrast in the tutorial group rows in the dark mode by @edkaya in #8494Tutorial groups
: Fix a coloring issue in dark mode by @edkaya in #8537
Development
- Improve git URI handling for LocalVC by @Hialus in #8484
- Add documentation for build queue view by @mateusmm01 in #8453
- Remove all star imports by @Strohgelaender in #8492
- Add playwright e2e tests for logout by @muradium in #8458
- Add playwright e2e tests for course icons by @muradium in #8459
- Prevent unnecessary requests to the server for IRIS availability in the exercise view by @Hialus in #8502
- Remove docker config from core nodes by @krusche in #8520
- Improve the server tests for AuxiliaryRepositoryService by @sarpsahinalp in #8516
- Improve spotless check against wildcard imports by @Strohgelaender in #8495
- Add e2e tests for programming exercise participation with git operations by @muradium in #8290
- Add playwright e2e tests for system health by @muradium in #8457
- Refactor LinkPreviewIntegrationTest by @sarpsahinalp in #8449
- Fix slow programming exercise retrieval from participation by @pzdr7 in #8526
- Add safeguards against split Hazelcast clusters by @Hialus in #8473
- Update dependencies by @krusche in #8535
- Reduce log noise during server startup by @krusche in c7f4766 and 80a3042
Full Changelog: 7.0.2...7.0.3
7.0.2
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Improvements
Programming exercises
: Allow instructors to edit programming exercises in the new code editor by @pzdr7 in #8389Programming exercises
: Cache dependencies in the Java blackbox template by @BaumiCoder in #8351Programming exercises
: Upgrade Java Blackbox template to java 22 by @BaumiCoder in #8388Programming exercises
: Allow tutors to assess submissions in the new code editor by @pzdr7 in #8437Programming exercises
: Display hidden files when editing as instructor and viewing the repository by @pzdr7 in #8488Integrated code lifecycle
: Improve build logs feature by @laurenzfb in #8383Integrated code lifecycle
: Improve container setup by @Hialus in #8489Integrated code lifecycle
: Automatically cleanup repositories and build plans on deletion of programming exercises by @coolchock in #8476Quiz exercises
: Improve apollon diagram import by @milljoniaer in #8466Adaptive learning
: Add import of standardized competencies from .json files by @rstief in #8377Adaptive learning
: Improve layout of competency relation graph by @rstief in #8443Adaptive learning
: Improve generation of missing learning path by @MaximilianAnzinger in #8385Exam mode
: Allow students to see if their attendance was checked by @coolchock in #8074General
: Add buttons to the avatar in the course edit view and move image cropper into a modal by @eceeeren in #8143General
: Improve breadcrumb divider design by @simon-hng in #8423General
: Hide group name customization by default by @pzdr7 in #8432
Bugfixes
Programming exercises
: Fix superfluous whitespace in code editor for student's submission by @JohannesStoehr in #8393Programming exercises
: Reject results without commit hash by @Strohgelaender in #8370Quiz exercises
: Fix adding file attachments on the edit view by @sarpsahinalp in #8445Exam mode
: Update problem statement content only if there is a new change by @kaancayli in #8356Assessment
: Fix export button in scores page by @az108 in #8478General
: Fix style of exercise footer for dark mode by @rabeatwork in #8442General
: Fix selected exercise and lecture when switching courses by @rabeatwork in #8441General
: Fix an issue when selecting a category tag in the exercises by @edkaya in #8408
Development
- Ignore blank lines in Aeolus scripts by @reschandreas in #8454
- Fix flaky postgres test by @Strohgelaender in #8403
- Regenerate Aeolus LocalCI build scripts by @b-fein in #8390
- Improve authorization test coverage by @julian-christl in #8456
- Add production setup documentation for integrated code lifecycle by @laurenzfb in #8414
- Fix issue where the VCS token is not present for some users after logging in by @chrisknedl in #8247
- Add gitHub action outputting the changed files by @Jan-Thurner in #8407
- Fix Docker container cleanup issue by @laurenzfb in #8464
- Fix server style in BuildJobContainerService by @Hialus in #8474
- Enable ExamParticipationIntegrationTest > testGetExamScore by @FelixTJDietrich in #8479
- Enable exam tests by @FelixTJDietrich in #8480
- Refer to course enrollment instead of course registration when editing courses by @pzdr7 in #8435
- Improve complaint component server API design by @beyzaaltuntas in #8181
- Update the postgresql setup in the contributor guide by @BaumiCoder in #8434
- Update exercise documentation by @milljoniaer in #8349
- Update Orion documentation by @Kroko-fant in #8328
- Disable redundant cypress tests by @muradium in #8431
- Inline endpoint constants by @Strohgelaender in #8438
- Update client dependencies by @krusche in 0e85a0d and ad66a4b
- Update server dependencies by @krusche in 9f33594 and c7faa8b
- Update jacoco version for server tests by @krusche in 343bb58
- Fix client tests by @krusche in 73636d9
- Update jacoco version for server tests by @krusche in 343bb58
- Retry docker inspect and pull in case of bad request exception and improve logs by @krusche in c0b18d3
- Improve documentation and tooltips related to build scripts and docker image customization by @krusche in 9f08ce6
New Contributors
- @edkaya made their first contribution in #8408
- @az108 made their first contribution in #8478
- @sarpsahinalp made their first contribution in #8445
Full Changelog: 7.0.1...7.0.2
7.0.1
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Improvements
Programming exercises
: Remove Java 16 specific Spotbugs Rule by @JohannesStoehr in #8397Programming exercises
: Include mode selection in validation status by @milljoniaer in #8381Programming exercises
: Allow viewing the repository using the new code editor by @pzdr7 in #8433Adaptive learning
: Add knowledge area management by @rstief in #8309Tutorial groups
: Improve tutor usability by @JohannesStoehr in #8426Exam mode
: Show result for programming exercises on the exam overview page by @undernagruzez in #8354
Bugfixes
Programming exercises
: Fix setting language without project type by @milljoniaer in #8399General
: Fix spelling mistake in german "teilname" by @BaumiCoder in #8396Lectures
: Fix display of end date in header by @JohannesStoehr in #8392Exam mode
: Fix rendering of the tests status in the exam summary by @coolchock in #8418General
: Do not show unenrollment button to tutors by @JohannesStoehr in #8416
Development
- Add documentation for build agent view by @mateusmm01 in #8417
- Delete process polyfill and adjust paste-related e2e tests by @pzdr7 in #8391
- Update dependencies for the documentation build by @b-fein in #8323
- Improve authentication manager definition by @julian-christl in #8398
- Remove unused methods of ArtemisAuthenticationProvider by @julian-christl in #8387
- Unify behavior of checkbox options on the course update page by @b-fein in #8382
- Allow overriding any template resource file by @b-fein in #8380
- Add e2e tests for exporting quiz exercise questions by @muradium in #8374
- Refactor deprecated usage of throwError by @MaximilianAnzinger in #8386
- Fix flaky e2e tests by @muradium in #8420
- Bump gradle/wrapper-validation-action from 2 to 3 by @dependabot in #8406
- Fix CI documentation build step by @b-fein in #8404
- Re-enable HTTP basis authentication method and extend security documentation by @julian-christl in #8411
- Add documentation for build job cancellation by @mateusmm01 in #8410
- Fix several server code issues by @julian-christl in #8405
- Support the redeployed test servers by @Hialus in #8415
- Disable HTTP basic auth to fix an issue with LocalCI buildagents by @Hialus in #8444
- Fix server starts check script by @tobias-lippert in #8452
- Update setup documentation to JDK 21 by @florian-glombik in #8450
New Contributors
- @BaumiCoder made their first contribution in #8396
Full Changelog: 7.0.0...7.0.1
7.0.0
⭐️ If you find Artemis valuable, please consider giving our GitHub project a star! ⭐️
Important information for administrators
- Migration path: Version 7.0.0 is designed for fresh installations of Artemis or upgrades from version 6.9.6 only, due to significant database migration cleanups.
- Pre-deployment testing: We strongly recommend thoroughly testing this release in a test environment before deployment on production systems, as it includes extensive updates.
Breaking changes
- Discontinued support for Bitbucket, Bamboo, and JIRA: We are moving towards an integrated code lifecycle model. If you are still using these services, please reach out for guidance on transitioning to more robust integrated solutions.
- Artemis now requires Java 21, so make sure that you install it before upgrading to the new version
Release highlights
- Revamped user interface: We're excited to unveil a completely redesigned interface, initially available for students in the exercises and lectures view, with plans to expand to other sections and for instructors soon.
- New online code editor: Enjoy a state-of-the-art coding experience with our new online code editor inspired by Monaco/Visual Studio Code, currently available for students and soon for instructors with additional improvements in the pipeline.
- Integrated code lifecycle: The new LocalVC and LocalCI are now production-ready and scalable. We're committed to further enhancing these features in upcoming releases.
- Upgraded technical infrastructure: Artemis is now powered by Java 21, Spring Boot 3, and Hibernate 6, alongside numerous other dependency upgrades to ensure our platform remains cutting-edge.
- Standardized competency management: We've simplified the process of creating and managing competencies, making it easier than ever to define and relate them within Artemis to facilitate a more extensive use of learning paths.
- Enhanced navigation and validation: Instructors experience improved navigation and validation in the exercise creation and editing process, designed to enhance user efficiency and satisfaction.
Improvements
Programming exercises
: Add platform independent dejagnu template by @reschandreas in #8029Programming exercises
: Upgrade deprecated PMD rules by @Strohgelaender in #8293Integrated code lifecycle
: Make result processing more robust against invalid static code analysis file formats by @Strohgelaender in #8307Modeling exercises
: Improve synchronization of team-based exercises by @loreanvictor in #8078Modeling exercises
: Improve modeling editor readonly view by @milljoniaer in #8275Adaptive learning
: Improve user interface for competency generation by @rstief in #8285Adaptive learning
: Add standardized competency management by @rstief in #8238Exam mode
: Improve date time picker by @beyzaaltuntas in #8147Iris
: Add disclaimer text by @kaancayli in #8302General
: Unify exercise section separation by @milljoniaer in #8216General
: Replace tab bar with a side navigation bar in the students view by @rabeatwork in #8083General
: Allow admins to import multiple users by @krusche in #8189General
: Add sidebar for exercise and lecture view by @rabeatwork in #8246General
: Add dynamic tab titles by @mallgaier in #8145General
: Adapt exercise footer for small screens and general footer for environments by @rabeatwork in #8359General
: Simplify footer by @krusche in #8378
Bugfixes
Programming exercises
: Fix template upgrade for maven exercises by @Strohgelaender in #8241Programming exercises
: Fix overflowing content for exercises with UML diagrams by @rabeatwork in #8350Programming exercises
: Fix locking and error handling of new code editor for students by @pzdr7 in #8365Programming exercises
: Fix result processing for ocaml exercises by @Strohgelaender in #8311Programming exercises
: Remove support for JIRA, Bitbucket and Bamboo by @MaximilianAnzinger in #8201Integrated code lifecycle
: Fix missing build plan configuration when importing programming exercises by @krusche in #8315Modeling exercises
: Fix assessment page title by @loreanvictor in #8357Quiz exercises
: Fix an issue with drag and drop positioning by @matthiaslehnertum in #8265Quiz exercises
: Fix footer in participation view by @milljoniaer in #8335Quiz exercises
: Correct drop location computation by @matthiaslehnertum in #8283Quiz exercises
: Fix an issue in the export by @muradium in #8362Communication
: Fix code of conduct to only appear if it has not been accepted by @rstief in #8339Messages
: Fix creation and display of direct messages by @julian-christl in #8260Exam mode
: Fix sticky navigation bar header by @rabeatwork in #8337Exam mode
: Fix spacing in quiz navigation by @JohannesWt in #8341Exam mode
: Fix missing spacing at the end of exercise in exams by @mateusmm01 in #8345Exam mode
: Fix and issues when printing to PDF by @coolchock in #8364Exam mode
: Round working time when creating or updating exam by @pzdr7 in #8352Exam mode
: Prevent problem statement from closing when viewing changes by @pzdr7 in #8355General
: Fix sticky navigation bar during exercise creation by @milljoniaer in #8316General
: Fix date time picker issues for modeling, text, and file upload exercises by @laurenzfb in #8340General
: Adjust validation bar styles by @milljoniaer in #8347General
: Fix position of category select dropdown by @milljoniaer in #8342General
: Make the global footer shorter by @krusche in #8361General
: Fix programmatic scrolling to the top of the page by @pzdr7 in #8353
Development
- Fix service issue during startup by @laurenzfb in #8231
- Fix client tests by @milljoniaer in #8233
- Fix migration check that caused application to crash on repeated starts by @rstief in #8234
- Change client builder from browser esbuild to application by @pzdr7 in #8204
- Fix client layout for e2e tests by @julian-christl in #8245
- Refactor RepositoryAccessService and plagiarism access check by @mateusmm01 in #8209
- Remove trailing slashes in URLs by @julian-christl in #8242
- Remove redundant database columns from online course configuration by @basak-akan in #8148
- Upgrade to Spring Boot 3, Spring 6, Hibernate 6 by @julian-christl in #7719
- Bump actions/setup-node from 3 to 4 by @dependabot in #8255
- Add config variable for build log path by @laurenzfb in #8259
- Replace ant pattern matching and improve code base by @julian-christl in #8266
- Remove unused repository methods by @julian-christl in #8264
- Fix management dashboard queries for PostgreSQL applications by @julian-christl in #8270
- Fix team students eager loading for several occasions by @julian-christl in #7993
- Remove legacy resource by @krusche in #8274
- Restructure CompetencyIntegrationTest by @MaximilianAnzinger in #8192
- Update server dependencies by @krusche in #8276
- Improve server code by @krusche in #8212
- Prefer non empty json include annotation by @krusche in #8224
- Add domain objects for standardized competencies by @rstief in #8129
- Fix GitLab CI Setup by @bensofficial in #8023
- Add documentation for modeling exercises in Artemis iOS by @AlexanderG2207 in #8149
- Update LTI user d...
6.9.6
⭐️ If you like Artemis, please give this Github project a star ⭐️
Improvements
Integrated code lifecycle
: Export metrics for monitoring by @Hialus in #8292Integrated code lifecycle
: Show build logs for successful recent build jobs by @laurenzfb in #8304Integrated code lifecycle
: Reduce build agent payload size by @krusche in #8281Integrated code lifecycle
: Regularly clean up stranded build job containers by @laurenzfb in #8312
Bugfixes
Programming exercises
: Fix ssh local storage issue by @milljoniaer in #8317Integrated code lifecycle
: Fix missing build plan configuration when importing programming exercises by @krusche in 6629025
Development
- Rename database columns with keywords to be able to update liquibase by @krusche in #8280
- Add database changes for standardized competencies by @rstief in #8284
- Update client dependencies by @krusche in d7f291a
Full Changelog: 6.9.5...6.9.6
6.9.5
⭐️ If you like Artemis, please give this Github project a star ⭐️
Improvements
Integrated code lifecycle
: Improve Docker exception handling and fix race conditions by @laurenzfb in #8232
Bugfixes
Communication
: Fix display name of group chats by @rstief in #8261Messages
: Fix creation and display of direct messages by @julian-christl in #8260Quiz exercises
: Fix an issue with drag and drop positioning by @matthiaslehnertum in #8265
Development
- Add config variable for build log path by @laurenzfb in #8259
Full Changelog: 6.9.4...6.9.5
6.9.4
⭐️ If you like Artemis, please give this Github project a star ⭐️
Improvements
Programming exercises
: Add platform independent dejagnu template by @reschandreas in #8029Integrated code lifecycle
: Show build logs for submission results by @laurenzfb in #8170Integrated code lifecycle
: Allow force pushes to template, solution and tests repositories for editors by @laurenzfb in #8226Integrated code lifecycle
: Add commit history for solution, template and test repositories by @mateusmm01 in #8104Integrated code lifecycle
: Improve build queue und build agent view by @mateusmm01 in #8202General
: Unify exercise section separation by @milljoniaer in #8216
Bugfixes
Programming exercises
: Fix template upgrade for maven exercises by @Strohgelaender in #8241Integrated code lifecycle
: Fix access issues by @mateusmm01 in #8209Lectures
: Fix embedding of TUM-Live videos in lecture units by @JohannesWt in #8183
Development
- Fix service issue during startup by @laurenzfb in #8231
- Remove trailing slashes in URLs by @julian-christl in #8242
- Remove redundant database columns from online course configuration by @basak-akan in #8148
- Update client dependencies by @krusche in 1a91f57
Full Changelog: 6.9.3...6.9.4
New Contributors
- @JohannesWt made their first contribution in #8183