5.1 KiB
5.1 KiB
Changelog
All notable changes to Seismo Fleet Manager will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.1 - 2025-12-03
Added
/settingsroster manager page with CSV export/import, live stats, and danger-zone reset controls./api/settingsrouter that exposesexport-csv,stats,roster-units,import-csv-replace, and the clear-* endpoints backing the UI.- Dedicated HTMX partials/tabs for deployed, benched, retired, and ignored units plus new ignored-table UI to unignore or delete entries.
Changed
- Roster and unit detail templates now display device-type specific metadata (calibration windows, modem pairings, IP/phone fields) alongside inline actions.
- Base navigation highlights the new settings workflow and routes retired/ignored buckets through dedicated endpoints + partials.
Fixed
- Snapshot summary counts only consider deployed units, preventing dashboard alerts from including benched hardware.
- Snapshot payloads now include address/coordinate metadata so map widgets and CSV exports stay accurate.
0.2.0 - 2025-12-03
Added
- Device-type aware roster schema (seismographs vs modems) with new metadata columns plus
backend/migrate_add_device_types.pyfor upgrading existing SQLite files. create_test_db.pyhelper that generates a ready-to-use demo database with sample seismographs, modems, and emitter rows.- Ignore list persistence/API so noisy legacy emitters can be quarantined via
/api/roster/ignoreand surfaced in the UI. - Roster page enhancements: Add Unit modal, CSV import modal, and HTMX-powered table fed by
/partials/roster-table. - Unit detail view rewritten to fetch data via API, expose deployment status, and allow edits to all metadata.
Changed
- Snapshot service now merges roster + emitter data into active/benched/retired/unknown buckets and includes device-specific metadata in each record.
- Roster edit endpoints parse date fields, manage modem/seismograph specific attributes, and guarantee records exist when toggling deployed/retired states.
- Dashboard partial endpoints are grouped under
/dashboard/*so HTMX tabs stay in sync with the consolidated snapshot payload.
Fixed
- Toggling deployed/retired flags no longer fails when a unit does not exist because the router now auto-creates placeholder roster rows.
- CSV import applies address/coordinate updates instead of silently dropping unknown columns.
0.1.1 - 2025-12-02
Added
- Roster Editing API: Full CRUD operations for roster management
POST /api/roster/add- Add new units to rosterPOST /api/roster/set-deployed/{unit_id}- Toggle deployment statusPOST /api/roster/set-retired/{unit_id}- Toggle retired statusPOST /api/roster/set-note/{unit_id}- Update unit notes
- CSV Import: Bulk roster import functionality
POST /api/roster/import-csv- Import units from CSV file- Support for all roster fields: unit_id, unit_type, deployed, retired, note, project_id, location
- Optional update_existing parameter to control duplicate handling
- Detailed import summary with added/updated/skipped/error counts
- Enhanced Database Models:
- Added
project_idfield to RosterUnit model - Added
locationfield to RosterUnit model - Added
last_updatedtimestamp tracking
- Added
- Dashboard Enhancements:
- Separate views for Active, Benched, and Retired units
- New endpoints:
/dashboard/activeand/dashboard/benched
Fixed
- Database session management bug in
emit_status_snapshot()- Added
get_db_session()helper function for direct session access - Implemented proper session cleanup with try/finally blocks
- Added
- Database schema synchronization issues
- Database now properly recreates when model changes are detected
Changed
- Updated RosterUnit model to include additional metadata fields
- Improved error handling in CSV import with row-level error reporting
- Enhanced snapshot service to properly manage database connections
Technical Details
- All roster editing endpoints use Form data for better HTML form compatibility
- CSV import uses multipart/form-data for file uploads
- Boolean fields in CSV accept: 'true', '1', 'yes' (case-insensitive)
- Database sessions now properly closed to prevent connection leaks
0.1.0 - 2024-11-20
Added
- Initial release of Seismo Fleet Manager
- FastAPI-based REST API for fleet management
- SQLite database with SQLAlchemy ORM
- Emitter reporting endpoints
- Basic fleet status monitoring
- Docker and Docker Compose support
- Web-based dashboard with HTMX
- Dark/light mode toggle
- Interactive maps with Leaflet
- Photo management per unit
- Automated status categorization (OK/Pending/Missing)