From 263e8efecd7b255af16861bd58b3b54f3256cf9e Mon Sep 17 00:00:00 2001
From: Hannes Rudolph <49103247+hannesrudolph@users.noreply.github.com>
Date: Thu, 15 Oct 2026 20:30:30 -0600
Subject: [PATCH] fix: keep patch release details inline with each fix
---
scripts/docs-site/docs-layout.css | 4 ++
.../docs-site/release-inline-details.test.mjs | 59 +++++++++++++++++++
2 files changed, 63 insertions(+)
create mode 100644 scripts/docs-site/release-inline-details.test.mjs
diff --git a/scripts/docs-site/docs-layout.css b/scripts/docs-site/docs-layout.css
index 471a9968be..d416bd0ee1 100644
--- a/scripts/docs-site/docs-layout.css
+++ b/scripts/docs-site/docs-layout.css
@@ -207,6 +207,10 @@
@media (prefers-reduced-motion:reduce) {
.docs-layout .doc .release-source-toggle > summary::before { transition: none; }}
.docs-layout .doc .release-source-toggle > summary:focus-visible { outline: 2px solid var(--oc-focus-ring); outline-offset: 2px; }
+/* Patch lists keep their detail control in the sentence's inline flow. */
+.docs-layout .doc li:has(> .release-source-inline) > p:first-child { display: inline; margin: 0; }
+.docs-layout .doc .release-source-inline { display: inline; }
+.docs-layout .doc .release-source-inline > summary { display: inline-flex; vertical-align: baseline; margin-inline-start: .35em; }
@media (hover:hover) and (pointer:fine) {
.docs-layout .doc .release-source-toggle > summary:hover::before { color: var(--ink); }}
.docs-layout .doc > :is(p,ul,ol,blockquote) { max-inline-size: var(--docs-prose-measure); margin-block: 0 var(--docs-paragraph-gap); }
diff --git a/scripts/docs-site/release-inline-details.test.mjs b/scripts/docs-site/release-inline-details.test.mjs
new file mode 100644
index 0000000000..9e74fbf845
--- /dev/null
+++ b/scripts/docs-site/release-inline-details.test.mjs
@@ -0,0 +1,59 @@
+import assert from "node:assert/strict";
+import fs from "node:fs";
+import { test } from "node:test";
+import { chromium } from "playwright";
+import { createMarkdownRenderer, renderMdxish } from "./mdx-ish.mjs";
+
+test("patch details follow the fix inline and retain native keyboard access", async () => {
+ const browser = await chromium.launch({ headless: true });
+ const source = `- **Conversation recovery.** Fixes replies getting stuck after an update.
+
+ More details
+
+ [#123](https://github.com/openclaw/openclaw/pull/123), thanks to [@example](https://github.com/example).
+
+