Release notes

Changelog

Everything new in London Buses — from the v2 redesign to weekly data refreshes. Route and garage data updates automatically each week.

Tags: NEW new feature · FIX bug fix · DATA data & coverage · UX user-facing improvement.

v2.13 Jun 02, 2026
Garage popup parity & small UX touches
  • NEW Clicking a garage marker now exposes the same View all routes operated here CTA that's been on the side drawer — same wording, same shape, same downstream behaviour. Filters the network to that garage's routes in one click without opening the drawer.
  • NEW Both CTAs also flash the "Operating from here" tooltip above the chosen garage marker — the same visual that fires when a single route is focused now fires for a garage too, so the user can immediately see which garage they narrowed to.
  • NEW Colour swatches on the Route Type filter pills, but only when colouring routes by type — so the legend connection between pill and line is direct (red Regular, violet Night, cyan 24 Hour, green School, mustard Prefix). In operator paint mode the dots stay hidden so they don't read as noise.
  • FIX Route 339's tender section showed Tower Transit as the awarded operator next to Stagecoach London as the current operator — both correct historically but confusing side-by-side. Stagecoach acquired Tower Transit's Lea Interchange (East London) operations in 2024 and inherited the contract; the tender section now folds to "Stagecoach" so the two read as one operator. Same handling already applied to RATP Dev → First (Feb 2025 acquisition).
v2.12 Jun 02, 2026
Tender split into three sections & sharper map
  • NEW Tender block on the route card now splits into three: Current active contract (the originating award, what the route is actually running on today), Next contract — awarded (only shown when a re-tender has landed for a not-yet-started contract), and Previous operator (the last genuine change of hands). Rows in each section follow the same order — Operator, Tranche, Awarded on, Contract start, Length, Cost/mile, Contracted miles, Awarded vehicle, Joint bid, Bids received — so the three boxes read like a like-for-like comparison.
  • NEW Operator pill in every tender section, with an inline change flag when the next-contract awarded operator differs from the current incumbent — so a Go-Ahead route with a Metroline-awarded next contract no longer reads as "still Go-Ahead". The FirstGroup / RATP Dev acquisition (Feb 2025) is treated as the same operator on the flag, so the ~10 affected routes don't surface a false change.
  • NEW Hover tooltips on every route-card label show the data source and freshness, in a consistent Source: X. Freshness: Y. format. Restored after the privacy pass and rewritten to read in plain English.
  • UX Map tiles now serve at 2× resolution on hi-DPI displays — road names and labels stay crisp at any window size.
  • FIX Deck type corrected on 141 routes that were mis-labelled double-deck. Root cause: the regex that derives deck from upstream descriptions was reading door-count markers (2D = dual door) as deck markers. The curated vehicle lookup now takes precedence over the regex, so a known single-deck like the Enviro200 / BYD D8UR / Streetlite always renders SD.
  • FIX Two regressions from a refactor mishap that broke the route-card panel for every route — restored.
v2.11 May 22, 2026
Garage filter & filtered-route list
  • NEW Garage filter in the sidebar — a multi-select dropdown of garages grouped by operator. Pick one or more (even across operators) to narrow the network to their routes. It's a stackable filter like the others, so it combines with Operator, Route Type, Propulsion, etc. (and matches the garage drawer's "View all routes operated here").
  • NEW The Routes panel now lists every route matching your active filters (bus stop, operator, type, propulsion, deck, frequency) — not just coloured lines on the map. Click any route to open its full card.
  • DATA Contract lengths corrected across 400+ routes — now read directly from a public reference and cross-checked against a second source, replacing the old estimate (e.g. an implausible 10-year term dropped to 5). Coverage 725/747.
v2.10 May 11, 2026
Tranche on the route card
  • NEW Tranche reference on every route card — the tendering-programme batch a route's upcoming tender sits in (e.g. 913). Coverage 712/747 routes; also added to the XLSX Routes sheet.
v2.9 May 11, 2026
Data accuracy corrections
  • FIX Average fleet age was being skewed by reserve vehicles of the wrong drivetrain briefly covering a route — a 14-year diesel on an electric route would add a year or two. Now only vehicles matching the route's main propulsion count (route 339: 4.8 y → 2.9 y).
  • FIX Garage list had duplicate rows and out-of-London placeholder depots. Deduped and filtered — a cleaner 81 garages.
  • FIX A handful of tender cards showed absurd cost-per-mile figures (e.g. £4M/mile) where the source records carried the full annual bid in the per-mile cell. Now clamped to a sane range.
  • FIX School routes now default to single-deck diesel when no fleet data is available (London school services are uniformly single-deck diesel minibuses / coaches).
v2.8 May 1, 2026
MPS standards & contract start dates
  • NEW Contractual EWT / OTP / Mileage standards per route, from official per-route performance reports. A new "MPS" KPI tile sits next to the actual EWT / OTP so contract-vs-actual reads at a glance.
  • NEW Contract start date on the route card (~700 / 747 routes covered).
  • NEW Combined Tenders sheet in the XLSX export — historical awards (~2,500 since 2003) + upcoming programme entries in one stream.
  • NEW Search pills in the topbar now drive the export — typing 25, 30, 100 + Export emits a workbook restricted to those routes (every sheet follows the same selection).
  • UX Joint bid row now always shows Yes / No (was hidden when "No"). Tender section restructured into Current / Previous; tooltips rolled out across every route-card label.
  • FIX Cost-per-mile reader was misreading European decimal commas (6,25 was becoming 625). 3 historical awards corrected.
  • FIX A few operators rendered grey on the stats panels instead of their brand colour. Now consistent everywhere.
  • FIX Stops toggle no longer lingers after clearing the route search.
v2.7 Apr 30, 2026
Tender data on every route card
  • NEW Tender history surfaces on every route card: previous operator, awarded vehicle, cost per mile, contract length, total awards, bids received, joint bid flag.
  • NEW Card restructured into Route / Fleet / Tender · Current / Tender · Previous sections.
  • DATA ~2,500 historical tender awards (back to 2003) and 10 years of upcoming-tender programme data refreshed weekly.
v2.6 Apr 28, 2026
Frequency rules & propulsion fix
  • NEW Frequency band collapsed to binary: H = 5+ buses/hour, L = fewer.
  • FIX 11 routes (D7, D8, 58, 187, 228, 251, 276, 314, 316, 384, 487) corrected from "diesel" to "electric".
v2.5 Apr 24, 2026
Network Overview & operator / garage drawers
  • NEW Network Overview panel — KPI tiles (Routes / Operators / Garages / PVR), clickable per-operator table, PVR-weighted Fleet Mix.
  • NEW Operator drawer (Routes operated · Garages · PVR · % of network) and Garage drawer with a "View all routes" CTA.
  • NEW Global Clear-all button resets every filter, marker and search in one click.
  • NEW XLSX export gains a Fleet Mix block in the Network overview sheet.
  • NEW Direction toggle on single-route cards (outbound ⇄ inbound).
v2.4 Apr 23, 2026
Bus-stop filter
  • NEW Bus-stop filter — search any stop and filter the network to routes serving it.
v2.3 Apr 21, 2026
Night-route frequencies & garage electrification
  • FIX All 120 night routes now resolve a frequency band (after-midnight departures were previously mis-bucketed).
  • NEW Garage popup gains an Electrification row (% of garage's PVR run by electric routes).
v2.2 Apr 17, 2026
API-first data pipeline
  • DATA An official transport API as the primary source for routes, destinations, timetables and stops. Fallbacks engage only when the API is sparse.
  • NEW Per-route HTML grid fallback for frequency when the API is silent.
  • FIX Multiple correctness improvements to operator and garage attribution.
v2.0 Apr 15, 2026
Operator garages, split filters, multi-sheet export
  • NEW Operator-coloured garage markers on the map.
  • NEW Split filter design — Routes / Garages tabs in the sidebar.
  • NEW XLSX export with three sheets (Routes / Garages / Network overview).
v1 Apr 13–14, 2026
Foundation

The initial v1.0 → v1.8 series established the core map, data pipeline and route detail experience.

  • NEW Interactive map of every London bus route (~700) with route-type colouring.
  • NEW Route search with autocomplete; click-map identify tool to find nearby routes.
  • NEW Route detail panel — number, endpoints, stop count, direction toggle, operator, garage, vehicle type, deck, propulsion, frequency, length.
  • NEW Filter system (route type, operator, deck, propulsion, frequency) with live filtering.
  • NEW Multi-route selection via pill-based input; export filtered routes to CSV.
  • NEW Per-operator statistics panel (Routes %, PVR %, EV %).
  • NEW Manual override system (data/route-overrides.json) — any field can be hand-edited and wins over data.
  • DATA Weekly automated build pipeline; auto-deploys to a static host.
  • DATA API key moved to environment variables; modular module architecture.