Jinja2's |default(0) only replaces undefined, not None values from API
data. When used with comparison operators (>=) or format(), None causes
TypeError crashes. Replaced with Python `or` operator which handles
None correctly across market_overview.html (7 patterns) and
country_dossier.html (1 pattern).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
hexdb.io provides ICAO hex aircraft details with no API key required,
eliminating the 30-day trial limitation of Wingbits.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Parse FIRMS CSV column indices from header row instead of hardcoded
offsets. FIRMS added 'instrument' column, shifting confidence/frp.
- Fix cache key collision: _fetch_region and fetch_wildfires both used
'wildfire:fires:{region}' — now CSV uses 'wildfire:csv:{region}'.
- Add type guard for non-string input to _parse_fires_csv.
- Remove unused _CSV_COLUMNS constant.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>