Releases: MaMpf-HD/mampf
v1.15.0
At the end of 2024, we serve you with a ton of improvements to MaMpf ✨. With regards to the UI, the biggest change is the redesigned profile page shining in new splendor (and better adapted to mobile phones as well):
You might be wondering: what is that Redeem voucher
field at the top? Well, that's a new voucher system we introduced to be better compliant to GDPR. Previously, elevated users like teachers could search for users in the whole database, e.g. when they wanted to assign them as tutors for their lecture. This is problematic since teachers could see all users in the database, including their e-mail.
With the new system, teachers can no longer use such a search. Instead, they most probably already have some contact to the users, e.g. via e-mail. So why not leverage that? From now on, teachers create a so-called voucher, which is a secure hash. They send it via another channel like e-mail to the users they want to give the "tutor status" for their lecture. Those users can then redeem the voucher on their profile page. A similar mechanism exists for speakers of a seminar, teachers themselves and editors of lectures.
As usual we upgraded our dependencies. 🔍 Shoutout to @christian-heusel who pointed us to an outdated solr version in #700 (solr is the search engine we are using). We also updated our security policy. At this page, you can report any security vulnerabilities without having to make them public in a GitHub issue.
For devs
As a highlight in the backend, developers now have the possibility to create ERD diagrams locally as PDF files (see just utils erd
. Please add new diagrams when you modify the database tables 🙏
We now also support dynamic instance method calls on FactoryBot objects in Cypress, see #696. Just use .call.my_rails_method_name
on the respective objects. Furthermore, quite a few new Cypress integration tests were added, such that our CI/CD pipeline takes really long to complete 🙈, but at least many scenarios are covered. We want to prevent regressions and give you the best possible experience with MaMpf.
What's Changed
- Add
just
commands for docker logs by @Splines in #681 - Fix lecture edit page if active term is not set by @fosterfarrell9 in #683
- Clean up Gemfile & pin all gems by @Splines in #680
- Remove unnecessary
with_teacher_by_id
trait by @Splines in #687 - Explicitly set locale to German in course specs by @Splines in #692
- Vouchers for user promotion - Part 1: Introduction of Vouchers by @fosterfarrell9 in #670
- Deal with registration edge cases in UserCleaner by @Splines in #693
- Update contribution guide & year in license file and footer by @Splines in #689
- Update Gemfile dependencies (
bundle update
) by @Splines in #688 - Fix annotation feedback not shown when share feature is disabled by @Splines in #686
- Apply RootPathnameMethods linting suggestion by @Splines in #695
- Allow dynamic instance method calls on FactoryBot objects in Cypress by @Splines in #696
- Init support for entity-relationship diagram creation (Ruby ERD) by @Splines in #697
- Vouchers for user promotion - Part 2: Redemption by @fosterfarrell9 in #671
- Add Ruby Test explorer to recommended VSCode extensions by @Splines in #705
- Init dependencies (deps) Just commands by @Splines in #711
- Fix annotation status default value in UI by @Splines in #708
- Update RuboCop & fix offenses by new lints by @Splines in #714
- Update Gems by @Splines in #712
- Update Node.js dependencies by @Splines in #713
- Fix flaky user deletion & redemption cypress test by @Splines in #718
- Disable Style/ArrayIntersect on one line by @Splines in #720
- Add "no results" messages pointing to new voucher system by @Splines in #707
- Redesign profile page by @Splines in #706
- Add
just docker rebuild
command by @Splines in #719 - Merge hotfixes of
main
intodev
by @Splines in #722 - Fix flaky Cypress submission test by @Splines in #725
- Fix failing
just docker rebuild
script by @Splines in #724 - Fix flaky voucher redemption Cypress test by @Splines in #726
- Update security policy by @Splines in #727
- Remove obsolete tutorial name search field by @fosterfarrell9 in #728
- Continuous Release 1.15.0 by @Splines in #723
Full Changelog: v1.14.4...v1.15.0
v1.14.4
This is yet another fix to hopefully put an end to UserCleaner errors 🙈.
The problem was that we enqueued a final mail right before the user was deleted. But when that mail was sent out, the user object didn't exist anymore resulting in an error. We now pass the respective user fields like email
and locale
directly to the mail method by value and not by reference to avoid this error. See #717 for more details.
What's Changed
Full Changelog: v1.14.3...v1.14.4
v1.14.3
v1.14.2
This is a hotfix to avoid spamming users with mails. In #647, we've introduced a new UserCleaner that deletes stale users that haven't used MaMpf for too long (6 months). Of course, these users are warned beforehand by means of mails like "Your account will be deleted in 40 days". Unfortunately, some of these mails are still scheduled even though the user was already deleted after 40 days. These jobs will then fail as the user cannot be found anymore. Due to this exception, the mail will be sent multiple times to test if it still doesn't work, thus the user is spammed with mails.
This is just a hotfix and we will definitely investigate why the jobs are enqueued for so long in the first place. A better strategy would be to delete all remaining jobs for a user before deleting their account such that no stale jobs are present in the queue.
What's Changed
- Hotfix: Set retry option to false for UserCleanerJob by @fosterfarrell9 in #715
Full Changelog: v1.14.1...v1.14.2
v1.14.1
v1.14.0
After quite some time, here we are again with a new feature-packed release for MaMpf 🎉
One highlight is certainly the redesign of the media cards in #656
Furthermore, we've introduced a completely new annotation overview page in #668. You can visit it here (click on the annotations icon in the top navbar). On this page, you will find every annotation you've ever created on MaMpf. And for teachers: you can see the students annotations here if they shared one of their annotations with you.
Apart from that, most changes are non-user-facing changes. We updated dependencies to newer versions to mitigate vulnerabilities. We initialized the amazing just
command line runner to have access to frequently-used commands at our fingertips. We also setup up the whole infrastructure for Cypress tests again, so we will now also test our frontend more extensively via end-to-end tests.
One big change in our backend is the new User cleaner. The old one would log in to our email server and search for bounced mails. This was very error-prone and brittle. With the new approach, we use the information of your last login date. When you haven't logged in for 6 months, we'll send you a warning mail that your account will be deleted in 40 days. Just log in during that time to avoid losing your MaMpf account.
What's Changed
And there are many more changes, see the complete list here:
- Don't just mount
spec
folder, but completeapp
folder for tests by @Splines in #648 - Fix flaky watchlist tests by @Splines in #650
- Get Cypress up and running again (with docker and interactive testing) by @Splines in #652
- Don't use VSCode ESLint experimental flag anymore by @Splines in #662
- Disable Codecov patch/project checks in CI/CD by @Splines in #664
- Init
just
as command-line runner by @Splines in #660 - Fix DB preseeding by @Splines in #665
- Redesign media cards by @Splines in #656
- Add endpoint to skip validation in Cypress tests by @Splines in #669
- Update Gemfile dependencies by @Splines in #672
- Update yarn dependencies by @Splines in #673
- Add UI feedback for closing/opening discussions by @Splines in #674
- Fix rubocop "where range" by @Splines in #675
- Add annotations overview page & improve Cypress commands by @Splines in #668
- Destroy talk media upon user deletion by @Splines in #651
- Tests: Fix database cleaner separation by @Splines in #676
- Delete users that haven't logged in for too long by @Splines in #647
Full Changelog: v1.13.0...v1.14.0
v1.13.0
🤠 With this release, we have redesigned the edit page for lectures. If you're a teacher, you will now see the following view. We made sure that the things you want to change are easily accessible and that you don't have to first find them in many submenus. Instead, they are right at your fingertips. We've reduced some visual clutter and regrouped items together, e.g. "announcements", "forum" and other comment-related settings can be found in the Communication
section.
- If you have any feedback related to the new view, let us now via the MaMpf Feedback button (in the non-admin view, the star icon next to the search bar in the top right corner).
- Note that
Import Media
can be found in theInfo
section. We will probably merge this into theContent
section later on, but for now, we put it toInfo
.
What's Changed
- Fix broken interactions controller by @fosterfarrell9 in #629
- Delete remaining pull request GitHub template by @Splines in #635
- Update active record schema version to 7.1 by @Splines in #634
- Upgrade Gemfile and yarn dependencies by @Splines in #633
- Upgrade Node.js dev dependencies & fix ESLint config by @Splines in #636
- Add unit tests back to pipeline & improve VSCode integration by @Splines in #581
- Pin
thredded
to recent Git commit by @Splines in #643 - Remove obsolete docker compose version specifiers by @Splines in #641
- Open interactive area if chapters or references are present in video by @Splines in #644
- Fix broken deletion of questions by @fosterfarrell9 in #640
- Redesign lecture edit page for lecturers by @Splines in #628
Full Changelog: v1.12.1...v1.13.0
v1.12.1
This release encompasses hotfixes that we had to perform in the course of the 29th of April 2024. Note that on top of that, media was not accessible in MaMpf in the evening due to an expired certificate of our media server (the latter problem is still currently worked on).
Hotfixes
- Add a missing key in a locale file (see #630)
- Set the
raise_on_missing_translations
config option back tofalse
(see #631). We have set it totrue
in the upgrade to Rails 7.1 (see #609). However, this has caused troubles in production that we have to further investigate, so we disabled it for now. - Downgrade Rack to
2.2.9
(see #632). This is because the new version produces an incorrect parameter hash for our controllers that contain nested forms. Will have to investigate further, so for now we downgraded Rack. For the root cause, see rack/rack#2128.
Complete list of PRs
- Hotfix: Add missing key in locale file by @fosterfarrell9 in #630
- Hotfix: Set raise_on_missing_translations flag to false by @fosterfarrell9 in #631
- Hotfix: Downgrade Rack to 2.2.9 by @fosterfarrell9 in #632
Full Changelog: v1.12.0...v1.12.1
v1.12.0
User-facing changes
- We have a brand-new README, see #614
- Only admins are now allowed to change course editors, see #610
- Broken tag highlighting in lecture edit page (for teachers/admins) is fixed, see #618
- Pixelation of screenshots ("thumbnails") for videos is fixed by settings the correct width/height of a hidden canvas element, see #623
- The emergency link of the annotation tool was removed, see #625
Internal changes
- Upgraded Rails to v7.1 and updated gems (mostly only their minor versions), see #609
- Updated Rubocop (Ruby linter) and enforced the new cops, see #617
- We now use a now repo to store "init" ("preseed") data for our local database during development, see #612. Due to a mistake, we had to comment the respective Docker env variables again in #615
- Cleaned up some config files and use a new
.config
directory, see #613 - Removed the GitHub Pull request templates, see #626
- Added the
public
prefix for thegen_random_uuid()
in the db schema (this was done automatically by Rails), see #619 - We don't raise an exception anymore for a broken & deactivated migration, see #620
- VSCode changed an identifier in the
settings.json
for the Ruby LSP plugin, see #616
List of PRs
- Only allow admins to change course editors by @fosterfarrell9 in #610
- Use new preseed links to init data in local db by @Splines in #612
- Uncomment preseed Docker env vars by @Splines in #615
- Add
public
prefix forgen_random_uuid()
in db schema by @Splines in #619 - Don't raise exception for broken migration anymore by @Splines in #620
- Use new identifier for Ruby LSP VSCode plugin settings by @Splines in #616
- Fix broken tag highlighting for lectures admin view by @Splines in #618
- Clean up config files (and use new
.config
dir) by @Splines in #613 - Fix missing width and height setting of canvas by @Splines in #623
- Update Rubocop version and enforce all cops by @Splines in #617
- Remove emergency link by @Splines in #625
- Remove GitHub Pull request templates by @Splines in #626
- Upgrade Rails to v7.1 & update gems (mostly only minor versions) by @Splines in #609
- Rewrite Readme by @Splines in #614
Full Changelog: v1.11.1...v1.12.0
v1.11.1
This release just introduces a hotfix to deal with some small annotation-tool related infant diseases (namely when a lecture
variable was nil and we didn't notice that).
What's Changed
- Fix annotation tool infant diseases by @Splines in #606
- Fix
git.inputValidation
VSCode setting by @Splines in #607
Full Changelog: v1.11.0...v1.11.1