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>
78 lines
5.5 KiB
Markdown
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.
|