From 1a87ff13c9a991035a6068a884c9758ccee07285 Mon Sep 17 00:00:00 2001 From: serversdown Date: Wed, 18 Mar 2026 19:59:34 +0000 Subject: [PATCH] doc: update docs for 0.8.0 --- CHANGELOG.md | 17 +++++++++++++++++ README.md | 15 ++++++++++++--- backend/main.py | 2 +- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0801df0..ef43346 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,23 @@ 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.8.0] - 2026-03-18 + +### Added +- **Watcher Manager**: New admin page (`/admin/watchers`) for monitoring field watcher agents + - Live status cards per agent showing connectivity, version, IP, last-seen age, and log tail + - Trigger Update button to queue a self-update on the agent's next heartbeat + - Expand/collapse log tail with full-log expand mode + - Live surgical refresh every 30 seconds via `/api/admin/watchers` — no full page reload, open logs stay open + +### Changed +- **Watcher status logic**: Agent status now reflects whether Terra-View is hearing from the watcher (ok if seen within 60 minutes, missing otherwise) — previously reflected the worst unit status from the last heartbeat payload, which caused false alarms when units went missing + +### Fixed +- **Watcher Manager meta row**: Dark mode background was white due to invalid `dark:bg-slate-850` Tailwind class; corrected to `dark:bg-slate-800` + +--- + ## [0.7.1] - 2026-03-12 ### Added diff --git a/README.md b/README.md index a7735b7..f89520e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Terra-View v0.7.1 +# Terra-View v0.8.0 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 @@ -496,6 +496,11 @@ docker compose down -v ## Release Highlights +### v0.8.0 — 2026-03-18 +- **Watcher Manager**: Admin page for monitoring field watcher agents with live status cards, log tails, and one-click update triggering +- **Watcher Status Fix**: Agent status now reflects heartbeat connectivity (missing if not heard from in >60 min) rather than unit-level data staleness +- **Live Refresh**: Watcher Manager surgically patches status, last-seen, and pending indicators every 30s without a full page reload + ### v0.7.0 — 2026-03-07 - **Project Status Management**: On-hold and archived project states with automatic cancellation of pending actions - **Manual SD Card Upload**: Upload offline NRL/SLM data directly from SD card (ZIP or multi-file); auto-creates monitoring sessions from `.rnh` metadata @@ -594,9 +599,13 @@ MIT ## Version -**Current: 0.7.0** — Project status management, manual SD card upload, combined report wizard, NL32 support, MonitoringSession rename (2026-03-07) +**Current: 0.8.0** — Watcher Manager admin page, live agent status refresh, watcher connectivity-based status (2026-03-18) -Previous: 0.6.1 — One-off recording schedules, bidirectional pairing sync, scheduler timezone fix (2026-02-16) +Previous: 0.7.1 — Out-for-calibration status, reservation modal, migration fixes (2026-03-12) + +0.7.0 — Project status management, manual SD card upload, combined report wizard, NL32 support, MonitoringSession rename (2026-03-07) + +0.6.1 — One-off recording schedules, bidirectional pairing sync, scheduler timezone fix (2026-02-16) 0.6.0 — Calendar & reservation mode, device pairing interface, calibration UX overhaul, modem dashboard enhancements (2026-02-06) diff --git a/backend/main.py b/backend/main.py index 0cff847..e1a8be2 100644 --- a/backend/main.py +++ b/backend/main.py @@ -30,7 +30,7 @@ Base.metadata.create_all(bind=engine) ENVIRONMENT = os.getenv("ENVIRONMENT", "production") # Initialize FastAPI app -VERSION = "0.7.1" +VERSION = "0.8.0" if ENVIRONMENT == "development": _build = os.getenv("BUILD_NUMBER", "0") if _build and _build != "0":