# Changelog All notable changes to Terra-View will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.9.1] - 2026-03-23 ### Fixed - **Location slots not persisting**: Empty monitoring location slots (no unit assigned yet) were lost on save/reload. Added `location_slots` JSON column to `job_reservations` to store the full slot list including empty slots. - **Modems in Recent Alerts**: Modems no longer appear in the dashboard Recent Alerts panel — alerts are for seismographs and SLMs only. Modem status is still tracked internally via paired device inheritance. ### Migration Notes Run on each database before deploying: ```bash docker compose exec terra-view python3 backend/migrate_add_location_slots.py ``` --- ## [0.9.0] - 2026-03-19 ### Added - **Job Planner**: Full redesign of the Fleet Calendar into a two-tab Job Planner / Calendar interface - **Planner tab**: Create and manage job reservations with name, device type, dates, color, estimated units, and monitoring locations - **Calendar tab**: 12-month rolling heatmap with colored job bars per day; confirmed jobs solid, planned jobs dashed - **Monitoring Locations**: Each job has named location slots (filled = unit assigned, empty = needs a unit); progress shown as `2/5` with colored squares that fill as units are assigned - **Estimated Units**: Separate planning number independent of actual location count; shown prominently on job cards - **Fleet Summary panel**: Unit counts as clickable filter buttons; unit list shows reservation badges with job name, dates, and color - **Available Units panel**: Shows units available for the job's date range when assigning - **Smart color picker**: 18-swatch palette + custom color wheel; new jobs auto-pick a color maximally distant in hue from existing jobs - **Job card progress**: `est. N · X/Y (Z more)` with filled/empty squares; amber → green when fully assigned - **Promote to Project**: Promote a planned job to a tracked project directly from the planner form - **Collapsible job details**: Name, dates, device type, color, project link, and estimated units collapse into a summary header - **Calendar bar tooltips**: Hover any job bar to see job name and date range - **Hash-based tab persistence**: `#cal` in URL restores Calendar tab on refresh; device type toggle preserves active tab - **Auto-scroll to today**: Switching to Calendar tab smooth-scrolls to the current month - **Upcoming project status**: New `upcoming` status for projects promoted from reservations - **Job device type**: Reservations carry a device type so they only appear on the correct calendar - **Project filtering by device type**: Projects only appear on the calendar matching their type (vibration → seismograph, sound → SLM, combined → both) - **Confirmed/Planned toggles**: Independent show/hide toggles for job bar layers on the calendar - **Cal expire dots toggle**: Calibration expiry dots off by default, togglable ### Changed - **Renamed**: "Fleet Calendar" / "Reservation Planner" → **"Job Planner"** throughout UI and sidebar - **Project status dropdown**: Inline `