28.08.2026 Release
This release improves plant search and scraper data. It also fixes map editor bugs and updates CI.
Highlights
- Added informational icons on selected attributes to plant search results #2832 (Lea Birringer)
Landing Page
- Embedded language-specific teaser video from Nextcloud on the landing page #2850. (Johannes Garz)
Important Changes for Developers
- Reduced dependency between scraper steps #2089. (Christoph Schreiner)
Meetings
- Meeting Agenda&Notes for 20.07.2026 9:00 (Markus Raab, Mo)
- Meeting Agenda&Notes for 27.07.2026 9:00 (Markus Raab, Patrick Grassl)
- Meeting Agenda&Notes for 03.08.2026 9:00 (Markus Raab, Elia Wenty)
- Added meeting notes for scraper team meeting on 21.07.2026 (Christoph Schreiner)
- Meeting Agenda&Notes for 10.08.2026 9:00 (Markus Raab, Lea Birringer)
- Meeting Agenda&Notes for 17.08.2026 9:00 (Markus Raab, Moritz Muth)
Compatibility
Migrations
- MIGRATION: Added database constraints for plant unique names (Christoph Schreiner)
- Migration for supporting ambivalent temporal relations in temporal effect enum #1975 (Lea Birringer)
- Migration for adding Reinsaat URL to plants #2849 (Vseslav Levchenko)
- Migration for changing plant attributes functions, warning and edible*parts from text to enum arrays #2832 *(Lea Birringer)_
- Migration: Expanded upon database constraint for hybrid unique names #2803 (Lea Birringer)
Scraper Data
- Load manual genus to family mapping from csv instead of hardcoding it #1738 (Lea Birringer)
- Added manual plant addition to scraper #2610 (Vseslav Levchenko)
- Added heatmap for Copy&Paste of plantings #2080 (Lea Birringer)
- Improved scraper logging #2067 (Vseslav Levchenko)
- Fixed leftover scraper logging inconsistencies, renamed
data_issuelogging level todiscrepancy#2806, #2802 (Vseslav Levchenko) - Added unit tests & code branch comparison to scraper #1423 (Vseslav Levchenko)
- Added support for ambivalent temporal relations to scraper #1975 (Lea Birringer)
- Moved text capitalization of common names from frontend to scraper and separated German and English capitalization rules #2431 (Lea Birringer)
- Added warning logging level #2821 (Vseslav Levchenko)
- Made scraper insert Reinsaat URL into database #2849 (Vseslav Levchenko)
- Added plant amount logging for hierarchy and override steps #2827 (Vseslav Levchenko)
- Added different cultivation methods & winter harvest boolean to scraper #2828 (Vseslav Levchenko)
- Added plant description from Reinsaat to scraper #2828 (Vseslav Levchenko)
- Updated from
machine_cultivation_possibleto professional/market/home gardener variety attribute #2828 (Vseslav Levchenko) - Fixed Reinsaat fetching bug #2853 (Vseslav Levchenko)
- Include temporal genus/family relationships #1931 (Lea Birringer)
- Fix temporal relations being treated as bidirectional #1931 (Lea Birringer)
- Changed insertion of strings into the database to arrays of enums for plant attributes functions, warning and edible*parts #2832 *(Lea Birringer)_
- Fixed conversion of null values to 0 for attribute "spread" #2667 (Lea Birringer)
Frontend
- Show map link destinations on hover #1880 (Ines Schnabl)
- Fixed area of plantings being created displaced, off-screen or duplicated when drawn starting on top of an existing planting or plant #2269 (Elia Wenty)
- Show plant family in left sidebar if no other common criteria is found for plant name #1992 (Vseslav Levchenko)
- Show lowest common hierarchy level for plant name #1992 (Vseslav Levchenko)
- Fixed negative, zero or empty values for planting length/width not being rejected and instead breaking the map, and fixed the input not being marked invalid when this happened #2771 (Elia Wenty)
- Changed text string display of plant attributes functions, warning and edible*parts to enum representation #2832 *(Lea Birringer)_
- Added German translations for plant attributes functions, warning and edible*parts #2832 *(Lea Birringer)_
- Adjusted plant width getter for area plantings to default to default value instead of min value #2667 (Lea Birringer)
Bug Fixes
- Fixed displayed number of plantings of same type in status panel not updating when placing a plant #2799 (Lea Birringer)
- Fixed heatmap flickering bug #2840 (Vseslav Levchenko)
- Fixed middle mouse button placing copied elements while in pasting mode #2714 (Lea Birringer)
Development
- Update of React/Konva resulting in node modules needing to change with "rm -rf node modules" and reinstalled with "npm ci" #2317 (Ines Schnabl)
Libraries
- Update and migrate TanStack Query from version 4 to 5 1723 (Ben Schlegel, Ines Schnabl and Johannes Garz)
- Update node.js to v26. Developers need to upgrade their local Node.js installation to v26.5.0 and npm to v11.17.0 #2011 (Ines Schnabl)
- Updated
react-shepherdfrom 7.0.4 to 7.0.6 #2847. (Elia Wenty) - Added
react-shepherdto the Vitestserver.deps.inlinelist invite.config.ts#2847. (Elia Wenty)
Backend
- Added error ratio calculation to the fill & error ratio script; updated
backend/src/model/entity.rswith the new error ratios #2764 (Vseslav Levchenko) - Added enums for plant attribute functions, warning and edible*parts #2832 *(Lea Birringer)_
Features
- Added support for ambivalent temporal relationships to heatmap #1975 (Lea Birringer)
Bug Fixes
- Added secondary ordering criterion (by rank) for plant search results so that the highest rank of the same similarity score is the first result #2644 (Lea Birringer)
Libraries
- Replaced vulnerable
rsacrate withsad-rsato mitigate timing side-channel vulnerability #2616. (Johannes Garz)
Tools
Build System
- Fixed and refactored the
.envfiles in.docker#2763 (Johannes Garz)
CI
- Include Permaplant node cleanup, cleanup fixes and minor cleanup improvements #2649 (Patrick Grassl)
- Make Jenkinsfiles environment aware #2766 (Patrick Grassl)
- Improve state transition #2475 (Patrick Grassl)
- Restore database state upon e2e test failure #2820 (Patrick Grassl)
- Improve cleanup #2796 (Patrick Grassl)
- Improved Jenkins Docker handling by improving reuse of build images within a pipeline run, preventing concurrent duplicate builds with node specific locks and labeling containers for reliable cleanup. #2796 (Patrick Grassl)
- Implement
npmdependency caching #2691 (Patrick Grassl) - Implement node selection policy and update node labels #2689 (Patrick Grassl)
- Improve cleanup node selection #2689 (Patrick Grassl)
Documentation
- Added lint rules for control flow and events#2071 (Ines Schnabl)
- Mobile July release testing #2767 (Moritz Muth)
- Add pipeline terminology to glossary #2752 (Patrick Grassl)
- Moved benchmarks into tools #2148 (Ines Schnabl)
- Added glossary entries #2755 (Ines Schnabl)
- Added style lint #2701 (Ines Schnabl)
- Added use case documentation for plant attribute upward propagation #1 (Vseslav Levchenko)
- Added research docu for plant attribute propagation #2677 (Vseslav Levchenko)
- Added decision on why plant traits are denormalized #2513 (Christoph Schreiner)
- Added spatial indexing for the plant layer #2218 (Ines Schnabl)
- Moved Ines to inactive on the landing page #2793 (Ines Schnabl)
- Organized frontend guidelines #2792 (Ines Schnabl)
- Improve line length eslint rule #2014 (Ines Schnabl)
- Added no-magic-number rule #2014 (Ines Schnabl)
- Added decision for frontend code quality tooling: use
eslint-plugin-sonarjsinstead of SonarQube/SonarCloud #2562 (Moritz Adelsberger) - Updated React from 18.3.1 to 19.2.8, React DOM from 18.3.1 to 19.2.8, Konva from 9.3.14 to 10.3.0, react-konva from 18.2.10 to 19.2.5, react-konva-utils from 1.0.6 to 2.0.0, react-shepherd from 4.2.0 to 7.0.4, Shepherd.js from 11.2.0 to 15.2.2, and Storybook from 8.2.7 to 8.6.18 #2317 (Ines Schnabl)
- Added viewport culling to drawing layer #2784 (Ines Schnabl)
- Added heuristic for the spatial indexing on the planting layer #2798 (Ines Schnabl)
- Added decision on which approach to use for formalization of plant attributes #2819 (Lea Birringer)
- Add CI/CD guidelines and code review checklist #2583 (Patrick Grassl)
- Update node labels and add node policy reference #2689 (Patrick Grassl)
- Update manual test cases for gherkin syntax guidelines #2631 (Christoph Kraus)
Tests
Manual Tests
- Updated decision status of updating manual tests according to scraper data to 'Problem Clear' #2182 (Vseslav Levchenko)
- Updated decision status of updating manual tests according to scraper data to 'Solutions Clear' #2182 (Vseslav Levchenko)
- Updated decision status of updating manual tests according to scraper data #2182 (Vseslav Levchenko)
- Add manual tests for showing the number of plants in an area planting #2667 (Lea Birringer)
E2E
- Added e2e tests for changing the size of a planting area and rejecting non-positive width values #2771 (Elia Wenty)
- Fixed reselecting a planting area after reload clicking its visual center, which moves when the area is resized since it is anchored at its top-left corner instead #2771 (Elia Wenty)
Statistics
- 1129 commits from 19 contributors are included in this release.
Changes Affecting Guided Tour
- Updated the guided tour library (
react-shepherd/shepherd.js) to patch a stack exhaustion advisory in its internaldeepmerge-tsdependency #2847. (Elia Wenty)
Dependencies
- Updated frontend and backend dependencies to address security advisories found during release preparation !2450. (Paul Bachinger)
- build(deps): replaced
framer-motionwithmotion12.19.1 !2405 (Renovate Bot) - build(deps): update debian digest from
9bb8a36to38a76d0(Renovate Bot) - build(deps): update serde from 1.0.228 to 1.0.229 !2383 (Renovate Bot)