github preston-peterson/aerodrome v3.0.17

latest releases: v3.4.136, v3.4.135, v3.4.134...
5 months ago

Documentation catch-up across the v3.0.x cluster.* Over the course of the v3.0.x release sequence, several user-facing documentation files drifted behind the code. docs/INSTALL.md described only the manual git-clone / rsync install flow without mentioning the curl one-liner that has been the canonical install method since v3.0.12, and its Updating section described only the local-zip upload path without mentioning the GitHub-Releases-based in-app update channel that v3.0.0 shipped and v3.0.1–v3.0.11 polished. docs/overview.md had the same gaps in its Operations and Getting Started sections. ARCHITECTURE.md had stale module sizes (server.py listed as ~6,300 lines, actual is 9,539; collector.py listed as ~1,280, actual is 2,745; templates listed as 9 admin pages, actually 11), an outdated SQLite tables list (listed seven; actual is thirteen because of sightings_hourly, hexdb_cache, hexdb_events, schema_version, concurrent_minute, aircraft_track_daily, and update_state accumulated since the doc was written), a stale "no test suite" claim (eight test_*.py files at the repo root cover the high-leverage logic — categorization, designators, schema migrations, preflight, search grammar, session tracking), a "exactly one long-running background thread" claim (there are now four: the collector, the tail-resolve worker, the daily-summary scheduler, and the v3.0.0 update-check scheduler), and a dead reference to inject_theme_submenu.py which was removed long ago. None of the drift was load-bearing — installs and updates work the same regardless of whether the docs describe the modern path — but the docs were giving prospective forkers and bug-reporters the wrong picture of how the project is built.

What landed in v3.0.17:

docs/INSTALL.md Installation section: rewritten to lead with the curl one-liner (Option 1, eight-step walk-through of what the bootstrap does, full flag reference) and keep the manual install path as Option 2 with full depth — git clone, rsync to server, chmod, ./install.sh. The two options are presented as equally supported; the curl path is recommended for fresh installs, the manual path stays for offline / version-pinning / git-checkout workflows. A short "Bootstrap-from-local-zip variant" notes that you can also run the bootstrap from a local zip via scripts/bootstrap.sh --from-zip <path> for air-gapped installs.

docs/INSTALL.md Updating section: rewritten with three options. Option 1 is the in-app GitHub channel — discovery cadence, Apply button flow, the three notify surfaces (banner, gear badge, ntfy push), the two-key gate for ntfy with notifications.events.update_available, the "Check now" force button, and how to disable the channel entirely. Option 2 is the local-zip upload via the web UI (for applying a specific zip rather than the latest GitHub release). Option 3 is direct rsync + restart (scripted deployments, web-UI-unavailable fallback). Config auto-migration paragraph applies to all three.

docs/overview.md Operations: "Updates via the web UI" rewritten to describe the GitHub channel as the primary path with the three notify surfaces, with local-zip and rsync as alternatives. Getting Started → Installation: rewritten to lead with the curl one-liner and what the bootstrap does, with the manual ./install.sh path retained as supported.

ARCHITECTURE.md: module size table updated with actual line counts verified via wc -l (including a new row for schema_migrations.py which the table had been missing entirely). Data model section rewritten to list all thirteen real tables grouped by purpose (core sightings, per-aircraft summary, aggregations and analytics, notifications and external data, framework / migration). Threading model section rewritten to describe all four current background threads, not just the collector. "No test suite" claim replaced with accurate description of the eight unit-test files that exist (with a note that comprehensive integration coverage is still on the roadmap). Dead inject_theme_submenu.py reference replaced with description of the actual gear-menu-duplication pattern. Schema migration invariant updated to describe the schema_migrations.py versioned framework rather than the pre-v2.50.x inline init_db() pattern. Adding-a-feature "New data collected" shape updated to point at the migration framework.

Operationally: v3.0.17 ran bump-version.sh WITHOUT the --skip-docs-drift flag for the first time since the v3.0.x cluster started — per the working convention going forward, the docs-drift advisory check should run on every release so drift gets caught at release time rather than allowed to accumulate. The check came back clean after the content updates, the PDF regen via scripts/build_overview_pdf.py, and the screenshot regen via scripts/screenshots.py (the latter is normally a maintainer-must-run step requiring a Playwright environment, but in this case the harness ran cleanly in the sandbox and refreshed nineteen screenshots in docs/).

Known minor counter discrepancy (not fixed in v3.0.17; filed for future polish): the PDF's auto-generated stats line says "11 SQLite tables" because scripts/build_overview_pdf.py::count_sqlite_tables() counts CREATE TABLE IF NOT EXISTS only in collector.py, missing the tables added by schema_migrations.py (concurrent_minute, aircraft_track_daily, update_state). The undercount is consistent within the PDF — both the stats card and the stats footer line use the same counter — so the PDF is internally self-consistent, but the count is two tables low. Fix is a four-line addition to count_sqlite_tables() to also scan schema_migrations.py. Filed for whichever release next touches the PDF generator.

What's NOT in v3.0.17 (filed forward, intentional): demo mode (v3.1.0 — separate design arc already scoped). The dedicated /about page (queue item #29). The first-time setup wizard (queue item #28). The validation-error UX improvements (filed in v3.0.8). The broader cross-field validation extension (filed in v3.0.10). The legacy raw-fallback checkbox removal. The tier-2 polish queue. None of those are documentation; all are filed as separate code work.

Net change in v3.0.17: ~300 lines of documentation changes across docs/INSTALL.md (Installation section ~180 lines, Updating section ~120 lines, configuration auto-migration paragraph updated to say "all paths" instead of "both paths"), ~10 lines in docs/overview.md (two short sections rewritten), ~50 lines in ARCHITECTURE.md (module table updated, data model section rewritten, threading model section rewritten, several smaller fixes). No code changes. PDF regenerated. Screenshots regenerated (nineteen total in docs/).

Don't miss a new aerodrome release

NewReleases is sending notifications on new releases.