1.0.0

We are proud to release 1.0.0 with 489 commits, 331 files changed, 12060 insertions(+), 5210 deletions(-)

Highlights

  • Make database migrations more future-proof (Alfons Mueller, Justus Weilguni, Andrei Dinu-Coreth)
  • Cleanup of database, fixing corresponding code #2388 (Alfons Mueller, Justus Weilguni)
  • Adding more constraints to the database (Alfons Mueller, Justus Weilguni, Christoph Schreiner)
  • Doing release on staging and migrating to new production servers. (Paul Bachinger)

Statistics

Issue Progress

Based on milestone v1.0.0 window (Dec 4, 2025 – Dec 27, 2025):

  • 60 issues completed

Merge Request Approvals

Based on milestone v1.0.0 window (Dec 4, 2025 – Dec 27, 2025):

  • Markus Raab: 45 approvals
  • Paul Bachinger: 37 approvals
  • Moritz Muth: 12 approvals
  • Alfons Müller: 12 approvals
  • Elizaveta Mokshantseva: 9 approvals
  • Andrei Cristian Dinu-Coreth: 8 approvals
  • Justus Weilguni: 8 approvals
  • Maiia Kuzmishyna: 7 approvals
  • Patrick Graßl: 4 approvals
  • Ben Schlegel: 2 approvals
  • Christoph Schreiner: 2 approvals
  • Johannes Leonhard Ziehengraser: 2 approvals
  • Christoph Kraus: 1 approval
  • Hannes Zettl: 1 approval

Contributors

  • Alfons Mueller
  • Andrei Cristian Dinu
  • Ben Schlegel
  • Christoph Kraus
  • Christoph Schreiner
  • Elizaveta Mokshantseva
  • Justus Weilguni
  • Markus Raab
  • Moritz Muth
  • Patrick Grassl
  • Paul Bachinger

Honorable Mentions

  • Paul Bachinger and Andrei Dinu-Coreth finish.

Landing Page

  • Added blog entry for release (Markus Raab)

Important Changes for Developers

  • We restructured the repository layout. (Paul Bachinger)
  • We now have a regex to avoid inconsistent branch names or branches that start with username by accident. (Paul Bachinger)
  • Database migrations were squashed, so only the new 1.0.0 dump works, other dumps cannot be used anymore.

Meetings

  • From now on PM Meeting Notes will be in the PM repo.
  • PM Meeting Agenda & Notes for 05.12.2025 11:30 (Markus Raab, Paul Bachinger)
  • Meeting Agenda&Notes for 08.12.2025 9:00 (Markus Raab, Patrick Grassl)
  • Meeting Agenda&Notes for 15.12.2025 9:00 (Markus Raab, Alfons Müller)
  • Meeting Agenda&Notes for 22.12.2025 9:00 (Markus Raab, Justus Weilguni)

Compatibility

This release we squashed all migrations the last time. 1.0.0 is not compatible to previous releases but will be compatible with all future releases.

Migrations

  • MIGRATION: Fixed squashed migration down.sql to use CASCADE when dropping extensions for proper redo support #2400. (Paul Bachinger)
  • Prepared squashed migration for 1.0.0 release by adding required comment markers, re-enabling redo migration tests, and fixing down.sql to use CASCADE when dropping extensions #2400. (Paul Bachinger)
  • Standardized MIGRATION file headers: up.sql files now have "DO NOT MODIFY" disclaimer, down.sql files use standard "undo" header #2378. (Paul Bachinger)
  • MIGRATION: Added trail audit fields to entities (Justus Weilguni)
  • MIGRATION: Added pause state tracking for guided tours (Justus Weilguni)
  • MIGRATION: Moved drawing variants from JSONB to tables (Justus Weilguni)
  • Removed all past migrations and added base migration for squashed 1.0.0 setup #2389 (Alfons Mueller)

Scraper Data

  • Improve scraper reproducibility (Christoph Schreiner)

Frontend

  • Fixed bug causing multiple guided tours to start at the same time #2364 (Alfons Mueller)
  • Improve bezier polygon position #2387 (Moritz Muth)
  • Removed unused honors and visited counters from maps #2388 (Alfons Mueller)

Bug Fixes

  • Fixed repo urls after project restructuring in CI/CD. (Paul Bachinger)
  • Fix plant icons trying to load with invalid icon path #2297 (Ben Schlegel)
  • Add proper scaling to copy & paste #2435 (Moritz Muth)

Development

  • Fix overlapping text when creating or resizing planting area #2120 (Andrei Dinu-Coreth)
  • Layer reordering disabled when measurement is active #2257 (Andrei Dinu-Coreth)
  • Finalize Copy & Paste #1324 (Moritz Muth)
  • Finalize Frontend Access Control #2219 (Moritz Muth)
  • Fix selected plants getting unselected by lazy loading 2078 (Andrei Dinu-Coreth)

Backend

Bug Fixes

  • Fixed JWT token validation failing due to audience claim causing 401 errors on all authenticated API requests #2420 (Paul Bachinger)
  • Changed ORM to work with trail audit fields #1938 (Justus Weilguni)
  • Removed left-over uuid v4 replaced with uuid v7 #2414 (Justus Weilguni)
  • Adapted drawings ORM to work without JSONB. #2371 (Justus Weilguni)
  • Changed Floats in API to Int. #2348 (Justus Weilguni)
  • Switch to using UUID V7 #2390 (Andrei Dinu-Coreth and Justus Weilguni)

Development

  • Added pause state tracking for guided tours #2315 (Justus Weilguni)
  • Added CORS entry for www.staging.permaplant.net and master.staging.permaplant.net (Patrick Grassl)

Libraries

  • Updated 128 packages via cargo update, known ring 0.16.20 vulnerability remains (tracked in #1857), #2355. (Paul Bachinger)
  • Updated reqwest from 0.11 to 0.12 #1856. (Justus Weilguni)
  • Added module for encoding in testcases #2158 (Justus Weilguni)
  • Added dev-dependencies for testing and upgraded jsonwebtoken to 9.3.0 #2158 (Justus Weilguni)

Tools

  • Added GitLab backup script for Phase 0 of project structure refactoring #2147 (Paul Bachinger)
  • Added automated changelog cleanup script for release preparation, removes duplicates and normalizes links #2357 (Paul Bachinger)
  • Reorganized release notes into doc/releases/notes/ subdirectory for cleaner structure #2357 (Paul Bachinger)

PM

  • Added dynamic label documentation generator that fetches all GitLab labels and generates doc/contrib/labels.md automatically #2397. (Paul Bachinger)
  • Removed globally managed MR and issue templates (Paul Bachinger)

CI

  • Migrated CI/CD to use SSH key authentication instead of username/password credentials for GitLab authentication, improving security by avoiding credential exposure in Docker image layers. (Paul Bachinger)
  • Updated Jenkinsfile for deployment to mr.staging.permaplant.net #2396 (Patrick Grassl)
  • Updated Jenkinsfile for deployment to master.staging.permaplant.net #2419 (Patrick Grassl)
  • Fixed pipeline failures caused by Diesel CLI and Rust version mismatches between CI and deployment servers, added version management to Ansible playbooks #2423. (Paul Bachinger)
  • Improved E2E test retry mechanism by fixing incorrect sleep placement, adding database cleanup between retries, and removing duplicate retry logic #2351 (Paul Bachinger)

Pre-commit

  • Updated release workflow template to include staging infrastructure testing and diagnostic procedures #2318 (Paul Bachinger)
  • Updated migration check script to support dual migration status for master-as-testing workflow #2379. (Paul Bachinger)
  • Updated migration check script to enforce new migration header standards (DO NOT MODIFY disclaimer for production migrations, standard header for down.sql files) #2378. (Paul Bachinger)

Documentation

  • Changed meeting workflow to include issue creation during meeting #2261 (Elizaveta Mokshantseva)

Workflows

  • Cleanup dev.md after release (Markus Raab)
  • Added install-scraper command in makefile #2110 (Christoph Schreiner)
  • Write guidelines for manual test case creation (ChrisK)
  • Update frontend editor decision #2227 (Moritz Muth)
  • Created decision document for canvas dependency resolution strategy #2294 (Paul Bachinger)
  • Updated Release.md template to document migration header standards #2378. (Paul Bachinger)
  • Implemented issue triage workflow improvements. #2260 (Paul Bachinger)
  • Extracted guidelines from workflows into separate guideline documents for better reusability and maintainability. Created new guideline documents: review.md, issue-triage.md, issue-refinement.md, issue-reporting.md, and iteration-planning.md. #2259 (Paul Bachinger)

Tests

  • Added manual test report for 0.9.0 #2354 (Alfons Mueller)
  • Added manual test report for 1.0.0 #2413 (Moritz Muth)

E2E

  • Refactor testcases to match usecases. (ChrisK)