ai-design-context 0.4.0

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 (288) hide show
  1. package/AGENTS.md +156 -0
  2. package/CHANGELOG.md +71 -0
  3. package/CODE_OF_CONDUCT.md +29 -0
  4. package/CONTRIBUTING.md +128 -0
  5. package/LICENSE +21 -0
  6. package/README.md +283 -0
  7. package/RELEASE_NOTES_v0.1.0.md +45 -0
  8. package/RELEASE_NOTES_v0.3.0.md +47 -0
  9. package/RELEASE_NOTES_v0.4.0.md +29 -0
  10. package/RELEASE_READINESS.md +107 -0
  11. package/ROADMAP.md +60 -0
  12. package/SECURITY.md +40 -0
  13. package/assets/logo.svg +9 -0
  14. package/benchmarks/README.md +19 -0
  15. package/benchmarks/chat.md +37 -0
  16. package/benchmarks/mobile-home-screen.md +38 -0
  17. package/benchmarks/notes-app.md +37 -0
  18. package/benchmarks/settings.md +37 -0
  19. package/benchmarks/shopping-list.md +37 -0
  20. package/benchmarks/todo-app.md +144 -0
  21. package/checklists/DESIGN_QA.md +102 -0
  22. package/checklists/GENERATED_INDEX.md +7 -0
  23. package/docs/AGENT_CONTEXT.md +111 -0
  24. package/docs/BENCHMARK.md +170 -0
  25. package/docs/DESIGNLINT_READINESS.md +110 -0
  26. package/docs/DESIGN_SYSTEM.md +23 -0
  27. package/docs/EVALUATION_RUBRIC.md +154 -0
  28. package/docs/GITHUB_SETUP.md +28 -0
  29. package/docs/GLOSSARY.md +45 -0
  30. package/docs/INDEX.md +109 -0
  31. package/docs/KNOWLEDGE_ENGINE.md +594 -0
  32. package/docs/MOBILE_FIRST.md +18 -0
  33. package/docs/NPM_RELEASE.md +43 -0
  34. package/docs/PATTERN_SPEC.md +113 -0
  35. package/docs/PHILOSOPHY.md +25 -0
  36. package/docs/PRODUCT_THINKING.md +26 -0
  37. package/docs/STYLE_GUIDE.md +49 -0
  38. package/docs/TRACEABILITY.md +45 -0
  39. package/evidence/README.md +64 -0
  40. package/evidence/TEMPLATE.md +46 -0
  41. package/evidence/chat/.gitkeep +1 -0
  42. package/evidence/mobile-home/.gitkeep +1 -0
  43. package/evidence/notes/.gitkeep +1 -0
  44. package/evidence/settings/.gitkeep +1 -0
  45. package/evidence/shopping/.gitkeep +1 -0
  46. package/evidence/todo/.gitkeep +1 -0
  47. package/evidence/todo/2026-06-25-codex-gpt-5/EVALUATION.md +66 -0
  48. package/evidence/todo/2026-06-25-codex-gpt-5/README.md +40 -0
  49. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/generated-output.md +163 -0
  50. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/metadata.json +38 -0
  51. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/notes.md +20 -0
  52. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/prompt.md +16 -0
  53. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/scores.md +18 -0
  54. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/generated-output.md +98 -0
  55. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/metadata.json +19 -0
  56. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/notes.md +19 -0
  57. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/prompt.md +9 -0
  58. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/scores.md +18 -0
  59. package/evidence/todo/2026-09-28-codex-paired-todo/EVALUATION.md +70 -0
  60. package/evidence/todo/2026-09-28-codex-paired-todo/README.md +52 -0
  61. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/GENERATION_NOTES.md +133 -0
  62. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/app.js +289 -0
  63. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/context-preserving-preview.json +443 -0
  64. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/daily-home-surface.json +373 -0
  65. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/quick-capture.json +301 -0
  66. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/sources-read.txt +36 -0
  67. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/generated-output.md +11 -0
  68. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/index.html +64 -0
  69. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/launch-prompt.md +1 -0
  70. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/metadata.json +55 -0
  71. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/notes.md +15 -0
  72. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/parent-status-message.md +1 -0
  73. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/prompt.md +49 -0
  74. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/runtime-checks.json +776 -0
  75. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/scores.md +20 -0
  76. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-completed.png +0 -0
  77. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-default.png +0 -0
  78. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-detail-reduced-motion.png +0 -0
  79. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-detail.png +0 -0
  80. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-empty.png +0 -0
  81. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-keyboard-focus.png +0 -0
  82. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-save-error.png +0 -0
  83. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-saved.png +0 -0
  84. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-saving.png +0 -0
  85. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-validation.png +0 -0
  86. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-completed.png +0 -0
  87. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-default.png +0 -0
  88. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-detail-reduced-motion.png +0 -0
  89. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-detail.png +0 -0
  90. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-empty.png +0 -0
  91. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-keyboard-focus.png +0 -0
  92. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-save-error.png +0 -0
  93. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-saved.png +0 -0
  94. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-saving.png +0 -0
  95. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-validation.png +0 -0
  96. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/source-hashes.json +5 -0
  97. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/styles.css +122 -0
  98. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/GENERATION_NOTES.md +86 -0
  99. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/app.js +303 -0
  100. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/generated-output.md +11 -0
  101. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/index.html +71 -0
  102. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/launch-prompt.md +1 -0
  103. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/metadata.json +55 -0
  104. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/notes.md +15 -0
  105. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/parent-status-message.md +1 -0
  106. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/prompt.md +49 -0
  107. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/runtime-checks.json +772 -0
  108. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/scores.md +20 -0
  109. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-completed.png +0 -0
  110. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-default.png +0 -0
  111. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-detail-reduced-motion.png +0 -0
  112. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-detail.png +0 -0
  113. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-empty.png +0 -0
  114. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-keyboard-focus.png +0 -0
  115. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-save-error.png +0 -0
  116. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-saved.png +0 -0
  117. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-saving.png +0 -0
  118. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-validation.png +0 -0
  119. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-completed.png +0 -0
  120. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-default.png +0 -0
  121. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-detail-reduced-motion.png +0 -0
  122. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-detail.png +0 -0
  123. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-empty.png +0 -0
  124. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-keyboard-focus.png +0 -0
  125. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-save-error.png +0 -0
  126. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-saved.png +0 -0
  127. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-saving.png +0 -0
  128. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-validation.png +0 -0
  129. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/source-hashes.json +5 -0
  130. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/styles.css +9 -0
  131. package/evidence/todo/2026-09-28-codex-paired-todo/capture-ai-design-rules.js +60 -0
  132. package/evidence/todo/2026-09-28-codex-paired-todo/capture-baseline.js +60 -0
  133. package/evidence/todo/2026-09-28-codex-paired-todo/common/brief.md +35 -0
  134. package/evidence/todo/2026-09-28-codex-paired-todo/common/knowledge-files.json +127 -0
  135. package/evidence/todo/2026-09-28-codex-paired-todo/common/knowledge.patch +890 -0
  136. package/evidence/todo/2026-09-28-codex-paired-todo/common/review-context.json +550 -0
  137. package/evidence/todo/2026-09-28-codex-paired-todo/common/seed.json +86 -0
  138. package/evidence/todo/2026-09-28-codex-paired-todo/common/setup.json +47 -0
  139. package/evidence/todo/2026-09-28-codex-paired-todo/common/technical-envelope.md +11 -0
  140. package/evidence/todo/2026-09-28-codex-paired-todo/layout-metrics.json +133 -0
  141. package/evidence/todo/2026-09-28-codex-paired-todo/layout-probe.js +15 -0
  142. package/examples/GENERATED_INDEX.md +8 -0
  143. package/examples/INDEX.md +16 -0
  144. package/examples/README.md +15 -0
  145. package/examples/consequential-action-confirmation-reference.md +83 -0
  146. package/examples/todo-app-benchmark.md +117 -0
  147. package/examples/todo-reference/README.md +29 -0
  148. package/examples/todo-reference/app.js +154 -0
  149. package/examples/todo-reference/favicon.svg +4 -0
  150. package/examples/todo-reference/index.html +67 -0
  151. package/examples/todo-reference/review-evidence/2026-07-15/desktop-default.png +0 -0
  152. package/examples/todo-reference/review-evidence/2026-07-15/desktop-detail.png +0 -0
  153. package/examples/todo-reference/review-evidence/2026-07-15/mobile-detail.png +0 -0
  154. package/examples/todo-reference/review-evidence/2026-07-15/mobile-error.png +0 -0
  155. package/examples/todo-reference/styles.css +241 -0
  156. package/graph/GENERATED_GRAPH.md +71 -0
  157. package/observations/README.md +23 -0
  158. package/observations/accessibility/reduced-interaction-motion.md +49 -0
  159. package/observations/accessibility/textual-error-recovery.md +50 -0
  160. package/observations/accessibility/visible-keyboard-focus.md +49 -0
  161. package/observations/ai/agent-consequential-action-controls.md +56 -0
  162. package/observations/ai/agent-work-visibility-and-intervention.md +51 -0
  163. package/observations/ai/figma-agent-context-and-skills.md +52 -0
  164. package/observations/finance/high-risk-wallet-recovery-flows.md +55 -0
  165. package/observations/finance/market-interface-adaptive-trading-surfaces.md +55 -0
  166. package/observations/interaction/chrome-scoped-view-transitions.md +52 -0
  167. package/observations/interaction/figma-motion-as-system-capability.md +53 -0
  168. package/observations/mobile/mobile-bottom-sheet-choice-contracts.md +55 -0
  169. package/observations/performance/reserved-loading-space.md +51 -0
  170. package/observations/product-repos/pinned-ai-design-rules-integration.md +49 -0
  171. package/observations/visual/apple-liquid-glass-functional-layer.md +52 -0
  172. package/observations/visual/chrome-content-first-adaptive-ui.md +51 -0
  173. package/observations/visual/material-3-expressive-system.md +52 -0
  174. package/package.json +65 -0
  175. package/patterns/GENERATED_INDEX.md +13 -0
  176. package/patterns/INDEX.md +41 -0
  177. package/patterns/README.md +5 -0
  178. package/patterns/consequential-action-confirmation.md +127 -0
  179. package/patterns/context-preserving-preview.md +145 -0
  180. package/patterns/daily-home-surface.md +134 -0
  181. package/patterns/mobile-primary-action.md +110 -0
  182. package/patterns/object-status-list.md +114 -0
  183. package/patterns/progressive-detail.md +113 -0
  184. package/patterns/quick-capture.md +132 -0
  185. package/prompts/CONSEQUENTIAL_ACTION_REVIEW.md +100 -0
  186. package/prompts/DESIGN_EVIDENCE_REVIEW.md +49 -0
  187. package/prompts/GENERATED_INDEX.md +11 -0
  188. package/prompts/INDEX.md +24 -0
  189. package/prompts/PROTOTYPE_REVIEW.md +189 -0
  190. package/prompts/QUICK_CAPTURE_STATE_REVIEW.md +74 -0
  191. package/prompts/TODO_APP_BENCHMARK.md +88 -0
  192. package/registry/objects.json +568 -0
  193. package/registry/relationships.json +972 -0
  194. package/research/GENERATED_INDEX.md +18 -0
  195. package/research/INDEX.md +40 -0
  196. package/research/accessibility/keyboard-focus-and-interaction-motion.md +62 -0
  197. package/research/accessibility/textual-error-recovery.md +57 -0
  198. package/research/performance/reserved-loading-space.md +56 -0
  199. package/research/products/apple-reminders.md +59 -0
  200. package/research/products/arc.md +61 -0
  201. package/research/products/linear.md +62 -0
  202. package/research/products/telegram.md +61 -0
  203. package/research/products/things-3.md +60 -0
  204. package/research/ux/contextual-agentic-interface.md +68 -0
  205. package/research/ux/high-risk-operational-flows.md +89 -0
  206. package/research/ux/motion-as-state-continuity.md +71 -0
  207. package/research/visual/expressive-system-ui-2026.md +75 -0
  208. package/reviews/GENERATED_INDEX.md +9 -0
  209. package/reviews/README.md +25 -0
  210. package/reviews/consequential-action-confirmation-review.md +92 -0
  211. package/reviews/todo-app-benchmark-reference-review.md +86 -0
  212. package/reviews/todo-reference-fixture-review.md +77 -0
  213. package/rules/GENERATED_INDEX.md +23 -0
  214. package/rules/INDEX.md +37 -0
  215. package/rules/accessibility/A11Y-001.md +58 -0
  216. package/rules/accessibility/A11Y-002.md +55 -0
  217. package/rules/accessibility/A11Y-003.md +54 -0
  218. package/rules/accessibility/A11Y-004.md +54 -0
  219. package/rules/ia/IA-001.md +60 -0
  220. package/rules/ia/IA-002.md +61 -0
  221. package/rules/performance/PERF-001.md +55 -0
  222. package/rules/product/PRD-001.md +61 -0
  223. package/rules/product/PRD-002.md +61 -0
  224. package/rules/ux/UX-001.md +58 -0
  225. package/rules/ux/UX-002.md +61 -0
  226. package/rules/ux/UX-003.md +60 -0
  227. package/rules/ux/UX-004.md +61 -0
  228. package/rules/ux/UX-005.md +62 -0
  229. package/rules/ux/UX-006.md +69 -0
  230. package/rules/visual/VIS-001.md +59 -0
  231. package/rules/visual/VIS-002.md +59 -0
  232. package/schema/checklist.schema.json +21 -0
  233. package/schema/common.schema.json +178 -0
  234. package/schema/observation.schema.json +21 -0
  235. package/schema/pattern.schema.json +21 -0
  236. package/schema/prompt.schema.json +21 -0
  237. package/schema/reference-project.schema.json +21 -0
  238. package/schema/research.schema.json +21 -0
  239. package/schema/review.schema.json +21 -0
  240. package/schema/rule.schema.json +21 -0
  241. package/skills/README.md +48 -0
  242. package/skills/accessibility-reviewer/SKILL.md +101 -0
  243. package/skills/agent-context/SKILL.md +34 -0
  244. package/skills/agent-context/agents/openai.yaml +4 -0
  245. package/skills/design-evidence-researcher/SKILL.md +47 -0
  246. package/skills/design-evidence-researcher/agents/openai.yaml +4 -0
  247. package/skills/design-reviewer/SKILL.md +113 -0
  248. package/skills/design-system-architect/SKILL.md +101 -0
  249. package/skills/information-architect/SKILL.md +97 -0
  250. package/skills/interaction-designer/SKILL.md +104 -0
  251. package/skills/knowledge-graph-architect/SKILL.md +96 -0
  252. package/skills/mobile-ux-expert/SKILL.md +105 -0
  253. package/skills/motion-designer/SKILL.md +100 -0
  254. package/skills/performance-reviewer/SKILL.md +97 -0
  255. package/skills/product-designer/SKILL.md +104 -0
  256. package/skills/prompt-architect/SKILL.md +105 -0
  257. package/skills/reference-driven-design/SKILL.md +119 -0
  258. package/skills/ux-reviewer/SKILL.md +99 -0
  259. package/skills/visual-designer/SKILL.md +107 -0
  260. package/starter-kit/AGENTS.md +37 -0
  261. package/starter-kit/BOOTSTRAP.md +13 -0
  262. package/starter-kit/INSTALL_WITH_AGENT.md +133 -0
  263. package/starter-kit/PROJECT_INTEGRATION.md +60 -0
  264. package/starter-kit/README.md +41 -0
  265. package/starter-kit/benchmarks/BENCHMARK_CHECKLIST.md +10 -0
  266. package/starter-kit/docs/DESIGN_DECISIONS.md +22 -0
  267. package/starter-kit/docs/INFORMATION_ARCHITECTURE.md +25 -0
  268. package/starter-kit/docs/PERSONAS.md +14 -0
  269. package/starter-kit/docs/PRD.md +32 -0
  270. package/starter-kit/docs/USER_FLOWS.md +19 -0
  271. package/starter-kit/reviews/DESIGN_REVIEW.md +49 -0
  272. package/starter-kit/templates/FEATURE_TEMPLATE.md +36 -0
  273. package/starter-kit/templates/TASK_TEMPLATE.md +22 -0
  274. package/templates/CHECKLIST_TEMPLATE.md +43 -0
  275. package/templates/OBSERVATION_TEMPLATE.md +41 -0
  276. package/templates/PATTERN_TEMPLATE.md +100 -0
  277. package/templates/PROMPT_TEMPLATE.md +46 -0
  278. package/templates/PROTOTYPE_REVIEW.md +50 -0
  279. package/templates/REFERENCE_PROJECT_TEMPLATE.md +49 -0
  280. package/templates/REVIEW_TEMPLATE.md +55 -0
  281. package/templates/RULE_TEMPLATE.md +57 -0
  282. package/tools/cli.mjs +46 -0
  283. package/tools/context.mjs +342 -0
  284. package/tools/designlint.mjs +77 -0
  285. package/tools/generate-indexes.mjs +621 -0
  286. package/tools/init.mjs +99 -0
  287. package/tools/validate-benchmark-evidence.mjs +248 -0
  288. package/tools/validate-knowledge.mjs +481 -0
@@ -0,0 +1,772 @@
1
+ {
2
+ "variant": "baseline",
3
+ "errors": [],
4
+ "reports": [
5
+ {
6
+ "viewport": "mobile",
7
+ "artifacts": [
8
+ "baseline/screenshots/mobile-default.png",
9
+ "baseline/screenshots/mobile-empty.png",
10
+ "baseline/screenshots/mobile-saving.png",
11
+ "baseline/screenshots/mobile-save-error.png",
12
+ "baseline/screenshots/mobile-saved.png",
13
+ "baseline/screenshots/mobile-completed.png",
14
+ "baseline/screenshots/mobile-detail.png",
15
+ "baseline/screenshots/mobile-detail-reduced-motion.png",
16
+ "baseline/screenshots/mobile-keyboard-focus.png",
17
+ "baseline/screenshots/mobile-validation.png"
18
+ ],
19
+ "checks": {
20
+ "initial": {
21
+ "count": 12,
22
+ "overflow": false,
23
+ "inputBox": {
24
+ "x": 61.875,
25
+ "y": 286.671875,
26
+ "width": 239.3125,
27
+ "height": 34
28
+ }
29
+ },
30
+ "targets": [
31
+ {
32
+ "label": "\u2733 daylight.",
33
+ "width": 346,
34
+ "height": 31
35
+ },
36
+ {
37
+ "label": "Today11",
38
+ "width": 165.5,
39
+ "height": 43
40
+ },
41
+ {
42
+ "label": "All tasks11",
43
+ "width": 165.5,
44
+ "height": 43
45
+ },
46
+ {
47
+ "label": "new-task",
48
+ "width": 239.3125,
49
+ "height": 34
50
+ },
51
+ {
52
+ "label": "Add task \u21b5",
53
+ "width": 47.8125,
54
+ "height": 44
55
+ },
56
+ {
57
+ "label": "Complete: Book dentist appointment",
58
+ "width": 44,
59
+ "height": 52
60
+ },
61
+ {
62
+ "label": "Task details: Book dentist appointment",
63
+ "width": 283,
64
+ "height": 62
65
+ },
66
+ {
67
+ "label": "Complete: Pick up parcel",
68
+ "width": 44,
69
+ "height": 52
70
+ },
71
+ {
72
+ "label": "Task details: Pick up parcel",
73
+ "width": 283,
74
+ "height": 62
75
+ },
76
+ {
77
+ "label": "Complete: Reply to Maya",
78
+ "width": 44,
79
+ "height": 52
80
+ },
81
+ {
82
+ "label": "Task details: Reply to Maya",
83
+ "width": 283,
84
+ "height": 62
85
+ },
86
+ {
87
+ "label": "Complete: Pay electricity bill",
88
+ "width": 44,
89
+ "height": 52
90
+ },
91
+ {
92
+ "label": "Task details: Pay electricity bill",
93
+ "width": 283,
94
+ "height": 62
95
+ },
96
+ {
97
+ "label": "Complete: Fix bicycle light",
98
+ "width": 44,
99
+ "height": 52
100
+ },
101
+ {
102
+ "label": "Task details: Fix bicycle light",
103
+ "width": 283,
104
+ "height": 62
105
+ },
106
+ {
107
+ "label": "Complete: Water the plants",
108
+ "width": 44,
109
+ "height": 52
110
+ },
111
+ {
112
+ "label": "Task details: Water the plants",
113
+ "width": 283,
114
+ "height": 62
115
+ },
116
+ {
117
+ "label": "Complete: Read chapter twelve",
118
+ "width": 44,
119
+ "height": 52
120
+ },
121
+ {
122
+ "label": "Task details: Read chapter twelve",
123
+ "width": 283,
124
+ "height": 62
125
+ },
126
+ {
127
+ "label": "Complete: Plan weekend walk",
128
+ "width": 44,
129
+ "height": 52
130
+ },
131
+ {
132
+ "label": "Task details: Plan weekend walk",
133
+ "width": 283,
134
+ "height": 62
135
+ },
136
+ {
137
+ "label": "Complete: Return library book",
138
+ "width": 44,
139
+ "height": 52
140
+ },
141
+ {
142
+ "label": "Task details: Return library book",
143
+ "width": 283,
144
+ "height": 62
145
+ },
146
+ {
147
+ "label": "Complete: Take out recycling",
148
+ "width": 44,
149
+ "height": 52
150
+ },
151
+ {
152
+ "label": "Task details: Take out recycling",
153
+ "width": 283,
154
+ "height": 62
155
+ },
156
+ {
157
+ "label": "Complete: Order coffee beans",
158
+ "width": 44,
159
+ "height": 52
160
+ },
161
+ {
162
+ "label": "Task details: Order coffee beans",
163
+ "width": 283,
164
+ "height": 62
165
+ },
166
+ {
167
+ "label": "Completed1\u2304",
168
+ "width": 346,
169
+ "height": 44
170
+ },
171
+ {
172
+ "label": "Mark incomplete: Stretch for ten minutes",
173
+ "width": 44,
174
+ "height": 52
175
+ },
176
+ {
177
+ "label": "Task details: Stretch for ten minutes",
178
+ "width": 283,
179
+ "height": 62
180
+ }
181
+ ],
182
+ "saving": {
183
+ "input": "Buy apples",
184
+ "beforeBox": {
185
+ "x": 61.875,
186
+ "y": 286.671875,
187
+ "width": 239.3125,
188
+ "height": 34
189
+ },
190
+ "afterBox": {
191
+ "x": 61.875,
192
+ "y": 286.671875,
193
+ "width": 209.6875,
194
+ "height": 34
195
+ },
196
+ "submitDisabled": true,
197
+ "tasks": 12
198
+ },
199
+ "failedSave": {
200
+ "input": "Buy apples",
201
+ "tasks": 12,
202
+ "feedback": "Couldn\u2019t save. Your changes are still here. Try again.\nTry again"
203
+ },
204
+ "retry": {
205
+ "matchingTasks": 1,
206
+ "feedback": "Task added to today."
207
+ },
208
+ "completed": {
209
+ "completed": true,
210
+ "focus": {
211
+ "tag": "SUMMARY",
212
+ "id": "",
213
+ "label": null,
214
+ "text": "Completed2\u2304",
215
+ "scrollY": 407
216
+ }
217
+ },
218
+ "detail": {
219
+ "sourceScroll": 412,
220
+ "open": true,
221
+ "title": "Order coffee beans",
222
+ "focus": {
223
+ "tag": "INPUT",
224
+ "id": "detail-title",
225
+ "label": null,
226
+ "text": "",
227
+ "scrollY": 412
228
+ }
229
+ },
230
+ "detailClose": {
231
+ "focus": {
232
+ "tag": "BUTTON",
233
+ "id": "",
234
+ "label": "Task details: Order coffee beans",
235
+ "text": "Order coffee beans\u203a",
236
+ "scrollY": 412
237
+ },
238
+ "sourceFocused": true,
239
+ "scrollDelta": 0
240
+ },
241
+ "interruption": {
242
+ "open": false,
243
+ "focus": {
244
+ "tag": "BUTTON",
245
+ "id": "",
246
+ "label": "Task details: Order coffee beans",
247
+ "text": "Order coffee beans\u203a",
248
+ "scrollY": 412
249
+ }
250
+ },
251
+ "reducedMotion": {
252
+ "title": "Order coffee beans",
253
+ "focus": {
254
+ "tag": "INPUT",
255
+ "id": "detail-title",
256
+ "label": null,
257
+ "text": "",
258
+ "scrollY": 412
259
+ },
260
+ "animations": 0
261
+ },
262
+ "editFailure": {
263
+ "draft": "Call before 10 am.",
264
+ "saved": "Ask about a morning appointment.",
265
+ "feedback": "Couldn\u2019t save. Your changes are still here. Try again."
266
+ },
267
+ "editRetry": {
268
+ "saved": "Call before 10 am."
269
+ },
270
+ "persistence": "Call before 10 am.",
271
+ "keyboard": {
272
+ "tabsToCapture": 4,
273
+ "focus": {
274
+ "tag": "INPUT",
275
+ "id": "new-task",
276
+ "label": null,
277
+ "text": "",
278
+ "scrollY": 0
279
+ },
280
+ "style": {
281
+ "outline": "rgb(38, 52, 45) none 3px",
282
+ "shadow": "none"
283
+ }
284
+ },
285
+ "blankValidation": {
286
+ "state": {
287
+ "tasks": [
288
+ {
289
+ "id": "t01",
290
+ "title": "Book dentist appointment",
291
+ "notes": "Ask about a morning appointment.",
292
+ "dueDate": "2026-09-28",
293
+ "completed": false
294
+ },
295
+ {
296
+ "id": "t02",
297
+ "title": "Pick up parcel",
298
+ "notes": "",
299
+ "dueDate": "2026-09-28",
300
+ "completed": false
301
+ },
302
+ {
303
+ "id": "t03",
304
+ "title": "Reply to Maya",
305
+ "notes": "",
306
+ "dueDate": "2026-09-28",
307
+ "completed": false
308
+ },
309
+ {
310
+ "id": "t04",
311
+ "title": "Pay electricity bill",
312
+ "notes": "",
313
+ "dueDate": "2026-09-28",
314
+ "completed": false
315
+ },
316
+ {
317
+ "id": "t05",
318
+ "title": "Fix bicycle light",
319
+ "notes": "",
320
+ "dueDate": "2026-09-28",
321
+ "completed": false
322
+ },
323
+ {
324
+ "id": "t06",
325
+ "title": "Water the plants",
326
+ "notes": "",
327
+ "dueDate": "2026-09-28",
328
+ "completed": false
329
+ },
330
+ {
331
+ "id": "t07",
332
+ "title": "Read chapter twelve",
333
+ "notes": "",
334
+ "dueDate": "2026-09-28",
335
+ "completed": false
336
+ },
337
+ {
338
+ "id": "t08",
339
+ "title": "Plan weekend walk",
340
+ "notes": "",
341
+ "dueDate": "2026-09-28",
342
+ "completed": false
343
+ },
344
+ {
345
+ "id": "t09",
346
+ "title": "Return library book",
347
+ "notes": "",
348
+ "dueDate": "2026-09-28",
349
+ "completed": false
350
+ },
351
+ {
352
+ "id": "t10",
353
+ "title": "Take out recycling",
354
+ "notes": "",
355
+ "dueDate": "2026-09-28",
356
+ "completed": false
357
+ },
358
+ {
359
+ "id": "t11",
360
+ "title": "Order coffee beans",
361
+ "notes": "",
362
+ "dueDate": "2026-09-28",
363
+ "completed": false
364
+ },
365
+ {
366
+ "id": "t12",
367
+ "title": "Stretch for ten minutes",
368
+ "notes": "",
369
+ "dueDate": "2026-09-28",
370
+ "completed": true
371
+ }
372
+ ],
373
+ "today": "2026-09-28",
374
+ "view": "today",
375
+ "loading": false,
376
+ "pending": null,
377
+ "failed": null,
378
+ "feedback": "",
379
+ "feedbackType": "",
380
+ "editingId": null,
381
+ "saveDelay": 500
382
+ },
383
+ "feedback": "",
384
+ "nativeMessage": "Please fill in this field."
385
+ }
386
+ }
387
+ },
388
+ {
389
+ "viewport": "desktop",
390
+ "artifacts": [
391
+ "baseline/screenshots/desktop-default.png",
392
+ "baseline/screenshots/desktop-empty.png",
393
+ "baseline/screenshots/desktop-saving.png",
394
+ "baseline/screenshots/desktop-save-error.png",
395
+ "baseline/screenshots/desktop-saved.png",
396
+ "baseline/screenshots/desktop-completed.png",
397
+ "baseline/screenshots/desktop-detail.png",
398
+ "baseline/screenshots/desktop-detail-reduced-motion.png",
399
+ "baseline/screenshots/desktop-keyboard-focus.png",
400
+ "baseline/screenshots/desktop-validation.png"
401
+ ],
402
+ "checks": {
403
+ "initial": {
404
+ "count": 12,
405
+ "overflow": false,
406
+ "inputBox": {
407
+ "x": 467.78125,
408
+ "y": 225.015625,
409
+ "width": 550.953125,
410
+ "height": 35
411
+ }
412
+ },
413
+ "targets": [
414
+ {
415
+ "label": "\u2733 daylight.",
416
+ "width": 201,
417
+ "height": 36
418
+ },
419
+ {
420
+ "label": "Today11",
421
+ "width": 201,
422
+ "height": 50
423
+ },
424
+ {
425
+ "label": "All tasks11",
426
+ "width": 201,
427
+ "height": 50
428
+ },
429
+ {
430
+ "label": "new-task",
431
+ "width": 550.953125,
432
+ "height": 35
433
+ },
434
+ {
435
+ "label": "Add task \u21b5",
436
+ "width": 103.171875,
437
+ "height": 44
438
+ },
439
+ {
440
+ "label": "Complete: Book dentist appointment",
441
+ "width": 44,
442
+ "height": 52
443
+ },
444
+ {
445
+ "label": "Task details: Book dentist appointment",
446
+ "width": 654,
447
+ "height": 61
448
+ },
449
+ {
450
+ "label": "Complete: Pick up parcel",
451
+ "width": 44,
452
+ "height": 52
453
+ },
454
+ {
455
+ "label": "Task details: Pick up parcel",
456
+ "width": 654,
457
+ "height": 61
458
+ },
459
+ {
460
+ "label": "Complete: Reply to Maya",
461
+ "width": 44,
462
+ "height": 52
463
+ },
464
+ {
465
+ "label": "Task details: Reply to Maya",
466
+ "width": 654,
467
+ "height": 61
468
+ },
469
+ {
470
+ "label": "Complete: Pay electricity bill",
471
+ "width": 44,
472
+ "height": 52
473
+ },
474
+ {
475
+ "label": "Task details: Pay electricity bill",
476
+ "width": 654,
477
+ "height": 61
478
+ },
479
+ {
480
+ "label": "Complete: Fix bicycle light",
481
+ "width": 44,
482
+ "height": 52
483
+ },
484
+ {
485
+ "label": "Task details: Fix bicycle light",
486
+ "width": 654,
487
+ "height": 61
488
+ },
489
+ {
490
+ "label": "Complete: Water the plants",
491
+ "width": 44,
492
+ "height": 52
493
+ },
494
+ {
495
+ "label": "Task details: Water the plants",
496
+ "width": 654,
497
+ "height": 61
498
+ },
499
+ {
500
+ "label": "Complete: Read chapter twelve",
501
+ "width": 44,
502
+ "height": 52
503
+ },
504
+ {
505
+ "label": "Task details: Read chapter twelve",
506
+ "width": 654,
507
+ "height": 61
508
+ },
509
+ {
510
+ "label": "Complete: Plan weekend walk",
511
+ "width": 44,
512
+ "height": 52
513
+ },
514
+ {
515
+ "label": "Task details: Plan weekend walk",
516
+ "width": 654,
517
+ "height": 61
518
+ },
519
+ {
520
+ "label": "Complete: Return library book",
521
+ "width": 44,
522
+ "height": 52
523
+ },
524
+ {
525
+ "label": "Task details: Return library book",
526
+ "width": 654,
527
+ "height": 61
528
+ },
529
+ {
530
+ "label": "Complete: Take out recycling",
531
+ "width": 44,
532
+ "height": 52
533
+ },
534
+ {
535
+ "label": "Task details: Take out recycling",
536
+ "width": 654,
537
+ "height": 61
538
+ },
539
+ {
540
+ "label": "Complete: Order coffee beans",
541
+ "width": 44,
542
+ "height": 52
543
+ },
544
+ {
545
+ "label": "Task details: Order coffee beans",
546
+ "width": 654,
547
+ "height": 61
548
+ },
549
+ {
550
+ "label": "Completed1\u2304",
551
+ "width": 722,
552
+ "height": 44
553
+ },
554
+ {
555
+ "label": "Mark incomplete: Stretch for ten minutes",
556
+ "width": 44,
557
+ "height": 52
558
+ },
559
+ {
560
+ "label": "Task details: Stretch for ten minutes",
561
+ "width": 654,
562
+ "height": 61
563
+ }
564
+ ],
565
+ "saving": {
566
+ "input": "Buy apples",
567
+ "beforeBox": {
568
+ "x": 467.78125,
569
+ "y": 225.015625,
570
+ "width": 550.953125,
571
+ "height": 35
572
+ },
573
+ "afterBox": {
574
+ "x": 467.78125,
575
+ "y": 225.015625,
576
+ "width": 521.328125,
577
+ "height": 35
578
+ },
579
+ "submitDisabled": true,
580
+ "tasks": 12
581
+ },
582
+ "failedSave": {
583
+ "input": "Buy apples",
584
+ "tasks": 12,
585
+ "feedback": "Couldn\u2019t save. Your changes are still here. Try again.\nTry again"
586
+ },
587
+ "retry": {
588
+ "matchingTasks": 1,
589
+ "feedback": "Task added to today."
590
+ },
591
+ "completed": {
592
+ "completed": true,
593
+ "focus": {
594
+ "tag": "SUMMARY",
595
+ "id": "",
596
+ "label": null,
597
+ "text": "Completed2\u2304",
598
+ "scrollY": 299
599
+ }
600
+ },
601
+ "detail": {
602
+ "sourceScroll": 319,
603
+ "open": true,
604
+ "title": "Order coffee beans",
605
+ "focus": {
606
+ "tag": "INPUT",
607
+ "id": "detail-title",
608
+ "label": null,
609
+ "text": "",
610
+ "scrollY": 319
611
+ }
612
+ },
613
+ "detailClose": {
614
+ "focus": {
615
+ "tag": "BUTTON",
616
+ "id": "",
617
+ "label": "Task details: Order coffee beans",
618
+ "text": "Order coffee beans\u203a",
619
+ "scrollY": 319
620
+ },
621
+ "sourceFocused": true,
622
+ "scrollDelta": 0
623
+ },
624
+ "interruption": {
625
+ "open": false,
626
+ "focus": {
627
+ "tag": "BUTTON",
628
+ "id": "",
629
+ "label": "Task details: Order coffee beans",
630
+ "text": "Order coffee beans\u203a",
631
+ "scrollY": 319
632
+ }
633
+ },
634
+ "reducedMotion": {
635
+ "title": "Order coffee beans",
636
+ "focus": {
637
+ "tag": "INPUT",
638
+ "id": "detail-title",
639
+ "label": null,
640
+ "text": "",
641
+ "scrollY": 319
642
+ },
643
+ "animations": 0
644
+ },
645
+ "editFailure": {
646
+ "draft": "Call before 10 am.",
647
+ "saved": "Ask about a morning appointment.",
648
+ "feedback": "Couldn\u2019t save. Your changes are still here. Try again."
649
+ },
650
+ "editRetry": {
651
+ "saved": "Call before 10 am."
652
+ },
653
+ "persistence": "Call before 10 am.",
654
+ "keyboard": {
655
+ "tabsToCapture": 4,
656
+ "focus": {
657
+ "tag": "INPUT",
658
+ "id": "new-task",
659
+ "label": null,
660
+ "text": "",
661
+ "scrollY": 0
662
+ },
663
+ "style": {
664
+ "outline": "rgb(38, 52, 45) none 3px",
665
+ "shadow": "none"
666
+ }
667
+ },
668
+ "blankValidation": {
669
+ "state": {
670
+ "tasks": [
671
+ {
672
+ "id": "t01",
673
+ "title": "Book dentist appointment",
674
+ "notes": "Ask about a morning appointment.",
675
+ "dueDate": "2026-09-28",
676
+ "completed": false
677
+ },
678
+ {
679
+ "id": "t02",
680
+ "title": "Pick up parcel",
681
+ "notes": "",
682
+ "dueDate": "2026-09-28",
683
+ "completed": false
684
+ },
685
+ {
686
+ "id": "t03",
687
+ "title": "Reply to Maya",
688
+ "notes": "",
689
+ "dueDate": "2026-09-28",
690
+ "completed": false
691
+ },
692
+ {
693
+ "id": "t04",
694
+ "title": "Pay electricity bill",
695
+ "notes": "",
696
+ "dueDate": "2026-09-28",
697
+ "completed": false
698
+ },
699
+ {
700
+ "id": "t05",
701
+ "title": "Fix bicycle light",
702
+ "notes": "",
703
+ "dueDate": "2026-09-28",
704
+ "completed": false
705
+ },
706
+ {
707
+ "id": "t06",
708
+ "title": "Water the plants",
709
+ "notes": "",
710
+ "dueDate": "2026-09-28",
711
+ "completed": false
712
+ },
713
+ {
714
+ "id": "t07",
715
+ "title": "Read chapter twelve",
716
+ "notes": "",
717
+ "dueDate": "2026-09-28",
718
+ "completed": false
719
+ },
720
+ {
721
+ "id": "t08",
722
+ "title": "Plan weekend walk",
723
+ "notes": "",
724
+ "dueDate": "2026-09-28",
725
+ "completed": false
726
+ },
727
+ {
728
+ "id": "t09",
729
+ "title": "Return library book",
730
+ "notes": "",
731
+ "dueDate": "2026-09-28",
732
+ "completed": false
733
+ },
734
+ {
735
+ "id": "t10",
736
+ "title": "Take out recycling",
737
+ "notes": "",
738
+ "dueDate": "2026-09-28",
739
+ "completed": false
740
+ },
741
+ {
742
+ "id": "t11",
743
+ "title": "Order coffee beans",
744
+ "notes": "",
745
+ "dueDate": "2026-09-28",
746
+ "completed": false
747
+ },
748
+ {
749
+ "id": "t12",
750
+ "title": "Stretch for ten minutes",
751
+ "notes": "",
752
+ "dueDate": "2026-09-28",
753
+ "completed": true
754
+ }
755
+ ],
756
+ "today": "2026-09-28",
757
+ "view": "today",
758
+ "loading": false,
759
+ "pending": null,
760
+ "failed": null,
761
+ "feedback": "",
762
+ "feedbackType": "",
763
+ "editingId": null,
764
+ "saveDelay": 500
765
+ },
766
+ "feedback": "",
767
+ "nativeMessage": "Please fill in this field."
768
+ }
769
+ }
770
+ }
771
+ ]
772
+ }