v0.2 walk-through UI: guided flow, data view, overview, modes, overrides, typed phrase; retry confirmation; visual pass
Some checks failed
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Work Records / validate (push) Has been cancelled

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: sonnet
Assistant-Process: 295952@bnt-lap001
Assistant-Session: e93f64ad-516c-46eb-9666-aad8d300c477
This commit is contained in:
tegwick 2026-09-29 14:42:09 +02:00
parent f8ce4717a8
commit f070999aa2
12 changed files with 1285 additions and 53 deletions

View file

@ -13,11 +13,11 @@ def e(s) -> str:
def pill(text: str) -> str:
return f"<span class=pill>{e(text)}</span>"
return f"<span class=pill data-s='{e(text)}'>{e(text)}</span>"
def _runnable_here(pack) -> bool:
return pack.ok and pack.data.get("engine") == "native" and pack.spec == "runbook-pack/v0.1"
return pack.ok and pack.data.get("engine") == "native"
# ---- maturity ------------------------------------------------------------------------------------------------
@ -145,9 +145,11 @@ def project_page(app, pid: str, msg: str = "") -> bytes | None:
elif wait:
action = f"<span class=note>waiting for {e(', '.join(wait))}</span>"
else:
mode = ("<select name=mode><option>manual</option><option>auto-confirm</option></select> "
if pack.spec == "runbook-pack/v0.2" else "")
action = (f"<form method=post action='/project/{e(pid)}/run' class=row>{app.hidden()}"
f"<input type=hidden name=pack value='{e(spec['pack'])}'><input type=hidden name=target value='{e(spec.get('target') or '')}'>"
"<input name=operator placeholder='your name' size=10 required> <button>Start run</button></form>")
f"<input name=operator placeholder='your name' size=10 required> {mode}<button>Start run</button></form>")
link = f" <a href='/run/{i}/{e(ms['run'])}'>latest run</a>" if ms.get("run") and i is not None else ""
dev = f" · {ms['deviations']} deviation(s)" if ms.get("deviations") else ""
rows += (f"<tr><td>{e(pack.data.get('title', pack.id))}<br><span class=note>{e(spec['pack'])}"