VAT LedgerOperations archive

Settings

Timezone
Display and query boundaries follow this zone.

Theme

Navigation

Monitor

Overview
Flights
Airports
Countries
ATC
Events

Analyse

Search
Statistics
Replay
Changelog
Developer
Independent community statistics. Not affiliated with VATSIM.PrivacyData policyAPITimes shown in UTC · Movement data is inferred.
Overview/Changelog

What changed

A release-by-release record of new capabilities, operational changes, and fixes in VAT Ledger.

v0.4.3v0.4.2v0.4.1v0.4.0v0.3.19v0.3.18v0.3.17v0.3.16v0.3.14v0.3.10v0.3.9v0.3.8v0.3.7v0.3.6v0.3.5v0.3.4v0.3.3v0.3.2v0.3.1v0.3.0v0.2.1v0.2v0.1

Accumulated direction of trafficChanges from v0.4.2.

v0.4.3 · 29 Sept 2026

Latest release

On event pages and airport-set searches the SID and STAR charts show accumulated totals, so every bar is the running count from the start of the window and the last bar holds the whole event or timeframe.

Changed
  • Direction of traffic on events and airport-set searches stacks running totals per slice instead of the movements inside each 15-minute slice; the Statistics page keeps one bar per period.

Direction of traffic on events and searchChanges from v0.4.1.

v0.4.2 · 29 Sept 2026

Released

Events and airport-set searches chart departures by SID and arrivals by STAR across their window for airports with configured procedures, and attributed traffic shows when each flight departed and arrived with its off-block evidence.

Added
  • Event pages and airport-set searches gain a Direction of traffic section for airports with configured SIDs or STARs: the window is cut into 15-minute to one-day slices and each slice is attributed exactly like a Statistics period.
  • Attributed traffic lists the detected departure and arrival time of every flight. A tooltip on the departure shows the filed off-block time (EOBT), the observed off-block time from the first taxiing position sample, and the taxi-out between them.
  • The collector stores the flight plan EOBT from now on; flights recorded before this release show the observed off-block time only.
Changed
  • The Statistics page, event pages and searches share one SID and STAR chart, so the three read the same way.

Stat card and basemap fixesChanges from v0.4.0.

v0.4.1 · 29 Sept 2026

Released

Pages with trend sparklines render again, the replay basemap loads from any deployment without an API key, and quiet days no longer inflate the ATC trend.

Fixed
  • ATC, event, airport, airport-set search and statistics pages failed with “The ledger could not answer” because a sparkline value formatter was passed to a client component; values are now formatted on the server.
  • The replay basemap pointed at a Protomaps daily build that had been deleted and that is served without CORS headers; the fallback now streams the newest available build through a same-origin range proxy.
  • The fourteen-day ATC trend counted a day without any staffed sessions as 24 controller hours.

UI Foundation redesignChanges from v0.3.19.

v0.4.0 · 29 Sept 2026

Released

The whole site moves onto the UI Foundation design reference. Dashboards follow the Geckoboard dashboard-design guidance, explanatory copy sits behind info tips, and every metric is a stand-out stat card with a trend and a sparkline where a real series exists.

Added
  • Stat cards: a large light number, a green or red trend badge with its comparison period, a signed delta line and a hover-able sparkline behind a dashed divider; a compact grouped variant with mini bars powers the regions strip on Countries.
  • The overview compares flights and staffed positions against the previous 24 hours from a new hourly trend query.
  • Info tips: metric caveats, panel subtitles and footnotes open from a small info icon instead of competing with the data.
  • A user-settings icon in the top navigation opens a dropdown holding the timezone select and the Light, Dark and System theme toggle on every viewport.
  • A dark theme mapped from the reference tokens onto the True Blue ramp, so every kit component follows without per-component rules.
Changed
  • The reference token set and component kit (buttons, inputs, selects, tabs, status tags, tables, notifications, skeletons, empty states, breadcrumbs, side and top navigation) replace HeroUI and the Onest font; pages use a short site vocabulary mapped onto the kit tokens.
  • The app shell is a 72 px top navigation and a 256 px sectioned side navigation (Monitor, Analyse), which becomes a slide-in sheet on small screens.
  • Composition pies are ranked horizontal bar lists, decorative icon chips are gone, and the route-density map uses a single-hue blue ramp.
  • Departures are action blue and arrivals amber across charts, tags and replay glyphs; DESIGN.md and the README describe the new system.
Fixed
  • Statistics chart tooltips used a mistyped shadow class; the replay page described departure glyphs as green after they turned blue.

Statistics chart controlsChanges from v0.3.18.

v0.3.19 · 15 Sept 2026

Released

The Statistics page lets the reader isolate departures or arrivals per period, names every bar segment on hover, and keeps procedure configuration out of sight for readers who cannot change it.

Added
  • Total movements per period has Departures and Arrivals toggles; the scale, the totals above each bar and a status line follow whichever series are visible.
  • Hovering a bar segment on any Statistics chart shows the series name, its count, its share of the bar and the period, so SID and STAR groups on the direction charts are identifiable without the legend.
Changed
  • The Direction of traffic header no longer carries explanatory notes, and the Configure procedures link and the unconfigured-airport note appear only for administrators listed in ADMIN_CIDS.

Traffic replayChanges from v0.3.17.

v0.3.18 · 15 Sept 2026

Released

A Replay page animates the archived positions of every aircraft observed around one or more airports from a chosen starting point, on a Protomaps basemap with VATSIM Radar aircraft outlines.

Added
  • Replay accepts comma-separated airport ICAOs, a starting point in the selected timezone, a duration of 30 minutes to 4 hours and a radius of 50–250 nm, then plays every session observed inside that area from the once-per-minute samples, interpolated between samples and hidden across gaps longer than five minutes.
  • Playback controls: rewind, one-minute steps, play/pause, 1× to 16× speed, a scrubber and the replay clock, with a summary strip and a session ledger around the map; clicking an aircraft opens its session record.
  • Each aircraft is drawn with its VATSIM Radar type outline, green for flights filed from a replayed airport and amber for flights filed to one, tagged with the operator logo, callsign, altitude and groundspeed.
  • The basemap is rendered client-side from Protomaps vector tiles; PROTOMAPS_API_KEY selects the hosted API and PROTOMAPS_TILES_URL a self-hosted archive, with a public daily planet build as the development fallback.
  • Replay is reachable from the navigation rail.

Flights per regionChanges from v0.3.16.

v0.3.17 · 15 Sept 2026

Released

Flights per country opens with a region strip that sums the ranked countries into VATSIM's Americas, EMEA and Asia Pacific regions.

Added
  • Three region measures above the country ranking: flights, share of region-attributed flights, departures, arrivals, and the number of countries and airports behind each region.
  • Region membership follows the ISO country code of the airport; territories without a VATSIM region, such as Antarctica, are reported as excluded rather than folded into a region.

Traffic statistics, airport procedures, and faster flight countsChanges from v0.3.14.

v0.3.16 · 15 Sept 2026

Released

A Statistics page compares the same time window across weeks as one bar per period, administrators can configure the SID and STAR names of each airport so arrivals and departures are charted by direction of traffic, and airborne-flight counts read a fifteen-minute rollup instead of scanning every position sample. v0.3.15 shipped the rollup without a version bump; its changes are listed here.

Added
  • Statistics accepts airports, a start and end time in the selected timezone, a weekday or every day, and a lookback in weeks, then charts detected departures and arrivals per period with totals, a period ledger, and a by-airport split when several airports are compared.
  • Per-airport SID and STAR names live in a new airport_procedures table; a filed route is matched against the base identifier with or without its designator and runway suffix, and procedures sharing a group label are counted as one direction.
  • Administrators listed in ADMIN_CIDS manage procedure names at /admin/airports after signing in with VATSIM.
  • Statistics is reachable from the navigation rail.
Changed
  • Every airborne-flight figure on the overview, flight totals, rankings and the fourteen-day trend reads a new airborne_session_buckets rollup, one row per session and fifteen-minute bucket, written by the live ingest and the statsim backfill and pruned with everything else.
  • Migration numbering: the airborne rollup is 006 and airport procedures are 007, applied in that order.
Fixed
  • The fourteen-day flight trend scanned about two million position samples per day on every request, never finished inside the statement ceiling, and once that ceiling was raised the abandoned scans held every pooled connection so past-day airport and country rankings failed on the connect timeout.
  • Database failures the pool can name, such as a statement timeout, an exhausted pool, an unreachable server, rejected credentials or a missing schema, now reach the error boundary as a stable digest with a readable explanation.

Controller operations restored and slower searches surviveChanges from v0.3.10.

v0.3.14 · 15 Sept 2026

Released

The ATC page works again after three weeks of failing on every request, and long airport comparisons on the search page no longer hit the database's statement ceiling.

Fixed
  • Controller operations failed with a database syntax error since v0.3.7: the clipped-hours expression behind every ATC statement was missing a closing parenthesis.
  • Airport comparisons on the search page over busy multi-hour windows were cancelled at fifteen seconds; the shared database pool now allows sixty seconds per statement, configurable through DB_STATEMENT_TIMEOUT_MS.
Added
  • The search page streams its frame immediately and shows what it is doing while a long analysis runs.

Network overview and ranking pagesChanges from v0.3.9.

v0.3.10 · 14 Sept 2026

Released

The home page now reads the last 24 hours of the network at a glance, airport and country rankings have dedicated pages, and collector outages can be backfilled from the statsim archive.

Added
  • Movements per airport lists the 100 busiest airports on a selected day with country flag, departures, arrivals, and share.
  • Flights per country ranks every country with observed traffic on a selected day, counting each flight once per airport country.
  • Airports and Countries are reachable directly from the navigation rail.
  • A collector backfill runner rebuilds samples lost during an outage from the statsim archive and replays movement detection over the repaired sessions; backfilled records are marked so the run is auditable and reversible.
Changed
  • Network overview now shows ATC positions, flights, the most active position, and the longest observed flight over a rolling 24-hour window, followed by the top ten airports and top ten ATC positions.
  • Flight operations keeps the fourteen-day trend and shows the top ten airports and countries, linking to the full rankings.
  • Ranked airport results now include the airport country code in the public API.

Route density map reworkChanges from v0.3.8.

v0.3.9 · 05 Sept 2026

Released

The observed route density map on event and airport-set analysis is now interactive and reads correctly at every zoom level.

Added
  • Departing and arriving traffic can be shown independently, the map zooms with the wheel, trackpad, or pinch, and it opens full screen.
  • Every density cell carries a departure and an arrival sample count alongside the total, snapped to a grid whose resolution follows the geographic spread of the data.
Fixed
  • The heat ceiling is derived from the density visible in the current view, so zooming in no longer turns the whole map red.
  • The heat layer is created only once the map has a measured container, avoiding a zero-size error that left the map without its handlers.

Event fleet mixChanges from v0.3.7.

v0.3.8 · 05 Sept 2026

Released

Event records now show which aircraft types and which airlines made up the attributed traffic, as two labelled composition pies.

Added
  • Event records carry a Fleet mix surface with an aircraft-type pie and an airline pie, each counted once per attributed pilot session.
  • Airline shares are inferred from the three-letter ICAO operator prefix of the callsign; registrations and other non-airline callsigns keep their own labelled slice instead of being dropped from the total.
  • A categorical series palette spans seven named slices, a collapsed residual, and an unattributed slice in both light and dark themes.

Timezone-aware workspaceChanges from v0.3.6.

v0.3.7 · 23 Aug 2026

Released

A compact workspace control now applies the selected timezone consistently across searches, charts, tables, and operational evidence.

Added
  • The workspace timezone can be selected from supported IANA zones, defaults to UTC, and persists between visits.
  • Search windows, day boundaries, chart axes, heatmaps, timestamps, and cached analytics now respect the selected timezone.
Changed
  • Timezone and Light, Dark, or System appearance settings now share one compact preferences capsule that expands on hover, keyboard focus, or touch.
  • Live Overview has moved from the navigation list to the VAT Ledger brand link, leaving the primary rail focused on Search, Flights, ATC, and Events.
  • Timezone context is shown beside affected evidence instead of assuming every view is UTC.
Fixed
  • User-selected local times are converted safely at daylight-saving boundaries and invalid local timestamps are rejected.
  • The mobile preferences control no longer conflicts with hover behavior and remains contained within the viewport.

Unified airport analysisChanges from v0.3.5.

v0.3.6 · 23 Aug 2026

Released

Search now turns comma-separated airport ICAOs into an event-style traffic comparison after an explicit UTC timeframe selection.

Added
  • Airport-set searches now provide combined and per-airport operational profiles, an observed route-density heatmap, movement and staffing totals, and linked attributed flights.
  • The timeframe step is preselected to the previous two UTC hours and supports explicit windows up to 31 days.
Changed
  • Record lookup and airport comparison now share one search field, with timeframe controls revealed only after an airport query.
  • Repeated airport analyses are cached briefly, and longer windows use adaptive chart intervals to bound query and rendering work.
Fixed
  • Empty or tampered timeframe values are rejected instead of silently falling back to a different window.
  • Malformed empty airport sets no longer reveal an unusable timeframe form.

Progressive page deliveryChanges from v0.3.4.

v0.3.5 · 22 Aug 2026

Released

Data-heavy routes now show their structure immediately and fill with cached operational evidence as it becomes available.

Added
  • Overview, Flights, ATC, and Events now use layout-matched streaming skeletons instead of holding the entire page behind database work.
  • Tables and ranked lists reveal newly resolved records in a brief row sequence with a reduced-motion fallback.
Changed
  • ATC analytics and event listings are cached for 60 seconds, while the busiest-airport ranking is cached for 30 seconds.
  • Event banners are served through the persistent shared image cache for at least seven days, avoiding repeated upstream downloads across visitors.
  • The global header now keeps only UTC and theme utilities on desktop, and menu and theme controls on mobile.
Fixed
  • Explicit flight and ATC date views no longer run an unnecessary database query to rediscover the selected date.

Restart-safe daily backupsChanges from v0.3.3.

v0.3.4 · 21 Aug 2026

Released

Backups now remain daily even when Portainer reconciles the stack every five minutes.

Fixed
  • The backup service records its last successful run in the persistent backup volume and skips duplicate dumps after container recreation.
  • Backup files are written atomically, so interrupted pg_dump processes no longer leave zero-byte files that look valid.
Changed
  • The default backup retention window is now three days, with one successful backup per 24-hour interval.
  • Existing duplicate backups are normalized to the newest valid dump per UTC day when the backup service starts.
  • Retention cleanup runs every five minutes and removes complete dumps as soon as they exceed the configured window.

Volume lifecycle correctionChanges from v0.3.2.

v0.3.3 · 19 Aug 2026

Released

Portainer reconciliations no longer leave anonymous PostgreSQL volumes behind.

Fixed
  • Migration and backup containers now override the PostGIS image's implicit data volume with ephemeral memory-backed storage.
  • Repeated stack reconciliation no longer creates unused anonymous volumes while the real database, backup, and web-cache volumes remain persistent.

Route density and faster flight analyticsChanges from v0.3.1.

v0.3.2 · 19 Aug 2026

Released

Event traffic is now visible geographically, while the live flight archive opens and refreshes more smoothly.

Added
  • Event detail pages now include an interactive heatmap built from every retained aircraft position observed during the event window.
  • The VAT Ledger pulse mark is now used as the browser favicon.
  • The Flights page now has a layout-matched loading skeleton and checks for new live metrics every 60 seconds while visible.
Changed
  • Flight analytics are cached for 60 seconds, reducing repeated database scans while keeping the live view aligned with the collector cadence.
  • Event route samples are grouped into compact geographic cells before reaching the browser, preserving route density without sending every raw position.

Runtime policy configurationChanges from v0.3.0.

v0.3.1 · 19 Aug 2026

Released

Contact details and policy documentation now match the deployed service.

Fixed
  • Privacy, Data Policy, and API Reference now read CONTACT_EMAIL at request time, so Portainer runtime configuration appears without rebuilding the image.
  • API allowances are consistently documented as quota units, including the two-unit airport-detail cost.
Changed
  • Privacy copy now describes VATSIM authentication, OpenStreetMap tile requests, retention, security records, and operator responsibilities more precisely.
  • API examples use the configured APP_URL and the reference documents rate-limit and retry headers.

Deeper traffic and pilot historyChanges from v0.2.1.

v0.3.0 · 19 Aug 2026

Released

Pilot-level history and richer airport traffic analysis.

Added
  • Pilot profiles for exact CID searches, with every consolidated flight and observed track in one place.
  • Most-common route and aircraft summaries for each observed pilot.
  • Airport traffic heatmaps by UTC weekday and hour, with independent arrival and departure controls.
Changed
  • Pilot reconnect fragments with matching callsign and filed endpoints are consolidated into one observed flight.
  • Individual flight records now link back to the pilot’s complete CID history.

Migration compatibility patchChanges from v0.2.

v0.2.1 · 19 Aug 2026

Released

A focused patch for databases already deployed on v0.1.

Fixed
  • Restored the original migration 001 checksum so existing installations no longer fail with “Migration 001_initial.sql changed after it was applied”.
  • Moved controller and observer schema changes into a new forward-only migration.

Operations workspaceChanges from v0.1.

v0.2 · 19 Aug 2026

Released

A new light-first interface and broader evidence views across the archive.

Added
  • Light, dark, and system themes using the Green Operations Desk design system.
  • A dedicated ATC archive with activity charts, ranked positions, date filtering, and session drill-down.
  • Complete observed flight-track maps on pilot records.
  • Combined and per-airport event charts for events tagged with multiple airports.
Changed
  • Simplified navigation and renamed the main destinations to Live Overview, Search, Flights, ATC, and Events.
  • Separated controller connections from pilot activity and excluded ATIS and facility-zero observer sessions from ATC analytics.
  • Reduced collector and database work through batched ingestion and more selective archive queries.

Initial archive releaseInitial release.

v0.1 · 18 Aug 2026

Released

The first deployable version of VAT Ledger.

Added
  • VATSIM feed collection with retained pilot, controller, airport, movement, and event records.
  • Search, network overview, flight statistics, airport records, event attribution, and system-health pages.
  • PostgreSQL/PostGIS storage, migration tooling, authenticated developer API keys, and OpenAPI documentation.
  • Docker Compose and Portainer-ready production deployment with private GHCR images.