Changelog

More

Changelog

Every release of lapbox and what changed in it.

Every release of lapbox. Until 1.0 a minor release (0.2, 0.3, …) may change the API; each change is listed here and in CHANGELOG.md. The 0.1.0.devN versions were development tags on GitHub, which the LapBox website ran on; 0.1.0 is the first release on PyPI.

Planned

The strategy engine is planned to move over from the LapBox website in 0.2. Nothing is dated yet.

0.1.0 — 2026-10-19

The first release on PyPI. The code is 0.1.0.dev14’s; what changed is the packaging and two source comments.

  • pip install lapbox, and pip install "lapbox[plot]" for the charts.
  • MAX_ALIGNMENT_RESIDUAL: its comment dates the 250-pair measurement behind the 15 km/h cut and adds a re-check with today’s alignment (pairs without frozen car data at 2023 Bahrain, 2025 Silverstone and 2026 China qualifying: median 4.2–7.3 km/h, none above 12.8).
  • DIRTY_AIR_S: its comment now says what it is, a rule of thumb that lapbox has not measured.

What is in it:

Development releases

0.1.0.dev142026-10-19
true_pace_ranking counts from lap 2, before the 107 % best is taken, as consistency and the clean-air split do. On 12 races the 30 driver-races that had counted lap 1 changed and nothing else: the corrected median by a median 9.5 ms, up to 1.08 s.
0.1.0.dev132026-10-17
lapbox.plot and the plot extra; Comparison.plot. A pair compare refuses is drawn without its time gap and says why.
0.1.0.dev122026-10-16
TyreDegradationModel takes the fuel effect off at FUEL_EFFECT_S_PER_LAP instead of fitting it, and fits only laps within 107 % of each driver’s best. Held out on 65 races (first half fitted, second half predicted): error 0.79 → 0.64 s, better in 71 % of races. r2 is now of the fuel-corrected laps.
0.1.0.dev112026-10-15
driver_consistency and consistency_ranking count from lap 2. Lap 1 had been counted in 30 of 245 driver-races and moved σ by a median 0.18 s, up to 1.9 s.
0.1.0.dev102026-10-12
longest_run_length counts laps at race pace, as classify_run does; counting timed laps let 6 of 145 practice sessions pass with no long run.
0.1.0.dev92026-10-11
The naming pass, with no aliases: align_by_distance → align, compare_drivers → compare, ComparisonResult → Comparison, cumulative_time_delta → delta_time, resample_by_distance → resample, compute_gforces → gforces, frozen_stretches → detect_frozen_stretches; telemetry/compare.py → comparison.py.
0.1.0.dev82026-10-11
frozen_stretches, where the timing feed’s car data froze, and ComparisonResult.frozen_a / frozen_b. Every pair refused on 2026 China, Suzuka and Monza qualifying (57) had such a lap.
0.1.0.dev72026-10-10
segment_gaps and ComparisonResult.segments: each driver’s time between the lap’s speed peaks.
0.1.0.dev62026-10-07
align_by_distance finds the shift to a fraction of a sample; the time gap and minisector times come from each lap’s own clock, so the gap ends at the official one and is a median 29–42 ms off it at the sector lines.
0.1.0.dev52026-10-06
Minisectors go to the driver with less time in them, on their own 4,000-point alignment; summary["dominant_driver"] → summary["more_minisectors"].
0.1.0.dev42026-10-04
lapbox.tyres
0.1.0.dev32026-10-03
Per-driver race-pace calls about 7× faster; outputs identical.
0.1.0.dev22026-09-30
lapbox.pace; classify_run needs 5 laps at race pace for a long run, not 5 timed laps.
0.1.0.dev12026-09-29
lapbox.data and lapbox.practice.
0.1.0.dev02026-09-29
lapbox.telemetry, with ComparisonResult.residual and .matched.

These docs describe lapbox 0.1.0. Something wrong or missing? Open an issue.