diff --git a/CHANGELOG.md b/CHANGELOG.md index d4abb42..1eb567f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,28 @@ All notable changes to Seismo Fleet Manager 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.3.3] - 2025-12-12 + +### Changed +- **Mobile Navigation**: Moved hamburger menu button from floating top-right to bottom navigation bar + - Bottom nav now shows: Menu (hamburger), Dashboard, Roster, Settings + - Removed "Add Unit" from bottom nav (still accessible via sidebar menu) + - Hamburger no longer floats over content on mobile +- **Status Dot Visibility**: Increased status dot size from 12px to 16px (w-3/h-3 → w-4/h-4) in dashboard fleet overview for better at-a-glance visibility + - Affects both Active and Benched tabs in dashboard + - Makes status colors (green/yellow/red) easier to spot during quick scroll + +### Fixed +- **Location Navigation**: Moved tap-to-navigate functionality from roster card view to unit detail modal only + - Roster cards now show simple location text with pin emoji + - Navigation links (opening Maps app) only appear in the modal when tapping a unit + - Reduces visual clutter and accidental navigation triggers + +### Technical Details +- Bottom navigation remains at 4 buttons, first button now triggers sidebar menu +- Removed standalone hamburger button element and associated CSS +- Modal already had navigation links, no changes needed there + ## [0.3.2] - 2025-12-12 ### Added @@ -209,6 +231,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Photo management per unit - Automated status categorization (OK/Pending/Missing) +[0.3.3]: https://github.com/serversdwn/seismo-fleet-manager/compare/v0.3.2...v0.3.3 [0.3.2]: https://github.com/serversdwn/seismo-fleet-manager/compare/v0.3.1...v0.3.2 [0.3.1]: https://github.com/serversdwn/seismo-fleet-manager/compare/v0.3.0...v0.3.1 [0.3.0]: https://github.com/serversdwn/seismo-fleet-manager/compare/v0.2.1...v0.3.0 diff --git a/README.md b/README.md index 32ed33d..e34142d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Seismo Fleet Manager v0.3.2 +# Seismo Fleet Manager v0.3.3 Backend API and HTMX-powered web interface for managing a mixed fleet of seismographs and field modems. Track deployments, monitor health in real time, merge roster intent with incoming telemetry, and control your fleet through a unified database and dashboard. ## Features @@ -437,6 +437,11 @@ docker compose down -v ## Release Highlights +### v0.3.3 — 2025-12-12 +- **Improved Mobile Navigation**: Hamburger menu moved to bottom nav bar (no more floating button covering content) +- **Better Status Visibility**: Larger status dots (16px) in dashboard fleet overview for easier at-a-glance status checks +- **Cleaner Roster Cards**: Location navigation links moved to detail modal only, reducing clutter in card view + ### v0.3.2 — 2025-12-12 - **Progressive Web App (PWA)**: Complete mobile optimization with offline support, installable as standalone app - **Mobile-First UI**: Hamburger menu, bottom navigation bar, card-based roster view optimized for touch @@ -494,9 +499,11 @@ MIT ## Version -**Current: 0.3.2** — Progressive Web App with mobile optimization (2025-12-12) +**Current: 0.3.3** — Mobile navigation improvements and better status visibility (2025-12-12) -Previous: 0.3.1 — Dashboard alerts and status fixes (2025-12-12) +Previous: 0.3.2 — Progressive Web App with mobile optimization (2025-12-12) + +0.3.1 — Dashboard alerts and status fixes (2025-12-12) 0.3.0 — Series 4 support, settings redesign, user preferences (2025-12-09) diff --git a/backend/main.py b/backend/main.py index fab90a7..963eca1 100644 --- a/backend/main.py +++ b/backend/main.py @@ -20,7 +20,7 @@ Base.metadata.create_all(bind=engine) ENVIRONMENT = os.getenv("ENVIRONMENT", "production") # Initialize FastAPI app -VERSION = "0.3.2" +VERSION = "0.3.3" app = FastAPI( title="Seismo Fleet Manager", description="Backend API for managing seismograph fleet status", diff --git a/backend/static/mobile.css b/backend/static/mobile.css index c8db026..fce8491 100644 --- a/backend/static/mobile.css +++ b/backend/static/mobile.css @@ -455,6 +455,54 @@ } } +/* ===== MAP OVERLAP FIX ===== */ +/* Prevent map and controls from overlapping UI elements on mobile */ +@media (max-width: 767px) { + /* Constrain leaflet container to prevent overflow */ + .leaflet-container { + max-width: 100%; + overflow: hidden; + } + + /* Override Leaflet's default high z-index values */ + /* Bottom nav is z-20, sidebar is z-40, so map must be below */ + .leaflet-pane, + .leaflet-tile-pane, + .leaflet-overlay-pane, + .leaflet-shadow-pane, + .leaflet-marker-pane, + .leaflet-tooltip-pane, + .leaflet-popup-pane { + z-index: 1 !important; + } + + /* Map controls should also be below navigation elements */ + .leaflet-control-container, + .leaflet-top, + .leaflet-bottom, + .leaflet-left, + .leaflet-right { + z-index: 1 !important; + } + + .leaflet-control { + z-index: 1 !important; + } + + /* When sidebar is open, hide all Leaflet controls (zoom, attribution, etc) */ + body.menu-open .leaflet-control-container { + opacity: 0; + pointer-events: none; + transition: opacity 0.3s ease-in-out; + } + + /* Ensure map tiles are non-interactive when sidebar is open */ + body.menu-open #fleet-map, + body.menu-open #unit-map { + pointer-events: none; + } +} + /* ===== PENDING SYNC BADGE ===== */ .pending-sync-badge { display: inline-flex; diff --git a/backend/static/mobile.js b/backend/static/mobile.js index 9651181..74b2f44 100644 --- a/backend/static/mobile.js +++ b/backend/static/mobile.js @@ -20,12 +20,14 @@ function toggleMenu() { backdrop.classList.remove('show'); hamburgerBtn?.classList.remove('menu-open'); document.body.style.overflow = ''; + document.body.classList.remove('menu-open'); } else { // Open menu sidebar.classList.add('open'); backdrop.classList.add('show'); hamburgerBtn?.classList.add('menu-open'); document.body.style.overflow = 'hidden'; + document.body.classList.add('menu-open'); } } } @@ -41,6 +43,7 @@ function closeMenuFromBackdrop() { backdrop.classList.remove('show'); hamburgerBtn?.classList.remove('menu-open'); document.body.style.overflow = ''; + document.body.classList.remove('menu-open'); } } @@ -56,6 +59,7 @@ function handleResize() { backdrop.classList.remove('show'); hamburgerBtn?.classList.remove('menu-open'); document.body.style.overflow = ''; + document.body.classList.remove('menu-open'); } } } diff --git a/templates/base.html b/templates/base.html index 4672c30..a741902 100644 --- a/templates/base.html +++ b/templates/base.html @@ -69,14 +69,6 @@ {% block extra_head %}{% endblock %} - -
@@ -172,6 +164,12 @@