Lets users choose among the last 3 releases (v3.6.3 latest, v3.6.2,
v3.6.1) instead of only ever flashing the newest build - handy for
testing or rolling back. Archives the real historical binaries for
v3.6.1/v3.6.2 under versions/, each with its own manifest.json.
Documents the archival step as part of the standard release workflow
in CLAUDE.md so the picker stays current on future releases.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fixes a watchdog reset that could crash the device after many hours
of continuous flight logging: yield() alone doesn't reliably feed the
task watchdog (it only yields to the idle task when another
equal-or-higher-priority task is actually ready to run), so long CSV
scans in flight_logbook.cpp now use delay(1) instead, in
countLinesFast(), loadSeenFromCurrentFile(), and todayMaxAltitude().
Bundles all OTA reliability and WebUI live radar work already
committed since v3.6.0 (title-overflow fix, OTA diagnostic logging,
NetTask pause/resume during updates, WebUI radar compass/click/
radius/starfield enhancements).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fixes title overflow on error/confirmation screens, adds diagnostic
serial logging to both the update check and download/flash steps,
pauses the background NetTask during OTA to avoid WiFi/TLS
contention (likely cause of intermittent failures), and reminds
users to close the WebUI page before updating since it polls the
device.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a reminder to close the WebUI page before starting an OTA
update (its polling was interfering with downloads), detailed serial
diagnostics for OTA failures, and several WebUI live radar
improvements: full compass directions, clickable aircraft with an
info panel, an independent radius selector, and a twinkling
starfield background.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a live radar canvas to the web UI (above the flight logbook),
switches night dimming from a fixed 22:00-06:00 window to the actual
sunrise/sunset at the active location, and gives Heavy-category
aircraft (A380/B747/B777-class) their own marker instead of sharing
the orange "notable" ring.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fixes OTA downloads (GitHub's asset redirect wasn't followed before,
so every download failed), reworks the update success/failure
screens to require explicit confirmation instead of auto-vanishing
or auto-restarting, and drops the release-asset rename step in favor
of just uploading firmware.bin directly.
Replaces the screen-timeout tap-cycling with a drag slider (1-15
minutes, then "Never"); the idle screensaver toggle moves into this
same screen since it only affects what happens when the timeout
fires.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a "Check for update" menu entry that checks the latest GitHub
release and installs it directly on the device over WiFi, and an
"Screensaver" toggle that shows a dimmed starfield with a clock
after the inactivity timeout instead of turning the display off
completely. Requires switching to the min_spiffs partition scheme
for OTA's dual app partitions.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Removes the experimental Sound/beep feature after hardware testing
revealed unfixable electrical interference noise synced to the
radar-sweep SPI traffic. Adds progress-dot feedback on the Settings
Backup/Restore buttons so they no longer look frozen during the SD
copy. Chains three independent free flight-route lookup sources
instead of relying on adsbdb.com alone, which had poor real-world
coverage (~80% "unknown").
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v3.3.0 and refreshes
firmware.bin and partitions.bin to match the v3.3.0 build output -
partitions.bin changed because this release switches to the no_ota.csv
partition scheme.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Ports the same triangle-wave dim/brighten twinkle formula used by
MenuStars on the device to a lightweight, dependency-free canvas
overlay behind the page content, tying the web flasher's look to the
device UI. Star count scales with viewport area (40-160) instead of a
fixed number. The canvas uses z-index:0 (not negative) and
pointer-events:none so it stacks reliably behind .container without
blocking the ESP Web Tools install button or any links.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v3.2.0 and refreshes
firmware.bin to match the v3.2.0 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v3.1.0 and refreshes
firmware.bin to match the v3.1.0 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v3.0.1 and refreshes
firmware.bin to match the v3.0.1 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Embeds the cookieless GoatCounter base script and marks the ESP Web
Tools install button with data-goatcounter-click/title attributes, so
actual flash-button clicks (not just page views) are counted and
visible at https://eiswolf-bg.goatcounter.com.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v3.0.0 and refreshes
firmware.bin to match the v3.0.0 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.8.5 and refreshes
firmware.bin to match the v2.8.5 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.8.0 and refreshes
firmware.bin to match the v2.8.0 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.7.5 and refreshes
firmware.bin to match the v2.7.5 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.7.4 and refreshes
firmware.bin to match the v2.7.4 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.7.3 and refreshes
firmware.bin to match the v2.7.3 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.7.2 and refreshes
firmware.bin to match the v2.7.2 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Step 2 said to click the "Install" button, but the esp-web-tools
default button (no custom activate slot defined) actually reads
"Connect", which was confusing for new users.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.7.1 and refreshes
firmware.bin to match the v2.7.1 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.7.0 and refreshes
firmware.bin to match the v2.7.0 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.6.5 and refreshes
firmware.bin to match the v2.6.5 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.6.1 and refreshes
firmware.bin to match the v2.6.1 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.6.0 and refreshes
firmware.bin to match the v2.6.0 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.5.1 and refreshes
firmware.bin to match the v2.5.1 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.5.0 and refreshes
firmware.bin to match the v2.5.0 build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Changes the h1 from "FLIGHTRADAR CYD" to "EISWOLFS FLIGHTRADAR CYD"
to match the repo/README naming, and reduces the font size slightly
so the longer title still fits on one line.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bumps the web flasher version display to v2.4.0 and refreshes
firmware.bin to match the current build output.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>