);
}
const CHANGELOG = [
{
date: "Mar 22",
title: "3D aircraft models & smoother trails",
description:
"14 distinct 3D aircraft silhouettes assigned by ADS-B category and ICAO type code — from wide-bodies to helicopters. Models hosted on Cloudinary CDN with lazy loading and prefetch. Trail smoothing overhauled: 5-pass kernel filter, tighter corner rounding (15°), denser Catmull–Rom splines, and wider junction blending between historical and live data. Aircraft rendered 12% smaller for better proportions.",
},
{
date: "Mar 22",
title: "Multi-source flight data & circuit breaker",
description:
"Switched from OpenSky-only to a 2-tier fallback: adsb.lol → OpenSky (airplanes.live available via override). Each provider has its own parser normalising into a shared FlightState format. Circuit breaker tracks failures per provider and temporarily disables broken ones. Empty-response guard prevents data wipe-outs during transient failures, and an immediate re-fetch fires on network reconnect.",
},
{
date: "Mar 22",
title: "Code review fixes",
description:
"Fixed GPU memory monitor (duplicate WebGL enum cases, wrong byte sizes). Selection pulse halos now match aircraft height at all zoom levels. ATC stream properly cancels upstream on timeout. Airspace tile rate-limiter enforces spacing for queued requests. Photo fetch errors now surface to the UI. Spline cache clearing moved from useMemo to useEffect for React strict mode safety.",
},
{
date: "Mar 21",
title: "ATC feed lookup & GPU memory monitor",
description:
"New ATC lookup module — converts IATA to ICAO codes, finds nearby feeds by geographic proximity, and looks up feeds by airport or centre code. GPU memory monitor tracks WebGL resource allocations (textures, buffers, framebuffers) for debugging resource leaks.",
},
{
date: "Mar 20",
title: "Reliability & polish",
description:
"Serialised rate limiting in the flight API client. Logo cache with size limits and eviction. Registration country lookup via pre-built O(1) maps. Keyboard shortcuts focus trapping fix. SessionStorage guard for incognito mode. Airspace display toggle in map attribution. Utility functions extended with clamp().",
},
{
date: "Mar 13",
title: "Flight API client & rebase fixes",
description:
"New flight-api-client, flight-api-parsing, and flight-api-types modules. useFlights refactored to use the multi-source client — removed legacy credit management. useFlightMonitors switched to hex-based lookups. Fixed 6 files that diverged during rebase (IATA codes, globe mode ref, terrain attribution, cache eviction, OpenSky parsing).",
},
{
date: "Mar 11",
title: "Globe mode & aircraft photos",
description:
"Zoom out to see the entire earth as a 3D sphere with altitude-colored dots for every flight. Trails are now interpolated with centripetal Catmull\u2013Rom splines — a C\u00B9-continuous piecewise cubic that passes through every waypoint without overshooting, using \u03B1\u2009=\u20090.5 parameterization for natural curvature. Dark terrain, aircraft photo banners in flight cards, and a hard dot-to-flight cutover with zero overlap. Globe mode is in beta — find it in Settings.",
},
{
date: "Feb 22",
title: "Flight history tracking",
description:
"Full trail rendering for every tracked flight. Airline logo caching so they actually load.",
},
{
date: "Feb 21",
title: "First person view",
description:
"FPV mode — pick any plane and ride along with a HUD. Also added flight search by callsign.",
},
{
date: "Feb 17",
title: "Airline logos & attribution",
description:
"Proper logos for airlines, and attribution for OSM, OpenSky, CARTO, Esri, and everyone whose data makes this work.",
},
{
date: "Feb 15",
title: "9,000+ airports",
description:
"Went from a handful of cities to every airport we could find. Copilot helped build the dataset. Added keyboard shortcuts and click-to-select.",
},
{
date: "Feb 14",
title: "Day one",
description:
"Basic map, flight cards, trail rendering, orbit camera. Spent most of the day fighting Vercel timeouts and OpenSky IP blocks before realizing the API just supports CORS.",
},
];
export function AboutContent() {
return (
Aeris
Live flight tracking in 3D. The planes you see are real — position
data comes from ADS-B Exchange, adsb.lol, and OpenSky Network,
updated every few seconds via ADS-B receivers people run on their
roofs worldwide.
You can search through 9,000+ airports, jump into first-person view
to ride along with any plane, or just leave it on a screen and watch
things move. Trails change color with altitude so you can tell
who's cruising at 35,000ft and who's on approach.