Skip to content

Releases: MaMpf-HD/mampf

v1.15.0

14 Dec 20:14
412c981
Compare
Choose a tag to compare

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):

image

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.

image

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

Full Changelog: v1.14.4...v1.15.0

v1.14.4

01 Dec 21:36
ae4e982
Compare
Choose a tag to compare

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

  • Fix unknown user variable after deletion by @Splines in #717

Full Changelog: v1.14.3...v1.14.4

v1.14.3

01 Dec 16:44
2dc4bd6
Compare
Choose a tag to compare

In this fix, we improve some edge cases of the UserCleaner responsible to delete old users that haven't logged in for too long. See more details in #716 and #693.

What's Changed

  • Deal with registration edge cases in UserCleaner (cherry-pick #693) by @Splines in #716

Full Changelog: v1.14.2...v1.14.3

v1.14.2

26 Nov 12:20
46a3133
Compare
Choose a tag to compare

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

Full Changelog: v1.14.1...v1.14.2

v1.14.1

20 Aug 13:36
76c2676
Compare
Choose a tag to compare

In this release, we just rename a file to make the new UserCleaner work (introduced in #647)

What's Changed

Full Changelog: v1.14.0...v1.14.1

v1.14.0

14 Aug 15:34
ca2e126
Compare
Choose a tag to compare

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

redesign media cards

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.

annotations overview page

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 complete app 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

30 May 22:23
b84fcda
Compare
Choose a tag to compare

🤠 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.

image

  • 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 the Info section. We will probably merge this into the Content section later on, but for now, we put it to Info.

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

29 Apr 22:13
dce05c3
Compare
Choose a tag to compare

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 to false (see #631). We have set it to true 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

Full Changelog: v1.12.0...v1.12.1

v1.12.0

27 Apr 12:48
9632ccf
Compare
Choose a tag to compare
MaMpf footer

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 the gen_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 for gen_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

03 Apr 23:15
4a37d85
Compare
Choose a tag to compare

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

Full Changelog: v1.11.0...v1.11.1