feat(practice): flag suspiciously short laps and remove any lap in one click

Practice laps under 85% of the driver's own median (a likely shortcut)
are flagged: counted, but never a best lap, record or training stat
until approved. Timing and Race Day get a one-click Approve/Remove
panel, overlays show a warning mark, and any lap can be removed or
restored from Timing and Judging with undo.

Also sends judge corrections straight to the server so its hot-results
protection can no longer hold back a correction made right after a
passing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
larssand
2026-10-07 19:53:23 +02:00
parent 3cc4fa0845
commit 8601954ea2
24 changed files with 556 additions and 60 deletions

View File

@@ -8,6 +8,20 @@ The application version is maintained in `package.json` and displayed in the adm
No changes recorded yet.
## 1.30.0 - 2026-10-07
### Added
- Suspiciously short practice laps are flagged. In practice, a lap under 85 % of the driver's own median on the current layout (after 5 normal laps) is marked ⚠, e.g. one lap of 15 s from someone who usually laps 20-25 s. It still counts as a lap, but not as a best lap, personal best, session fastest, track record or in the training stats until someone approves it. Two shortcuts in a row are both flagged. Races are not affected; the minimum lap time covers those.
- Where it shows:
- A "Suspiciously short laps" panel on Timing and Race Day, with **Approve** / **Remove** per lap.
- ⚠ next to the driver in the Timing leaderboard and in every overlay. The overlay event feed lists the lap.
- **Remove / Restore any lap**, not just the last one, from a driver's lap list on Timing (driver details) and in Judging. Every action is logged and can be undone like other judge corrections.
### Fixed
- A judge correction made within 15 s of a live passing (e.g. removing a lap right after it was driven) could be held back by the server's protection against stale browsers. It then reached the server only with the next passing, and was lost if someone reloaded first. Corrections are now also sent straight to the server as that session's result.
## 1.29.2 - 2026-10-03
### Fixed