|
| 1 | +--- |
| 2 | +target: website/src (playground + site) |
| 3 | +total_score: 25 |
| 4 | +p0_count: 2 |
| 5 | +p1_count: 3 |
| 6 | +timestamp: 2026-07-18T05-06-10Z |
| 7 | +slug: website-src |
| 8 | +--- |
| 9 | +Method: dual-agent (A: design review sub-agent · B: detector/browser sub-agent) |
| 10 | + |
| 11 | +# Design Health Score |
| 12 | + |
| 13 | +| # | Heuristic | Score | Key Issue | |
| 14 | +|---|-----------|-------|-----------| |
| 15 | +| 1 | Visibility of System Status | 2 | Generate/example pick before WASM ready is a silent no-op; stale example dropdown label | |
| 16 | +| 2 | Match System / Real World | 3 | YAML parser jargon in errors; otherwise excellent domain copy | |
| 17 | +| 3 | User Control and Freedom | 2 | Failed generate destroys previous result; example pick clobbers pasted spec | |
| 18 | +| 4 | Consistency and Standards | 2 | Unstyled UA-default tab buttons; nested <main>; tablist roles without keyboard pattern | |
| 19 | +| 5 | Error Prevention | 2 | No guard on clobbering user spec; pre-ready clicks eaten | |
| 20 | +| 6 | Recognition Rather Than Recall | 3 | REQUIRED_DEPS.toml leads tab row; otherwise good hints | |
| 21 | +| 7 | Flexibility and Efficiency | 3 | Cmd+Enter, URL fetch, crate download; no permalink | |
| 22 | +| 8 | Aesthetic and Minimalist Design | 3 | 6rem "Playground" h1 pushes Generate below the fold at 900px | |
| 23 | +| 9 | Error Recovery | 2 | line/col given but no editor line numbers; no aria-live | |
| 24 | +| 10 | Help and Documentation | 3 | Strong footer + docs cross-links | |
| 25 | +| **Total** | | **25/40** | **Acceptable** | |
| 26 | + |
| 27 | +# Anti-Patterns Verdict |
| 28 | +Not slop overall: varied composition, evidence-driven copy, coherent print-terminal register. Static detector: 0 findings. In-page detector: 13 findings across 5 pages — hero-eyebrow-chip on 4/5 pages, tiny-text 11.52px on 3 pages, cramped .table-wrap padding on 2, oversized 84px compare h1, long line-length on /playground (~160ch) and /compare (~110ch). The one "looks broken/AI" moment: unstyled native tab buttons on the playground result. |
| 29 | + |
| 30 | +# Priority Issues |
| 31 | +- [P0] Playground output pane clipped ≤900px: tabs/Copy/Download unreachable; `.playground { grid-template-columns: 1fr }` at ≤900px loses minmax(0,…) + `main{overflow:clip}` makes it unscrollable (playground.astro:575, global.css:65). |
| 32 | +- [P0] Docs-layout pages truncate text at 390px: `.doc-shell { grid-template-columns: 1fr }` (global.css:508) needs minmax(0,1fr); verified live. |
| 33 | +- [P1] Result tabs unstyled: JS-created buttons never get data-astro-cid-*, scoped .tab-row rules can't match (playground.astro:212, 528-543). Active tab indistinguishable, ~24px targets. |
| 34 | +- [P1] Silent no-op before worker ready (generate() early-return, playground.astro:243); flagship example path fills textarea then nothing happens. |
| 35 | +- [P1] Nested <main> landmarks (BaseLayout.astro:64 + playground.astro:19). |
| 36 | +- [P2] Homepage never sells the playground; hero CTAs go to docs + anchor only. |
| 37 | +- [P2] Errors invisible to AT (no aria-live/role=alert) and destroy prior result (playground.astro:74-75, 233-240). |
| 38 | +- [P2] Tablist semantics without keyboard behavior; REQUIRED_DEPS.toml first; "1 schemas" pluralization (playground.astro:81, 210-226). |
| 39 | +- [P2] Compare h1 84px breaks product name across lines; page-hero h1 clamp oversized (global.css:338). |
| 40 | +- [P2] Tiny text 11.52px (0.72rem figcaption/footer labels) on 3 pages; doc-pagination 0.66rem. |
| 41 | +- [P3] No JSON-LD on /playground; shared generic og-card. Stale example dropdown label. DocsLayout hardcoded updated-date default. Avenir-only personality on macOS. |
| 42 | + |
| 43 | +# Persona Red Flags |
| 44 | +- Alex: Cmd+Enter swallowed during load → "it's broken" in 5s; role=tab promises arrow keys that don't exist; no shareable permalink. |
| 45 | +- Jordan: REQUIRED_DEPS.toml + "2 schemas · 4 operations" vocabulary; parser-speak errors with no line numbers; example pick destroys pasted work. |
| 46 | +- Casey: mobile playground generates but result is clipped + no scroll-into-view — can't copy/download; docs pages unreadable at 390. |
| 47 | + |
| 48 | +# Minor Observations |
| 49 | +Warning palette untokenized; playground-footer inline-code wraps oddly; 404 page is great; a11y baseline (skip-link, focus-visible, reduced-motion) above average; dev-toolbar 504 is a dev-only artifact. |
| 50 | + |
| 51 | +# Questions |
| 52 | +- Should the playground be the homepage hero's primary demo ("run it on your spec now, nothing uploaded")? |
| 53 | +- Could the error state keep the last good result visible instead of a 480px void? |
| 54 | +- Is "Playground" worth 230px of h1, or should the tool start at the top? |
0 commit comments