Releases: MaMpf-HD/mampf
v1.20.0
This release comes with a brand-new lecture search for you. Just scroll down on the landing page to access it. This is the first step towards a new student dashboard.
We also move forward in the Müsli integration and replaced our custom Captcha solution by Altcha.
What's Changed
- Replace custom Captcha solution with Altcha by @Splines in #967
- Fix exception mailer by @fosterfarrell9 in #969
- Fix vignettes paths in LecturesController and navbar layout by @fosterfarrell9 in #968
- Add 'created at' field to CSV export for questionnaire answers by @fosterfarrell9 in #971
- Fix vignettes action text sgids by @fosterfarrell9 in #975
- Remove CoffeeScript for KaTex by @EliaPfl in #952
- Upgrade Pagy from v9 to v43 by @Splines in #978
- Muesli: PR 2.3+2.4 - Core concerns for registration system by @fosterfarrell9 in #928
- Init Lecture Browse & Search on dashboard by @Splines in #983
- Muesli: PR "3.0" - uuids instead of ids by @fosterfarrell9 in #986
- Update dependencies by @Splines in #987
- Fix rubocop version in Gemfile.lock by @Splines in #989
- Architecture book: Introduce cohorts by @fosterfarrell9 in #991
- Architecture book: Replace PR-2.5 with PR-3.2a by @fosterfarrell9 in #992
- Architecture book : Remove campaign wizard by @fosterfarrell9 in #994
- Architecture book: Introduce lecture roster superset principle by @fosterfarrell9 in #997
- Architecture book: Refine registration patterns and cohort functionality in documentation by @fosterfarrell9 in #998
- Architecture book: Add self-materialization for direct roster access by @fosterfarrell9 in #999
- Fix typo in customized commontator locales by @fosterfarrell9 in #1003
- Fix Playwright global beforeEach hook by @Splines in #1004
- Update dependencies by @Splines in #1005
- Continuous Release v1.20.0 by @Splines in #988
New Contributors
Full Changelog: v1.19.3...v1.20.0
v1.19.3
Small bugfixes.
What's Changed
- Fix incorrect path for Likert scale stylesheet by @fosterfarrell9 in #958
- Disable turbo prefetching for questionnaire links by @fosterfarrell9 in #959
- Fix media type not correctly set for new medium by @Splines in #960
- Fix broken datetimepicker in medium publish modal by @Splines in #955
- Update dependencies by @Splines in #961
- Downgrade connection pool gem by @f-buerckel in #963
- Fix rubocop errors in Gemfile by @Splines in #964
- Remove erroneous whitespace in Gemfile by @Splines in #965
- Continuous Release 1.19.3 by @Splines in #962
Full Changelog: v1.19.2...v1.19.3
v1.19.2
Fix for manuscript upload with content extraction (via the MaMpf LaTeX package). Furthermore, this release contains the very first steps towards an integration of Müsli into MaMpf.
What's Changed
- Muesli: PR 2.1 - Schema and core models for registration by @fosterfarrell9 in #922
- Muesli: PR 2.2 - Policy engine by @fosterfarrell9 in #925
- Fix manuscript upload content extraction by @Splines in #949
- Continuous Release 1.19.2 by @Splines in #951
Full Changelog: v1.19.1...v1.19.2
v1.19.1
This is a tiny release to fix immediate errors during the production deployment of v1.19.0.
MaMpf is now live for you as usual at https://mampf.mathi.uni-heidelberg.de/ (but as stated in the last release notes only behind the VPN for now unfortunately).
What's Changed
- Update Node.js version also for production by @Splines in #945
- Fix env variables for production by @Splines in #947
- Continuous Release 1.19.1 by @Splines in #946
Full Changelog: v1.19.0...v1.19.1
v1.19.0
Warning
Due to precautionary measures by the URZ Heidelberg, MaMpf (and many other university-related services) are currently only available behind the uni VPN. We hope that we can find a better solution for this in the near future since MaMpf is also targeted at external users without an affiliation to Heidelberg University.
Frontend tooling
This is a huge release centered around modernizing our frontend tooling. We migrate away from the sunsetted webpacker to Vite Ruby and jump onto the Hotwire train to ship more HTML over the wire. Users will mainly notice this for various reworked UI pages where they get a better single-page-app feeling, i.e. not so many complete page reloads.
Landing page facelift
To celebrate the new frontend tooling, we gave our MaMpf landing page a new facelift and tried out some of the trending glassmorphism look. If you miss some math-related formula in the background, send us feedback, we are happy to incorporate it ;)
Dev container
A big change for the MaMpf developers themselves is the new Dev Container setup that allows to develop inside a Docker container. This tremendously eases onboarding for new people working at MaMpf. Changes related to dev containers are spread across different PRs, starting with #904. Major parts of the MaMpf Wiki were rehauled.
Architecture book
#881 integrated a new Architecture Müsli book. During this current winter semester 2025/26, we integrate Müsli into MaMpf. For this purpose, the architecture book serves as a comprehensive documentation for what and how we will implement features and for the timeline. It's a planning book necessary since MaMpf will get a plethora of new features that we have to orchestrate.
Dependencies
- We migrated from Kaminari to Pagy in #842
- We replaced Solr by pg_search (and refactored the whole search code in the backend), starting with #827
- Furthermore, Erdbeere (the example database) was removed from MaMpf due to low adoption rates. #849
- We introduced our first Playwright tests and want to migrate away from Cypress in the long run. First change in #911. First migrated Playwright test in #923.
What's Changed
- Migrate from Webpacker to Vite ⚡ by @Splines in #802
- Remove clickers by @fosterfarrell9 in #821
- Fix typo for vignettes in dutch likert scale by @f-buerckel in #825
- Migrate from Turbolinks to Turbo by @Splines in #824
- Remove interaction saver and simplify ProbeSaver by @fosterfarrell9 in #822
- Use Turbo Frames for Lecture sidebar & init Stimulus by @Splines in #836
- Fix turbo content missing by @Splines in #846
- Relocate import media button by @fosterfarrell9 in #847
- Remove lecture info tab by @fosterfarrell9 in #848
- Migrate from Solr to pg_search and refactor using POROs by @fosterfarrell9 in #827
- Init topic-wise
app/frontend/structure with first example (feedback) by @Splines in #857 - Group lecture frontend assets by @Splines in #858
- Use ViewComponents & Stimulus for Lecture Edit Tabs by @Splines in #860
- Group Vignette frontend assets by @Splines in #861
- Remove erdbeere by @fosterfarrell9 in #849
- Migrate from Kaminari to Pagy by @fosterfarrell9 in #842
- Fix Cypress tests & don't log SQL queries by @Splines in #870
- Fix remaining broken links on lecture edit page by @Splines in #872
- Use ViewComponents for Search Forms by @fosterfarrell9 in #856
- Integrate book for MÜSLI-MaMpf integration by @fosterfarrell9 in #881
- Init GitHub Copilot Instructions file by @Splines in #873
- Hot reload page upon changes in the
app/frontend/folder by @Splines in #880 - Revise the architecture book by @fosterfarrell9 in #884
- Init Müsli prompt file by @Splines in #883
- Rework modal interaction & stream flash notifications, example: Feedback by @Splines in #886
- Revise assessment and grading chapter by @fosterfarrell9 in #891
- Render server-side validation errors inline in forms by @Splines in #888
- Setup Devise for usage with Hotwire by @Splines in #889
- Revise eligibility and grading chapters and adapt other chapters accordingly by @fosterfarrell9 in #892
- Remove quizzable association from Medium model and update schema by @fosterfarrell9 in #874
- Fix nil check in pagy_bootstrap_nav by @fosterfarrell9 in #894
- Revise exam and workflow chapters by @fosterfarrell9 in #895
- Redesign landing page and Devise forms by @Splines in #893
- Restructure implementation plan by @fosterfarrell9 in #896
- Architecture book: Revise registration chapter and add controllers chapter by @fosterfarrell9 in #897
- Add View Architecture chapter and update controllers in implementatio… by @fosterfarrell9 in #900
- Revise mockup setup by @fosterfarrell9 in #901
- Add campaign mockups by @fosterfarrell9 in #902
- Add mockups for campaigns from editors point of view by @fosterfarrell9 in #903
- Add student registration mockups by @fosterfarrell9 in #905
- Add roster mockups and parallelization structure by @fosterfarrell9 in #907
- Add assessment mockups by @fosterfarrell9 in #908
- Add mockups for grading by @fosterfarrell9 in #910
- Replace exam eligibility chapter by lecture performance chapter in architecure book by @fosterfarrell9 in #912
- Revise lecture performance by @fosterfarrell9 in #913
- Provide streamlined dev experience via Dev Containers by @Splines in #904
- Setup codeowners file by @Splines in #915
- Init infrastructure for Playwright e2e tests by @Splines in #911
- Fix flaky unit tests by @fosterfarrell9 in #878
- Setup GitHub Actions workflow for Architecture mdBook by @Splines in #916
- Migrate Vignettes to Hotwire by @Splines in #898
- Allow dynamic instance methods call on Playwright factories by @Splines in #918
- Architecture: Add mockup index by @fosterfarrell9 in #924
- Clean database before every Playwright test run by @Splines in #921
- Add Playwright GitHub Actions workflow by @Splines in #919
- Migrate profile e2e tests to Playwright by @Splines in #923
- Architecture: Add diagrams for fcfs by @fosterfarrell9 in #927
- Fix architecture build (mdbook admonish assets) by @Splines in #929
- Architecture: Update exam registration model and examples by @fosterfarrell9 in #930
- Fix architecture book CI workflow again by @Splines in #931
- Update dependencies by @Splines in #932
- Use Turbo frame when frame request, in tutorial by @plienta in #917
- Make links visually differ more from normal text by @plienta in #926
- Fix flaky postComment Playwright test by @Splines in #933
- Remove outdated guides & improve Readme by @Splines in #934
- Architecture: Incorporate changes from registration pr by @fosterfarrell9 in #936
- Disable user cleaner job by @Splines in #937
- Set locale also for Commontator (comments) by @Splines in #938
- Update deps again by @Splines in #940
- Fix ESLint errors by ...
v1.18.1
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 healththat 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
devbranch is renamed tonext. As of now, everything related to "dev" and "development" means "locally". On our servers, we haveexperimentalandnextas staging environments. (among others: #787) - The local environments
docker_developmentanddevelopmentwere 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_developmentanddevelopmentenvironments 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
lecturefor redemption by @Splines in #759 - Continuous Release 1.15.4 by @Splines in #761
Full Changelog: v1.15.3...v1.15.4






