Files
Live_RC/CHANGELOG.md
larssand 9122e91f2e lägg till jämna varv-övning + v1.2.0
Ny guidad träningsövning i Open Practice: sätt måltid, tolerans
och antal varv, se aktuell serie och dagens bästa live på
Training-sidan. Ett missat varv startar en ny serie utan att
radera bästa resultatet.

Hittade och fixade två buggar under vägen:
- syncTrainingLedger byggde om training-state vid varje sparning
  utan att föra vidare det nya evenLaps-fältet, så sparade
  konfigurationer försvann direkt
- Training-sidan kraschade för alla förare med färre än 3 varv i
  varje stint (t.ex. de första varven i ett pass) eftersom en
  dedupe-funktion läste en egenskap på ett null-värde

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 08:51:50 +02:00

78 lines
5.5 KiB
Markdown

# Changelog
User-visible changes to RC RaceCore are recorded here, starting with the 1.1.0 baseline. Earlier development has not been reconstructed as individual releases.
The application version is maintained in `package.json` and displayed in the administration menu. Add changes under **Unreleased** as they are made. When preparing a release, move those entries into a dated version section and update the version in both `package.json` and `package-lock.json`.
## Unreleased
No changes recorded yet.
## 1.2.0 - 2026-09-09
### Added
- "Jämna varv" (even laps): a guided practice exercise inside an active Open Practice session. Set a target lap time, tolerance and lap count (with a suggested target from the driver's own personal best); the Training page shows the live streak and today's best streak, and a missed lap starts a new streak without losing the best one.
- Personal mobile profiles show last successful data retrieval, stale-data and failed-update warnings, and a Retry button without replacing loaded statistics or active forms. Requests time out after 15 seconds and cannot overlap.
- Browser coverage for Race Day start/pause/resume/finish and switching to the next queued heat, against a simulated decoder socket.
- Browser coverage for opening the OBS overlay as a real popup window (not a direct URL load): compact layout, and live clock updates that freeze on pause, polling independently of the admin page.
- Browser coverage for decoder auto-reconnect after a dropped socket (simulated network interruption): reconnects onto exactly one connection, never a duplicate, and stops retrying once auto-reconnect is turned off.
### Fixed
- Open Practice sessions on a sponsor (track-mode) event could show a ready/green Race Day preflight yet refuse to start, blocked by a stricter assignment check the preflight never warned about. Open Practice is now exempt from that check everywhere, matching the preflight.
- The Race Day view did not refresh when the decoder connected, disconnected, or errored, so its Start button and preflight checklist could stay stale after a page load until something else triggered a re-render.
- Printing or exporting start lists, results, heat sheets and team reports always showed a false "popup blocked" error and produced nothing, in every modern browser. Opening the OBS overlay as a popup had the same false "blocked" check and its window never received focus. Both used `window.open(..., "noopener,noreferrer,...")`, which returns `null` even on success by current browser standards; both now open without those flags.
- The Training page crashed for any driver with fewer than 3 laps in every stint - a common state, e.g. a driver's first couple of laps in a session - because a dedup step read a property off a `null` "best stint" entry.
## 1.1.2 - 2026-09-08
### Reliability checks
- Browser coverage for sponsor-event edits, endurance race creation, team membership changes/deletion, session-type conversion and lap-limit persistence.
- Overlay sorting headings share the same column tracks as driver rows. Narrow displays scroll the headings and values together.
### Added
- Browser-local decoder/socket diagnostics in Settings: per-channel counters, bounded logs, pause/clear/copy and independent updates that preserve form drafts.
- A prioritized ROADMAP.md with completion checklists.
- Server/save status, last load/save times, stale/offline warnings and manual retry of local changes.
- Isolated browser regression checks for class/driver/car creation and editing, retained drafts, reload persistence and offline save recovery (`npm run test:browser`).
### Fixed
- New browser profiles connect to the page origin rather than assuming backend port 8081.
- Correct chronological sorting of zero-padded times and deterministic ordering of distinct numeric-looking driver/car names. Name and identifier columns are explicitly treated as text.
- OBS race-info and standings panels wrap on narrow sources. Driver names retain space and timing fields wrap instead of overflowing.
## 1.1.1 - 2026-09-07
### Added
- Sortable columns in the leaderboard, recent passings, and training tables/lists, with each list remembering its own sort choice.
- OBS overlay leaderboard layout split into a race-info panel (left) and a driver-stats panel (right), so each can be positioned independently on stream.
### Fixed
- Sorting by driver or car name no longer merges differently zero-padded numbers (e.g. "09" and "9") into the same position.
- Sorting the interactive overlay no longer changes the row order shown on the OBS broadcast source.
## 1.1.0 - 2026-09-05
### Added
- Visible application version in the menu, read from the running server's package version.
- This changelog as the starting point for tracking future changes.
### Baseline
The existing feature set includes race and sponsor-event setup, team racing, AMMC timing, Race Day preflight, overlays and OBS views, Swedish and English race audio, training statistics, personal mobile profiles, import/export, and backups. See the README and in-app guide for configuration and usage.
Recent improvements included in this baseline:
- More compact mobile training profiles and consistent class-selector text sizing.
- Mobile refresh protection while entering data, selecting a class, or saving a car change.
- Separate unsaved car-change notes per class during page updates and class switching.
- Preservation of loaded mobile statistics during temporary refresh failures.
- Race Day preflight lists blockers first and provides shortcuts to the relevant configuration.