What's Changed
New Features
- PostgreSQL support — set
DATABASE_URL=postgresql://...and it works; psycopg2 now ships in the image, and legacypostgres://URLs are normalised (#239) - km/L consumption unit joins L/100km, MPG (UK) and MPG (US) (#212)
- Default trip type per vehicle — set the purpose pre-selected when logging trips, so personal-use vehicles no longer default to Business (#272)
- Completion date for maintenance — choose the date when marking maintenance performed, applied to both the schedule and the created expense (#220)
- ntfy access tokens — self-hosted ntfy servers with authentication now work; the token is sent as a Bearer header, never over plain HTTP, and is never echoed back into the settings page (#90)
- Exact fuel-log link on price history — price rows now reference their fuel log directly instead of heuristic date/price matching, with a backfill migration (#254)
Translations
- Three new languages: Turkish, Russian, and Arabic (with right-to-left layout) (#198, #118, #150)
- All 18 language catalogs are now 100% translated — previously 13 languages had hundreds of entries silently falling back to English (#266)
- Page titles, expense categories, fuel types, vehicle spec labels and chart labels are now translated (#266)
Bug Fixes
- Comma decimal separators (e.g.
2,179) no longer truncate to whole numbers in the live form calculators (#267, #269) - The Monthly Costs chart now buckets by real calendar months — no more duplicated month bars (#270)
- Marking maintenance performed with a £0 cost now creates the expense entry when requested (#271)
Other
- CodeRabbit review configuration
- Three new database migrations run automatically on startup