Releases: MaMpf-HD/mampf
v1.18.0
This update brings no new features, but bugfixes and version upgrades.
- On the forefront is the upgrade vom Rails 7.2 to 8.0 (#796 and #812). This is the latest version of Rails from March 12, 2025.
- Thanks to @Shteffitb who pointed out an issue with the new assignment invites introduced in #798. The fix is provided in #806.
- For developers: we now have a new command
just i18n health
that lets you check the health of our internationalization files (i18n).
What's Changed
- Improve code quality of Docker test setup script by @Splines in #797
- Upgrade Ruby on Rails (7.2 -> 8.0) by @Splines in #796
- Update dependencies by @Splines in #804
- Fix RuboCop lint errors by @Splines in #805
- Prevent showing invites for inactive assignments by @Splines in #806
- Fix date fields of Talk forms by @Splines in #808
- Fix missing i18n keys & inconsistent interpolations by @Splines in #810
- Fix nested array syntax in answer_params method by @fosterfarrell9 in #811
- Update Interactions Schema to Rails 8 by @fosterfarrell9 in #812
- Upgrade PostgreSQL client to 17 in development by @Splines in #814
- Fix test database username locally by @Splines in #815
- Use generic name for local database seed SQL file by @Splines in #816
- Update dependencies by @Splines in #818
- Init dependabot config by @Splines in #817
- Fix dependabot config array syntax by @Splines in #819
- Continuous Release 1.18.0 by @Splines in #803
Full Changelog: v1.17.0...v1.18.0
v1.17.0
PWA
We have great news, you can now install MaMpf as an app on your smartphone or your computer 🥳. To be more specific: #773 introduces basic PWA support (Progress Web App). The specific installation procedure depends on your OS, checkout this link for more information. Usually, it should really be straightforward.
Easier submission invitation
MaMpf user @Shteffitb requested this feature in #784 and here we deliver it. When you want to let somebody else join your submission for a homework, you have to exchange a code once. Afterwards (for subsequent submissions), you can directly invite the other person. As of #785, the invited person will now see an Accept invitation
button directly in MaMpf for this submission. [This is an alternative to opening your email client and clicking on the link we sent you in order to join.]

Naming of URLs (goodbye food)
You might have already noticed some funny URLs beforehand in MaMpf, e.g. this one for the exercise sheets page:
/lectures/123/food?project=keks
In the initial construction phase, this was a fun gimmick. The naming centered around food nouns is actually where the name MaMpf itself comes from (mampfen is colloquial German for to chow). However, for URLs, we noticed this was doing more harm than good as it is not clear what keks, kiwi, kaviar, sesam etc. actually mean. Instead, we now use names like Question, Script, Quiz, Exercise etc. See #754 for more details (and one fruit that is still left 😂)
Upgrading
Besides all of this, the big keyword is UPGRADING ✨
- We've upgraded Ruby on Rails from 7.1 to 7.2 (#749)
- We've upgraded Rack from 2.2 to 3.1 (#751) (also see #791 as follow-up)
- We've upgraded PostgreSQL from 15 to 17 (#783, locally and already a few weeks ago in production)
- and other dependency updates (#781 & #778)
Additionally for developers
- Our
dev
branch is renamed tonext
. As of now, everything related to "dev" and "development" means "locally". On our servers, we haveexperimental
andnext
as staging environments. (among others: #787) - The local environments
docker_development
anddevelopment
were merged together. It is now simplydevelopment
(#786) - We now have VSCode debugger support for Rails files. This makes life so much easier 🤓 (#790)
What's Changed
- Fix failing test due to outdated, hardcoded date strings by @Splines in #770
- Upgrade Ruby (3.1.4 -> 3.3.8) & Rails (7.1.3 -> 7.2.2.1) by @fosterfarrell9 in #749
- Upgrade Rack (2.2 -> 3.1) by @fosterfarrell9 in #751
- Remove download button from vignette videos by @f-buerckel in #774
- Fix editing of comments that have an annotation timestamp by @Splines in #775
- Init minimal Progressive Web App (PWA) support by @Splines in #773
- Remove food routes by @fosterfarrell9 in #754
- Update PostgreSQL 15->17 by @Splines in #783
- Update js-routes gem (v1.4.9 -> v.2.3.5) & rework JS routes config by @Splines in #781
- Add recreate & restart docker commands to just by @Splines in #782
- Remove remnants of special Internet Explorer treatment by @Splines in #780
- Reflect branch rename (dev->next) in GitHub Workflow by @Splines in #787
- Unify
docker_development
anddevelopment
environments by @Splines in #786 - Setup debugger for use in VSCode by @Splines in #790
- Fix nested forms for quizzes by @Splines in #791
- Remove remnants of food routes cleanup by @Splines in #777
- Allow user to accept submission invitation without having to enter code by @Splines in #785
- Update dependencies by @Splines in #778
- Replace static by dynamic term range by @Splines in #792
- Autocorrect or disable new RuboCop cops by @Splines in #795
- Continuous Release 1.17.0 by @Splines in #793
Full Changelog: v1.16.0...v1.17.0
v1.16.0
We introduce a completely new feature, called Vignettes, a word stemming from pedagogical studies. Therefore, it's not surprising that our client for this feature was the Pädagogische Hochschule (PH) Heidelberg. They wanted to issue questionnaires for their study participants and we're happy to announce that after one semester of work, mainly by @f-buerckel, these questionnaires are now available in MaMpf. Here are some screenshots to give you a glimpse into it:
There are many more features to it, e.g. you can also select a free text answer field, "number answer field", export slide statistics, link to more than one info slide and more. The main code changes stem from the big #737.
What's Changed
- Vignettes by @f-buerckel in #737
- Update dependencies by @Splines in #762
- Fix small Vignettes mistakes by @Splines in #764
- Continuous Release 1.16.0 by @Splines in #763
New Contributors
- @f-buerckel made their first contribution in #737
Full Changelog: v1.15.4...v1.16.0
v1.15.4
In this release, we add a client for Erdbeere, our mathematical example database, into MaMpf, such that the MaMpf backend and the Erdbeere backend can communicate directly with each other on our server in Heidelberg (#748). Furthermore, a bug fix is deployed to fix the failing of new lecture creations (#752) and a problem with the new voucher system (#759).
In an effort to decaffeinate our codebase, we also removed some first small .coffee
files and replaced them by .js
ones (#758).
What's Changed
- Add client for erdbeere by @fosterfarrell9 in #748
- Fix lecture creation by @fosterfarrell9 in #752
- Remove/Update year by @Splines in #756
- Start decaffeination of codebase by @Splines in #758
- Update dependencies by @Splines in #757
- Fix new Rubocop rule violations by @Splines in #760
- Fix undefined method
lecture
for redemption by @Splines in #759 - Continuous Release 1.15.4 by @Splines in #761
Full Changelog: v1.15.3...v1.15.4
v1.15.3
This version is only concerned with improving the dev experience concerning our Docker setup, see memory & speed improvements in #736. Lengthy container rebuilds, ade.
@MaMpf-HD/core Please wipe your local Docker setup once entirely to make room for the improved one. See the "Important" section in the PR comment.
What's Changed
- Make Docker setup less memory-intensive & build deps at container start by @Splines in #736
- Continuous Release 1.15.3 by @Splines in #747
Full Changelog: v1.15.2...v1.15.3
v1.15.2
This mainly fixes a bug where admins couldn't create a new lecture anymore, see #741.
What's Changed
- Fix new lecture creation by @Splines in #741
- Update dependencies (Ruby & Node.js) by @Splines in #742
- Fix rubocop rails linting by @Splines in #744
- Continuous Release 1.15.2 by @Splines in #743
Full Changelog: v1.15.1...v1.15.2
v1.15.1
We have another user cleaner fix for you as it turns out that user.update()
can silently fail. So we have to check for the return value and handle the case when the update didn't work 😅. See #733 for more details including a PDF that summarizes the bug.
As usual, we also updated our Node.js and Ruby dependencies (gems).
What's Changed
Full Changelog: v1.15.0...v1.15.1
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