diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fcd261..6bd2933 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ The application version is maintained in `package.json` and displayed in the adm No changes recorded yet. +## 1.12.2 - 2026-09-10 + +### Fixed + +- The race clock shown next to a driver's result (e.g. laps/total time in Timing, Overlay, Results archive, Team Race stint logs, and Training's stint duration) rendered a malformed, doubled-up time like `02:48.20:207` instead of a clean `02:48.207`. `formatRaceClock` computed both a 2-digit centiseconds value and a 3-digit milliseconds value and concatenated both into the string; only the milliseconds part was ever meant to be there. This had been broken since the feature was first written and was easy to miss because it only shows once a session actually has recorded lap results - found while building fuller demo data for the documentation screenshots below. + ## 1.12.1 - 2026-09-10 ### Fixed diff --git a/README.md b/README.md index 20be299..7c54689 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,10 @@ Current layouts for race operation, live presentation, training and system confi Decoder configuration
Decoder configuration + Managed AMMC configuration
Managed AMMC configuration + + + In-app setup guide
In-app setup guide diff --git a/README.sv.md b/README.sv.md index e169b35..88a6966 100644 --- a/README.sv.md +++ b/README.sv.md @@ -74,6 +74,10 @@ Aktuella layouter för racedrift, livevisning, träning och systemkonfiguration. Decoderinställningar
Decoderinställningar + Hanterad AMMC-konfiguration
Hanterad AMMC-konfiguration + + + Inbyggd uppstartsguide
Inbyggd uppstartsguide diff --git a/ROADMAP.md b/ROADMAP.md index 9cfe60f..10b15d7 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -288,6 +288,26 @@ Reported 2026-09-10 by the user, noticed right after the settings-tabs restructu Verified 2026-09-10: a headless-browser check against a real, isolated server confirmed both the general race-sounds "Test" button and a per-event "Test" button in the sound table no longer issue a `POST /api/state` (watched over the real network layer, not just state inspection), while the "Save" button and directly editing a race-audio field (e.g. toggling mute) both still do, exactly as before. +## Race clock rendered as a malformed doubled-up time + +Found 2026-09-10 while building realistic seeded demo data for the documentation screenshots below - the very first time in this repo's history that a screenshot was taken with an actual, real, multi-driver result on screen (every earlier demo/test fixture only ever had empty "No laps yet" sessions, so this was invisible until now). + +- [x] `formatRaceClock` (`src/app.js`) computed both `centiseconds` (2-digit) and `millis` (3-digit) from the same elapsed value and concatenated both into the returned string - `${m}:${s}.${centiseconds}:${millis}` - producing a garbled result like `02:48.20:207` everywhere a race clock is shown (Timing, Overlay/leaderboard-overlay, Results archive, Team Race stint logs, Training's stint duration column). Only the milliseconds portion was ever meant to be there, matching the sibling `formatLap` helper's format; the `centiseconds` computation and its extra `:` separator were dead, wrong code present since this function's first commit. Fixed to `${m}:${s}.${millis}` (e.g. `02:48.207`). + +Verified 2026-09-10: the full unit test suite (193 tests) and the full browser regression suite passed unchanged (the function had no prior coverage - the existing tests only ever exercised stubbed versions of it - which is exactly how this shipped unnoticed). Visually confirmed fixed via the live-rendered Overlay, Results archive/Training stint tables, and Judging views in the regenerated screenshots below, all now showing a clean time instead of the doubled-up one. + +## Documentation: refreshed and expanded screenshots + +Requested 2026-09-10 by the user: "create screenshots and update the images in the repo, and maybe add some more important images for a new user, so they get a good overview and understand how it needs to be set up." Every existing screenshot in `docs/screenshots/` predated this whole session's work and, on inspection, was captured against essentially empty demo data (0 cars, "No laps yet", a broken multi-day-old "running" clock) - not representative of what the app actually looks like in use, and not helpful for a new user trying to picture their own setup. + +- [x] Seeded a realistic demo dataset (via a scratch script, run only against an isolated temp server/SQLite dir - never the real installation) into an isolated headless-browser session: 2 classes, 10 drivers, 8 cars, one race event ("Klubbmästare Race 4") with 2 rounds of qualifying heats and A/B finals all carrying real recorded lap results, a live "running" A Final, and 4 days of varied practice history for one driver (for Training stats' weekday/pace-block/stint-analysis breakdowns). +- [x] Regenerated all 9 previously-referenced screenshots against this real data instead of an empty session: `overview-active-session.jpg`, `race-setup-wizard.jpg`, `overlay.jpg`, `leaderboard-overlay.jpg`, `training-overview.jpg`, `training-extra-stats.jpg`, `judging-current.jpg` (now shows a real manual +5s correction applied through the actual Judging UI), `race-audio-settings.jpg`, `decoder-settings.jpg` (now shows the new tabbed Settings layout from the earlier entry above). +- [x] Added two new screenshots aimed specifically at a new user's setup, filling gaps nothing previously covered: `managed-ammc.jpg` (the Managed AMMC configuration section - the actual first thing a new user configures, previously never pictured at all) and `guide.jpg` (the in-app Guide/documentation page, so a new user knows it exists before hunting for the README). +- [x] Deleted 6 stale, already-unreferenced screenshots left over from an earlier README revision (`event.jpg`, `judging.jpg`, `overview.jpg`, `race-setup.jpg`, `team-overlay.jpg`, `timing.jpg`). +- [x] Updated both `README.md` and `README.sv.md`'s screenshot tables: filled the previously-empty cell with Managed AMMC and added a new row for the Guide page, with matching Swedish alt text/captions in `README.sv.md`. +- [x] Redacted incidental local-machine details that don't belong in a public screenshot before capturing (the dev machine's resolved AMMC executable path, and the ephemeral test server's random localhost ports) by overwriting just those specific form fields/text nodes in the DOM right before each shot - cosmetic only, never saved back to any backend. +- [x] While building this data, found and fixed a real, previously-invisible formatting bug (see the entry directly above) purely as a side effect of finally exercising the app with real results for the first time. + ## Documentation maintenance - [ ] Update the architecture's module/dependency inventory as modules change. diff --git a/docs/screenshots/decoder-settings.jpg b/docs/screenshots/decoder-settings.jpg index a40a941..c34980c 100644 Binary files a/docs/screenshots/decoder-settings.jpg and b/docs/screenshots/decoder-settings.jpg differ diff --git a/docs/screenshots/event.jpg b/docs/screenshots/event.jpg deleted file mode 100644 index b87ce59..0000000 Binary files a/docs/screenshots/event.jpg and /dev/null differ diff --git a/docs/screenshots/guide.jpg b/docs/screenshots/guide.jpg new file mode 100644 index 0000000..878f721 Binary files /dev/null and b/docs/screenshots/guide.jpg differ diff --git a/docs/screenshots/judging-current.jpg b/docs/screenshots/judging-current.jpg index ee6d3df..b4fa7bf 100644 Binary files a/docs/screenshots/judging-current.jpg and b/docs/screenshots/judging-current.jpg differ diff --git a/docs/screenshots/judging.jpg b/docs/screenshots/judging.jpg deleted file mode 100644 index 2e0e2c9..0000000 Binary files a/docs/screenshots/judging.jpg and /dev/null differ diff --git a/docs/screenshots/leaderboard-overlay.jpg b/docs/screenshots/leaderboard-overlay.jpg index 361845e..3ebf780 100644 Binary files a/docs/screenshots/leaderboard-overlay.jpg and b/docs/screenshots/leaderboard-overlay.jpg differ diff --git a/docs/screenshots/managed-ammc.jpg b/docs/screenshots/managed-ammc.jpg new file mode 100644 index 0000000..be07ef0 Binary files /dev/null and b/docs/screenshots/managed-ammc.jpg differ diff --git a/docs/screenshots/overlay.jpg b/docs/screenshots/overlay.jpg index 2263804..7dda1a7 100644 Binary files a/docs/screenshots/overlay.jpg and b/docs/screenshots/overlay.jpg differ diff --git a/docs/screenshots/overview-active-session.jpg b/docs/screenshots/overview-active-session.jpg index d459bf1..bc98ff8 100644 Binary files a/docs/screenshots/overview-active-session.jpg and b/docs/screenshots/overview-active-session.jpg differ diff --git a/docs/screenshots/overview.jpg b/docs/screenshots/overview.jpg deleted file mode 100644 index bdb0e80..0000000 Binary files a/docs/screenshots/overview.jpg and /dev/null differ diff --git a/docs/screenshots/race-audio-settings.jpg b/docs/screenshots/race-audio-settings.jpg index ad8506d..2e9c720 100644 Binary files a/docs/screenshots/race-audio-settings.jpg and b/docs/screenshots/race-audio-settings.jpg differ diff --git a/docs/screenshots/race-setup-wizard.jpg b/docs/screenshots/race-setup-wizard.jpg index ed18538..f4fac6e 100644 Binary files a/docs/screenshots/race-setup-wizard.jpg and b/docs/screenshots/race-setup-wizard.jpg differ diff --git a/docs/screenshots/race-setup.jpg b/docs/screenshots/race-setup.jpg deleted file mode 100644 index fadc559..0000000 Binary files a/docs/screenshots/race-setup.jpg and /dev/null differ diff --git a/docs/screenshots/team-overlay.jpg b/docs/screenshots/team-overlay.jpg deleted file mode 100644 index ef3e9cf..0000000 Binary files a/docs/screenshots/team-overlay.jpg and /dev/null differ diff --git a/docs/screenshots/timing.jpg b/docs/screenshots/timing.jpg deleted file mode 100644 index bb5828d..0000000 Binary files a/docs/screenshots/timing.jpg and /dev/null differ diff --git a/docs/screenshots/training-extra-stats.jpg b/docs/screenshots/training-extra-stats.jpg index c00c43b..0a6a000 100644 Binary files a/docs/screenshots/training-extra-stats.jpg and b/docs/screenshots/training-extra-stats.jpg differ diff --git a/docs/screenshots/training-overview.jpg b/docs/screenshots/training-overview.jpg index 3312955..03f43c0 100644 Binary files a/docs/screenshots/training-overview.jpg and b/docs/screenshots/training-overview.jpg differ diff --git a/package-lock.json b/package-lock.json index 9359238..b02e3f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rc-racecore", - "version": "1.12.1", + "version": "1.12.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rc-racecore", - "version": "1.12.1", + "version": "1.12.2", "hasInstallScript": true, "dependencies": { "better-sqlite3": "^12.11.1", diff --git a/package.json b/package.json index feda13f..b3be5bc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rc-racecore", - "version": "1.12.1", + "version": "1.12.2", "private": true, "description": "RC RaceCore live timing and race control with AMMC ingest and SQLite persistence", "engines": { diff --git a/src/app.js b/src/app.js index f5d6ffc..c860ccb 100644 --- a/src/app.js +++ b/src/app.js @@ -5225,13 +5225,10 @@ function formatRaceClock(ms) { const s = Math.floor((total % 60000) / 1000) .toString() .padStart(2, "0"); - const centiseconds = Math.floor((total % 1000) / 10) - .toString() - .padStart(2, "0"); const millis = Math.floor(total % 1000) .toString() .padStart(3, "0"); - return `${m}:${s}.${centiseconds}:${millis}`; + return `${m}:${s}.${millis}`; } function getSeedMethodLabel(method) {