Adds computed spool statistics to filament list:
- spool_count: Number of non-archived spools of this filament
- total_remaining_weight: Sum of remaining weight across all spools
Backend changes:
- Modified database/filament.py find() to compute stats via subquery
- Added fields to Filament pydantic model in api/v1/models.py
- Updated filament API endpoint to include stats in response
Frontend changes:
- Added fields to IFilament interface
- Added columns to filament list table
- Added translation keys
Closes#15
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Store extruder and bed temperatures as min/max ranges instead of
single values for more accurate filament specifications.
Backend changes:
- Add 4 new columns: settings_extruder_temp_min/max, settings_bed_temp_min/max
- Keep old columns for backward compatibility (marked deprecated)
- Alembic migration copies existing values to both min and max
- Update Pydantic models and API endpoints
Frontend changes:
- Filament model updated with new fields
- Create form uses min/max input pairs with Space.Compact
- Import from external DB populates both min and max with same value
- Label template updated to show ranges: "ET: 190-220 °C"
- Template help includes new tags
Labels now display temperature ranges like "190-220°C" which is more
useful for printing than a single recommended value.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This could result in a major filament usage track failure since the Use http request would fail and Moonraker would keep retrying to save the used filament. However it was actually saved since the db.commit() happens before the websocket message fails.
Events are now sent for not only when an object changes but also when one is created or deleted.
For now it's not really possible to subscribe to these events however.
This breaks backwards-compatibility with the websocket messages.
This happened with at least Postgres, which took it's server's timezone. It's complicated. Let's just set it from our side instead where we have some control.