JetNerds Release Notes
← Live Map

Release Notes

Build history for JetNerds. Newest builds listed first.

v0.0.0.0126
New Feature Boggy Creek Receiver & Detailed Aircraft SVGs
  • Added "Boggy Creek" (Feed 3) as a fourth data source with its own dedicated map tab, coverage metrics, and message rate tracking.
  • Redesigned aircraft SVG icons to dynamically reflect engine count and propulsion type (prop vs jet) using ICAO metadata — silhouettes now better match the aircraft from above.
  • Admin Panel enhancements:
  • · Feed inputs renamed to "Feed 1", "Feed 2", and "Feed 3" for clearer scalability.
  • · Configurable range ring colours and fill opacities added for all four receivers.
  • · Added Boggy Creek position overrides and Tar1090 URL configuration.
  • Refactored range ring logic to support an arbitrary number of local receivers (Local, Joseph, Boggy) in the Combined (Remote) view.
  • Delta tab (Missing Aircraft) always remains the last tab in the navigation bar.
v0.0.0.0125
New Feature Flight History & Map Playback
  • All aircraft positions are recorded to the database every 15 seconds while the tracker is running. A 30-minute gap in reception automatically starts a new flight session.
  • "History" button added to the aircraft detail panel — opens a modal listing every recorded flight for that aircraft with date, callsign, duration, max altitude, max speed, and position count.
  • Each session has a ▶ Play button that enters full map playback mode: live aircraft are hidden, the historical path animates on the map with smooth frame interpolation.
  • Playback controls bar (fixed bottom): Play/Pause, scrubber, current time, live altitude & speed readout, speed selector (5×–120×), and Exit button that restores the live view.
  • Aircraft icon and altitude colour update in real time during playback.
  • Clock icon in stats.php Aircraft History table opens the flight history for that aircraft on the main map (new tab).
  • URL parameters ?history=HEX and ?playback=SESSION_ID auto-open the history modal or start playback on page load.
v0.0.0.0124
Bug Fix Aircraft photo now loads correctly in detail panel 2c67fbc
  • Removed loading="lazy" from the detail-panel photo element — lazy loading combined with display:none prevented the browser from ever fetching the image.
  • Image remains hidden until fully loaded (onload reveals it), and is silently removed if unavailable (onerror), so no broken-image box is ever shown.
v0.0.0.0123
Bug Fix Aircraft photo cache never expires 85f6b78
  • Removed the 30-day cache-expiry check from getAircraftPhoto() — once a photo is cached to disk it is served permanently.
  • Eliminates unnecessary re-fetch attempts that caused 404 responses when the remote image source was unavailable.
v0.0.0.0122
New Feature Aircraft Icons database migration and admin editor 38642b3
  • SVG icon data moved from a static PHP array file into the aircraft_icons database table — seeded automatically on first run.
  • New CRUD methods: getAircraftIcons(), upsertAircraftIcon(), deleteAircraftIcon().
  • Icons gallery page (icons.php) now shows SVG path data to administrators.
  • Admin modal added to icons.php: edit ICAO type, model name, viewBox, and SVG path with a live preview; Save and Delete via AJAX.
  • "+ Add Icon" floating button for creating new entries without leaving the page.
  • Used JSON_HEX_TAG | JSON_HEX_AMP on all json_encode() calls embedding SVG data inside <script> tags to prevent HTML-parser truncation.
v0.0.0.0121
Bug Fix stats.php Aircraft History SVG icons and syntax error fixes b3a9b53
  • Aircraft SVG silhouette now appears in the Aircraft History table between the favourite star and the HEX column.
  • Fixed "Uncaught SyntaxError: Unexpected end of input" caused by two const SPECIFIC_ICONS declarations sharing the same script scope — removed the duplicate declaration.
  • Fixed script truncation from raw < characters inside SVG path strings embedded in <script> blocks — applied JSON_HEX_TAG encoding.
v0.0.0.0120
New Feature Map Options modal consolidates all map controls d829cf0
  • Replaced three separate map controls (layer selector, dim toggle, radar toggle) with a single gear-icon "Map Options" button that opens a floating panel.
  • Panel contains: Base Map dropdown, Dim Map toggle (only shown for tile layers that support it), Show Radar toggle, and Radar Opacity slider.
  • Radar overlay placed in a dedicated Leaflet pane (radarPane, z-index 250) so the OSM dim filter (brightness/saturate) does not bleed through to the radar layer.
  • All preferences persisted to localStorage (mapLayer, osmDim, radarVisible, radarOpacity).
  • Switched radar provider to Iowa State IEM NEXRAD — full zoom support, no API key required.
v0.0.0.0119
Bug Fix Combined Airspace message rate now sums all receivers
  • The Combined feed's messages/sec display was static and did not reflect actual traffic.
  • Fixed by summing the individual receiver message counts after each poll cycle and assigning the total to the Combined feed entry.
v0.0.0.0118
New Feature Receiver and feed dropdowns auto-update dynamically
  • All dropdowns that list receivers or feeds now rebuild automatically when new sources are added or removed.
  • No page reload required — new feeds appear in stats, admin, and other selector UIs immediately.
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 JetNerds logo branding applied across all pages; logo image removed
  • "JetNerds" wordmark now appears in the header of every page — index, stats, admin, and release notes.
  • "Nerds" 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 JetNerds 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.