[object Object]

← 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

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 →