diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0e94ade..744a8d8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
---
-### Unreleased
+### v3.8.0 — 2026-10-11
- **`Locator.first()` and `Locator.last()`** — narrow matches to the first or last matching element (e.g. `getByRole(Role.LISTITEM).first()`). Both resolve at action time, re-evaluating candidate elements on every poll and retrying stale/not-yet-present elements up to `timeouts.explicit`. (#132)
diff --git a/README.md b/README.md
index 900aac3..9675b1c 100644
--- a/README.md
+++ b/README.md
@@ -32,7 +32,7 @@ Three files. Copy them as-is and `mvn test` goes green against a real Chrome.
io.github.seleniumboot
selenium-boot
- 3.7.0
+ 3.8.0
@@ -286,7 +286,7 @@ Grab the jar from the [latest release](https://github.com/seleniumboot/selenium-
## Project Status
-**Current release: v3.7.0** — live-triage debug mode (`debug.slowMoMs` / `debug.highlight`), `withNewWindow` / `withNewTab`, `Locator.dragTo`, and `browser.version` pinning.
+**Current release: v3.8.0** — `Locator.first()` / `Locator.last()` and a results-first HTML report (suite wall-clock time in `hh:mm:ss`).
See the full version history in **[CHANGELOG.md](CHANGELOG.md)**.
diff --git a/docs-site/docs/changelog.md b/docs-site/docs/changelog.md
index 17291ae..ed4bf9a 100644
--- a/docs-site/docs/changelog.md
+++ b/docs-site/docs/changelog.md
@@ -11,10 +11,16 @@ All notable changes to Selenium Boot are documented here.
---
-## [Unreleased]
+## [3.8.0] — 2026-10-11
- **`Locator.first()` and `Locator.last()`** — narrow matches to the first or last matching element (e.g. `getByRole(Role.LISTITEM).first()`). Both resolve at action time, re-evaluating candidate elements on every poll and retrying stale/not-yet-present elements up to `timeouts.explicit`. (#132)
+- **HTML report: the "Avg Time (ms)" stat tile is now "Suite Time"** — the wall-clock suite duration in `hh:mm:ss`, matching the sidebar.
+
+- **HTML report: suite duration in `hh:mm:ss`, wall-clock.** The report previously showed the *sum* of every test's time in milliseconds, which overstates a parallel run. It now shows how long the suite actually ran (`01:42:07`; hours aren't capped). The metrics JSON gains `suiteDurationMs`; `totalTimeMs` (summed test time) is unchanged.
+
+- **HTML report: results first.** The dashboard now opens with a one-line run summary and the stat cards; the full run configuration moved into a collapsed "Run configuration" block at the bottom, with empty rows (Grid URL, unset CI fields) dropped. A "View failures" shortcut appears when any test failed.
+
---
## [3.7.0] — 2026-10-04
diff --git a/docs-site/docs/getting-started.md b/docs-site/docs/getting-started.md
index e909d56..f6fc2e2 100644
--- a/docs-site/docs/getting-started.md
+++ b/docs-site/docs/getting-started.md
@@ -41,7 +41,7 @@ config, a page object and passing tests, ready for `mvn test`.
io.github.seleniumboot
selenium-boot
- 3.7.0
+ 3.8.0
```
diff --git a/docs-site/docs/junit5.md b/docs-site/docs/junit5.md
index c230197..38026d8 100644
--- a/docs-site/docs/junit5.md
+++ b/docs-site/docs/junit5.md
@@ -17,7 +17,7 @@ Selenium Boot supports both **TestNG** (built-in) and **JUnit 5** (opt-in). The
io.github.seleniumboot
selenium-boot
- 3.7.0
+ 3.8.0
diff --git a/docs-site/src/pages/index.js b/docs-site/src/pages/index.js
index 1b6bb24..c15e394 100644
--- a/docs-site/src/pages/index.js
+++ b/docs-site/src/pages/index.js
@@ -241,7 +241,7 @@ export default function Home() {
code={`
io.github.seleniumboot
selenium-boot
- 3.7.0
+ 3.8.0
`}
/>
diff --git a/pom.xml b/pom.xml
index d36da28..bab504d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
io.github.seleniumboot
selenium-boot
- 3.7.0
+ 3.8.0
jar
Selenium Boot