@adia-ai/adia-ui-factory 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/.mcp.json +1 -1
  3. package/CHANGELOG.md +28 -0
  4. package/agents/app-architect.md +5 -3
  5. package/agents/consumer-verifier.md +38 -0
  6. package/agents/routing-corpus.json +32 -2
  7. package/agents/screen-composer.md +3 -1
  8. package/bin/adia-info +235 -0
  9. package/bin/adia-lint +59 -1
  10. package/bin/adia-probe.mjs +116 -0
  11. package/bin/adia-scaffold +91 -1
  12. package/bin/record-lint +142 -0
  13. package/commands/adia-genui.md +3 -1
  14. package/commands/adia-info.md +14 -0
  15. package/commands/adia-migrate.md +9 -3
  16. package/commands/adia-orient.md +5 -2
  17. package/commands/adia-scaffold.md +4 -2
  18. package/commands/adia-verify.md +15 -4
  19. package/package.json +1 -1
  20. package/references/a2ui-mcp-tools.md +1 -1
  21. package/references/llm.md +1 -1
  22. package/references/migration.md +11 -1
  23. package/references/project-shapes.md +15 -6
  24. package/references/shell-admin.md +2 -2
  25. package/references/shell-chat.md +8 -5
  26. package/references/ssr-integration.md +1 -1
  27. package/skills/adia-compose/SKILL.md +71 -2
  28. package/skills/adia-compose/assets/figma-make/guidelines/Guidelines.md +5 -5
  29. package/skills/adia-compose/assets/figma-make/guidelines/styles.md +2 -2
  30. package/skills/adia-compose/evals/routing-corpus.json +216 -0
  31. package/skills/adia-data/SKILL.md +29 -3
  32. package/skills/adia-data/evals/routing-corpus.json +172 -0
  33. package/skills/adia-genui/SKILL.md +24 -6
  34. package/skills/adia-genui/evals/routing-corpus.json +173 -0
  35. package/skills/adia-host/SKILL.md +16 -0
  36. package/skills/adia-host/evals/routing-corpus.json +172 -0
  37. package/skills/adia-llm/SKILL.md +7 -7
  38. package/skills/adia-llm/evals/routing-corpus.json +173 -0
  39. package/skills/adia-migrate/SKILL.md +65 -8
  40. package/skills/adia-migrate/evals/routing-corpus.json +171 -0
  41. package/skills/adia-orient/SKILL.md +30 -11
  42. package/skills/adia-orient/evals/routing-corpus.json +216 -0
  43. package/skills/adia-project/SKILL.md +6 -4
  44. package/skills/adia-project/evals/routing-corpus.json +171 -0
  45. package/skills/adia-shells/SKILL.md +23 -3
  46. package/skills/adia-shells/evals/routing-corpus.json +167 -0
  47. package/skills/adia-verify/SKILL.md +23 -2
  48. package/skills/adia-verify/evals/routing-corpus.json +171 -0
  49. package/skills/adia-verify/references/verification.md +8 -1
  50. package/references/verification.md +0 -35
@@ -1,35 +0,0 @@
1
- # Verification — the exit gate
2
-
3
- Mode-independent. A surface is done when it passes the **browser gate** + the a11y check — not when it compiles and not when unit tests pass. "Tests pass, ship it" is the anti-pattern: unit tests are necessary, not sufficient (happy-dom/vitest pass for components that render broken in real browsers).
4
-
5
- ## The browser gate (the real gate)
6
-
7
- Render the surface in a real (headless) browser and assert four things:
8
-
9
- 1. **Zero `console.error` / `pageerror` on load** — collect them during navigation; any is a failure.
10
- 2. **Non-zero bounding boxes** on the key elements — catches the "upgraded but never sized" 0×0 host, where the element exists but renders nothing.
11
- 3. **Read the screenshot** — capture at `deviceScaleFactor: 2` and actually look at it. Content can be present in the DOM yet visually clipped, overlapped, or off-canvas; only the pixels catch that. A probe that screenshots but doesn't read it hasn't verified anything.
12
- 4. **Re-probe after every structural change** — a stale screenshot lies.
13
-
14
- Minimal probe shape (Playwright; works against a Vite static host or an SSR dev URL):
15
-
16
- ```js
17
- const errors = [];
18
- page.on('console', m => m.type() === 'error' && errors.push(m.text()));
19
- page.on('pageerror', e => errors.push(String(e)));
20
- await page.goto(url, { waitUntil: 'networkidle' });
21
- const box = await page.locator('my-surface').boundingBox(); // expect non-zero w/h
22
- await page.screenshot({ path: 'probe.png', scale: 'device' }); // then READ probe.png
23
- // gate: errors.length === 0 && box.width > 0 && box.height > 0 && (you read the image)
24
- ```
25
-
26
- ## Diagnosing the "renders empty, zero console errors" page
27
-
28
- `customElements.whenDefined(name)` never rejects — if `name` is never imported, its Promise never resolves, so a `Promise.all([...]).then(bootstrap)` gate hangs forever on one dead await. Shell chrome still renders (tag-keyed CSS), the page body is just empty, and nothing errors. Check every awaited tag actually has a registering import before suspecting anything else.
29
-
30
- ## Accessibility (the adia-ui-specific checks)
31
-
32
- Standard a11y applies (labelled landmarks, keyboard paths, AA contrast). The kit-specific traps:
33
-
34
- - **Overlays** — drive `<modal-ui>` / `<drawer-ui>` via the `.open` property; a hardcoded `open` attribute on a `showModal` overlay bricks the whole page, and only a live click/`elementFromPoint` probe catches it.
35
- - **Roles** — a presentational `text-ui variant="heading"` needs a real heading role or `<h*>` wrapper; don't use deprecated `aria-grabbed`.