diff --git a/crates/daemon/assets/index.html b/crates/daemon/assets/index.html
index 114ea956..15765007 100644
--- a/crates/daemon/assets/index.html
+++ b/crates/daemon/assets/index.html
@@ -3194,7 +3194,7 @@
border: 0;
padding: 12px 14px;
font-family: "SFMono-Regular", ui-monospace, "JetBrains Mono", Menlo, Consolas, monospace;
- font-size: 14px;
+ font-size: 13px;
line-height: 1.6;
tab-size: 2;
white-space: pre-wrap;
diff --git a/crates/e2e/tests/playbook_view.rs b/crates/e2e/tests/playbook_view.rs
index 2f96648f..8913e2e8 100644
--- a/crates/e2e/tests/playbook_view.rs
+++ b/crates/e2e/tests/playbook_view.rs
@@ -95,6 +95,8 @@ async fn web_playbook_view_full_parity() {
}, async () => {
setSession("s-prog", "shell");
await switchCurrentViewMode("playbook");
+ const editorStyle = getComputedStyle(playbookInputEl);
+ const barStyle = getComputedStyle(playbookWrapEl.querySelector(".playbook-bar"));
return {
wrapVisible: !playbookWrapEl.hidden,
transcriptHidden: transcriptEl.hidden,
@@ -103,6 +105,9 @@ async fn web_playbook_view_full_parity() {
playbookPressed: viewModePlaybookBtn.getAttribute("aria-pressed"),
mode: state.mode,
mounted: state.playbook.mountedId,
+ editorFontSize: editorStyle.fontSize,
+ surroundingFontSize: barStyle.fontSize,
+ editorFontFamily: editorStyle.fontFamily,
};
})
"###,
@@ -118,6 +123,16 @@ async fn web_playbook_view_full_parity() {
assert_eq!(enter["playbookPressed"], "true", "{enter:?}");
assert_eq!(enter["mode"], "playbook", "{enter:?}");
assert_eq!(enter["mounted"], "s-prog", "{enter:?}");
+ assert_eq!(
+ enter["editorFontSize"], enter["surroundingFontSize"],
+ "Playbook body text should match the surrounding WebUI scale: {enter:?}"
+ );
+ assert!(
+ enter["editorFontFamily"]
+ .as_str()
+ .is_some_and(|family| family.contains("monospace")),
+ "Playbook body text should retain a monospace editor stack: {enter:?}"
+ );
// --- 2a. Inline code paints without delimiters; Backspace at its right
// edge reveals the opening delimiter and editable text. ---------