opendevbrowser 0.0.30 → 0.0.32
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.
- package/README.md +20 -7
- package/dist/{accessibility-snapshot-CQ4ZKWKC.js → accessibility-snapshot-XOP66CSK.js} +11 -11
- package/dist/{active-window-TD5HYJ72.js → active-window-E3WFOQGX.js} +11 -11
- package/dist/{annotate-VTLFS2XV.js → annotate-MAE7ZJOZ.js} +10 -10
- package/dist/{artifacts-KJ6RNDO2.js → artifacts-JHDUUJGQ.js} +2 -2
- package/dist/{attr-BCI5KYCW.js → attr-M3PFDJ7Q.js} +10 -10
- package/dist/{canvas-5DFEEOKM.js → canvas-3AJVL5I5.js} +10 -10
- package/dist/{capture-desktop-HFTTWY4Z.js → capture-desktop-VJGEETMJ.js} +11 -11
- package/dist/{capture-window-X63XPIFF.js → capture-window-W5UFSFQL.js} +11 -11
- package/dist/{check-LWAUY7GC.js → check-4IR3UJVW.js} +10 -10
- package/dist/{checked-ZSOUKVYT.js → checked-PKNY7724.js} +10 -10
- package/dist/{chunk-KZ2IXVQT.js → chunk-2X4JFMKJ.js} +39 -4
- package/dist/chunk-2X4JFMKJ.js.map +1 -0
- package/dist/{chunk-IPE7TF2P.js → chunk-7BNU6DFI.js} +8 -5
- package/dist/chunk-7BNU6DFI.js.map +1 -0
- package/dist/{chunk-J47N77VG.js → chunk-AKIAGFOE.js} +31 -8
- package/dist/chunk-AKIAGFOE.js.map +1 -0
- package/dist/{chunk-RCZZGGJS.js → chunk-AWQ37HSC.js} +7 -3
- package/dist/chunk-AWQ37HSC.js.map +1 -0
- package/dist/{chunk-3ILXPKSJ.js → chunk-BUVYTJZR.js} +2 -1
- package/dist/chunk-BUVYTJZR.js.map +1 -0
- package/dist/{chunk-AHEWXOKY.js → chunk-BUXFIY2P.js} +4 -4
- package/dist/{chunk-QOMWCRE3.js → chunk-HBK56JST.js} +3 -3
- package/dist/{chunk-T4GMCW6Z.js → chunk-J3KYGJRQ.js} +3 -3
- package/dist/{chunk-6PVZ2ABC.js → chunk-L3YNUGYF.js} +2 -2
- package/dist/{chunk-JZXD6FWR.js → chunk-NURQB55J.js} +2 -2
- package/dist/{chunk-GQJ5S3BL.js → chunk-P5K3ZIPI.js} +3 -3
- package/dist/{chunk-PPUWQKIC.js → chunk-PIFHXKV4.js} +4 -4
- package/dist/{chunk-STGGGVYT.js → chunk-QMHKAFYX.js} +2 -2
- package/dist/{chunk-4BEJVZRK.js → chunk-RO3SMXF3.js} +1073 -138
- package/dist/chunk-RO3SMXF3.js.map +1 -0
- package/dist/{chunk-RPXWUCQQ.js → chunk-SKFB5ICF.js} +2 -2
- package/dist/{chunk-2SIMIPLY.js → chunk-W6YPVNDX.js} +3 -3
- package/dist/{chunk-MD655IPO.js → chunk-XDLJE3RJ.js} +11 -4
- package/dist/chunk-XDLJE3RJ.js.map +1 -0
- package/dist/{chunk-KDSNXS6N.js → chunk-ZMNEWS7A.js} +2 -2
- package/dist/{chunk-COAOWH3G.js → chunk-ZOVMMQO6.js} +119 -27
- package/dist/chunk-ZOVMMQO6.js.map +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/commands/daemon.d.ts +19 -2
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/inspiredesign.d.ts +6 -1
- package/dist/cli/commands/inspiredesign.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts +12 -3
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/types.d.ts +1 -0
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/daemon-client.d.ts.map +1 -1
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon-mismatch.d.ts +9 -0
- package/dist/cli/daemon-mismatch.d.ts.map +1 -0
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/errors.d.ts +4 -2
- package/dist/cli/errors.d.ts.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.js +91 -90
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installers/postinstall-skill-sync.js +2 -2
- package/dist/{click-2AILSEIZ.js → click-HLNXU4I5.js} +10 -10
- package/dist/{clone-component-TPJS3PEG.js → clone-component-QIKN5PIM.js} +9 -9
- package/dist/{clone-page-LE74CIFC.js → clone-page-5C7DTGZT.js} +9 -9
- package/dist/{close-HN4YI47K.js → close-PCRZHX7F.js} +9 -9
- package/dist/{close-WFERRHX6.js → close-WTXB3EDD.js} +9 -9
- package/dist/{connect-RWBV2UCQ.js → connect-6C2IG55I.js} +10 -10
- package/dist/{console-poll-PP4YYPDF.js → console-poll-VJXCZR3F.js} +10 -10
- package/dist/{cookie-import-6IP776FC.js → cookie-import-5OEDFB6U.js} +9 -9
- package/dist/{cookie-list-O2KG6DPU.js → cookie-list-44UNJJ6D.js} +9 -9
- package/dist/{daemon-2BSAZXLT.js → daemon-CIKGBWEB.js} +25 -12
- package/dist/daemon-CIKGBWEB.js.map +1 -0
- package/dist/daemon-fingerprint.json +1 -1
- package/dist/{debug-trace-snapshot-F3BDVZXS.js → debug-trace-snapshot-RGXAPGWB.js} +10 -10
- package/dist/{dialog-6JQYUWMQ.js → dialog-S64MJUM2.js} +10 -10
- package/dist/{disconnect-763TP7GH.js → disconnect-MTIELIM7.js} +9 -9
- package/dist/{enabled-DLYQFNIP.js → enabled-KF2L7LW4.js} +10 -10
- package/dist/{goto-S346TJJH.js → goto-ULWINUAZ.js} +10 -10
- package/dist/{help-EKKKEDL5.js → help-IG5S5RJD.js} +14 -10
- package/dist/help-IG5S5RJD.js.map +1 -0
- package/dist/{hover-6JVJFGO7.js → hover-NOCOTR6N.js} +10 -10
- package/dist/{html-EVOSPBIT.js → html-LXSYP6BT.js} +10 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -17
- package/dist/index.js.map +1 -1
- package/dist/{inspector-H57BVUJP.js → inspector-62EPCLYB.js} +11 -11
- package/dist/{inspector-audit-NQBAJWC7.js → inspector-audit-T2IF67RJ.js} +13 -13
- package/dist/{inspector-plan-ZDIQVND3.js → inspector-plan-KQS6LRMW.js} +11 -11
- package/dist/inspiredesign/capture.d.ts +4 -0
- package/dist/inspiredesign/capture.d.ts.map +1 -1
- package/dist/inspiredesign/contract.d.ts +22 -0
- package/dist/inspiredesign/contract.d.ts.map +1 -1
- package/dist/inspiredesign/handoff.d.ts +7 -1
- package/dist/inspiredesign/handoff.d.ts.map +1 -1
- package/dist/inspiredesign/meta-prompt.d.ts +9 -0
- package/dist/inspiredesign/meta-prompt.d.ts.map +1 -0
- package/dist/inspiredesign/reference-discovery.d.ts +29 -0
- package/dist/inspiredesign/reference-discovery.d.ts.map +1 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts +21 -0
- package/dist/inspiredesign/reference-pattern-board.d.ts.map +1 -1
- package/dist/inspiredesign/visual-evidence.d.ts +46 -0
- package/dist/inspiredesign/visual-evidence.d.ts.map +1 -0
- package/dist/inspiredesign/visual-policy.d.ts +17 -0
- package/dist/inspiredesign/visual-policy.d.ts.map +1 -0
- package/dist/{inspiredesign-IEUL4PX3.js → inspiredesign-DB6CHYN3.js} +71 -19
- package/dist/inspiredesign-DB6CHYN3.js.map +1 -0
- package/dist/{launch-EK66VQPF.js → launch-B5ES6FVS.js} +10 -10
- package/dist/{list-KKUKN467.js → list-TIZVR6RO.js} +9 -9
- package/dist/{list-ADZAQ2IU.js → list-XM4BP5GM.js} +9 -9
- package/dist/{macro-resolve-6DOQJ7CA.js → macro-resolve-TTQZVFIW.js} +10 -10
- package/dist/{native-UPLVQ2SG.js → native-J2DFLOLP.js} +3 -3
- package/dist/{network-poll-NUL4PDPY.js → network-poll-NNSY4W63.js} +10 -10
- package/dist/{new-5NKYPEFT.js → new-E6VNAC2A.js} +9 -9
- package/dist/{open-NR3BPLXV.js → open-F55XKMKB.js} +9 -9
- package/dist/opendevbrowser.d.ts.map +1 -1
- package/dist/opendevbrowser.js +46 -17
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/{perf-HJ36ZI6H.js → perf-RE7JE6CP.js} +10 -10
- package/dist/{pointer-down-IYTTQWXZ.js → pointer-down-BCBPC5FJ.js} +11 -11
- package/dist/{pointer-drag-A2YC5PWI.js → pointer-drag-QK7KGF7W.js} +11 -11
- package/dist/{pointer-move-W5K5FUI4.js → pointer-move-VFAZQAXA.js} +11 -11
- package/dist/{pointer-up-6GWVO64Y.js → pointer-up-FA5WE6LS.js} +11 -11
- package/dist/{press-A3V5WB3S.js → press-TNRHNDSW.js} +10 -10
- package/dist/{product-video-52REKWF3.js → product-video-UEANMZ2U.js} +11 -11
- package/dist/providers/renderer.d.ts +7 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/workflow-handoff.d.ts +1 -0
- package/dist/providers/workflow-handoff.d.ts.map +1 -1
- package/dist/providers/workflows.d.ts +45 -3
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/{providers-IMFYMMHQ.js → providers-AMCNWZUL.js} +3 -3
- package/dist/public-surface/generated-manifest.d.ts +12 -3
- package/dist/public-surface/generated-manifest.d.ts.map +1 -1
- package/dist/public-surface/source.d.ts +6 -6
- package/dist/public-surface/source.d.ts.map +1 -1
- package/dist/{research-WB6BBCDD.js → research-YFY7WJSZ.js} +11 -11
- package/dist/{review-BGWVY4RA.js → review-NHOPLAT7.js} +11 -11
- package/dist/{review-desktop-LEORC5VS.js → review-desktop-OFWPDYGD.js} +11 -11
- package/dist/{rpc-4TSKSFGC.js → rpc-TVVQPUOL.js} +10 -10
- package/dist/{run-3NBLVWXD.js → run-OCBEZRDW.js} +8 -8
- package/dist/{screencast-start-UZVIT3IN.js → screencast-start-GTSDA33J.js} +10 -10
- package/dist/{screencast-stop-NOSJSIUO.js → screencast-stop-FYBUIXAA.js} +10 -10
- package/dist/{screenshot-LARG4JQG.js → screenshot-OEYRT3SP.js} +10 -10
- package/dist/{scroll-VNFMV6TW.js → scroll-35OFEFC5.js} +10 -10
- package/dist/{scroll-into-view-VYRT3JPT.js → scroll-into-view-UQ5RAWIX.js} +10 -10
- package/dist/{select-KJTUZDVO.js → select-K56QELVZ.js} +10 -10
- package/dist/{serve-EV7K4HKR.js → serve-5UJ3VMWC.js} +48 -24
- package/dist/serve-5UJ3VMWC.js.map +1 -0
- package/dist/{shopping-DTXHVQ2X.js → shopping-FJG7XB4Q.js} +11 -11
- package/dist/{skill-lifecycle-5UAZGKSN.js → skill-lifecycle-OWZYBPFS.js} +3 -3
- package/dist/skills/bundled-skill-directories.d.ts.map +1 -1
- package/dist/skills/skill-loader.js +2 -2
- package/dist/{skills-NSXDX6YM.js → skills-KHMRNOE4.js} +3 -3
- package/dist/{snapshot-3XQMCMRJ.js → snapshot-W7RKVZEI.js} +10 -10
- package/dist/{status-YUMDP5KY.js → status-KHYCLGUD.js} +20 -12
- package/dist/status-KHYCLGUD.js.map +1 -0
- package/dist/{status-OXSYA5XD.js → status-R4EV4TWO.js} +11 -11
- package/dist/{status-capabilities-P4KDSE2Y.js → status-capabilities-XD3RGLKF.js} +11 -11
- package/dist/{text-V3B7UVIH.js → text-TANLFZ4O.js} +10 -10
- package/dist/tools/inspiredesign_run.d.ts.map +1 -1
- package/dist/{type-IYBN3ZLR.js → type-Y2Y7LX7Y.js} +10 -10
- package/dist/{uncheck-SG737EGI.js → uncheck-6REVUUB2.js} +10 -10
- package/dist/{uninstall-KYKGJAX7.js → uninstall-FW5ORBIN.js} +3 -3
- package/dist/{update-SMXPYGXS.js → update-FZGSXB74.js} +6 -2
- package/dist/update-FZGSXB74.js.map +1 -0
- package/dist/{update-skill-modes-BVX7IVMW.js → update-skill-modes-3ULKJK3Y.js} +3 -3
- package/dist/{upload-KH6ZABJA.js → upload-GGZC5UQP.js} +10 -10
- package/dist/{use-7YDKO3U4.js → use-B4Q7CFG2.js} +9 -9
- package/dist/{value-RZBWSKKM.js → value-DHOHO55D.js} +10 -10
- package/dist/{visible-BSFTAKXR.js → visible-S5BTWYNH.js} +10 -10
- package/dist/{wait-TMTEAYOP.js → wait-WV6NZUKL.js} +10 -10
- package/dist/{windows-HIZ23OHS.js → windows-GKE36DJQ.js} +11 -11
- package/extension/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/AGENTS.md +2 -1
- package/skills/opendevbrowser-best-practices/SKILL.md +9 -2
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +4 -3
- package/skills/opendevbrowser-best-practices/assets/templates/mode-flag-matrix.json +7 -0
- package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +49 -3
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +24 -2
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +1 -0
- package/skills/opendevbrowser-design-agent/SKILL.md +3 -0
- package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +85 -40
- package/skills/opendevbrowser-design-agent/artifacts/scroll-reveal-surface-planning.md +2 -0
- package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +20 -5
- package/skills/opendevbrowser-motion-design/SKILL.md +129 -0
- package/skills/opendevbrowser-motion-design/artifacts/accessibility-reduced-motion.md +37 -0
- package/skills/opendevbrowser-motion-design/artifacts/device-breakpoint-posture.md +40 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-anti-patterns.md +29 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-pattern-catalog.md +430 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-release-gate.md +28 -0
- package/skills/opendevbrowser-motion-design/artifacts/motion-terminology.md +46 -0
- package/skills/opendevbrowser-motion-design/artifacts/open-dev-browser-motion-evidence.md +48 -0
- package/skills/opendevbrowser-motion-design/artifacts/performance-frame-budget.md +38 -0
- package/skills/opendevbrowser-motion-design/artifacts/platform-framework-guide.md +166 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-audit-report.v1.md +70 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-contract.v1.json +79 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-release-gate.v1.json +18 -0
- package/skills/opendevbrowser-motion-design/assets/templates/motion-viewport-matrix.v1.json +76 -0
- package/skills/opendevbrowser-motion-design/scripts/motion-workflow.sh +163 -0
- package/skills/opendevbrowser-motion-design/scripts/validate-skill-assets.sh +374 -0
- package/dist/chunk-3ILXPKSJ.js.map +0 -1
- package/dist/chunk-4BEJVZRK.js.map +0 -1
- package/dist/chunk-COAOWH3G.js.map +0 -1
- package/dist/chunk-IPE7TF2P.js.map +0 -1
- package/dist/chunk-J47N77VG.js.map +0 -1
- package/dist/chunk-KZ2IXVQT.js.map +0 -1
- package/dist/chunk-MD655IPO.js.map +0 -1
- package/dist/chunk-RCZZGGJS.js.map +0 -1
- package/dist/daemon-2BSAZXLT.js.map +0 -1
- package/dist/help-EKKKEDL5.js.map +0 -1
- package/dist/inspiredesign-IEUL4PX3.js.map +0 -1
- package/dist/serve-EV7K4HKR.js.map +0 -1
- package/dist/status-YUMDP5KY.js.map +0 -1
- package/dist/update-SMXPYGXS.js.map +0 -1
- /package/dist/{accessibility-snapshot-CQ4ZKWKC.js.map → accessibility-snapshot-XOP66CSK.js.map} +0 -0
- /package/dist/{active-window-TD5HYJ72.js.map → active-window-E3WFOQGX.js.map} +0 -0
- /package/dist/{annotate-VTLFS2XV.js.map → annotate-MAE7ZJOZ.js.map} +0 -0
- /package/dist/{artifacts-KJ6RNDO2.js.map → artifacts-JHDUUJGQ.js.map} +0 -0
- /package/dist/{attr-BCI5KYCW.js.map → attr-M3PFDJ7Q.js.map} +0 -0
- /package/dist/{canvas-5DFEEOKM.js.map → canvas-3AJVL5I5.js.map} +0 -0
- /package/dist/{capture-desktop-HFTTWY4Z.js.map → capture-desktop-VJGEETMJ.js.map} +0 -0
- /package/dist/{capture-window-X63XPIFF.js.map → capture-window-W5UFSFQL.js.map} +0 -0
- /package/dist/{check-LWAUY7GC.js.map → check-4IR3UJVW.js.map} +0 -0
- /package/dist/{checked-ZSOUKVYT.js.map → checked-PKNY7724.js.map} +0 -0
- /package/dist/{chunk-AHEWXOKY.js.map → chunk-BUXFIY2P.js.map} +0 -0
- /package/dist/{chunk-QOMWCRE3.js.map → chunk-HBK56JST.js.map} +0 -0
- /package/dist/{chunk-T4GMCW6Z.js.map → chunk-J3KYGJRQ.js.map} +0 -0
- /package/dist/{chunk-6PVZ2ABC.js.map → chunk-L3YNUGYF.js.map} +0 -0
- /package/dist/{chunk-JZXD6FWR.js.map → chunk-NURQB55J.js.map} +0 -0
- /package/dist/{chunk-GQJ5S3BL.js.map → chunk-P5K3ZIPI.js.map} +0 -0
- /package/dist/{chunk-PPUWQKIC.js.map → chunk-PIFHXKV4.js.map} +0 -0
- /package/dist/{chunk-STGGGVYT.js.map → chunk-QMHKAFYX.js.map} +0 -0
- /package/dist/{chunk-RPXWUCQQ.js.map → chunk-SKFB5ICF.js.map} +0 -0
- /package/dist/{chunk-2SIMIPLY.js.map → chunk-W6YPVNDX.js.map} +0 -0
- /package/dist/{chunk-KDSNXS6N.js.map → chunk-ZMNEWS7A.js.map} +0 -0
- /package/dist/{click-2AILSEIZ.js.map → click-HLNXU4I5.js.map} +0 -0
- /package/dist/{clone-component-TPJS3PEG.js.map → clone-component-QIKN5PIM.js.map} +0 -0
- /package/dist/{clone-page-LE74CIFC.js.map → clone-page-5C7DTGZT.js.map} +0 -0
- /package/dist/{close-HN4YI47K.js.map → close-PCRZHX7F.js.map} +0 -0
- /package/dist/{close-WFERRHX6.js.map → close-WTXB3EDD.js.map} +0 -0
- /package/dist/{connect-RWBV2UCQ.js.map → connect-6C2IG55I.js.map} +0 -0
- /package/dist/{console-poll-PP4YYPDF.js.map → console-poll-VJXCZR3F.js.map} +0 -0
- /package/dist/{cookie-import-6IP776FC.js.map → cookie-import-5OEDFB6U.js.map} +0 -0
- /package/dist/{cookie-list-O2KG6DPU.js.map → cookie-list-44UNJJ6D.js.map} +0 -0
- /package/dist/{debug-trace-snapshot-F3BDVZXS.js.map → debug-trace-snapshot-RGXAPGWB.js.map} +0 -0
- /package/dist/{dialog-6JQYUWMQ.js.map → dialog-S64MJUM2.js.map} +0 -0
- /package/dist/{disconnect-763TP7GH.js.map → disconnect-MTIELIM7.js.map} +0 -0
- /package/dist/{enabled-DLYQFNIP.js.map → enabled-KF2L7LW4.js.map} +0 -0
- /package/dist/{goto-S346TJJH.js.map → goto-ULWINUAZ.js.map} +0 -0
- /package/dist/{hover-6JVJFGO7.js.map → hover-NOCOTR6N.js.map} +0 -0
- /package/dist/{html-EVOSPBIT.js.map → html-LXSYP6BT.js.map} +0 -0
- /package/dist/{inspector-H57BVUJP.js.map → inspector-62EPCLYB.js.map} +0 -0
- /package/dist/{inspector-audit-NQBAJWC7.js.map → inspector-audit-T2IF67RJ.js.map} +0 -0
- /package/dist/{inspector-plan-ZDIQVND3.js.map → inspector-plan-KQS6LRMW.js.map} +0 -0
- /package/dist/{launch-EK66VQPF.js.map → launch-B5ES6FVS.js.map} +0 -0
- /package/dist/{list-KKUKN467.js.map → list-TIZVR6RO.js.map} +0 -0
- /package/dist/{list-ADZAQ2IU.js.map → list-XM4BP5GM.js.map} +0 -0
- /package/dist/{macro-resolve-6DOQJ7CA.js.map → macro-resolve-TTQZVFIW.js.map} +0 -0
- /package/dist/{native-UPLVQ2SG.js.map → native-J2DFLOLP.js.map} +0 -0
- /package/dist/{network-poll-NUL4PDPY.js.map → network-poll-NNSY4W63.js.map} +0 -0
- /package/dist/{new-5NKYPEFT.js.map → new-E6VNAC2A.js.map} +0 -0
- /package/dist/{open-NR3BPLXV.js.map → open-F55XKMKB.js.map} +0 -0
- /package/dist/{perf-HJ36ZI6H.js.map → perf-RE7JE6CP.js.map} +0 -0
- /package/dist/{pointer-down-IYTTQWXZ.js.map → pointer-down-BCBPC5FJ.js.map} +0 -0
- /package/dist/{pointer-drag-A2YC5PWI.js.map → pointer-drag-QK7KGF7W.js.map} +0 -0
- /package/dist/{pointer-move-W5K5FUI4.js.map → pointer-move-VFAZQAXA.js.map} +0 -0
- /package/dist/{pointer-up-6GWVO64Y.js.map → pointer-up-FA5WE6LS.js.map} +0 -0
- /package/dist/{press-A3V5WB3S.js.map → press-TNRHNDSW.js.map} +0 -0
- /package/dist/{product-video-52REKWF3.js.map → product-video-UEANMZ2U.js.map} +0 -0
- /package/dist/{providers-IMFYMMHQ.js.map → providers-AMCNWZUL.js.map} +0 -0
- /package/dist/{research-WB6BBCDD.js.map → research-YFY7WJSZ.js.map} +0 -0
- /package/dist/{review-BGWVY4RA.js.map → review-NHOPLAT7.js.map} +0 -0
- /package/dist/{review-desktop-LEORC5VS.js.map → review-desktop-OFWPDYGD.js.map} +0 -0
- /package/dist/{rpc-4TSKSFGC.js.map → rpc-TVVQPUOL.js.map} +0 -0
- /package/dist/{run-3NBLVWXD.js.map → run-OCBEZRDW.js.map} +0 -0
- /package/dist/{screencast-start-UZVIT3IN.js.map → screencast-start-GTSDA33J.js.map} +0 -0
- /package/dist/{screencast-stop-NOSJSIUO.js.map → screencast-stop-FYBUIXAA.js.map} +0 -0
- /package/dist/{screenshot-LARG4JQG.js.map → screenshot-OEYRT3SP.js.map} +0 -0
- /package/dist/{scroll-VNFMV6TW.js.map → scroll-35OFEFC5.js.map} +0 -0
- /package/dist/{scroll-into-view-VYRT3JPT.js.map → scroll-into-view-UQ5RAWIX.js.map} +0 -0
- /package/dist/{select-KJTUZDVO.js.map → select-K56QELVZ.js.map} +0 -0
- /package/dist/{shopping-DTXHVQ2X.js.map → shopping-FJG7XB4Q.js.map} +0 -0
- /package/dist/{skill-lifecycle-5UAZGKSN.js.map → skill-lifecycle-OWZYBPFS.js.map} +0 -0
- /package/dist/{skills-NSXDX6YM.js.map → skills-KHMRNOE4.js.map} +0 -0
- /package/dist/{snapshot-3XQMCMRJ.js.map → snapshot-W7RKVZEI.js.map} +0 -0
- /package/dist/{status-OXSYA5XD.js.map → status-R4EV4TWO.js.map} +0 -0
- /package/dist/{status-capabilities-P4KDSE2Y.js.map → status-capabilities-XD3RGLKF.js.map} +0 -0
- /package/dist/{text-V3B7UVIH.js.map → text-TANLFZ4O.js.map} +0 -0
- /package/dist/{type-IYBN3ZLR.js.map → type-Y2Y7LX7Y.js.map} +0 -0
- /package/dist/{uncheck-SG737EGI.js.map → uncheck-6REVUUB2.js.map} +0 -0
- /package/dist/{uninstall-KYKGJAX7.js.map → uninstall-FW5ORBIN.js.map} +0 -0
- /package/dist/{update-skill-modes-BVX7IVMW.js.map → update-skill-modes-3ULKJK3Y.js.map} +0 -0
- /package/dist/{upload-KH6ZABJA.js.map → upload-GGZC5UQP.js.map} +0 -0
- /package/dist/{use-7YDKO3U4.js.map → use-B4Q7CFG2.js.map} +0 -0
- /package/dist/{value-RZBWSKKM.js.map → value-DHOHO55D.js.map} +0 -0
- /package/dist/{visible-BSFTAKXR.js.map → visible-S5BTWYNH.js.map} +0 -0
- /package/dist/{wait-TMTEAYOP.js.map → wait-WV6NZUKL.js.map} +0 -0
- /package/dist/{windows-HIZ23OHS.js.map → windows-GKE36DJQ.js.map} +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Motion Anti-patterns
|
|
2
|
+
|
|
3
|
+
Do not ship these motion failures.
|
|
4
|
+
|
|
5
|
+
- Decorative motion without user value.
|
|
6
|
+
- Missing progress owner for route, state, scroll, or gesture animation.
|
|
7
|
+
- Competing scroll observers for the same narrative.
|
|
8
|
+
- Layout-property animation in hot paths.
|
|
9
|
+
- Long-distance mobile travel.
|
|
10
|
+
- Default parallax without vestibular and reduced-motion review.
|
|
11
|
+
- Pinned scroll without escape condition.
|
|
12
|
+
- Hover-only affordance.
|
|
13
|
+
- Hidden focus or reading-order changes.
|
|
14
|
+
- Reduced motion that removes meaning.
|
|
15
|
+
- Unbounded loops.
|
|
16
|
+
- Fake progress.
|
|
17
|
+
- Unapproved runtime dependency.
|
|
18
|
+
- Haptic spam.
|
|
19
|
+
- Index-keyed animated lists.
|
|
20
|
+
- Non-interruptible gesture animation.
|
|
21
|
+
- Motion-only status feedback.
|
|
22
|
+
- Skeleton shimmer that never resolves.
|
|
23
|
+
- Shared element transition with unstable identity.
|
|
24
|
+
- WebGL or canvas motion without static accessible equivalent.
|
|
25
|
+
- Animation cleanup leaks after unmount or route change.
|
|
26
|
+
|
|
27
|
+
## Fix Pattern
|
|
28
|
+
|
|
29
|
+
For every anti-pattern, either remove the motion, reduce it to a simpler pattern, or rewrite the motion contract with a clear owner, fallback, and evidence plan.
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
# Motion Pattern Catalog
|
|
2
|
+
|
|
3
|
+
Each pattern entry is deterministic: use case, avoid case, user value, implementation primitives, reduced-motion fallback, device posture, verification evidence, and failure signals.
|
|
4
|
+
|
|
5
|
+
## Pattern Selection Rules
|
|
6
|
+
|
|
7
|
+
- Select the fewest patterns that explain the interface.
|
|
8
|
+
- Assign one owner for each timeline: route, state, scroll, gesture, or media.
|
|
9
|
+
- Never select a pattern without a reduced-motion fallback.
|
|
10
|
+
- Capture temporal evidence for timing-sensitive, scroll-driven, or gesture-coupled patterns.
|
|
11
|
+
|
|
12
|
+
### Pattern 01 - No-motion Stability
|
|
13
|
+
- Use case: dense task surfaces, critical forms, security steps, and repeated workflows.
|
|
14
|
+
- Avoid case: first-run education where continuity is needed.
|
|
15
|
+
- User value: reduces cognitive load and protects speed.
|
|
16
|
+
- Implementation primitives: static DOM changes, focus management, instant state updates.
|
|
17
|
+
- Reduced-motion fallback: identical default path.
|
|
18
|
+
- Device posture: preferred on small phones, short viewports, keyboard-only contexts, and reduced-power devices.
|
|
19
|
+
- Verification evidence: snapshot, screenshot, keyboard order, no unexpected transition in screencast.
|
|
20
|
+
- Failure signals: hidden state changes, focus jumps, or fake smoothness from delayed updates.
|
|
21
|
+
|
|
22
|
+
### Pattern 02 - Opacity Fade
|
|
23
|
+
- Use case: low-attention reveal, disabled state, or image load transition.
|
|
24
|
+
- Avoid case: spatial continuity or route change where object location matters.
|
|
25
|
+
- User value: softens appearance without changing layout.
|
|
26
|
+
- Implementation primitives: CSS transition, CSS keyframes, WAAPI, Motion for React opacity.
|
|
27
|
+
- Reduced-motion fallback: shorter fade or instant opacity change.
|
|
28
|
+
- Device posture: safe across phones, tablets, desktops, and high-refresh displays.
|
|
29
|
+
- Verification evidence: screenshot before and after plus debug trace for console stability.
|
|
30
|
+
- Failure signals: invisible focus target, text fade that delays reading, or repeated flashing.
|
|
31
|
+
|
|
32
|
+
### Pattern 03 - Fade-through
|
|
33
|
+
- Use case: replacing unrelated content in the same region.
|
|
34
|
+
- Avoid case: related elements that need shared identity.
|
|
35
|
+
- User value: communicates state replacement without implying travel.
|
|
36
|
+
- Implementation primitives: opacity out, small hold, opacity in, optional `content-visibility`.
|
|
37
|
+
- Reduced-motion fallback: instant swap with stable focus.
|
|
38
|
+
- Device posture: safe on mobile when duration is short.
|
|
39
|
+
- Verification evidence: screencast and snapshot after replacement.
|
|
40
|
+
- Failure signals: blank gap too long, focus loss, or user cannot tell what changed.
|
|
41
|
+
|
|
42
|
+
### Pattern 04 - Crossfade
|
|
43
|
+
- Use case: image, media, or theme changes where both states occupy the same plane.
|
|
44
|
+
- Avoid case: content with separate reading order or interactive controls.
|
|
45
|
+
- User value: preserves visual continuity.
|
|
46
|
+
- Implementation primitives: stacked elements, opacity interpolation, View Transition API.
|
|
47
|
+
- Reduced-motion fallback: instant swap or minimal opacity.
|
|
48
|
+
- Device posture: avoid heavy media crossfades on low-power mobile.
|
|
49
|
+
- Verification evidence: screencast plus console/network poll.
|
|
50
|
+
- Failure signals: double readable text, pointer events on hidden layer, memory leak.
|
|
51
|
+
|
|
52
|
+
### Pattern 05 - Scale Fade
|
|
53
|
+
- Use case: menus, contextual controls, and small confirmations.
|
|
54
|
+
- Avoid case: large panels on phones or dense text blocks.
|
|
55
|
+
- User value: suggests local emergence.
|
|
56
|
+
- Implementation primitives: transform scale plus opacity, transform origin.
|
|
57
|
+
- Reduced-motion fallback: opacity-only or instant.
|
|
58
|
+
- Device posture: scale distance must be smaller on phones and short viewports.
|
|
59
|
+
- Verification evidence: screenshot at open state and keyboard focus check.
|
|
60
|
+
- Failure signals: blurred text, layout shift, or focus appears before visible control.
|
|
61
|
+
|
|
62
|
+
### Pattern 06 - Slide
|
|
63
|
+
- Use case: directional navigation, drawers, and page panels.
|
|
64
|
+
- Avoid case: long-distance mobile travel without clear origin.
|
|
65
|
+
- User value: communicates direction and containment.
|
|
66
|
+
- Implementation primitives: transform translate, View Transition API, platform navigation transitions.
|
|
67
|
+
- Reduced-motion fallback: instant or short opacity swap with preserved focus.
|
|
68
|
+
- Device posture: reduce distance on phones, allow larger travel on tablets and desktops.
|
|
69
|
+
- Verification evidence: screencast-start, interaction, screencast-stop, screenshot.
|
|
70
|
+
- Failure signals: horizontal overflow, scroll lock bug, or content moves opposite intent.
|
|
71
|
+
|
|
72
|
+
### Pattern 07 - Shared Element Transition
|
|
73
|
+
- Use case: card to detail, thumbnail to viewer, item to editor.
|
|
74
|
+
- Avoid case: unrelated objects or elements without stable identity.
|
|
75
|
+
- User value: preserves object continuity across route or state.
|
|
76
|
+
- Implementation primitives: View Transition API, FLIP, platform shared-element APIs.
|
|
77
|
+
- Reduced-motion fallback: fade-through with stable object label.
|
|
78
|
+
- Device posture: simplify on mobile and short viewports.
|
|
79
|
+
- Verification evidence: browser replay, snapshot before and after, debug-trace-snapshot.
|
|
80
|
+
- Failure signals: wrong element identity, flicker, clipped content, or focus detour.
|
|
81
|
+
|
|
82
|
+
### Pattern 08 - FLIP Layout Transition
|
|
83
|
+
- Use case: responsive rearrangement, filter changes, layout toggles.
|
|
84
|
+
- Avoid case: constantly changing lists without stable keys.
|
|
85
|
+
- User value: makes layout change comprehensible.
|
|
86
|
+
- Implementation primitives: measure first and last boxes, invert transform, play transform.
|
|
87
|
+
- Reduced-motion fallback: instant layout with optional opacity.
|
|
88
|
+
- Device posture: skip complex FLIP on low-power devices or very long lists.
|
|
89
|
+
- Verification evidence: screencast plus no layout shift after settle.
|
|
90
|
+
- Failure signals: index-keyed items, stale measurements, layout thrash.
|
|
91
|
+
|
|
92
|
+
### Pattern 09 - List Reordering
|
|
93
|
+
- Use case: drag sorting, priority changes, grouped filters.
|
|
94
|
+
- Avoid case: live data streams with unstable identity.
|
|
95
|
+
- User value: shows where the item moved.
|
|
96
|
+
- Implementation primitives: stable keys, FLIP, transform, drag overlay.
|
|
97
|
+
- Reduced-motion fallback: instant order update plus text announcement when needed.
|
|
98
|
+
- Device posture: touch targets and drag thresholds increase on phones.
|
|
99
|
+
- Verification evidence: pointer drag, snapshot order, screen-reader announcement check where relevant.
|
|
100
|
+
- Failure signals: item teleport, wrong item moves, focus lost after reorder.
|
|
101
|
+
|
|
102
|
+
### Pattern 10 - Staggered Reveal
|
|
103
|
+
- Use case: progressive disclosure of sibling content.
|
|
104
|
+
- Avoid case: long lists, dense dashboards, or critical data.
|
|
105
|
+
- User value: creates scan order and hierarchy.
|
|
106
|
+
- Implementation primitives: delay tokens, CSS custom properties, WAAPI, Motion for React variants.
|
|
107
|
+
- Reduced-motion fallback: all items visible immediately or opacity-only group reveal.
|
|
108
|
+
- Device posture: lower count and shorter delay on phones.
|
|
109
|
+
- Verification evidence: screencast and snapshot after all items settle.
|
|
110
|
+
- Failure signals: content blocked by choreography or keyboard order mismatches visual order.
|
|
111
|
+
|
|
112
|
+
### Pattern 11 - Choreographed Sequence
|
|
113
|
+
- Use case: hero introduction, onboarding, product explanation.
|
|
114
|
+
- Avoid case: repeated task flows.
|
|
115
|
+
- User value: tells a short visual story.
|
|
116
|
+
- Implementation primitives: timeline, named phases, stagger, easing, WAAPI, GSAP, Motion for React.
|
|
117
|
+
- Reduced-motion fallback: static final composition with optional instant phase labels.
|
|
118
|
+
- Device posture: cap duration on mobile and short viewports.
|
|
119
|
+
- Verification evidence: full browser replay, screenshots at start and end, console stability.
|
|
120
|
+
- Failure signals: skip impossible, content unreadable, or competing timelines.
|
|
121
|
+
|
|
122
|
+
### Pattern 12 - Transition Hierarchy
|
|
123
|
+
- Use case: nested state changes where parent and child both update.
|
|
124
|
+
- Avoid case: independent updates with no semantic relationship.
|
|
125
|
+
- User value: clarifies what changed first and why.
|
|
126
|
+
- Implementation primitives: parent timeline, child offsets, route transition boundaries.
|
|
127
|
+
- Reduced-motion fallback: parent state updates first, child state appears statically.
|
|
128
|
+
- Device posture: keep hierarchy but reduce travel on small screens.
|
|
129
|
+
- Verification evidence: screencast and debug trace.
|
|
130
|
+
- Failure signals: children animate before parent context exists.
|
|
131
|
+
|
|
132
|
+
### Pattern 13 - Progressive Disclosure
|
|
133
|
+
- Use case: accordions, filters, advanced settings, expandable content.
|
|
134
|
+
- Avoid case: hiding required primary content.
|
|
135
|
+
- User value: reveals complexity on demand.
|
|
136
|
+
- Implementation primitives: height auto avoidance, transform, clip-path with care, content visibility.
|
|
137
|
+
- Reduced-motion fallback: instant expand with focus placed after trigger.
|
|
138
|
+
- Device posture: avoid large vertical jumps on phones and short viewports.
|
|
139
|
+
- Verification evidence: snapshot after open, keyboard order, screenshot.
|
|
140
|
+
- Failure signals: focus trap, scroll jump, or text clipped after animation.
|
|
141
|
+
|
|
142
|
+
### Pattern 14 - Modal Motion
|
|
143
|
+
- Use case: interruptive task or confirmation.
|
|
144
|
+
- Avoid case: non-blocking information.
|
|
145
|
+
- User value: separates modal task from page context.
|
|
146
|
+
- Implementation primitives: backdrop opacity, dialog scale/translate, focus trap.
|
|
147
|
+
- Reduced-motion fallback: instant modal with focus moved to heading.
|
|
148
|
+
- Device posture: phone modal often becomes sheet or full-screen.
|
|
149
|
+
- Verification evidence: screenshot, keyboard loop, reduced-motion check.
|
|
150
|
+
- Failure signals: background remains interactive, focus appears before modal, or escape fails.
|
|
151
|
+
|
|
152
|
+
### Pattern 15 - Sheet Motion
|
|
153
|
+
- Use case: mobile action panels, filters, detail panels.
|
|
154
|
+
- Avoid case: desktop-only popovers with precise pointer anchor.
|
|
155
|
+
- User value: implies anchored temporary surface.
|
|
156
|
+
- Implementation primitives: translateY, drag handle, snap points, inertial release.
|
|
157
|
+
- Reduced-motion fallback: instant sheet or full-screen transition.
|
|
158
|
+
- Device posture: primary on phones; use side sheet or popover on tablet and desktop.
|
|
159
|
+
- Verification evidence: pointer drag, snapshot, screencast.
|
|
160
|
+
- Failure signals: scroll conflict, trapped content, or no escape path.
|
|
161
|
+
|
|
162
|
+
### Pattern 16 - Popover Motion
|
|
163
|
+
- Use case: anchored tips, menus, quick controls.
|
|
164
|
+
- Avoid case: complex workflows or large content.
|
|
165
|
+
- User value: preserves local context.
|
|
166
|
+
- Implementation primitives: opacity, scale, transform origin, collision-aware placement.
|
|
167
|
+
- Reduced-motion fallback: instant appearance.
|
|
168
|
+
- Device posture: convert to sheet on small touch devices when target is cramped.
|
|
169
|
+
- Verification evidence: screenshot at anchors, keyboard navigation.
|
|
170
|
+
- Failure signals: clipped popover, hover-only access, or focus order mismatch.
|
|
171
|
+
|
|
172
|
+
### Pattern 17 - Toast Motion
|
|
173
|
+
- Use case: non-blocking status after an action.
|
|
174
|
+
- Avoid case: critical errors requiring decision.
|
|
175
|
+
- User value: confirms action without stealing context.
|
|
176
|
+
- Implementation primitives: translate, opacity, timer, pause on hover/focus.
|
|
177
|
+
- Reduced-motion fallback: instant placement with same timeout rules.
|
|
178
|
+
- Device posture: avoid covering mobile navigation or primary actions.
|
|
179
|
+
- Verification evidence: screenshot, timing check, reduced-motion check.
|
|
180
|
+
- Failure signals: hidden focus, unpausable message, or repeated stack overflow.
|
|
181
|
+
|
|
182
|
+
### Pattern 18 - Skeleton Shimmer
|
|
183
|
+
- Use case: predictable loading structure.
|
|
184
|
+
- Avoid case: unknown layout, long waits, or reduced-motion contexts.
|
|
185
|
+
- User value: preserves layout while data arrives.
|
|
186
|
+
- Implementation primitives: static skeleton, gradient animation, CSS keyframes.
|
|
187
|
+
- Reduced-motion fallback: static skeleton or progress text.
|
|
188
|
+
- Device posture: prefer static skeleton on reduced-power mobile.
|
|
189
|
+
- Verification evidence: screenshot loading and loaded states.
|
|
190
|
+
- Failure signals: fake progress, shimmer never stops, or layout shifts after load.
|
|
191
|
+
|
|
192
|
+
### Pattern 19 - Progress Morph
|
|
193
|
+
- Use case: upload, generation, installation, checkout.
|
|
194
|
+
- Avoid case: unknown progress disguised as precision.
|
|
195
|
+
- User value: connects pending state to completion.
|
|
196
|
+
- Implementation primitives: determinate progress, path morph, width transform, state labels.
|
|
197
|
+
- Reduced-motion fallback: static steps or determinate text.
|
|
198
|
+
- Device posture: keep labels visible on phones.
|
|
199
|
+
- Verification evidence: screencast through progress and final state.
|
|
200
|
+
- Failure signals: fake progress, no failure state, or completion hidden.
|
|
201
|
+
|
|
202
|
+
### Pattern 20 - Pull-to-refresh Elasticity
|
|
203
|
+
- Use case: touch-first refresh gesture.
|
|
204
|
+
- Avoid case: desktop, keyboard-only, or pages with native refresh expectations.
|
|
205
|
+
- User value: gives direct-manipulation feedback.
|
|
206
|
+
- Implementation primitives: gesture threshold, transform, spring settle, haptic cue.
|
|
207
|
+
- Reduced-motion fallback: static refresh button.
|
|
208
|
+
- Device posture: phone and tablet touch only.
|
|
209
|
+
- Verification evidence: touch/pointer drag sequence and snapshot after refresh.
|
|
210
|
+
- Failure signals: accidental refresh, scroll conflict, or haptic spam.
|
|
211
|
+
|
|
212
|
+
### Pattern 21 - Swipe-to-dismiss
|
|
213
|
+
- Use case: dismiss cards, notifications, queued items.
|
|
214
|
+
- Avoid case: destructive actions without undo.
|
|
215
|
+
- User value: makes dismissal direct and fast.
|
|
216
|
+
- Implementation primitives: horizontal drag, threshold, velocity, undo state.
|
|
217
|
+
- Reduced-motion fallback: button-based dismiss with instant removal.
|
|
218
|
+
- Device posture: touch primary; keyboard and buttons required.
|
|
219
|
+
- Verification evidence: pointer drag, undo check, screenshot.
|
|
220
|
+
- Failure signals: no undo, accidental removal, or keyboard inaccessible.
|
|
221
|
+
|
|
222
|
+
### Pattern 22 - Drag/Reorder Coupling
|
|
223
|
+
- Use case: sortable boards, queues, playlists.
|
|
224
|
+
- Avoid case: dense content without stable handles.
|
|
225
|
+
- User value: item follows input and list responds.
|
|
226
|
+
- Implementation primitives: pointer capture, transform overlay, collision model, FLIP siblings.
|
|
227
|
+
- Reduced-motion fallback: explicit move up/down controls.
|
|
228
|
+
- Device posture: larger handles on coarse pointers.
|
|
229
|
+
- Verification evidence: pointer sequence, snapshot order, debug trace.
|
|
230
|
+
- Failure signals: scroll fights drag, item drops in wrong slot, or focus disappears.
|
|
231
|
+
|
|
232
|
+
### Pattern 23 - Inertia
|
|
233
|
+
- Use case: flingable carousels, maps, physics-like panels.
|
|
234
|
+
- Avoid case: precision tasks and reduced-motion users.
|
|
235
|
+
- User value: preserves momentum from input.
|
|
236
|
+
- Implementation primitives: velocity capture, decay, bounds, snap points.
|
|
237
|
+
- Reduced-motion fallback: snap immediately to nearest stable state.
|
|
238
|
+
- Device posture: touch and trackpad contexts only.
|
|
239
|
+
- Verification evidence: screencast of release and settle.
|
|
240
|
+
- Failure signals: unbounded movement, overscroll conflict, or hard-to-stop motion.
|
|
241
|
+
|
|
242
|
+
### Pattern 24 - Spring Settle
|
|
243
|
+
- Use case: panels, toggles, chips, drag release, shared elements.
|
|
244
|
+
- Avoid case: dense text or long lists where bounce distracts.
|
|
245
|
+
- User value: makes state changes feel responsive.
|
|
246
|
+
- Implementation primitives: spring tokens, damping, stiffness, mass.
|
|
247
|
+
- Reduced-motion fallback: critically damped short transition or instant.
|
|
248
|
+
- Device posture: smaller displacement on phones.
|
|
249
|
+
- Verification evidence: browser replay and no oscillation after settle.
|
|
250
|
+
- Failure signals: rubbery interface, endless bounce, or inconsistent tokens.
|
|
251
|
+
|
|
252
|
+
### Pattern 25 - Overshoot
|
|
253
|
+
- Use case: playful confirmation, snap point arrival, brand moment.
|
|
254
|
+
- Avoid case: critical, medical, financial, or destructive flows.
|
|
255
|
+
- User value: adds emphasis and physicality.
|
|
256
|
+
- Implementation primitives: easing curve, spring, keyframe beyond target.
|
|
257
|
+
- Reduced-motion fallback: no overshoot.
|
|
258
|
+
- Device posture: minimize on mobile and reduced-power devices.
|
|
259
|
+
- Verification evidence: screencast and final alignment screenshot.
|
|
260
|
+
- Failure signals: target misalignment, motion sickness, or childish tone mismatch.
|
|
261
|
+
|
|
262
|
+
### Pattern 26 - Anticipation
|
|
263
|
+
- Use case: button to panel, card expansion, drag pickup.
|
|
264
|
+
- Avoid case: immediate safety or emergency actions.
|
|
265
|
+
- User value: prepares the user for direction or scale.
|
|
266
|
+
- Implementation primitives: small pre-motion transform, phase timeline.
|
|
267
|
+
- Reduced-motion fallback: omit anticipation and show final state.
|
|
268
|
+
- Device posture: very short on phones.
|
|
269
|
+
- Verification evidence: screencast at normal speed.
|
|
270
|
+
- Failure signals: action feels delayed or reverse motion confuses.
|
|
271
|
+
|
|
272
|
+
### Pattern 27 - Follow-through
|
|
273
|
+
- Use case: physical objects, cards, icons, drag release.
|
|
274
|
+
- Avoid case: static enterprise data grids.
|
|
275
|
+
- User value: makes stop feel natural.
|
|
276
|
+
- Implementation primitives: secondary delayed movement, spring tail.
|
|
277
|
+
- Reduced-motion fallback: remove tail motion.
|
|
278
|
+
- Device posture: limit duration and amplitude on small screens.
|
|
279
|
+
- Verification evidence: screencast and final-state screenshot.
|
|
280
|
+
- Failure signals: content keeps moving while user tries next action.
|
|
281
|
+
|
|
282
|
+
### Pattern 28 - Interruptibility And Retargeting
|
|
283
|
+
- Use case: rapidly changing search, tabs, gestures, route transitions.
|
|
284
|
+
- Avoid case: irreversible submit flows.
|
|
285
|
+
- User value: keeps UI responsive to current intent.
|
|
286
|
+
- Implementation primitives: cancellable animations, active animation retarget, `document.getAnimations()`, framework controls.
|
|
287
|
+
- Reduced-motion fallback: instant retarget to current state.
|
|
288
|
+
- Device posture: required on touch and keyboard-heavy workflows.
|
|
289
|
+
- Verification evidence: rapid repeat interaction screencast.
|
|
290
|
+
- Failure signals: stale animation wins, wrong final state, or input ignored.
|
|
291
|
+
|
|
292
|
+
### Pattern 29 - Hover/Focus Microinteraction
|
|
293
|
+
- Use case: affordance, focus state, control grouping.
|
|
294
|
+
- Avoid case: hover-only disclosure or mobile-only surfaces.
|
|
295
|
+
- User value: confirms interactivity.
|
|
296
|
+
- Implementation primitives: CSS transition, focus-visible, transform/opacity/color.
|
|
297
|
+
- Reduced-motion fallback: static focus and color change.
|
|
298
|
+
- Device posture: hover for fine pointer; focus and press for coarse or keyboard.
|
|
299
|
+
- Verification evidence: hover, focus, keyboard screenshot.
|
|
300
|
+
- Failure signals: invisible focus, touch has no equivalent, or text shifts.
|
|
301
|
+
|
|
302
|
+
### Pattern 30 - Press/Tap Feedback
|
|
303
|
+
- Use case: buttons, chips, toggles, cards with actions.
|
|
304
|
+
- Avoid case: passive content or disabled controls.
|
|
305
|
+
- User value: confirms input was received.
|
|
306
|
+
- Implementation primitives: active scale, opacity, color, haptic where native.
|
|
307
|
+
- Reduced-motion fallback: color or state label only.
|
|
308
|
+
- Device posture: critical on touch; subtle on desktop.
|
|
309
|
+
- Verification evidence: interaction screencast and state snapshot.
|
|
310
|
+
- Failure signals: feedback appears after action completes or causes layout shift.
|
|
311
|
+
|
|
312
|
+
### Pattern 31 - Haptic-synchronized Motion
|
|
313
|
+
- Use case: native mobile confirmation, snap, selection, threshold crossing.
|
|
314
|
+
- Avoid case: web-only experiences without haptic API certainty or repeated loops.
|
|
315
|
+
- User value: reinforces tactile state.
|
|
316
|
+
- Implementation primitives: platform haptics, vibration API only when appropriate, synchronized visual state.
|
|
317
|
+
- Reduced-motion fallback: keep haptic optional and never required.
|
|
318
|
+
- Device posture: native phone and tablet only by default.
|
|
319
|
+
- Verification evidence: platform test notes plus visual screencast.
|
|
320
|
+
- Failure signals: haptic spam, inaccessible feedback, or mismatch with visual state.
|
|
321
|
+
|
|
322
|
+
### Pattern 32 - Scroll Reveal
|
|
323
|
+
- Use case: narrative landing pages and progressive section entry.
|
|
324
|
+
- Avoid case: essential content that must be immediately available.
|
|
325
|
+
- User value: guides reading order.
|
|
326
|
+
- Implementation primitives: IntersectionObserver, CSS view timelines, Motion for React scroll, GSAP ScrollTrigger when approved.
|
|
327
|
+
- Reduced-motion fallback: static content in reading order.
|
|
328
|
+
- Device posture: reduce distance and count on phones.
|
|
329
|
+
- Verification evidence: scroll screencast, snapshot after reveal, reduced-motion check.
|
|
330
|
+
- Failure signals: content hidden from keyboard or screen readers.
|
|
331
|
+
|
|
332
|
+
### Pattern 33 - Parallax
|
|
333
|
+
- Use case: spatial depth in brand or editorial surfaces.
|
|
334
|
+
- Avoid case: task flows, mobile default, or vestibular-risk contexts.
|
|
335
|
+
- User value: adds depth when background and foreground relationship matters.
|
|
336
|
+
- Implementation primitives: transform based on scroll progress, CSS perspective, WebGL where approved.
|
|
337
|
+
- Reduced-motion fallback: static layers.
|
|
338
|
+
- Device posture: off by default on mobile and short viewports.
|
|
339
|
+
- Verification evidence: screencast plus reduced-motion proof.
|
|
340
|
+
- Failure signals: nausea risk, jank, or text readability loss.
|
|
341
|
+
|
|
342
|
+
### Pattern 34 - Pinned Scroll Stage
|
|
343
|
+
- Use case: controlled product story with explicit stages.
|
|
344
|
+
- Avoid case: short viewports, keyboard-heavy content, or dense tasks.
|
|
345
|
+
- User value: aligns text and visual explanation.
|
|
346
|
+
- Implementation primitives: sticky layout, stage index, scroll progress, snap exits.
|
|
347
|
+
- Reduced-motion fallback: unpinned stacked sections.
|
|
348
|
+
- Device posture: avoid or simplify on phones and short viewports.
|
|
349
|
+
- Verification evidence: full scroll replay, keyboard order, escape condition.
|
|
350
|
+
- Failure signals: scroll trap, hidden content, or no exit.
|
|
351
|
+
|
|
352
|
+
### Pattern 35 - Scroll Snap
|
|
353
|
+
- Use case: carousels, panels, steps, media galleries.
|
|
354
|
+
- Avoid case: pages where free reading scroll matters.
|
|
355
|
+
- User value: lands content predictably.
|
|
356
|
+
- Implementation primitives: CSS scroll-snap, snap points, focus management.
|
|
357
|
+
- Reduced-motion fallback: preserve snap if it does not animate travel, otherwise static links.
|
|
358
|
+
- Device posture: useful on touch with clear navigation.
|
|
359
|
+
- Verification evidence: pointer/scroll sequence and snapshot at snap point.
|
|
360
|
+
- Failure signals: impossible partial reading, focus misalignment, or accidental snap.
|
|
361
|
+
|
|
362
|
+
### Pattern 36 - Text/Count Transition
|
|
363
|
+
- Use case: counters, metrics, filter totals, time-sensitive labels.
|
|
364
|
+
- Avoid case: critical exact numbers where animation delays comprehension.
|
|
365
|
+
- User value: indicates value changed.
|
|
366
|
+
- Implementation primitives: number interpolation, opacity swap, accessible text updates.
|
|
367
|
+
- Reduced-motion fallback: instant value update.
|
|
368
|
+
- Device posture: keep short on all devices.
|
|
369
|
+
- Verification evidence: before/after snapshot and screen-reader note where relevant.
|
|
370
|
+
- Failure signals: fake precision, stale ARIA, or unreadable rolling digits.
|
|
371
|
+
|
|
372
|
+
### Pattern 37 - SVG Path Draw
|
|
373
|
+
- Use case: diagrams, icons, process illustrations.
|
|
374
|
+
- Avoid case: repeated core interactions.
|
|
375
|
+
- User value: explains construction or direction.
|
|
376
|
+
- Implementation primitives: stroke-dasharray, stroke-dashoffset, WAAPI, CSS keyframes.
|
|
377
|
+
- Reduced-motion fallback: final path visible.
|
|
378
|
+
- Device posture: safe when light; avoid heavy SVG on low-power devices.
|
|
379
|
+
- Verification evidence: screencast and final screenshot.
|
|
380
|
+
- Failure signals: path meaning lost without animation or excessive CPU.
|
|
381
|
+
|
|
382
|
+
### Pattern 38 - Icon Morph
|
|
383
|
+
- Use case: menu to close, play to pause, save to saved.
|
|
384
|
+
- Avoid case: unrelated icons or ambiguous state.
|
|
385
|
+
- User value: shows state continuity in a compact control.
|
|
386
|
+
- Implementation primitives: SVG morph, crossfade, path interpolation, Rive.
|
|
387
|
+
- Reduced-motion fallback: instant icon swap with label.
|
|
388
|
+
- Device posture: must remain readable at mobile sizes.
|
|
389
|
+
- Verification evidence: interaction screenshot and reduced-motion check.
|
|
390
|
+
- Failure signals: unrecognizable in-between state or no text alternative.
|
|
391
|
+
|
|
392
|
+
### Pattern 39 - Lottie/Rive Illustration
|
|
393
|
+
- Use case: empty states, onboarding, success illustrations, interactive diagrams.
|
|
394
|
+
- Avoid case: critical controls, heavy pages, or unapproved runtime dependency.
|
|
395
|
+
- User value: communicates mood or process.
|
|
396
|
+
- Implementation primitives: Lottie renderer, Rive state machine, asset cleanup.
|
|
397
|
+
- Reduced-motion fallback: static poster frame or non-looping still.
|
|
398
|
+
- Device posture: pause or simplify on low-power and reduced-motion contexts.
|
|
399
|
+
- Verification evidence: replay, memory/lifecycle cleanup check, screenshot poster fallback.
|
|
400
|
+
- Failure signals: endless loop, inaccessible information, or leaked runtime object.
|
|
401
|
+
|
|
402
|
+
### Pattern 40 - 3D Transform
|
|
403
|
+
- Use case: card depth, carousel, spatial cue.
|
|
404
|
+
- Avoid case: core text reading or precise data.
|
|
405
|
+
- User value: suggests layers and orientation.
|
|
406
|
+
- Implementation primitives: CSS transform, perspective, backface visibility.
|
|
407
|
+
- Reduced-motion fallback: flat 2D state.
|
|
408
|
+
- Device posture: subtle on mobile and disabled when readability suffers.
|
|
409
|
+
- Verification evidence: screenshot at desktop and mobile, reduced-motion proof.
|
|
410
|
+
- Failure signals: blurry text, z-index bugs, or pointer mismatch.
|
|
411
|
+
|
|
412
|
+
### Pattern 41 - WebGL/Spatial Motion
|
|
413
|
+
- Use case: product configurator, spatial simulation, high-end brand surface.
|
|
414
|
+
- Avoid case: ordinary layout flourish or unapproved runtime lane.
|
|
415
|
+
- User value: shows spatial relationships not possible in 2D.
|
|
416
|
+
- Implementation primitives: Three.js, react-three-fiber, WebGL, Spline export only when approved.
|
|
417
|
+
- Reduced-motion fallback: static render, poster, or 2D equivalent.
|
|
418
|
+
- Device posture: require lower fidelity path for phones and low-power devices.
|
|
419
|
+
- Verification evidence: browser replay, screenshot, debug trace, performance evidence.
|
|
420
|
+
- Failure signals: inaccessible canvas, missing cleanup, battery drain, or dependency surprise.
|
|
421
|
+
|
|
422
|
+
### Pattern 42 - Route View Transition
|
|
423
|
+
- Use case: SPA or MPA route changes where continuity aids orientation.
|
|
424
|
+
- Avoid case: unrelated routes or pages with unstable DOM identity.
|
|
425
|
+
- User value: reduces page change disorientation.
|
|
426
|
+
- Implementation primitives: View Transition API, router transition hooks, shared names.
|
|
427
|
+
- Reduced-motion fallback: normal route navigation with focus on heading.
|
|
428
|
+
- Device posture: keep short and avoid long travel on mobile.
|
|
429
|
+
- Verification evidence: route-change screencast, snapshot after navigation, focus check.
|
|
430
|
+
- Failure signals: wrong shared names, stale screenshot, or browser support not handled.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Motion Release Gate
|
|
2
|
+
|
|
3
|
+
Use this gate before shipping animation-heavy work.
|
|
4
|
+
|
|
5
|
+
## Blocking Checks
|
|
6
|
+
|
|
7
|
+
- Contract alignment: implementation matches `motion-contract.v1.json`.
|
|
8
|
+
- Pattern justification: every pattern maps to a user value.
|
|
9
|
+
- Reduced motion: `prefers-reduced-motion` path preserves meaning and task completion.
|
|
10
|
+
- Keyboard order: focus remains stable and visible.
|
|
11
|
+
- Viewport matrix: phone, tablet, desktop, short viewport, and reduced-motion checks pass.
|
|
12
|
+
- Temporal proof: `screencast-start` and `screencast-stop` evidence exists for timing-sensitive motion.
|
|
13
|
+
- Debug trace: `debug-trace-snapshot` shows no repo-owned motion defects.
|
|
14
|
+
- Console/network stability: no unexplained errors during the sequence.
|
|
15
|
+
- Performance: no jank, runaway loops, layout thrash, or uncontrolled render loops.
|
|
16
|
+
- Overflow: no horizontal overflow and no clipped required content.
|
|
17
|
+
- Focus traps: overlays, sheets, and pinned stages have exits.
|
|
18
|
+
- Library policy: no unapproved runtime dependency.
|
|
19
|
+
|
|
20
|
+
## Non-blocking Checks
|
|
21
|
+
|
|
22
|
+
- Fine-tune easing tokens when evidence is otherwise stable.
|
|
23
|
+
- Reduce decorative flourish if it does not affect comprehension.
|
|
24
|
+
- Improve brand-specific motion language after accessibility and performance pass.
|
|
25
|
+
|
|
26
|
+
## Release Decision
|
|
27
|
+
|
|
28
|
+
Record each check in `assets/templates/motion-release-gate.v1.json`. Missing evidence is a blocking failure.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Motion Terminology
|
|
2
|
+
|
|
3
|
+
Use precise motion vocabulary so implementation, review, and browser evidence match the same contract.
|
|
4
|
+
|
|
5
|
+
## Core Terms
|
|
6
|
+
|
|
7
|
+
- Duration: the active time for one animation segment.
|
|
8
|
+
- Delay: the time before a segment starts.
|
|
9
|
+
- Easing: the curve that maps elapsed time to progress.
|
|
10
|
+
- Spring: a physics model that settles based on stiffness, damping, and mass.
|
|
11
|
+
- Damping: resistance that reduces oscillation.
|
|
12
|
+
- Stiffness: spring force that increases return speed.
|
|
13
|
+
- Mass: simulated object weight that changes spring response.
|
|
14
|
+
- Keyframe: a named or timed value in an animation sequence.
|
|
15
|
+
- Timeline: the clock or progress source for one or more animations.
|
|
16
|
+
- Choreography: multiple animated elements coordinated by one intent.
|
|
17
|
+
- Stagger: ordered offsets across sibling elements.
|
|
18
|
+
- Interpolation: computed values between two states.
|
|
19
|
+
- Transform: compositor-friendly movement, scale, rotation, or skew.
|
|
20
|
+
- Opacity: compositor-friendly visibility change.
|
|
21
|
+
- Layout animation: transition between layout states, often requiring measurement.
|
|
22
|
+
- Shared element transition: continuity where one semantic object appears to move between containers.
|
|
23
|
+
- FLIP: First, Last, Invert, Play layout animation technique.
|
|
24
|
+
- Scroll progress: normalized progress based on scroll position.
|
|
25
|
+
- View progress: normalized progress based on an element entering or leaving the viewport.
|
|
26
|
+
- Gesture velocity: speed and direction from touch, pointer, or drag input.
|
|
27
|
+
- Inertia: continued movement after release based on velocity.
|
|
28
|
+
- Overshoot: controlled movement past the final value before settling.
|
|
29
|
+
- Anticipation: small preparatory movement that clarifies the next action.
|
|
30
|
+
- Follow-through: residual motion that makes a stop feel physical.
|
|
31
|
+
- Interruptibility: ability to stop or redirect motion during user input.
|
|
32
|
+
- Retargeting: redirecting an active animation toward a new target state.
|
|
33
|
+
- Reduced motion: alternate motion path selected by preference or accessibility need.
|
|
34
|
+
- Motion contract: documented intent, patterns, tokens, device posture, accessibility, performance, and evidence.
|
|
35
|
+
- Motion evidence: screenshots, snapshots, debug traces, screencasts, viewport checks, and reduced-motion proof.
|
|
36
|
+
- Frame budget: time available for each rendered frame.
|
|
37
|
+
- Input latency: delay between input and visible response.
|
|
38
|
+
- Compositing: browser layer composition without expensive layout or paint.
|
|
39
|
+
|
|
40
|
+
## Decorative Versus Meaning-bearing Motion
|
|
41
|
+
|
|
42
|
+
Decorative motion adds atmosphere but does not change comprehension. Meaning-bearing motion explains hierarchy, state, continuity, causality, gesture response, or task progress. Meaning-bearing motion must have an equivalent reduced-motion path.
|
|
43
|
+
|
|
44
|
+
## Motion Quality Rule
|
|
45
|
+
|
|
46
|
+
Motion must preserve hierarchy, comprehension, accessibility, and task flow. If it competes with reading, hides state, blocks input, or makes verification ambiguous, simplify it.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# OpenDevBrowser Motion Evidence
|
|
2
|
+
|
|
3
|
+
Motion cannot be accepted from code inspection alone. Use OpenDevBrowser to prove timing, continuity, scroll behavior, gesture response, reduced motion, and viewport posture on a real browser surface.
|
|
4
|
+
|
|
5
|
+
## Required Proof Commands
|
|
6
|
+
|
|
7
|
+
Use the snapshot to refs to actions model:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
opendevbrowser launch --no-extension --start-url <url> --output-format json
|
|
11
|
+
opendevbrowser snapshot --session-id <session-id>
|
|
12
|
+
opendevbrowser screenshot --session-id <session-id>
|
|
13
|
+
opendevbrowser debug-trace-snapshot --session-id <session-id>
|
|
14
|
+
opendevbrowser screencast-start --session-id <session-id> --output-dir <artifact-dir>
|
|
15
|
+
# perform click, pointer-drag, scroll, route, or keyboard interaction
|
|
16
|
+
opendevbrowser screencast-stop --session-id <session-id> --screencast-id <screencast-id>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Temporal Proof Requirements
|
|
20
|
+
|
|
21
|
+
Timing-sensitive choreography, route transitions, shared element transitions, scroll-driven stages, and gesture-coupled motion require browser replay evidence with `screencast-start` and `screencast-stop`.
|
|
22
|
+
|
|
23
|
+
## Viewport Matrix
|
|
24
|
+
|
|
25
|
+
Capture the viewport matrix with screenshot, snapshot, and relevant interaction proof across:
|
|
26
|
+
|
|
27
|
+
- phone portrait
|
|
28
|
+
- phone landscape
|
|
29
|
+
- tablet portrait
|
|
30
|
+
- tablet landscape
|
|
31
|
+
- laptop or desktop
|
|
32
|
+
- large monitor when supported
|
|
33
|
+
- short viewport
|
|
34
|
+
- reduced motion
|
|
35
|
+
- coarse pointer path when relevant
|
|
36
|
+
- keyboard-only path
|
|
37
|
+
|
|
38
|
+
## Reduced Motion Proof
|
|
39
|
+
|
|
40
|
+
Prove that `prefers-reduced-motion` preserves content and task completion. The reduced path should remove non-essential travel, parallax, pinning, loops, and overshoot.
|
|
41
|
+
|
|
42
|
+
## Canvas Preview
|
|
43
|
+
|
|
44
|
+
When the design-agent `/canvas` workflow is used, include `canvas.preview.render`, `canvas.feedback.poll`, and saved preview evidence in the motion audit.
|
|
45
|
+
|
|
46
|
+
## Stability Checks
|
|
47
|
+
|
|
48
|
+
Record console and network stability after the motion sequence. A motion implementation with runtime errors, unresolved network failures, focus traps, overflow, or hidden content does not pass release.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Performance And Frame Budget
|
|
2
|
+
|
|
3
|
+
Motion quality is measured in real browser behavior. If frame stability cannot be proven, simplify the motion.
|
|
4
|
+
|
|
5
|
+
## Budget Rules
|
|
6
|
+
|
|
7
|
+
- Prefer transform and opacity for high-frequency animation.
|
|
8
|
+
- Avoid animating layout and paint-heavy properties in hot paths.
|
|
9
|
+
- Use compositing intentionally; do not scatter `will-change` across many elements.
|
|
10
|
+
- Remove `will-change` after the interaction when possible.
|
|
11
|
+
- Keep scroll listeners passive and bounded; prefer platform scroll timelines or IntersectionObserver when suitable.
|
|
12
|
+
- Use `requestAnimationFrame` for visual reads and writes that must happen per frame.
|
|
13
|
+
- Separate layout reads from writes to avoid layout thrash.
|
|
14
|
+
- Protect INP and input latency during gesture and scroll motion.
|
|
15
|
+
- Validate dropped frames and high refresh behavior for complex choreography, scroll-driven stages, and gesture-coupled motion.
|
|
16
|
+
- Test realistic data volume, not empty lists.
|
|
17
|
+
- Check mobile thermal and battery impact for loops, WebGL, Lottie, Rive, and long timelines.
|
|
18
|
+
- Perform cleanup for animation handles, event listeners, render loops, media, and runtime objects.
|
|
19
|
+
- Do not introduce layout shift after animation settles.
|
|
20
|
+
- Do not introduce horizontal overflow at any breakpoint.
|
|
21
|
+
|
|
22
|
+
## Evidence Required Before Shipping Complex Motion
|
|
23
|
+
|
|
24
|
+
- browser replay for the motion sequence
|
|
25
|
+
- debug trace after the interaction
|
|
26
|
+
- console and network stability checks
|
|
27
|
+
- viewport matrix screenshots
|
|
28
|
+
- reduced-motion screenshots or replay
|
|
29
|
+
- performance notes for low-power mobile posture when relevant
|
|
30
|
+
|
|
31
|
+
## Simplification Ladder
|
|
32
|
+
|
|
33
|
+
1. Remove decorative loops.
|
|
34
|
+
2. Reduce number of simultaneously animated elements.
|
|
35
|
+
3. Replace layout animation with opacity or transform.
|
|
36
|
+
4. Remove parallax or pinning on mobile.
|
|
37
|
+
5. Replace custom timeline with platform transition.
|
|
38
|
+
6. Fall back to no-motion stability.
|