Highlights
- Slovak translation — the UI is now available in Slovak, contributed via Weblate by @menganito (~87% of all strings), with the plural rules corrected for counts of zero and five-or-more (#743, #748). Existing languages also picked up a round of Weblate updates (#734).
- New "Themed" filter — show only playgrounds with a recognised
playground:theme(ship, castle, octopus, …) (#726). - The "Fenced" filter works again — it was matching
barrier=fence, a tag no playground actually carries, so it always returned zero results. It now matchesenclosed=yes(#724). - Fresh data-node installs come up reliably — a new deployment with the default re-import interval used to restart-loop forever, because the schema was applied before the first import had created any tables (#760, #788).
- Hub deeplinks frame the right playground — opening a link like
spieli.eu/#bayern/W28527951now centres the map on the linked playground instead of your GPS position (#722).
Fixes
- Screen readers now announce the map: the container carries a
regionrole, an accessible label, and keyboard focus (#757). - URLs in
config.jskeep their#,?,&and=characters — fragments and query strings were being silently stripped at container startup (#772). upgrade-stacks.shpulls the freshly built images for profile-gated services instead of booting stale cached ones (#718), no longer dies on a data node that has never imported, and reports what it skipped (#792).force-reimport-empty.shhonours per-stack profiles and knows about the Niedersachsen stack (#787).
⚠️ For operators — database changes
This release changes the database schema (#724, #726). After pulling and restarting:
docker compose --profile <mode> run --rm -e API_ONLY=1 importerNo full re-import is required.
Under the hood
- Weblate is credited in the README, the docs site and the app, per the Libre hosting plan (#770).
- New
i18n GuardCI job rejects hand-edits to Weblate-owned locale files (#745); translation and Weblate-operations docs updated to match (#750, #795, #797). - 18 dependency updates, including Svelte 5.56.4 → 5.56.8, OpenLayers 10.9 → 10.10, Playwright 1.61.1 → 1.62, and the pinned GitHub Actions.
Thanks
- @chrisdebian — map accessibility (#757)
- @indigo423 — importer bootstrap fixes (#760, #788), Slovak plural correction (#748), upgrade-sweep resilience (#792)
- @menganito — the Slovak translation, via Weblate
- @weblate — first contribution: translation sync (#734)
Full Changelog: v0.8.0...v0.9.0
Upgrading
See Standard update for full instructions.
| Label in release above | Action required |
|---|---|
Pull + restart + docker compose --profile <mode> run --rm -e API_ONLY=1 importer |
|
| 🔴 Full re-import required | Pull + restart + full re-import (no API_ONLY) |
| 🔧 Environment variables changed | Update .env first, then pull + restart |
| 🔧 Compose file changed | Re-run install.sh or update compose.yml manually, then pull + restart |
| (no label) | Pull + restart is sufficient |