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 |
+  Managed AMMC configuration |
+
+
+  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 |
+  Hanterad AMMC-konfiguration |
+
+
+  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) {