← back to Slack Idea Board
5x sweep 1: render non-actionable Skip as a span, not a disabled button
b8cc845999019ebef0913fe1e174e02b43d5ad25 · 2026-07-23 12:44:35 -0700 · Steve Abrams
Files touched
A 5x/sweep-1.mdM public/index.html
Diff
commit b8cc845999019ebef0913fe1e174e02b43d5ad25
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Jul 23 12:44:35 2026 -0700
5x sweep 1: render non-actionable Skip as a span, not a disabled button
---
5x/sweep-1.md | 15 +++++++++++++++
public/index.html | 2 +-
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/5x/sweep-1.md b/5x/sweep-1.md
new file mode 100644
index 0000000..b5599e2
--- /dev/null
+++ b/5x/sweep-1.md
@@ -0,0 +1,15 @@
+# 5x sweep 1 — http://localhost:9820/
+
+RESULT → 6/7 phases passed, 1 FAILED (Phase C click-through).
+
+## Passed
+- M1 HTTP contract, M2 headless render, M3 Playwright E2E — pass (`--expect "Idea Board"`, `--selector "#q"`).
+- B4/B5/B6 cross-browser — pass.
+- Click-through: all real controls pass — Actionable, Yes only, AA · Yes, AA · fit, All, Launch Accelerator, and every `Add new skill / Build new project ▶` action button.
+
+## Caught (1 root cause, 22 occurrences)
+- `[FAIL] button[n]: Skip — locator.click: Timeout 5000ms exceeded` on every "Skip" button.
+- Root cause: a non-actionable "Skip" is rendered as `<button class="act skip" disabled>`. Playwright waits for the disabled control to become actionable → 5s timeout, ×22.
+
+## Fix
+- Render "Skip" as a static `<span class="act skip">` (a label, not a control). A disabled button did nothing on click, so no behavior is lost; this also stops presenting a non-control as a control. JS click delegation ignores it (no `data-cmd`).
diff --git a/public/index.html b/public/index.html
index 529ace9..527f193 100644
--- a/public/index.html
+++ b/public/index.html
@@ -202,7 +202,7 @@ function render(){
const cmd = kickoffCmd(i);
const isSkip = sc==='skip' || !cmd;
const primary = isSkip
- ? `<button class="act skip" disabled title="${esc(i.next_detail||'No action for this idea')}">Skip</button>`
+ ? `<span class="act skip" title="${esc(i.next_detail||'No action for this idea')}">Skip</span>`
: `<button class="act ${sc}" data-id="${esc(i.id)}" data-step="${esc(i.next_step||'')}" data-cmd="${esc(cmd)}" data-label="${step}" title="Click to LAUNCH a Claude session in a new terminal · Shift-click to copy the command instead">${step} ▶</button>`;
const open = i.url ? `<a class="act open" href="${esc(i.url)}" target="_blank" rel="noopener noreferrer">Open link ↗</a>` : '';
return `<span class="step ${sc}">${step}</span>`
← 906b38a auto-save: 2026-07-23T12:20:57 (1 files) — public/index.html
·
back to Slack Idea Board
·
auto-save: 2026-07-23T12:51:13 (3 files) — 5x/sweep-2.md 5x/ c25818f →