1.0.0 "Solid Foundation"

We are proud to release 1.0.0 with 489 commits, 331 files changed, 12,060 insertions(+), 5,210 deletions(-).

Project-wide Statistics (since inception):

  • Total commits: 12,637
  • Total file changes: 27,346
  • Total insertions: 1,404,510
  • Total deletions: 1,150,695

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 database is not compatible to previous releases. For an upgrade, the database needs to be wiped and imported freshly again.

The migrations of 1.0.0 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

Testing Summary

For the 1.0.0 "Solid Foundation" release, comprehensive testing was performed across all layers:

Manual Testing:

  • Tester: Moritz Muth
  • Date: 23.12.2025
  • Test Cases: 118 planned, 97 executed
  • Results: 110 passed, 5 problematic, 3 failed
  • Report: Manual Test Report #2413

Frontend Tests (Vitest):

  • Test Files: 40 passed
  • Test Cases: 195 passed, 4 skipped (199 total)
  • Browser: Modern JavaScript engines (Vitest)

E2E Tests (Playwright + pytest-bdd):

  • Browser: Chromium (via Playwright)
  • Feature Files: 10
  • Test Scenarios: 32
  • Framework: pytest-bdd with BDD-style scenarios

Backend Tests (Rust):

  • Test Cases: 716
  • Test Build Time: 31.97 seconds
  • Framework: Rust standard test framework

Total Test Cases: 1,142 automated tests (716 backend + 195 frontend + 199 manual + 32 e2e)

Test Reports

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