SkyWatch Release Notes
← Live Map

Release Notes

Build history for SkyWatch. Newest builds listed first.

v0.0.0.0115
New Feature Permanent Map-View Filtering
  • Aircraft list is now permanently filtered to show only planes within the current map viewport.
  • List updates in real-time as you pan or zoom the map.
  • Simplified UI by removing the "In View" toggle button from the header.
  • Removed the "No position data" map overlay to keep map context visible at all times.
v0.0.0.0114
New Feature Military Filter, Live Search, and Stats Max Range
  • New "Military" toggle button added to map controls with an F-4 Phantom icon for quick filtering.
  • Integrated Live Search added to the aircraft detail panel (ac-lookup-bar) to search all aircraft registry and telemetry fields.
  • Statistics summary cards now display "Max Range" (peak reception distance) for each receiver.
  • Aircraft photo updates now restricted to logged-in administrators for improved security.
v0.0.0.0113
Maintenance SkyWatch logo branding applied across all pages; logo image removed
  • "SkyWatch" wordmark now appears in the header of every page — index, stats, admin, and release notes.
  • "Watch" portion rendered in bright orange (#ff7300) for consistent brand identity.
  • Removed the nerdnet-logo.png image from the main header; the text mark stands alone.
  • Admin login and first-run screens updated to use the same branded wordmark.
v0.0.0.0112
Maintenance Release notes link added to footer
  • "Release Notes" link added to the index.php footer bar, next to the Statistics link.
v0.0.0.0111
New Feature Release notes page (releasenotes.php) 822cbe9
  • New releasenotes.php page documents the full build history from first commit to present.
  • Timeline layout with build numbers (v0.0.0.XXXX), tag pills (New Feature / Bug Fix / Refactor / Maintenance), headlines, and detail bullets.
  • Styled to match the SkyWatch dark/light theme using shared CSS variables from config.php.
  • 110 builds catalogued across initial setup, map features, aircraft data enrichment, admin panel, stats dashboard, image caching, and the exclusive receiver view.
v0.0.0.0110
Bug Fix Removed Delta tab; exclusive view now shows per-receiver-only aircraft ef271e3
  • Delta tab retired — its function is superseded by the double-click exclusive mode on individual receiver tabs.
  • Double-clicking any receiver tab (Local, Joseph, Boggy) now filters to aircraft seen only by that receiver — not by any others.
  • Double-click on the Combined (Remote) tab is intentionally disabled since it aggregates all feeds.
  • Single-click or double-click while in exclusive mode exits back to the full receiver view.
v0.0.0.0109
Bug Fix Fixed exclusive-mode filter returning empty results c7a09f0
  • Root cause: the Combined feed aggregates all receivers, so any aircraft on Local also appeared on Remote — making the exclusive filter always return zero.
  • Fix: individual receivers (Local, Joseph, Boggy) now compare only against each other, not against the Combined feed.
  • Combined (Remote) exclusive mode compares against all three individual receivers.
v0.0.0.0108
New Feature Double-click receiver tab to see aircraft exclusive to that receiver 64b8abd
  • Double-clicking a receiver tab enters "exclusive mode" — shows only aircraft tracked exclusively by that station.
  • Visual indicator: top+bottom tab border stripe and an "ONLY" pill badge appear while in exclusive mode.
  • Panel header appends "· exclusive" to indicate the filtered state.
  • Any subsequent single or double click exits exclusive mode and returns the full aircraft list.
  • Uses a 350 ms click-timing window to distinguish single from double clicks without delaying tab switching.
v0.0.0.0107
Bug Fix Visitor tracking bug fix e97c544
  • Resolved an edge case in visitor session cookie handling.
v0.0.0.0106
New Feature Visitor tracking b5494b2
  • Introduced anonymous visitor tracking via a persistent browser cookie.
  • IP address, user-agent, and session ID are logged to the SQLite database on each page load.
  • Data is accessible from the admin panel.
v0.0.0.0105
Maintenance General performance optimisations c6208e7
  • Reduced redundant DOM queries during the per-second refresh cycle.
  • Marker rebuild and trail accumulation tuned for lower CPU overhead.
v0.0.0.0104
Bug Fix Image cache fixes (series) 4c9fac6
  • Three successive patches (ee0bedf, c3b954e, 4c9fac6) resolved edge cases in the on-disk JPEG cache.
  • Fixed stale/corrupt cached images being served after an aircraft photo is updated upstream.
  • Added proper Content-Length and cache-control headers for cached responses.
v0.0.0.0101
New Feature Image cache manager 7c8b823
  • Aircraft photos fetched from the external API are now cached on-disk to reduce repeat outbound requests.
  • Cache manager tracks fetch timestamps and evicts stale entries automatically.
v0.0.0.0100
Bug Fix Ground speed display fix 1453f24
  • Corrected a unit-conversion issue that caused speed values to display incorrectly in certain cases.
v0.0.0.0099
New Feature Photo placeholder for aircraft without images 7fae64d
  • Added a styled placeholder shown when no aircraft photo is available, replacing a broken-image state.
v0.0.0.0098
New Feature Statistics dashboard upgrades (series) 909d24e
  • Three upgrades (eda0d88, ca38f2a, 909d24e) expanded the stats dashboard with new charts and metrics.
  • Added hourly aircraft count graphs, receiver uptime percentages, and distance heatmaps.
  • Improved table pagination and date-range filtering on the stats page.
v0.0.0.0095
Maintenance Database schema cleanup and refactoring (series) 9f04cbf
  • Eight sequential cleanup commits (260e062 → 9f04cbf) simplified the SQLite schema.
  • Removed unused columns, merged redundant tables, and consolidated insert/update logic.
  • Improved query performance for the stats and history views.
v0.0.0.0087
Bug Fix Aircraft registration lookup fix 790e9d1
  • Fixed a case where the FAA/ICAO registration field was not being returned correctly from the database proxy.
v0.0.0.0086
Bug Fix Minor UI and data fixes 24510ad
  • Corrected several small display regressions introduced during the DB refactor series.
v0.0.0.0085
Bug Fix Missing registration field resolved 3d89925
  • Aircraft registration was blank for some entries; query updated to fall back to secondary lookup.
v0.0.0.0084
Bug Fix Statistics page rendering fix d572e4c
  • Fixed a PHP error that prevented the stats page from rendering when certain date ranges returned no data.
v0.0.0.0083
Maintenance Database population and backfill f6b6b7b
  • Added tooling to backfill historical aircraft sightings into the SQLite database from log files.
v0.0.0.0082
Bug Fix Stats and history clear/fix feabaaf
  • Fixed broken "clear history" action in the admin panel (e8ca1f2).
  • Resolved a stats calculation error that produced negative coverage percentages (feabaaf).
v0.0.0.0080
Bug Fix Database stability fixes (series) 61c20b8
  • Four fixes (4917782 → 61c20b8) addressed write-contention and schema migration issues.
  • Cached aircraft images now stored and retrieved correctly via db.php.
  • Fixed a WAL-mode locking issue that caused occasional write failures under load.
v0.0.0.0072
Bug Fix Country flag display fix f2530b4
  • Corrected SVG flag lookup for edge-case ICAO country prefixes.
v0.0.0.0071
Bug Fix Database write fix 91f7847
  • Resolved a prepared-statement binding error that caused aircraft log inserts to silently fail.
v0.0.0.0070
Maintenance Database backend migration and iterative updates (series) 34ad49c
  • Migrated from flat-file/JSON storage to a proper SQLite backend via db.php (da9bdc7).
  • Seven follow-up DB update commits (d6763e4 → 34ad49c) refined the schema, indexes, and helper methods.
  • Aircraft sightings, receiver stats, and registration data now all persisted in SQLite.
v0.0.0.0062
Bug Fix Statistics error handling 32be883
  • Added graceful fallbacks for missing or uninitialized SQLite tables on first run.
v0.0.0.0061
New Feature Aircraft history modal with hourly tracking 1d37a3b
  • Clicking an aircraft now optionally opens a detailed history modal.
  • Shows hourly sighting counts, max altitude, max speed, and receiver coverage over the past 24 hours.
  • ICAO database used to enrich modal with manufacturer, type, and operator fields.
v0.0.0.0060
New Feature Statistics dashboard with SQLite integration d9bbd41
  • New stats.php page provides a live statistics dashboard.
  • Metrics tracked: aircraft seen per receiver, message rates, peak ranges, and daily totals.
  • Data stored in SQLite via a new db.php backend module.
  • Dashboard auto-refreshes and includes per-receiver coverage history charts.
v0.0.0.0058
Maintenance Renamed "Remote" feed to "Combined Feed" 5f37c05
  • Updated all UI labels, PHP variables, and JS references from "Remote" to "Combined Feed" for clarity.
  • The Combined feed aggregates aircraft from all individual receivers into a single merged view.
v0.0.0.0056
Refactor Generalized combined-ring renderer for multiple receivers ac2982f
  • drawCombinedRing() refactored to accept an arbitrary array of receiver ring datasets.
  • Boggy Creek integrated into the remote/combined view range ring overlay.
v0.0.0.0055
Maintenance Admin panel updates 16c1cd1
  • Additional admin controls and data tables added to admin.php.
v0.0.0.0054
New Feature Boggy Creek receiver added as fourth data source 32a42a4
  • Fourth ADS-B station (Boggy Creek) integrated with its own tab, colour, coverage metric, and range ring.
  • Coverage percentage and badge count display on the Boggy tab.
  • Range ring drawn from Boggy receiver's GPS position.
v0.0.0.0052
New Feature Full ICAO aircraft type database integrated d089424
  • icao_db1.csv loaded at startup and used for all manufacturer/type lookups.
  • Covers over 10,000 aircraft type codes with manufacturer name, model, and wake-turbulence category.
v0.0.0.0051
Refactor Aircraft icons switched from inline SVG to CSS sprites 51c042c
  • Replaced per-marker SVG generation with a CSS sprite sheet for better rendering performance.
  • Selected/highlighted aircraft now shown with a distinct glow ring around the icon.
  • Reduced per-frame DOM work during the marker refresh cycle.
v0.0.0.0049
Bug Fix Map empty-state suppressed when a type filter is active 6fca9bc
  • Previously the "No position data" overlay appeared incorrectly when a filter reduced visible aircraft to zero.
  • Empty state now only shown when there are genuinely no aircraft for the current view/filter combination.
v0.0.0.0048
New Feature Military / Government filter consolidated b46c7fe
  • All military and government aircraft categories merged into a single "Military / Gov" filter option.
  • New isMilitary() helper function checks ICAO hex ranges, operator codes, and type codes.
v0.0.0.0047
Maintenance Configuration settings update 84c2c82
  • Updated default thresholds, ring distances, and colour presets in config.php.
v0.0.0.0046
New Feature ICAO database enrichment for manufacturer and type display 5b9038e
  • Aircraft info panel and table now show full manufacturer name and model from the ICAO DB.
  • Manufacturer and type columns added as sortable table columns.
  • Background prefetch queues ICAO lookups for all visible aircraft after each render.
v0.0.0.0044
Maintenance Aircraft type categorisation data updated 3f7a1f1
  • Expanded and corrected the type-to-category mapping table used for the type filter.
  • Added new categories for regional jets, turboprops, and balloons.
v0.0.0.0043
New Feature Rainbow altitude colour gradient and redesigned aircraft SVG icons e850fa9
  • Altitude colour now uses a full rainbow spectrum (violet → blue → green → yellow → red) for at-a-glance altitude reading.
  • All aircraft SVG icons redesigned with separate stroke and fill layers for crisper rendering at all zoom levels.
  • Icon shapes differentiated by aircraft category: widebody, narrowbody, turboprop, helicopter, balloon, etc.
v0.0.0.0040
New Feature Expanded user configuration options 3635a12
  • Additional settings exposed in config.php: trail length, ring distances, refresh interval, default tab, theme.
  • Per-receiver position overrides added so GPS coords can be set manually if the receiver.json is unavailable.
v0.0.0.0039
Bug Fix Admin password hash correction ee92a0a
  • Fixed bcrypt hash comparison that was rejecting valid admin passwords after a config change.
v0.0.0.0038
New Feature Admin panel (admin.php) 048e2c9
  • New password-protected admin panel added.
  • Provides controls for clearing caches, viewing raw receiver data, and managing site configuration at runtime.
v0.0.0.0037
Refactor Configuration split into dedicated config.php 6c77d00
  • All receiver URLs, positions, colours, thresholds, and site settings moved from index.php into config.php.
  • Makes deployments and customisations much cleaner without touching application logic.
v0.0.0.0036
New Feature User-configurable site options 9a63a68
  • Site title, default tab, theme (dark/light), ring distances, and refresh interval now configurable.
  • Colour presets for dark and light themes defined and switchable via config.
v0.0.0.0035
Bug Fix Helicopter category fix and map quick-snap 35bc72f
  • Helicopter ICAO type codes re-mapped to the correct category so the type filter works correctly.
  • Double-clicking the map resize handle now snaps the map panel to its minimum height.
v0.0.0.0034
New Feature Mobile-friendly responsive layout ff52537
  • Stacked layout for small screens: map sits above the aircraft table.
  • Tab labels condensed; secondary info (message rate, coverage %) hidden on narrow viewports.
  • Touch-friendly resize handle and scrollable table body.
v0.0.0.0033
Bug Fix Removed redundant ring refresh on every data poll bd60a98
  • Range rings were being fully redrawn on every 1-second data refresh — now only redrawn when the view changes.
v0.0.0.0032
New Feature Aircraft photo previews 560dfd3
  • Aircraft photos fetched from an external API and displayed in the info panel when an aircraft is selected.
  • Clicking the thumbnail opens an enlarged view.
  • Photos loaded lazily and cached to avoid redundant API calls.
v0.0.0.0027
New Feature Trail rewind / history playback 2483efb
  • Flight trail history accumulated in memory across refresh cycles.
  • Trail points capped at a configurable maximum to manage memory usage.
v0.0.0.0026
New Feature Additional aircraft type SVG shapes ad435f3
  • New plane silhouettes added for wide-body jets, business jets, military fast jets, and UAVs.
v0.0.0.0025
New Feature Weather radar overlay 7862a38
  • NEXRAD/RainViewer radar tiles overlaid on the map as a toggleable layer.
  • Radar refreshes independently on a configurable interval.
  • Two follow-up fixes (ac108a3, 7862a38) resolved tile URL and opacity issues.
v0.0.0.0022
New Feature OpenStreetMap tile layer added 147668d
  • OpenStreetMap available as an alternative base map alongside the existing satellite/dark tiles.
  • Map layer switcher control added to the map UI.
v0.0.0.0021
New Feature Filter aircraft by type category db11a31
  • Dropdown filter added to the panel header to narrow the table and map to a specific aircraft category.
  • Categories: wide-body (2/4 engine), narrow-body, regional jet, business jet, turboprop, GA single/twin, military, helicopter, balloon.
  • Active filter shown in the aircraft count; reset button clears the filter.
v0.0.0.0020
New Feature Per-aircraft distance from receiver 192c494
  • Distance column added to the aircraft table (in nautical miles from the active receiver).
  • Haversine calculation using the receiver's GPS coordinates from receiver.json.
  • Follow-up fix (192c494) corrected unit conversion from km to NMI.
v0.0.0.0018
New Feature Flight route information panel b4365df
  • Origin and destination airport information displayed in a right-side info panel.
  • Route data fetched from an external route API using the aircraft's callsign.
v0.0.0.0016
New Feature Country flag display and message rate indicator afc3675
  • Country flag SVGs shown next to each aircraft based on ICAO hex prefix.
  • Message-per-second rate displayed on each receiver tab.
  • Two flag refinement commits (4803434, afc3675) improved prefix matching and flag sizing.
v0.0.0.0012
New Feature Persistent local storage for UI state 0218c1a
  • Active tab, sort column, sort direction, and selected aircraft saved to localStorage.
  • State restored on page load so the view is preserved across refreshes.
v0.0.0.0011
Maintenance Removed map popup tooltips d36cfc6
  • Leaflet marker popups removed in favour of the side-panel info display for a cleaner map view.
v0.0.0.0010
New Feature Range rings extended to 200 NMI; manufacturer/type sorting 0f6bbf7
  • Distance rings now drawn at 50, 100, 150, and 200 nautical miles.
  • Aircraft table can be sorted by manufacturer name and aircraft type.
v0.0.0.0008
New Feature Popup persistence, country flags, and manufacturer / type info 81a17a3
  • Aircraft info popup stays visible when the aircraft is re-selected after a data refresh.
  • Country flags displayed based on ICAO registration hex prefix.
  • Manufacturer and aircraft type pulled from the ADS-B database and shown in the info panel.
  • ADS-B type database updated (81a17a3) with additional entries.
v0.0.0.0006
New Feature Flight trail polylines b641acd
  • As aircraft move, their recent positions are accumulated and drawn as a dashed polyline on the map.
  • Clicking an aircraft shows its trail; clicking away clears it.
  • Trail length capped to prevent unbounded memory growth during long sessions.
v0.0.0.0005
New Feature Range rings with 24-hour persistence 4697b16
  • Colour-coded coverage range rings drawn from each receiver's position, showing the maximum range seen per compass bearing.
  • Ring data persisted to the database and rebuilt across server restarts so the 24-hour envelope is retained.
v0.0.0.0003
Maintenance Initial project setup and README 0b3a8e7
  • Project scaffolding: index.php, config, and README committed.
  • Live ADS-B feed fetched from a local tar1090 JSON endpoint and rendered on a Leaflet map.
  • Aircraft table with hex, callsign, altitude, speed, heading, and squawk columns.
  • Two receiver tabs (Combined and Local) with per-tab aircraft counts.