Commit Graph

162 Commits

Author SHA1 Message Date
Eiswolf-BG
3c12b7bdfb Add CH340 driver note to README Getting Started section
Some users' computers don't detect the CYD's CH340 USB-to-serial chip
without a driver, so no COM/USB port shows up in the web flasher. Adds
a short note with official WCH driver download links right after the
Quick Web Installation steps.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 00:51:14 +02:00
Eiswolf-BG
6cd163bd81 Add twinkling star background effect to the web flasher page
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>
2026-08-12 00:36:29 +02:00
Eiswolf-BG
370f5fa310 v3.2.0: Update web flasher version badge and firmware binary
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>
2026-08-12 00:26:59 +02:00
Eiswolf-BG
0ba8ca9463 Bump version to 3.2.0
Documents the twinkling radar-screen stars and the consistently
applied Metric/Imperial unit setting in the README feature list. The
underlying unit-display bugfixes and Region-page button sizing
improvement aren't separately called out - no changelog section
exists in the README (previous bugfix-only releases like v3.0.1
weren't documented there either).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 00:25:55 +02:00
Eiswolf-BG
f51daf88d2 Enlarge buttons on the Region menu page to fill available screen space
The Region page (Language/Units/Back, only 3 entries) used the same
small fixed row height (22px) as pages with far more entries (e.g.
Flight Options: 14 entries), leaving most of the screen empty and the
buttons unnecessarily small. Row height/gap are now computed from the
actually available screen area, same pattern already used by the
System page (SYSTEM_ROW_H).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 00:20:36 +02:00
Eiswolf-BG
3dcfd4bfdc Add twinkling background stars outside the radar circle on the radar screen
Mirrors the existing detail-panel star field (updateDetailPanelStars)
with the same twinkle logic, but placed via rejection sampling outside
the radar circle (radius + margin around the center) so it never
collides with the sweep line, aircraft markers, or rings redrawn every
tick(). Star positions are computed once on first tick() and never
redistributed, same as the detail-panel field.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 00:01:34 +02:00
Eiswolf-BG
64b58a3c5d Respect Metric/Imperial unit setting in radar range button, ring labels, aircraft list, nearest airport, and stats
Five places ignored the Units setting (Menu > Units) and always showed
fixed metric values even when Imperial was selected: the radar range
button (now km/nm), the radar's ring distance labels (now km/nm), the
aircraft list's altitude/distance columns (now m+km or ft+nm), the
Location Presets screen's nearest-airport distance (now km/nm), and
the Stats screen's highest-altitude-today line (now m or ft). The
range button had already been touched previously but used "mi"
instead of "nm" - aligned to nm here for consistency with the other
distance displays, which all pair with km rather than miles.

The radar detail panel's simultaneous multi-unit display and the
climb/descent rate (always ft/min, aviation convention) are
intentionally left unchanged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 23:49:45 +02:00
Eiswolf-BG
bb7eb10cc8 Center yellow legend entry between green and red on radar screen
The yellow (mid-altitude) legend entry was pinned to a fixed 1/3-grid
column like the outer green/red entries, but its label ("3000-9100")
is noticeably longer than the others, making it sit visually too far
right - almost touching the red entry while leaving a lot of empty
space next to the short green label. Green and red keep their fixed
positions; yellow is now centered in the actual gap between them,
computed from gfx.textWidth() so it works correctly in both unit
modes (Metric and Imperial).

Refreshes firmware.bin to match this build.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 23:40:01 +02:00
Eiswolf-BG
140840d89b Add 12h/AM-PM clock format for Imperial units, add miles to distance display
The header clock now shows 12-hour time with AM/PM when Imperial
units are selected (Menu > Units), instead of always using 24-hour
format - the clock-clear region was widened from 50px to 80px to fully
erase the longer "12:59PM"-style text.

The aircraft detail panel's distance line now also shows miles
alongside km and nautical miles (e.g. "12km / 6nm / 7mi"), since nm
alone wasn't self-explanatory for lay users from Imperial-unit
countries.

Also fixes the radar screen's range button, which still always showed
a fixed "km" label regardless of the Metric/Imperial setting - it now
shows mi (converted) when Imperial is selected, matching the pattern
already used by the altitude legend.

Refreshes firmware.bin to match this build.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 23:28:28 +02:00
Eiswolf-BG
fb9033c3a9 Show only screenshot.jpg in README, drop radar.jpg
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 02:02:23 +02:00
Eiswolf-BG
5c80b340bd Update screenshot to show new weather icon
Refreshes images/screenshot.jpg with a current capture that includes
the weather icon in the header, and embeds it in the README (it was
previously unused there - only images/radar.jpg was linked).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 02:00:07 +02:00
Eiswolf-BG
29a3df62a3 Document ground vehicle markers in README, refresh firmware.bin for v3.1.0
Adds a note to the "Hide ground vehicles" section about the new blue
square markers and matching legend entry, and refreshes the root
firmware.bin to match the v3.1.0 build output including the ground
vehicle marker feature.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 01:53:13 +02:00
Eiswolf-BG
9f5da6e8b5 Add distinct marker and legend entry for ground vehicles on radar
Ground vehicles (ADS-B emitter category "C*") now render as filled
blue squares instead of the normal circle+arrowhead aircraft marker,
using a fixed color independent of altitude (they're practically
always at 0ft, which would otherwise collide with the low-altitude
green). A second legend line explains the marker, but only when
ground vehicles are actually visible (Flight Options > "Hide ground
vehicles" off) - the info bar height, and therefore the radar circle
size, is otherwise unchanged from before.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 01:47:07 +02:00
Eiswolf-BG
aa07acebbf v3.1.0: Update web flasher version badge and firmware binary
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>
2026-08-11 01:25:08 +02:00
Eiswolf-BG
80d07cc546 Release v3.1.0: native address search, guided first-run setup
## New
- Native in-device address search for setting your exact location,
  using the free OpenStreetMap Nominatim geocoding service - no more
  relying on imprecise IP-based location. Reachable both during
  first-time setup and anytime via Location Presets ("+").
- Guided first-time setup flow: language selection, followed by an
  optional location setup step (skippable) that explains why exact
  coordinates give a much better experience than automatic IP-based
  location, and a final setup-complete screen confirming everything
  is saved and ready.

## Improved
- The address search keyboard now shows a format hint (e.g. "Main
  Street 12, 12345 Springfield") and includes punctuation keys
  (comma, hyphen, slash, period, apostrophe) so addresses with house
  numbers like "45/3" can actually be entered.
- The preset-naming screen (when adding a location preset) now shows
  example names (e.g. "Home, Work, Holiday home") so new users
  understand what's being asked for.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 01:25:05 +02:00
Eiswolf-BG
a757d693e7 Add example-name hint to the preset-name keyboard
The preset-name keypad (used both when adding a preset via manual
coordinates and after an address search) only showed "Name
(optional):" with no indication of what kind of name was expected.
Adds a localized hint line with example names (e.g. "Home, Work,
Holiday home") under the title in both runPresetNameKeypad()
(location_presets_screen.cpp) and runNameKeypad()
(address_search_screen.cpp), measuring the header height dynamically
via getCursorY() the same way runAddressKeyboard() already does, so
the input field and keyboard shift down to make room regardless of
translation length.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 01:18:14 +02:00
Eiswolf-BG
795c008af6 Fix address search keyboard hint/punctuation and add setup-complete screen
The address search screen previously gave no hint about the expected
input format and had no punctuation keys at all on either keyboard
page, making addresses like a house number "45/3" impossible to type.
Adds a localized format-hint line under the title, comma/hyphen keys
on the main keyboard, and swaps four rarely-needed accented letters on
the special-character page for "/", ".", "'", "-". The header and
input field position are now measured dynamically (getCursorY())
instead of assuming a fixed pixel offset, so longer translations of
the hint text don't overlap the keyboard.

Adds a new FirstRunCompleteScreen shown after the location setup step
on first boot: confirms setup is done, names the SD card folder all
data is stored in, and notes that WiFi will reconnect automatically
from now on, with a large "Flightradar" button leading into the app.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 01:02:23 +02:00
Eiswolf-BG
4099aecb8d Fix first-run location screen text overlapping buttons, add native address search tip to presets info screen and README
Shortens the first-run location screen's body text in all 6 languages
and makes its buttons follow the text's actual height instead of a
fixed screen position - the longer German translation previously ran
underneath the "Enter Address"/"Skip" buttons, making it unreadable.

Adds a new info paragraph to the Location Presets "?" screen (all 6
languages) pointing to the native "Search by address" option added in
the previous commit, plus the same tip to the README's Getting Started
section.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 00:26:39 +02:00
Eiswolf-BG
43b073a0eb Add native address search with geocoding for location presets, remove itilog.com link
Adds a new AddressSearchScreen: enter an address on a dedicated
keyboard (with a special-character page for common European accented
letters), geocode it via the free OpenStreetMap Nominatim service,
confirm the found place, optionally name it, and save it as a new
location preset - no external website needed anymore.

Reachable both from Location Presets > "+" (choice between "by
address" and manual coordinates) and, for new users, from a one-time
FirstRunLocationScreen shown right after the language picker on first
boot, explaining why an exact address beats automatic IP geolocation
and letting them set it up immediately (skippable).

Removes the itilog.com link/tip added in the previous commit (Location
Presets info screen, all 6 languages, and the README) - superseded by
this native in-app flow.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-11 00:14:01 +02:00
Eiswolf-BG
866744bb88 Add itilog.com coordinate tip to location presets info screen and README
Adds a new info paragraph to the Location Presets "?" screen (all 6
languages) recommending itilog.com for getting exact address
coordinates, since automatic IP-based geolocation can easily be off by
20-30 km - enough to hear a plane while the radar stays empty. Adds
the same tip to the README's Getting Started section, with a
clickable link.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 23:35:43 +02:00
Eiswolf-BG
9bb95afa0b Document rule: all public-facing project text must be in English
README, index.html, GitHub release notes, commit messages, and any
other publicly visible description text must always be written in
English, regardless of the conversation language with Alex. The
on-device firmware UI stays multilingual as before (i18n_*.h); this
rule only covers the project's outward-facing presentation.
2026-08-10 22:17:34 +02:00
Eiswolf-BG
df52afd042 v3.0.1: Update web flasher version badge and firmware binary
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>
2026-08-10 22:12:37 +02:00
Eiswolf-BG
daa746fc24 v3.0.1: Radar marquee fixes, remove leftover trail rendering
Bumps to v3.0.1.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 22:12:33 +02:00
Eiswolf-BG
c1cd240efc Remove leftover aircraft trail rendering, fix proximity-blink black background box
The trail/tail-line rendering behind each aircraft marker was already
superseded by the heading arrowhead in drawAircraftMarker() but was
never removed, so it kept running in parallel (dimColorForAltitude,
TrailEntry, clearTrails/pruneStaleTrails/findOrCreateTrail/
pushTrailPoint/drawTrail, and their call sites in render(), tick() and
handleTap()) - all removed as dead weight.

The proximity-alert blink-off phase used to paint a flat 40x30px black
rectangle over each nearby aircraft to hide it, which also blacked out
the radar rings/compass lines underneath regardless of altitude color
(the blink logic is purely distance-based). Now redraws the exact same
shapes used for normal rendering (marker, emergency/watchlist ring,
label) in black instead, so only the aircraft itself disappears during
the blink-off phase.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 22:09:12 +02:00
Eiswolf-BG
97c6b140b8 Fix radar info marquee: no more blink on fetch, empty-sky timer now scrolls
Two bugs from the radar info marquee: the line briefly blinked on
every fetch cycle (visible in sync with the heartbeat LED) because
render() clears the line but tick() didn't redraw it for up to 80ms;
fixed by having render() immediately redraw the marquee at its current
scroll state right after clearing.

The "empty sky since..." text never scrolled even as it grew longer,
because needsScroll was only computed once when the marquee was first
set up (with the short "...0s" text) and never re-checked as the text
grew. updateInfoMarqueeText() now re-evaluates needsScroll on every
call.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 21:34:22 +02:00
Eiswolf-BG
1bea16c654 Scrolling marquee for radar info line, clearer tap hint text
The bottom info line on the radar screen (tap hint / empty-sky timer)
is now a continuously scrolling marquee instead of static text,
consistent with the nearest-airport ticker on the Location Presets
screen. The text is redrawn every tick() call (80ms) rather than only
on render(), so it scrolls smoothly and the empty-sky second counter
keeps advancing fluidly.

Also clarifies the tap hint in all 6 languages to make it explicit
that you need to tap an aircraft (e.g. "Tap an aircraft for more
details" instead of the more ambiguous "Tap for details").

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 21:21:49 +02:00
Eiswolf-BG
c63cb4fea6 Add GoatCounter flash-button click tracking to web flasher page
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>
2026-08-10 20:10:41 +02:00
Eiswolf-BG
4662f0c3d6 v3.0.0: Update web flasher version badge and firmware binary
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>
2026-08-10 19:40:04 +02:00
Eiswolf-BG
af921d2649 v3.0.0: Flight logbook toggle grouping, real screen-off on timeout
Bumps to v3.0.0. Documents the inactivity screen timeout now turning
the display fully off instead of just dimming it (feature landed in
the previous commit).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 19:39:58 +02:00
Eiswolf-BG
b28f9a7686 Group Flight logbook toggle with other switches, real screen-off on timeout
Moves "Flight logbook ON/OFF" into the group of plain on/off toggles
in the Flight Options menu, right under Proximity LED, alongside the
other LED-driven alerts and the ground-vehicle filter.

The inactivity screen timeout (Menu > System > Timeout) now turns the
backlight fully off (0) instead of just dimming it, for users who want
to keep the flight logbook running without needing the screen. Night
dimming (a separate setting) already covers the "just a bit darker"
case and is unaffected. Tapping the screen still wakes it back up to
the configured normal (or night-dimmed) brightness.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 19:33:02 +02:00
Eiswolf-BG
925e318f44 v2.8.5: Update web flasher version badge and firmware binary
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>
2026-08-10 19:10:45 +02:00
Eiswolf-BG
d5708d8201 v2.8.5: Weather info popup, larger System menu, Flight toggle grouping
Bumps to v2.8.5, documents the weather icon's new tap-to-info popup in
the README (feature landed in the previous commit).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 19:10:39 +02:00
Eiswolf-BG
52f692e70c Weather info popup, larger System menu buttons, group Flight toggles
Tapping the weather icon in the header now shows a small info popup
explaining that the shown weather always follows the currently active
location (including an active location preset).

The System menu's buttons now fill the available screen height
instead of leaving unused space below, computed from a dedicated
systemRowRect() helper. "Info" (About) is pinned as the second-to-last
entry, directly above Back, so its position stays stable regardless of
how many other entries come before it.

In the Flight options menu, all plain ON/OFF toggles (LED heartbeat,
emergency alert, proximity LED, watchlist alert, hide ground vehicles)
are now grouped together at the end of the list, right above Back,
instead of being interleaved with the screen/list entries above them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 18:58:53 +02:00
Eiswolf-BG
fe9b441deb v2.8.0: Update web flasher version badge and firmware binary
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>
2026-08-10 17:07:57 +02:00
Eiswolf-BG
56293cf3c3 v2.8.0: Weather icon in header
Adds a small weather icon in the header, right where the old camera
button used to be. Shows current conditions (sun, cloud,
sun-behind-cloud, rain, snow, thunderstorm) for whichever location is
currently active, including active location presets, so switching to
e.g. Milan shows Milan's weather. Powered by the free Open-Meteo API
(no API key needed), refreshed automatically every 10 minutes in the
background, or immediately after switching to a different location
preset. Icons are drawn entirely with TFT_eSPI basic shapes (circles,
lines), no image files or extra fonts needed.

The initial implementation failed to parse Open-Meteo's response
(ArduinoJson "InvalidInput") because the API replies with
Transfer-Encoding: chunked and streaming directly from
http.getStream() didn't reassemble the chunks correctly. Fixed by
collecting the full body via http.getString() first, then parsing
that.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 17:07:52 +02:00
Eiswolf-BG
766c44f22b Automate GitHub Release creation in the release workflow via gh CLI
The gh CLI is now installed and authenticated (see gh auth status),
so future releases create the GitHub Release and upload the firmware
binary automatically instead of leaving that as a manual step.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 16:32:16 +02:00
Eiswolf-BG
c0c343c631 v2.7.5: Update web flasher version badge and firmware binary
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>
2026-08-10 16:16:17 +02:00
Eiswolf-BG
bb0f1d9e46 v2.7.5: Logbook Web UI menu entry, per-day CSV delete, remove screenshot feature
Adds a "Logbook / WebUI" entry directly in Menu > System, showing the
device's IP and usage instructions (previously only reachable via a
hidden "?" button in Logbook Files). The web export page now supports
downloading and deleting individual daily logbook CSV files, in
addition to the existing merged CSV download.

Fixes a task watchdog reset that could reboot the device mid-download
when exporting the logbook via the built-in web server: the CSV send
loop never yielded the CPU, starving the idle task on larger logbooks.
The export loop now yields periodically (delay(1) every 10 lines and
after each file).

Removes the screenshot feature (camera button, on-device BMP storage,
web-based screenshot browser). Screenshots always came out solid
black - diagnosis showed the SPI readback from the display returns all
zeros regardless of SPI_READ_FREQUENCY, indicating TFT_MISO isn't
wired to the display on this CYD board revision. This is a hardware
limitation, not fixable in software, so the feature has been removed
rather than shipped broken.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 16:16:14 +02:00
Eiswolf-BG
cf9d096527 v2.7.4: Update web flasher version badge and firmware binary
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>
2026-08-10 14:42:23 +02:00
Eiswolf-BG
36afd4ae75 v2.7.4: Named location presets and tappable nearest-airport ticker
Location presets can now optionally be given a name (e.g. "Home"),
shown in the overview instead of the raw coordinates. The
nearest-airport ticker on the Location Presets screen is now
tappable (shown with a thin green border) and adds that airport
directly as a new preset with its name and coordinates, using the
existing local airport database on the SD card - no internet lookup
needed. AirportLookup::findNearest() now also returns the found
airport's own lat/lon for this purpose.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 14:42:10 +02:00
Eiswolf-BG
a555fb01ac v2.7.3: Update web flasher version badge and firmware binary
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>
2026-08-10 14:02:16 +02:00
Eiswolf-BG
7137e50d66 v2.7.3: Flight logbook safety net, radar/clock/timezone fixes
New:
- Flight logbook safety net: disabled by default, requires confirming
  a full-screen warning before it can be turned on, and automatically
  switches off again after exactly 24 hours - survives restarts and
  power cycles (no valid enable timestamp = guaranteed off). Each
  activation now writes its own CSV file instead of endlessly
  appending to one growing file, and every file can be deleted
  individually from Logbook files.
- Adjustable display brightness (10-100% in 10% steps, Menu -> System
  -> "Brightness") with a live preview.
- About screen (Menu -> System -> "About") showing project name,
  description, and firmware version.

Fixed:
- Radar's red altitude band (>9100m/30000ft) no longer gets dimmed at
  night - the previous dim tone looked orange-brown and was hard to
  tell apart from yellow. Legend and markers are consistent again.
- Radius change no longer leaves a stale "tail" trail behind each
  aircraft between the old and new position.
- Splash screen no longer shows a time-of-day greeting that appeared
  too late in the boot sequence to be useful; the star animation now
  starts immediately instead of only near the end of boot.
- Clock stayed on raw UTC after the first boot instead of local time
  (missing DST handling in some timezones) because the location wait
  loop skipped the timezone lookup once a location was already saved.
- Header clock no longer leaves stale digit fragments behind the
  current time, most visible on the last minute digit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-10 14:02:01 +02:00
Eiswolf-BG
d5eda78d2f v2.7.2: Update web flasher version badge and firmware binary
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>
2026-08-06 23:04:08 +02:00
Eiswolf-BG
5dd4e53258 v2.7.2: Aircraft list screen, radar night dimming, and flash savings
New:
- Aircraft list (Menu -> Flight Options, top entry): sortable list
  (distance/altitude/callsign) of every aircraft currently in range,
  with the same altitude color-coding and emergency/watchlist border
  highlighting as the radar. Tapping a row jumps back to the radar
  with that aircraft's detail panel already open.
- Night dimming now also softens the radar screen itself (aircraft
  markers and the sweep line switch to darker tones) during the
  existing 22:00-06:00 window, reusing the same setting - no new
  toggle.

Improved:
- Removed the unused built-in TFT_eSPI number fonts (GLCD/Font2/
  Font4/Font6/Font7/Font8) from platformio.ini - the project only
  ever uses the custom UI font via setFreeFont(). Saves ~15KB flash.

Also documents a CYD-flightradar.bin staleness safety check in the
CLAUDE.md release workflow (delete any leftover copy from a previous
release before renaming the fresh build, so an old binary can never
be silently re-used for a GitHub release).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 23:03:58 +02:00
Eiswolf-BG
537c1600d5 Improve README intro sentence flow around Web Flasher link
The em dash before the link made it sit awkwardly mid-sentence;
rephrased for a more natural read.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 21:54:50 +02:00
Eiswolf-BG
c8b63991af Fix web flasher instructions to match actual button label
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>
2026-08-06 21:49:04 +02:00
Eiswolf-BG
883857a553 v2.7.1: Update web flasher version badge and firmware binary
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>
2026-08-06 21:12:51 +02:00
Eiswolf-BG
b65e45c3d4 v2.7.1: Fix layout collisions on Watchlist screens and empty-sky timer
Three small layout bugs found after v2.7.0:
- Watchlist info screen title now wraps word-by-word via
  layoutWrapped() instead of println(), which cut it off mid-word.
- Watchlist overview screen draws the "?" info button first, so the
  title and two description lines start below it instead of running
  underneath and getting obscured.
- The radar's "empty sky for..." timer now shows only whole minutes
  once past the first minute (e.g. "2min" instead of "2min 05s"),
  since the seconds suffix collided with the range button.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 21:12:41 +02:00
Eiswolf-BG
27e56484a6 v2.7.0: Update web flasher version badge and firmware binary
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>
2026-08-06 20:41:18 +02:00
Eiswolf-BG
9b9b89eb85 v2.7.0: Time-of-day greeting, bearing indicator, and empty-sky timer
Three small usability additions:
- Splash screen now shows a "Good morning/day/evening" greeting under
  the title, based on local time (computed after the timezone offset
  from IP geolocation is applied via configTime(), not before, so it
  reflects actual local time rather than UTC).
- Selecting an aircraft on the radar now also draws a dotted bearing
  line plus a degree label from the radar center to the compass edge,
  showing which direction to actually look to spot it in the sky
  (distinct from the aircraft's own heading arrow).
- The radar info bar now shows "Empty sky for <time>" instead of the
  "tap for details" hint whenever no aircraft are currently in range
  after all filters, counting up from the last sighting.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 20:41:09 +02:00