Repository navigation
v0.7.1
Patch release: four bug fixes, one UI merge and housekeeping.
Highlights
check_media --delete-orphansreported every client document as deletable (#471) —ClientDocumentwas missing from a hand-maintained field list, so all stored client documents (signed contracts, intake forms, doctors' letters) were listed as orphans under a line offering to delete them. The field list is discovered from the app registry now: forgetting a model there produced deletion, not a gap in a report.- Scanned PDFs were rotated a second time on compression (#470) — a 90° page came out on its side, a 180° page upside down, on
compress_mediaand on any upload large enough for Ghostscript to shrink. gs applies/Rotaterather than stripping it, so restoring the value afterwards turned every page again. The restore pass is gone, verified by rasterising; the test that passed throughout was replaced with a pixel-comparing one. - A session that only moved to a new time was cancelled and duplicated (#468) — editing a recurring series with "this and following events" makes Google mint a new event id, and the reschedule check compared only date and duration, so a dragged occurrence kept the wrong stored time indefinitely. Both fixed.
- The Dokumente tab now lives on the Overview tab (#469) — beside the intake, contract and questionnaire sections it belongs with; a client's first upload no longer forces a page reload.
- Assessments and Contract rows stay usable without an email address (#467) — instruments are named in the row rather than inside a send button, and the Contract step offers the PDF download the Intake step already did.
Also: dev containers no longer lose node_modules to the bind mount (#461), long files flagged by codebase_metrics --largest condensed (#462), legacy pre-i18n seed strings dropped from seed_sample_data --clear (#463), git permission allow rules tightened (#464), CODE_STRUCTURE.md corrected (#465), psycopg 3.3.6 (#466), metrics refreshed for 2026-09 (#472).
Full changelog: docs/CHANGELOG.md