Skip to content

Releases: dannymcc/may

v0.22.2

03 May 17:28
v0.22.2
869bef8

Choose a tag to compare

Bug Fixes

  • Fix `/api/calendar/feed` and the Home Assistant alerts route crashing on `MaintenanceSchedule.next_due_mileage` — the column is `next_due_odometer`. Calendar also called the non-existent `vehicle.unit_distance`; switched to `get_effective_odometer_unit()`. (#168)
  • Fix full-tank fuel consumption only counting the current fill's volume. With partial fills between two full tanks, the figure was arbitrarily low. Both per-log `get_consumption()` and the vehicle's average now sum every litre poured between the two full tanks (the standard fill-to-fill method) and bail out cleanly when an intervening log is flagged as missed. (#169)
  • Fix linking a station to an existing fuel log via edit not bumping the station's "Used Nx" counter, and changing the station on an already-linked log not updating the price-history row. The edit handler's price-history reconciliation now covers create + first link, swap, and clear cases consistently. (#170)

v0.22.1

03 May 12:40
v0.22.1
bea9374

Choose a tag to compare

What's Changed

Bug Fixes

  • Fix worker boot failure on container upgrade for pre-Flask-Migrate databases (#166). The schema recovery now walks the SQLAlchemy models directly, so any model column missing from a live database is added automatically — the previous hardcoded list had drifted out of date and missed default_vehicle_id, show_menu_*, show_quick_entry, start_page, api_key and others.

Other Changes

  • Startup banner: every boot now logs May <version> starting (alembic_version=...) so future upgrade reports identify the running image at a glance.
  • New regression tests cover the legacy DB → upgrade path so this class of bug stays fixed.

v0.22.0

02 May 13:35
v0.22.0
5d660c9

Choose a tag to compare

What's Changed

New Features

  • Vehicle Sharing: Mark a vehicle as "Shared" to make it visible and loggable by all users on the instance — no per-user invite needed (#154)
  • Upcoming Maintenance Panel: Vehicle detail page now shows a live panel of scheduled maintenance tasks with overdue and due-soon badges (#147)
  • Collapsible Parts & Consumables: Parts section on the vehicle page collapses/expands with state saved per vehicle in localStorage (#86)
  • Inspection Expense Category: New "Inspection" category for MOT, roadworthy checks, and similar expenses (#86)
  • Expandable Expense Rows: Click any expense row to reveal vendor and notes inline without leaving the page (#86)
  • Odometer in Expenses: Expense list now shows the odometer reading column (#86)
  • Dashboard Vehicle Cards: Dashboard vehicle list replaced with photo cards showing make/model/year and fuel type badge (#147)
  • Annual Mileage Limit Tracking: Track and display annual mileage limits per vehicle (#153)

Bug Fixes

  • Fixed dark mode bleeding into light mode — Tailwind config now loads after the CDN script so darkMode: 'class' is honoured correctly
  • Hide fuel log / charging session buttons based on vehicle fuel type — EV-only vehicles no longer show the fuel log button, and non-EV vehicles no longer show the charging button (#163)

Other Changes

  • Increased document upload limit to 300MB and expanded allowed file types (Excel, TXT, CSV, ePub)
  • Improved German translations (#157)
  • Improved Italian translations (#133)
  • Updated dependencies: flask-migrate ≥4.1.0, requests ≥2.33.1, gunicorn ≥25.3.0, werkzeug ≥3.1.8, python-dateutil ≥2.9.0.post0
  • CI: bump docker/setup-qemu-action from 3 to 4

Upgrade Notes

All database changes are handled automatically via migrations on container start. No manual steps required.

v0.21.1

27 Apr 16:28
v0.21.1
d320f22

Choose a tag to compare

Bug Fixes

  • Migration startup crash (#148): The ee92897cc33b migration now checks whether columns already exist before adding them, preventing the duplicate column error that affected users upgrading from older installs.
  • Expense edit not saving (#151): Invalid date or cost input (e.g. wrong date format when the datepicker fails to load) now returns a clear error message instead of a silent 500. Also fixed a Jinja2 block name mismatch (scriptsextra_scripts) in the expense form template so the odometer unit label JavaScript is correctly rendered.
  • Czech language showing English (#152): The compiled .mo translation file was missing — Czech translations are now fully active.

v0.21.0

22 Apr 20:34
v0.21.0
3fc09c3

Choose a tag to compare

What's Changed

New Features

  • Additional vehicle types: Added Hatchback, Station Wagon / Estate, and Pickup / Ute to the vehicle type options
  • Secondary fuel type per vehicle: Vehicles can now have an optional secondary fuel type (e.g. AdBlue alongside Diesel). When set, each fuel log entry shows a fuel type selector so fill-ups can be tracked separately per fluid

Other Changes

  • Added vehicle_type_label property to the Vehicle model for clean display of all vehicle type names
  • Vehicle type display updated across the vehicle list, vehicle detail, and PDF report views
  • Database migration adds secondary_fuel_type to vehicles and fuel_type to fuel_logs (both nullable, fully backwards compatible — applied automatically on container start)

Full Changelog: v0.20.0...v0.21.0

v0.20.0

22 Apr 14:32
v0.20.0
7ac58c7

Choose a tag to compare

What's Changed

Bug Fixes

  • Consumption calculated for partial fills — fuel logs without "Full tank fill-up" now show an instantaneous consumption figure based on the distance since the previous log (#122)
  • Fuel price history stays in sync on edit — correcting a price on a fuel log now updates the cheapest fuel display immediately; the bad-entry scenario from #113 is fixed (#113)

v0.19.0

22 Apr 14:16
v0.19.0
7751cff

Choose a tag to compare

What's Changed

New Features

  • Cost per distance on vehicle page — each vehicle's detail page now shows a cost per km/mi stat card (#106)
  • Price per unit on quick fuel entry — enter any two of volume / price-per-unit / total cost and the third is calculated automatically (#99)

Other Changes

  • Added ADMIN_PASSWORD example (commented out) to docker-compose.yml (#135)

v0.18.1

21 Apr 20:34
v0.18.1
fa441f1

Choose a tag to compare

What's Changed

Bug Fixes

  • Fix container startup failure after upgrading from v0.15.0/v0.16.0 with no such column: users.default_vehicle_id (#132, #136). Databases created before Flask-Migrate was introduced had an empty alembic_version table, which caused flask db upgrade to replay migrations from scratch and fail on a duplicate odometer_unit column, leaving the default_vehicle_id migration unexecuted.

Other Changes

  • Migrations 998cdb1497c6, 613be8af4376, and a1b2c3d4e5f6 are now idempotent and safely skip changes that are already in place.
  • New alembic bootstrap step stamps the correct revision for pre-Flask-Migrate databases so future upgrades only apply pending migrations.
  • _run_schema_migrations now adds users.default_vehicle_id as a fallback so the app boots even if alembic state can't be recovered automatically.
  • docker-entrypoint.sh no longer silently swallows flask db upgrade failures — any remaining migration error is now visible in container logs.

Upgrade note: No manual action is required. Containers that previously failed to start with the missing-column error will now complete migration automatically on next boot.

v0.18.0

21 Apr 12:31
v0.18.0
3059daf

Choose a tag to compare

What's Changed

New Features

  • Trip Templates — save common routes as reusable templates to log trips faster. Templates store purpose, vehicle, start/end locations, description, and notes. Select a template on the Log Trip form to pre-fill all fields instantly, or use the "Use" button from the templates list to open a pre-filled trip form.

Other Changes

  • New trip_templates database table (migration included, runs automatically on startup)
  • 23 new tests covering template CRUD, access control, and form integration

v0.17.0

18 Apr 16:13
v0.17.0
db7c9a6

Choose a tag to compare

What's Changed

New Features

  • Add Czech language translation (thanks @javlk83 for the contribution!)
  • Volume inputs now accept 3 decimal places (e.g. 43.034 L) — important for Canadian and other markets
  • Trip end odometer is now optional — log a trip when you leave and fill in the end odometer when you return
  • Default vehicle preference — set in Settings > Menu to pre-select your most-used vehicle on all new entry forms

Bug Fixes

  • Editing a fuel log and changing the vehicle now correctly saves to the new vehicle
  • Clarkson SQL importer now handles both Fuel and Fuelups table names, and supports UUID vehicle IDs

Database Migration

This release includes a database migration that runs automatically on container startup:

  • Adds default_vehicle_id preference to user accounts
  • Makes trip end_odometer nullable