opendevbrowser 0.0.16 → 0.0.18
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 +201 -79
- package/dist/annotate/agent-inbox-store.d.ts +58 -0
- package/dist/annotate/agent-inbox-store.d.ts.map +1 -0
- package/dist/annotate/agent-inbox.d.ts +25 -0
- package/dist/annotate/agent-inbox.d.ts.map +1 -0
- package/dist/annotate/direct-annotator.d.ts.map +1 -1
- package/dist/annotate/timeout-messages.d.ts +4 -0
- package/dist/annotate/timeout-messages.d.ts.map +1 -0
- package/dist/automation/coordinator.d.ts +55 -0
- package/dist/automation/coordinator.d.ts.map +1 -0
- package/dist/browser/annotation-manager.d.ts +7 -1
- package/dist/browser/annotation-manager.d.ts.map +1 -1
- package/dist/browser/browser-manager.d.ts +153 -48
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/canvas-client.d.ts +54 -0
- package/dist/browser/canvas-client.d.ts.map +1 -0
- package/dist/browser/canvas-code-sync-manager.d.ts +87 -0
- package/dist/browser/canvas-code-sync-manager.d.ts.map +1 -0
- package/dist/browser/canvas-manager.d.ts +122 -0
- package/dist/browser/canvas-manager.d.ts.map +1 -0
- package/dist/browser/canvas-runtime-preview-bridge.d.ts +20 -0
- package/dist/browser/canvas-runtime-preview-bridge.d.ts.map +1 -0
- package/dist/browser/canvas-session-sync-manager.d.ts +21 -0
- package/dist/browser/canvas-session-sync-manager.d.ts.map +1 -0
- package/dist/browser/global-challenge-coordinator.d.ts +27 -0
- package/dist/browser/global-challenge-coordinator.d.ts.map +1 -0
- package/dist/browser/manager-types.d.ts +179 -1
- package/dist/browser/manager-types.d.ts.map +1 -1
- package/dist/browser/ops-browser-manager.d.ts +114 -4
- package/dist/browser/ops-browser-manager.d.ts.map +1 -1
- package/dist/browser/ops-client.d.ts +17 -1
- package/dist/browser/ops-client.d.ts.map +1 -1
- package/dist/browser/playwright-runtime.d.ts +4 -0
- package/dist/browser/playwright-runtime.d.ts.map +1 -0
- package/dist/browser/review-surface.d.ts +9 -0
- package/dist/browser/review-surface.d.ts.map +1 -0
- package/dist/browser/screencast-recorder.d.ts +57 -0
- package/dist/browser/screencast-recorder.d.ts.map +1 -0
- package/dist/browser/session-inspector.d.ts +71 -0
- package/dist/browser/session-inspector.d.ts.map +1 -0
- package/dist/browser/session-store.d.ts +5 -1
- package/dist/browser/session-store.d.ts.map +1 -1
- package/dist/browser/system-chrome-cookies.d.ts +46 -0
- package/dist/browser/system-chrome-cookies.d.ts.map +1 -0
- package/dist/browser/target-manager.d.ts +1 -0
- package/dist/browser/target-manager.d.ts.map +1 -1
- package/dist/cache/chrome-locator.d.ts.map +1 -1
- package/dist/cache/chrome-user-data.d.ts +17 -0
- package/dist/cache/chrome-user-data.d.ts.map +1 -0
- package/dist/canvas/adapter-plugins/loader.d.ts +13 -0
- package/dist/canvas/adapter-plugins/loader.d.ts.map +1 -0
- package/dist/canvas/adapter-plugins/manifest.d.ts +146 -0
- package/dist/canvas/adapter-plugins/manifest.d.ts.map +1 -0
- package/dist/canvas/adapter-plugins/types.d.ts +83 -0
- package/dist/canvas/adapter-plugins/types.d.ts.map +1 -0
- package/dist/canvas/adapter-plugins/validator.d.ts +10 -0
- package/dist/canvas/adapter-plugins/validator.d.ts.map +1 -0
- package/dist/canvas/code-sync/apply-tsx.d.ts +25 -0
- package/dist/canvas/code-sync/apply-tsx.d.ts.map +1 -0
- package/dist/canvas/code-sync/graph.d.ts +5 -0
- package/dist/canvas/code-sync/graph.d.ts.map +1 -0
- package/dist/canvas/code-sync/hash.d.ts +3 -0
- package/dist/canvas/code-sync/hash.d.ts.map +1 -0
- package/dist/canvas/code-sync/import.d.ts +19 -0
- package/dist/canvas/code-sync/import.d.ts.map +1 -0
- package/dist/canvas/code-sync/manifest.d.ts +6 -0
- package/dist/canvas/code-sync/manifest.d.ts.map +1 -0
- package/dist/canvas/code-sync/tsx-adapter.d.ts +8 -0
- package/dist/canvas/code-sync/tsx-adapter.d.ts.map +1 -0
- package/dist/canvas/code-sync/types.d.ts +244 -0
- package/dist/canvas/code-sync/types.d.ts.map +1 -0
- package/dist/canvas/code-sync/write.d.ts +9 -0
- package/dist/canvas/code-sync/write.d.ts.map +1 -0
- package/dist/canvas/document-store.d.ts +91 -0
- package/dist/canvas/document-store.d.ts.map +1 -0
- package/dist/canvas/export.d.ts +12 -0
- package/dist/canvas/export.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/custom-elements-v1.d.ts +3 -0
- package/dist/canvas/framework-adapters/custom-elements-v1.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/html-static-v1.d.ts +3 -0
- package/dist/canvas/framework-adapters/html-static-v1.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/markup.d.ts +9 -0
- package/dist/canvas/framework-adapters/markup.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/react-tsx-v2.d.ts +3 -0
- package/dist/canvas/framework-adapters/react-tsx-v2.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/registry.d.ts +12 -0
- package/dist/canvas/framework-adapters/registry.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/svelte-sfc-v1.d.ts +3 -0
- package/dist/canvas/framework-adapters/svelte-sfc-v1.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/types.d.ts +57 -0
- package/dist/canvas/framework-adapters/types.d.ts.map +1 -0
- package/dist/canvas/framework-adapters/vue-sfc-v1.d.ts +3 -0
- package/dist/canvas/framework-adapters/vue-sfc-v1.d.ts.map +1 -0
- package/dist/canvas/kits/catalog.d.ts +5 -0
- package/dist/canvas/kits/catalog.d.ts.map +1 -0
- package/dist/canvas/library-adapters/react/index.d.ts +3 -0
- package/dist/canvas/library-adapters/react/index.d.ts.map +1 -0
- package/dist/canvas/library-adapters/registry.d.ts +11 -0
- package/dist/canvas/library-adapters/registry.d.ts.map +1 -0
- package/dist/canvas/library-adapters/types.d.ts +43 -0
- package/dist/canvas/library-adapters/types.d.ts.map +1 -0
- package/dist/canvas/repo-store.d.ts +12 -0
- package/dist/canvas/repo-store.d.ts.map +1 -0
- package/dist/canvas/starters/catalog.d.ts +34 -0
- package/dist/canvas/starters/catalog.d.ts.map +1 -0
- package/dist/canvas/surface-palette.d.ts +15 -0
- package/dist/canvas/surface-palette.d.ts.map +1 -0
- package/dist/canvas/token-references.d.ts +22 -0
- package/dist/canvas/token-references.d.ts.map +1 -0
- package/dist/canvas/types.d.ts +594 -0
- package/dist/canvas/types.d.ts.map +1 -0
- package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js +7 -0
- package/dist/canvas-runtime-preview-bridge-HBEHXM4T.js.map +1 -0
- package/dist/challenges/action-loop.d.ts +13 -0
- package/dist/challenges/action-loop.d.ts.map +1 -0
- package/dist/challenges/capability-matrix.d.ts +3 -0
- package/dist/challenges/capability-matrix.d.ts.map +1 -0
- package/dist/challenges/evidence-bundle.d.ts +48 -0
- package/dist/challenges/evidence-bundle.d.ts.map +1 -0
- package/dist/challenges/governed-adapter-gateway.d.ts +4 -0
- package/dist/challenges/governed-adapter-gateway.d.ts.map +1 -0
- package/dist/challenges/human-yield-gate.d.ts +20 -0
- package/dist/challenges/human-yield-gate.d.ts.map +1 -0
- package/dist/challenges/index.d.ts +15 -0
- package/dist/challenges/index.d.ts.map +1 -0
- package/dist/challenges/interpreter.d.ts +3 -0
- package/dist/challenges/interpreter.d.ts.map +1 -0
- package/dist/challenges/optional-computer-use-bridge.d.ts +9 -0
- package/dist/challenges/optional-computer-use-bridge.d.ts.map +1 -0
- package/dist/challenges/orchestrator.d.ts +32 -0
- package/dist/challenges/orchestrator.d.ts.map +1 -0
- package/dist/challenges/outcome-recorder.d.ts +8 -0
- package/dist/challenges/outcome-recorder.d.ts.map +1 -0
- package/dist/challenges/owned-environment-lane.d.ts +3 -0
- package/dist/challenges/owned-environment-lane.d.ts.map +1 -0
- package/dist/challenges/policy-gate.d.ts +9 -0
- package/dist/challenges/policy-gate.d.ts.map +1 -0
- package/dist/challenges/sanctioned-identity-lane.d.ts +3 -0
- package/dist/challenges/sanctioned-identity-lane.d.ts.map +1 -0
- package/dist/challenges/service-adapter-lane.d.ts +3 -0
- package/dist/challenges/service-adapter-lane.d.ts.map +1 -0
- package/dist/challenges/strategy-selector.d.ts +10 -0
- package/dist/challenges/strategy-selector.d.ts.map +1 -0
- package/dist/challenges/types.d.ts +277 -0
- package/dist/challenges/types.d.ts.map +1 -0
- package/dist/challenges/verification-gate.d.ts +15 -0
- package/dist/challenges/verification-gate.d.ts.map +1 -0
- package/dist/chunk-5FZQJRBQ.js +15256 -0
- package/dist/chunk-5FZQJRBQ.js.map +1 -0
- package/dist/{chunk-7W3SPXIB.js → chunk-FUSXMW3G.js} +4 -1
- package/dist/chunk-L57D35TB.js +33513 -0
- package/dist/chunk-L57D35TB.js.map +1 -0
- package/dist/chunk-TBUCZX4A.js +34 -0
- package/dist/chunk-TBUCZX4A.js.map +1 -0
- package/dist/chunk-Y2KL55OG.js +59 -0
- package/dist/chunk-Y2KL55OG.js.map +1 -0
- package/dist/chunk-YBQECXZX.js +409 -0
- package/dist/chunk-YBQECXZX.js.map +1 -0
- package/dist/cli/args.d.ts +4 -4
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/commands/annotate.d.ts +11 -0
- package/dist/cli/commands/annotate.d.ts.map +1 -1
- package/dist/cli/commands/artifacts.d.ts.map +1 -1
- package/dist/cli/commands/canvas.d.ts +45 -0
- package/dist/cli/commands/canvas.d.ts.map +1 -0
- package/dist/cli/commands/daemon.d.ts +7 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/desktop/accessibility-snapshot.d.ts +3 -0
- package/dist/cli/commands/desktop/accessibility-snapshot.d.ts.map +1 -0
- package/dist/cli/commands/desktop/active-window.d.ts +3 -0
- package/dist/cli/commands/desktop/active-window.d.ts.map +1 -0
- package/dist/cli/commands/desktop/capture-desktop.d.ts +3 -0
- package/dist/cli/commands/desktop/capture-desktop.d.ts.map +1 -0
- package/dist/cli/commands/desktop/capture-window.d.ts +3 -0
- package/dist/cli/commands/desktop/capture-window.d.ts.map +1 -0
- package/dist/cli/commands/desktop/shared.d.ts +19 -0
- package/dist/cli/commands/desktop/shared.d.ts.map +1 -0
- package/dist/cli/commands/desktop/status.d.ts +3 -0
- package/dist/cli/commands/desktop/status.d.ts.map +1 -0
- package/dist/cli/commands/desktop/windows.d.ts +3 -0
- package/dist/cli/commands/desktop/windows.d.ts.map +1 -0
- package/dist/cli/commands/devtools/dialog.d.ts +19 -0
- package/dist/cli/commands/devtools/dialog.d.ts.map +1 -0
- package/dist/cli/commands/devtools/perf.d.ts.map +1 -1
- package/dist/cli/commands/devtools/screencast-start.d.ts +20 -0
- package/dist/cli/commands/devtools/screencast-start.d.ts.map +1 -0
- package/dist/cli/commands/devtools/screencast-stop.d.ts +17 -0
- package/dist/cli/commands/devtools/screencast-stop.d.ts.map +1 -0
- package/dist/cli/commands/devtools/screenshot.d.ts +3 -0
- package/dist/cli/commands/devtools/screenshot.d.ts.map +1 -1
- package/dist/cli/commands/dom/attr.d.ts.map +1 -1
- package/dist/cli/commands/dom/checked.d.ts.map +1 -1
- package/dist/cli/commands/dom/enabled.d.ts.map +1 -1
- package/dist/cli/commands/dom/html.d.ts.map +1 -1
- package/dist/cli/commands/dom/text.d.ts.map +1 -1
- package/dist/cli/commands/dom/value.d.ts.map +1 -1
- package/dist/cli/commands/dom/visible.d.ts.map +1 -1
- package/dist/cli/commands/export/clone-component.d.ts +9 -0
- package/dist/cli/commands/export/clone-component.d.ts.map +1 -1
- package/dist/cli/commands/export/clone-page.d.ts +8 -0
- package/dist/cli/commands/export/clone-page.d.ts.map +1 -1
- package/dist/cli/commands/interact/check.d.ts.map +1 -1
- package/dist/cli/commands/interact/click.d.ts.map +1 -1
- package/dist/cli/commands/interact/hover.d.ts.map +1 -1
- package/dist/cli/commands/interact/pointer-down.d.ts +7 -0
- package/dist/cli/commands/interact/pointer-down.d.ts.map +1 -0
- package/dist/cli/commands/interact/pointer-drag.d.ts +7 -0
- package/dist/cli/commands/interact/pointer-drag.d.ts.map +1 -0
- package/dist/cli/commands/interact/pointer-move.d.ts +7 -0
- package/dist/cli/commands/interact/pointer-move.d.ts.map +1 -0
- package/dist/cli/commands/interact/pointer-shared.d.ts +6 -0
- package/dist/cli/commands/interact/pointer-shared.d.ts.map +1 -0
- package/dist/cli/commands/interact/pointer-up.d.ts +7 -0
- package/dist/cli/commands/interact/pointer-up.d.ts.map +1 -0
- package/dist/cli/commands/interact/press.d.ts.map +1 -1
- package/dist/cli/commands/interact/scroll-into-view.d.ts.map +1 -1
- package/dist/cli/commands/interact/scroll.d.ts.map +1 -1
- package/dist/cli/commands/interact/select.d.ts.map +1 -1
- package/dist/cli/commands/interact/type.d.ts.map +1 -1
- package/dist/cli/commands/interact/uncheck.d.ts.map +1 -1
- package/dist/cli/commands/interact/upload.d.ts +18 -0
- package/dist/cli/commands/interact/upload.d.ts.map +1 -0
- package/dist/cli/commands/macro-resolve.d.ts +2 -0
- package/dist/cli/commands/macro-resolve.d.ts.map +1 -1
- package/dist/cli/commands/native.d.ts +22 -8
- package/dist/cli/commands/native.d.ts.map +1 -1
- package/dist/cli/commands/nav/goto.d.ts.map +1 -1
- package/dist/cli/commands/nav/review.d.ts +7 -0
- package/dist/cli/commands/nav/review.d.ts.map +1 -0
- package/dist/cli/commands/nav/snapshot.d.ts.map +1 -1
- package/dist/cli/commands/nav/wait.d.ts.map +1 -1
- package/dist/cli/commands/pages/open.d.ts.map +1 -1
- package/dist/cli/commands/product-video.d.ts +2 -0
- package/dist/cli/commands/product-video.d.ts.map +1 -1
- package/dist/cli/commands/research.d.ts +3 -0
- package/dist/cli/commands/research.d.ts.map +1 -1
- package/dist/cli/commands/run.d.ts +14 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts +1 -21
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/session/connect.d.ts.map +1 -1
- package/dist/cli/commands/session/disconnect.d.ts.map +1 -1
- package/dist/cli/commands/session/inspector.d.ts +21 -0
- package/dist/cli/commands/session/inspector.d.ts.map +1 -0
- package/dist/cli/commands/session/launch.d.ts.map +1 -1
- package/dist/cli/commands/shopping.d.ts +5 -0
- package/dist/cli/commands/shopping.d.ts.map +1 -1
- package/dist/cli/commands/status.d.ts +2 -9
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/targets/new.d.ts.map +1 -1
- package/dist/cli/daemon-autostart.d.ts +11 -0
- package/dist/cli/daemon-autostart.d.ts.map +1 -1
- package/dist/cli/daemon-client.d.ts +3 -0
- package/dist/cli/daemon-client.d.ts.map +1 -1
- package/dist/cli/daemon-commands.d.ts.map +1 -1
- package/dist/cli/daemon-state.d.ts +16 -0
- package/dist/cli/daemon-state.d.ts.map +1 -1
- package/dist/cli/daemon-status.d.ts +7 -2
- package/dist/cli/daemon-status.d.ts.map +1 -1
- package/dist/cli/daemon.d.ts +1 -0
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/help.d.ts +19 -3
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/index.js +2927 -932
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/install-autostart-output.d.ts +6 -0
- package/dist/cli/install-autostart-output.d.ts.map +1 -0
- package/dist/cli/install-autostart-reconciliation.d.ts +23 -0
- package/dist/cli/install-autostart-reconciliation.d.ts.map +1 -0
- package/dist/cli/installers/skills.d.ts +42 -6
- package/dist/cli/installers/skills.d.ts.map +1 -1
- package/dist/cli/output.d.ts +3 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/remote-canvas-manager.d.ts +8 -0
- package/dist/cli/remote-canvas-manager.d.ts.map +1 -0
- package/dist/cli/remote-desktop-runtime.d.ts +15 -0
- package/dist/cli/remote-desktop-runtime.d.ts.map +1 -0
- package/dist/cli/remote-manager.d.ts +27 -3
- package/dist/cli/remote-manager.d.ts.map +1 -1
- package/dist/cli/remote-relay.d.ts +2 -0
- package/dist/cli/remote-relay.d.ts.map +1 -1
- package/dist/cli/transport-timeouts.d.ts +8 -0
- package/dist/cli/transport-timeouts.d.ts.map +1 -0
- package/dist/cli/utils/http.d.ts +9 -0
- package/dist/cli/utils/http.d.ts.map +1 -1
- package/dist/cli/utils/parse.d.ts +3 -0
- package/dist/cli/utils/parse.d.ts.map +1 -1
- package/dist/cli/utils/skills.d.ts +1 -2
- package/dist/cli/utils/skills.d.ts.map +1 -1
- package/dist/cli/utils/workflow-message.d.ts +2 -0
- package/dist/cli/utils/workflow-message.d.ts.map +1 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/core/bootstrap.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/logging.d.ts +3 -1
- package/dist/core/logging.d.ts.map +1 -1
- package/dist/core/runtime-assemblies.d.ts +22 -0
- package/dist/core/runtime-assemblies.d.ts.map +1 -0
- package/dist/core/types.d.ts +17 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/desktop/audit.d.ts +37 -0
- package/dist/desktop/audit.d.ts.map +1 -0
- package/dist/desktop/errors.d.ts +7 -0
- package/dist/desktop/errors.d.ts.map +1 -0
- package/dist/desktop/index.d.ts +6 -0
- package/dist/desktop/index.d.ts.map +1 -0
- package/dist/desktop/runtime.d.ts +26 -0
- package/dist/desktop/runtime.d.ts.map +1 -0
- package/dist/desktop/types.d.ts +76 -0
- package/dist/desktop/types.d.ts.map +1 -0
- package/dist/extension-extractor.d.ts +6 -0
- package/dist/extension-extractor.d.ts.map +1 -1
- package/dist/fs-UMRKOBNN.js +7 -0
- package/dist/fs-UMRKOBNN.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1221 -460
- package/dist/index.js.map +1 -1
- package/dist/integrations/figma/assets.d.ts +13 -0
- package/dist/integrations/figma/assets.d.ts.map +1 -0
- package/dist/integrations/figma/auth.d.ts +3 -0
- package/dist/integrations/figma/auth.d.ts.map +1 -0
- package/dist/integrations/figma/client.d.ts +42 -0
- package/dist/integrations/figma/client.d.ts.map +1 -0
- package/dist/integrations/figma/mappers.d.ts +23 -0
- package/dist/integrations/figma/mappers.d.ts.map +1 -0
- package/dist/integrations/figma/normalize.d.ts +99 -0
- package/dist/integrations/figma/normalize.d.ts.map +1 -0
- package/dist/integrations/figma/url.d.ts +17 -0
- package/dist/integrations/figma/url.d.ts.map +1 -0
- package/dist/integrations/figma/variables.d.ts +21 -0
- package/dist/integrations/figma/variables.d.ts.map +1 -0
- package/dist/macros/execute-runtime.d.ts +19 -0
- package/dist/macros/execute-runtime.d.ts.map +1 -0
- package/dist/macros/execute.d.ts +3 -1
- package/dist/macros/execute.d.ts.map +1 -1
- package/dist/{macros-NUBRM44Y.js → macros-ND2M7LWU.js} +2 -2
- package/dist/opendevbrowser.d.ts.map +1 -1
- package/dist/opendevbrowser.js +1221 -460
- package/dist/opendevbrowser.js.map +1 -1
- package/dist/providers/blocker.d.ts.map +1 -1
- package/dist/providers/browser-fallback.d.ts +30 -0
- package/dist/providers/browser-fallback.d.ts.map +1 -0
- package/dist/providers/constraint.d.ts +45 -0
- package/dist/providers/constraint.d.ts.map +1 -0
- package/dist/providers/index.d.ts +11 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/policy.d.ts.map +1 -1
- package/dist/providers/product-video-compiler.d.ts +92 -0
- package/dist/providers/product-video-compiler.d.ts.map +1 -0
- package/dist/providers/registry.d.ts +37 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/renderer.d.ts.map +1 -1
- package/dist/providers/research-compiler.d.ts +64 -0
- package/dist/providers/research-compiler.d.ts.map +1 -0
- package/dist/providers/research-executor.d.ts +27 -0
- package/dist/providers/research-executor.d.ts.map +1 -0
- package/dist/providers/runtime-bundle.d.ts +26 -0
- package/dist/providers/runtime-bundle.d.ts.map +1 -0
- package/dist/providers/runtime-factory.d.ts +6 -1
- package/dist/providers/runtime-factory.d.ts.map +1 -1
- package/dist/providers/runtime-policy.d.ts +24 -0
- package/dist/providers/runtime-policy.d.ts.map +1 -0
- package/dist/providers/shared/anti-bot-policy.d.ts +3 -2
- package/dist/providers/shared/anti-bot-policy.d.ts.map +1 -1
- package/dist/providers/shopping/index.d.ts +11 -1
- package/dist/providers/shopping/index.d.ts.map +1 -1
- package/dist/providers/shopping-compiler.d.ts +51 -0
- package/dist/providers/shopping-compiler.d.ts.map +1 -0
- package/dist/providers/shopping-executor.d.ts +18 -0
- package/dist/providers/shopping-executor.d.ts.map +1 -0
- package/dist/providers/shopping-postprocess.d.ts +46 -0
- package/dist/providers/shopping-postprocess.d.ts.map +1 -0
- package/dist/providers/shopping-workflow.d.ts +33 -0
- package/dist/providers/shopping-workflow.d.ts.map +1 -0
- package/dist/providers/social/platform.d.ts +2 -1
- package/dist/providers/social/platform.d.ts.map +1 -1
- package/dist/providers/social/search-quality.d.ts +16 -0
- package/dist/providers/social/search-quality.d.ts.map +1 -0
- package/dist/providers/social/youtube-resolver.d.ts +2 -1
- package/dist/providers/social/youtube-resolver.d.ts.map +1 -1
- package/dist/providers/social/youtube.d.ts.map +1 -1
- package/dist/providers/types.d.ts +116 -4
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/web/crawl-worker.d.ts.map +1 -1
- package/dist/providers/web/extract.d.ts +16 -0
- package/dist/providers/web/extract.d.ts.map +1 -1
- package/dist/providers/web/index.d.ts.map +1 -1
- package/dist/providers/workflow-contracts.d.ts +53 -0
- package/dist/providers/workflow-contracts.d.ts.map +1 -0
- package/dist/providers/workflows.d.ts +30 -6
- package/dist/providers/workflows.d.ts.map +1 -1
- package/dist/providers-G36AM3Z2.js +121 -0
- package/dist/providers-G36AM3Z2.js.map +1 -0
- package/dist/public-surface/generated-manifest.d.ts +1168 -0
- package/dist/public-surface/generated-manifest.d.ts.map +1 -0
- package/dist/public-surface/source.d.ts +437 -0
- package/dist/public-surface/source.d.ts.map +1 -0
- package/dist/relay/protocol.d.ts +108 -4
- package/dist/relay/protocol.d.ts.map +1 -1
- package/dist/relay/relay-endpoints.d.ts +21 -0
- package/dist/relay/relay-endpoints.d.ts.map +1 -1
- package/dist/relay/relay-server.d.ts +32 -1
- package/dist/relay/relay-server.d.ts.map +1 -1
- package/dist/relay/relay-types.d.ts +3 -0
- package/dist/relay/relay-types.d.ts.map +1 -1
- package/dist/skills/bundled-skill-directories.d.ts +8 -0
- package/dist/skills/bundled-skill-directories.d.ts.map +1 -0
- package/dist/skills/skill-loader.d.ts +9 -1
- package/dist/skills/skill-loader.d.ts.map +1 -1
- package/dist/skills/skill-loader.js +7 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-nudge.d.ts.map +1 -1
- package/dist/skills/types.d.ts +31 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/snapshot/ops-snapshot.d.ts +1 -1
- package/dist/snapshot/ops-snapshot.d.ts.map +1 -1
- package/dist/snapshot/refs.d.ts +6 -1
- package/dist/snapshot/refs.d.ts.map +1 -1
- package/dist/snapshot/snapshotter.d.ts.map +1 -1
- package/dist/tools/annotate.d.ts.map +1 -1
- package/dist/tools/canvas.d.ts +4 -0
- package/dist/tools/canvas.d.ts.map +1 -0
- package/dist/tools/check.d.ts.map +1 -1
- package/dist/tools/click.d.ts.map +1 -1
- package/dist/tools/clone_component.d.ts.map +1 -1
- package/dist/tools/clone_page.d.ts.map +1 -1
- package/dist/tools/connect.d.ts.map +1 -1
- package/dist/tools/deps.d.ts +6 -0
- package/dist/tools/deps.d.ts.map +1 -1
- package/dist/tools/desktop-shared.d.ts +6 -0
- package/dist/tools/desktop-shared.d.ts.map +1 -0
- package/dist/tools/desktop_accessibility_snapshot.d.ts +4 -0
- package/dist/tools/desktop_accessibility_snapshot.d.ts.map +1 -0
- package/dist/tools/desktop_active_window.d.ts +4 -0
- package/dist/tools/desktop_active_window.d.ts.map +1 -0
- package/dist/tools/desktop_capture_desktop.d.ts +4 -0
- package/dist/tools/desktop_capture_desktop.d.ts.map +1 -0
- package/dist/tools/desktop_capture_window.d.ts +4 -0
- package/dist/tools/desktop_capture_window.d.ts.map +1 -0
- package/dist/tools/desktop_status.d.ts +4 -0
- package/dist/tools/desktop_status.d.ts.map +1 -0
- package/dist/tools/desktop_windows.d.ts +4 -0
- package/dist/tools/desktop_windows.d.ts.map +1 -0
- package/dist/tools/dialog.d.ts +4 -0
- package/dist/tools/dialog.d.ts.map +1 -0
- package/dist/tools/dom_get_html.d.ts.map +1 -1
- package/dist/tools/dom_get_text.d.ts.map +1 -1
- package/dist/tools/get_attr.d.ts.map +1 -1
- package/dist/tools/get_value.d.ts.map +1 -1
- package/dist/tools/goto.d.ts.map +1 -1
- package/dist/tools/hover.d.ts.map +1 -1
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/is_checked.d.ts.map +1 -1
- package/dist/tools/is_enabled.d.ts.map +1 -1
- package/dist/tools/is_visible.d.ts.map +1 -1
- package/dist/tools/launch.d.ts.map +1 -1
- package/dist/tools/macro_resolve.d.ts.map +1 -1
- package/dist/tools/perf.d.ts.map +1 -1
- package/dist/tools/pointer_down.d.ts +4 -0
- package/dist/tools/pointer_down.d.ts.map +1 -0
- package/dist/tools/pointer_drag.d.ts +4 -0
- package/dist/tools/pointer_drag.d.ts.map +1 -0
- package/dist/tools/pointer_move.d.ts +4 -0
- package/dist/tools/pointer_move.d.ts.map +1 -0
- package/dist/tools/pointer_up.d.ts +4 -0
- package/dist/tools/pointer_up.d.ts.map +1 -0
- package/dist/tools/press.d.ts.map +1 -1
- package/dist/tools/product_video_run.d.ts.map +1 -1
- package/dist/tools/prompting_guide.d.ts.map +1 -1
- package/dist/tools/research_run.d.ts.map +1 -1
- package/dist/tools/response.d.ts +4 -1
- package/dist/tools/response.d.ts.map +1 -1
- package/dist/tools/review.d.ts +4 -0
- package/dist/tools/review.d.ts.map +1 -0
- package/dist/tools/screencast_start.d.ts +4 -0
- package/dist/tools/screencast_start.d.ts.map +1 -0
- package/dist/tools/screencast_stop.d.ts +4 -0
- package/dist/tools/screencast_stop.d.ts.map +1 -0
- package/dist/tools/screenshot.d.ts.map +1 -1
- package/dist/tools/scroll.d.ts.map +1 -1
- package/dist/tools/scroll_into_view.d.ts.map +1 -1
- package/dist/tools/select.d.ts.map +1 -1
- package/dist/tools/session_inspector.d.ts +4 -0
- package/dist/tools/session_inspector.d.ts.map +1 -0
- package/dist/tools/shopping_run.d.ts.map +1 -1
- package/dist/tools/skill_list.d.ts.map +1 -1
- package/dist/tools/skill_load.d.ts.map +1 -1
- package/dist/tools/snapshot.d.ts.map +1 -1
- package/dist/tools/type.d.ts.map +1 -1
- package/dist/tools/uncheck.d.ts.map +1 -1
- package/dist/tools/upload.d.ts +4 -0
- package/dist/tools/upload.d.ts.map +1 -0
- package/dist/tools/wait.d.ts.map +1 -1
- package/dist/tools/workflow-runtime.d.ts +4 -2
- package/dist/tools/workflow-runtime.d.ts.map +1 -1
- package/dist/utils/package-assets.d.ts +4 -0
- package/dist/utils/package-assets.d.ts.map +1 -0
- package/extension/canvas.html +1006 -0
- package/extension/dist/annotate-content.css +15 -6
- package/extension/dist/annotate-content.js +175 -35
- package/extension/dist/annotation-payload.js +199 -0
- package/extension/dist/background.js +544 -69
- package/extension/dist/canvas/canvas-runtime.js +1490 -0
- package/extension/dist/canvas/model.js +341 -0
- package/extension/dist/canvas/viewport-fit.js +67 -0
- package/extension/dist/canvas-page.js +3609 -0
- package/extension/dist/ops/dom-bridge.js +255 -3
- package/extension/dist/ops/ops-runtime.js +3324 -301
- package/extension/dist/ops/ops-session-store.js +97 -112
- package/extension/dist/ops/snapshot-builder.js +2 -2
- package/extension/dist/ops/snapshot-shared.js +2 -2
- package/extension/dist/ops/target-session-coordinator.js +159 -0
- package/extension/dist/popup.js +201 -42
- package/extension/dist/services/CDPRouter.js +1567 -63
- package/extension/dist/services/ConnectionManager.js +453 -78
- package/extension/dist/services/RelayClient.js +79 -30
- package/extension/dist/services/TabManager.js +118 -22
- package/extension/dist/services/TargetSessionMap.js +127 -3
- package/extension/dist/services/attach-errors.js +20 -0
- package/extension/dist/services/cdp-router-commands.js +135 -8
- package/extension/dist/services/url-restrictions.js +9 -13
- package/extension/dist/types.js +2 -0
- package/extension/manifest.json +2 -2
- package/extension/popup.html +59 -6
- package/package.json +19 -9
- package/skills/AGENTS.md +8 -4
- package/skills/opendevbrowser-best-practices/SKILL.md +183 -6
- package/skills/opendevbrowser-best-practices/artifacts/browser-agent-known-issues-matrix.md +1 -0
- package/skills/opendevbrowser-best-practices/artifacts/canvas-governance-playbook.md +141 -0
- package/skills/opendevbrowser-best-practices/artifacts/command-channel-reference.md +129 -19
- package/skills/opendevbrowser-best-practices/artifacts/parity-gates.md +9 -2
- package/skills/opendevbrowser-best-practices/artifacts/provider-workflows.md +6 -0
- package/skills/opendevbrowser-best-practices/artifacts/skill-runtime-surface-matrix.md +58 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-blocker-checklist.json +70 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-feedback-eval.json +73 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-generation-plan.v1.json +67 -0
- package/skills/opendevbrowser-best-practices/assets/templates/canvas-handshake-example.json +126 -0
- package/skills/opendevbrowser-best-practices/assets/templates/robustness-checklist.json +57 -0
- package/skills/opendevbrowser-best-practices/assets/templates/skill-runtime-pack-matrix.json +674 -0
- package/skills/opendevbrowser-best-practices/assets/templates/surface-audit-checklist.json +12 -3
- package/skills/opendevbrowser-best-practices/scripts/odb-workflow.sh +107 -12
- package/skills/opendevbrowser-best-practices/scripts/resolve-odb-cli.sh +100 -0
- package/skills/opendevbrowser-best-practices/scripts/run-robustness-audit.sh +83 -1
- package/skills/opendevbrowser-best-practices/scripts/validate-skill-assets.sh +365 -84
- package/skills/opendevbrowser-best-practices/scripts/validator-fixture-cli.sh +208 -0
- package/skills/opendevbrowser-continuity-ledger/SKILL.md +14 -1
- package/skills/opendevbrowser-continuity-ledger/scripts/validate-skill-assets.sh +61 -0
- package/skills/opendevbrowser-data-extraction/SKILL.md +6 -0
- package/skills/opendevbrowser-data-extraction/scripts/validate-skill-assets.sh +112 -0
- package/skills/opendevbrowser-design-agent/SKILL.md +275 -0
- package/skills/opendevbrowser-design-agent/artifacts/app-shell-and-state-wiring.md +84 -0
- package/skills/opendevbrowser-design-agent/artifacts/async-search-state-ownership.md +58 -0
- package/skills/opendevbrowser-design-agent/artifacts/component-pattern-index.md +130 -0
- package/skills/opendevbrowser-design-agent/artifacts/design-contract-playbook.md +157 -0
- package/skills/opendevbrowser-design-agent/artifacts/design-release-gate.md +40 -0
- package/skills/opendevbrowser-design-agent/artifacts/design-workflows.md +153 -0
- package/skills/opendevbrowser-design-agent/artifacts/existing-surface-adaptation.md +56 -0
- package/skills/opendevbrowser-design-agent/artifacts/external-pattern-synthesis.md +103 -0
- package/skills/opendevbrowser-design-agent/artifacts/frontend-evaluation-rubric.md +61 -0
- package/skills/opendevbrowser-design-agent/artifacts/implementation-anti-patterns.md +163 -0
- package/skills/opendevbrowser-design-agent/artifacts/isolated-preview-validation.md +68 -0
- package/skills/opendevbrowser-design-agent/artifacts/loading-and-feedback-surfaces.md +56 -0
- package/skills/opendevbrowser-design-agent/artifacts/opendevbrowser-ui-example-map.md +44 -0
- package/skills/opendevbrowser-design-agent/artifacts/performance-audit-playbook.md +70 -0
- package/skills/opendevbrowser-design-agent/artifacts/research-harvest-workflow.md +81 -0
- package/skills/opendevbrowser-design-agent/artifacts/scroll-reveal-surface-planning.md +64 -0
- package/skills/opendevbrowser-design-agent/artifacts/state-ownership-matrix.md +36 -0
- package/skills/opendevbrowser-design-agent/artifacts/theming-and-token-ownership.md +43 -0
- package/skills/opendevbrowser-design-agent/assets/templates/canvas-generation-plan.design.v1.json +58 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-audit-report.v1.md +34 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-brief.v1.md +40 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-contract.v1.json +226 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-release-gate.v1.json +35 -0
- package/skills/opendevbrowser-design-agent/assets/templates/design-review-checklist.json +57 -0
- package/skills/opendevbrowser-design-agent/assets/templates/real-surface-design-matrix.json +32 -0
- package/skills/opendevbrowser-design-agent/assets/templates/reference-pattern-board.v1.json +31 -0
- package/skills/opendevbrowser-design-agent/scripts/design-workflow.sh +171 -0
- package/skills/opendevbrowser-design-agent/scripts/extract-canvas-plan.sh +56 -0
- package/skills/opendevbrowser-design-agent/scripts/validate-skill-assets.sh +223 -0
- package/skills/opendevbrowser-form-testing/SKILL.md +19 -3
- package/skills/opendevbrowser-form-testing/artifacts/form-workflows.md +5 -4
- package/skills/opendevbrowser-form-testing/assets/templates/challenge-decision-tree.json +2 -0
- package/skills/opendevbrowser-form-testing/scripts/validate-skill-assets.sh +109 -0
- package/skills/opendevbrowser-login-automation/SKILL.md +21 -3
- package/skills/opendevbrowser-login-automation/artifacts/login-workflows.md +5 -4
- package/skills/opendevbrowser-login-automation/assets/templates/auth-signals.json +5 -0
- package/skills/opendevbrowser-login-automation/assets/templates/login-scenario-matrix.json +3 -2
- package/skills/opendevbrowser-login-automation/scripts/run-login-workflow.sh +17 -1
- package/skills/opendevbrowser-login-automation/scripts/validate-skill-assets.sh +133 -0
- package/skills/opendevbrowser-product-presentation-asset/SKILL.md +23 -11
- package/skills/opendevbrowser-product-presentation-asset/artifacts/asset-pack-assembly.md +5 -3
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/shot-list.md +2 -0
- package/skills/opendevbrowser-product-presentation-asset/assets/templates/video-assembly.md +3 -2
- package/skills/opendevbrowser-product-presentation-asset/scripts/capture-screenshots.sh +5 -1
- package/skills/opendevbrowser-product-presentation-asset/scripts/collect-product.sh +6 -2
- package/skills/opendevbrowser-product-presentation-asset/scripts/download-images.sh +5 -1
- package/skills/opendevbrowser-product-presentation-asset/scripts/render-video-brief.sh +20 -7
- package/skills/opendevbrowser-product-presentation-asset/scripts/validate-skill-assets.sh +39 -0
- package/skills/opendevbrowser-product-presentation-asset/scripts/write-manifest.sh +5 -1
- package/skills/opendevbrowser-research/SKILL.md +14 -6
- package/skills/opendevbrowser-research/scripts/render-output.sh +5 -1
- package/skills/opendevbrowser-research/scripts/run-research.sh +5 -1
- package/skills/opendevbrowser-research/scripts/validate-skill-assets.sh +45 -0
- package/skills/opendevbrowser-research/scripts/write-artifacts.sh +5 -1
- package/skills/opendevbrowser-shopping/SKILL.md +20 -1
- package/skills/opendevbrowser-shopping/scripts/normalize-offers.sh +6 -2
- package/skills/opendevbrowser-shopping/scripts/run-deal-hunt.sh +5 -1
- package/skills/opendevbrowser-shopping/scripts/run-shopping.sh +5 -1
- package/skills/opendevbrowser-shopping/scripts/validate-skill-assets.sh +54 -0
- package/dist/chunk-ST7CO5FA.js +0 -18668
- package/dist/chunk-ST7CO5FA.js.map +0 -1
- /package/dist/{chunk-7W3SPXIB.js.map → chunk-FUSXMW3G.js.map} +0 -0
- /package/dist/{macros-NUBRM44Y.js.map → macros-ND2M7LWU.js.map} +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Frontend Evaluation Rubric
|
|
2
|
+
|
|
3
|
+
Use this rubric before sign-off. A design should not pass on aesthetics alone.
|
|
4
|
+
|
|
5
|
+
## Must-Pass Gates
|
|
6
|
+
|
|
7
|
+
- The UI matches the current design contract.
|
|
8
|
+
- The screen has a clear information hierarchy.
|
|
9
|
+
- Focus, keyboard access, and readable contrast are present where relevant.
|
|
10
|
+
- Responsive behavior is intentional, not accidental.
|
|
11
|
+
- Copy is real enough to evaluate the actual layout.
|
|
12
|
+
- Browser validation was run on the relevant surface.
|
|
13
|
+
|
|
14
|
+
## Scored Categories
|
|
15
|
+
|
|
16
|
+
Score each category from `1` to `5`.
|
|
17
|
+
|
|
18
|
+
### Clarity
|
|
19
|
+
|
|
20
|
+
- Is the primary action obvious?
|
|
21
|
+
- Is the page purpose understandable within a few seconds?
|
|
22
|
+
|
|
23
|
+
### Visual Direction
|
|
24
|
+
|
|
25
|
+
- Does the design feel intentional instead of generic?
|
|
26
|
+
- Are color, type, and spacing working together as one system?
|
|
27
|
+
|
|
28
|
+
### Component Discipline
|
|
29
|
+
|
|
30
|
+
- Are repeated patterns actually consistent?
|
|
31
|
+
- Do components share the same edge radius, spacing rhythm, and interaction language?
|
|
32
|
+
|
|
33
|
+
### State Coverage
|
|
34
|
+
|
|
35
|
+
- Are default, hover, focus, empty, loading, success, and error states handled when needed?
|
|
36
|
+
|
|
37
|
+
### Responsiveness
|
|
38
|
+
|
|
39
|
+
- Does the layout adapt gracefully at the required viewports?
|
|
40
|
+
- Are touch targets and overflow behavior sane?
|
|
41
|
+
|
|
42
|
+
### Accessibility
|
|
43
|
+
|
|
44
|
+
- Are semantics, focus order, and contrast acceptable?
|
|
45
|
+
- Does motion preserve meaning when reduced motion is required?
|
|
46
|
+
|
|
47
|
+
### Performance And Restraint
|
|
48
|
+
|
|
49
|
+
- Is motion purposeful instead of noisy?
|
|
50
|
+
- Are heavy effects justified?
|
|
51
|
+
- Does the screen avoid unnecessary complexity?
|
|
52
|
+
|
|
53
|
+
## Failure Triggers
|
|
54
|
+
|
|
55
|
+
Fail the design review if any of these are true:
|
|
56
|
+
|
|
57
|
+
- The design depends on placeholder content to look good.
|
|
58
|
+
- Mobile or keyboard behavior is untested.
|
|
59
|
+
- The page is visually inconsistent across repeated components.
|
|
60
|
+
- The design contract and shipped output disagree materially.
|
|
61
|
+
- Real-browser validation was skipped without an explicit blocker.
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Implementation Anti-Patterns
|
|
2
|
+
|
|
3
|
+
Use this list to stop weak frontend patterns before they spread.
|
|
4
|
+
|
|
5
|
+
## 1. Boolean Sprawl
|
|
6
|
+
|
|
7
|
+
Bad:
|
|
8
|
+
|
|
9
|
+
- one screen tracks `isModalOpen`, `isDrawerOpen`, `isPopoverOpen`, `isConfirmingDelete`, and `selectedId` across many siblings
|
|
10
|
+
|
|
11
|
+
Prefer:
|
|
12
|
+
|
|
13
|
+
- one overlay owner with an item-backed state object
|
|
14
|
+
|
|
15
|
+
## 2. Mixed State Ownership
|
|
16
|
+
|
|
17
|
+
Bad:
|
|
18
|
+
|
|
19
|
+
- the same filter state lives in component state, URL params, and a shared store
|
|
20
|
+
|
|
21
|
+
Prefer:
|
|
22
|
+
|
|
23
|
+
- one canonical owner with derived views elsewhere
|
|
24
|
+
|
|
25
|
+
## 3. Placeholder-Led Layout
|
|
26
|
+
|
|
27
|
+
Bad:
|
|
28
|
+
|
|
29
|
+
- the UI only looks balanced with fake short copy or idealized data
|
|
30
|
+
|
|
31
|
+
Prefer:
|
|
32
|
+
|
|
33
|
+
- real or realistic content, plus explicit overflow and truncation rules
|
|
34
|
+
|
|
35
|
+
## 4. Pattern Drift
|
|
36
|
+
|
|
37
|
+
Bad:
|
|
38
|
+
|
|
39
|
+
- repeated cards, panels, or controls each invent their own spacing, radius, or interaction order
|
|
40
|
+
|
|
41
|
+
Prefer:
|
|
42
|
+
|
|
43
|
+
- one pattern family per screen, documented in the contract and checked against the component index
|
|
44
|
+
|
|
45
|
+
## 5. Motion Without A Driver
|
|
46
|
+
|
|
47
|
+
Bad:
|
|
48
|
+
|
|
49
|
+
- many components each own their own scroll math, timing, or parallax rules
|
|
50
|
+
|
|
51
|
+
Prefer:
|
|
52
|
+
|
|
53
|
+
- one normalized progress model with reduced-motion fallback
|
|
54
|
+
|
|
55
|
+
## 6. Heavy Work Per Item
|
|
56
|
+
|
|
57
|
+
Bad:
|
|
58
|
+
|
|
59
|
+
- each row or card performs expensive layout, measurement, or data reshaping during render
|
|
60
|
+
|
|
61
|
+
Prefer:
|
|
62
|
+
|
|
63
|
+
- precomputed data, memoized derivations only when justified by existing project patterns, and lazy detail work
|
|
64
|
+
|
|
65
|
+
## 7. Overlay Ownership Split
|
|
66
|
+
|
|
67
|
+
Bad:
|
|
68
|
+
|
|
69
|
+
- a toolbar opens a modal while a row also mutates that modal's data source independently
|
|
70
|
+
|
|
71
|
+
Prefer:
|
|
72
|
+
|
|
73
|
+
- route or feature ownership plus explicit focus-return behavior
|
|
74
|
+
|
|
75
|
+
## 8. Contract-Free Canvas Mutation
|
|
76
|
+
|
|
77
|
+
Bad:
|
|
78
|
+
|
|
79
|
+
- patching `/canvas` before the design contract and generation plan are coherent
|
|
80
|
+
|
|
81
|
+
Prefer:
|
|
82
|
+
|
|
83
|
+
- contract first, plan second, mutation third, preview and feedback after
|
|
84
|
+
|
|
85
|
+
## 9. Unverified Responsive Claims
|
|
86
|
+
|
|
87
|
+
Bad:
|
|
88
|
+
|
|
89
|
+
- declaring mobile support without checking layout, scroll, focus, and overflow at mobile widths
|
|
90
|
+
|
|
91
|
+
Prefer:
|
|
92
|
+
|
|
93
|
+
- real-surface validation at the required breakpoints
|
|
94
|
+
|
|
95
|
+
## 10. Stale Runtime Trust
|
|
96
|
+
|
|
97
|
+
Bad:
|
|
98
|
+
|
|
99
|
+
- assuming `npm run extension:build` means a live unpacked extension tab is already running the new code
|
|
100
|
+
|
|
101
|
+
Prefer:
|
|
102
|
+
|
|
103
|
+
- reload the unpacked extension, reconnect, and then validate the real surface again
|
|
104
|
+
|
|
105
|
+
## 11. Unbounded Async Restarts
|
|
106
|
+
|
|
107
|
+
Bad:
|
|
108
|
+
|
|
109
|
+
- each keystroke, scope switch, or filter tap starts new async work with no debounce or stale-request handling
|
|
110
|
+
|
|
111
|
+
Prefer:
|
|
112
|
+
|
|
113
|
+
- one restart policy with debounce, cancellation, and a clear empty-query behavior
|
|
114
|
+
|
|
115
|
+
## 12. Spinner Stacking
|
|
116
|
+
|
|
117
|
+
Bad:
|
|
118
|
+
|
|
119
|
+
- the same async region shows multiple loaders, layout-shifting placeholders, and no stable empty/error plan
|
|
120
|
+
|
|
121
|
+
Prefer:
|
|
122
|
+
|
|
123
|
+
- one loading story per region plus layout-preserving placeholders when the final structure matters
|
|
124
|
+
|
|
125
|
+
## 13. Raw Token Sprawl
|
|
126
|
+
|
|
127
|
+
Bad:
|
|
128
|
+
|
|
129
|
+
- repeated components hardcode colors, spacing, or radius values that drift away from the design system
|
|
130
|
+
|
|
131
|
+
Prefer:
|
|
132
|
+
|
|
133
|
+
- one semantic token source with leaf components consuming tokens instead of inventing them
|
|
134
|
+
|
|
135
|
+
## 14. Live-Service Previews
|
|
136
|
+
|
|
137
|
+
Bad:
|
|
138
|
+
|
|
139
|
+
- isolated previews depend on live APIs, auth, or global singletons and only render when the full app happens to be running
|
|
140
|
+
|
|
141
|
+
Prefer:
|
|
142
|
+
|
|
143
|
+
- deterministic fixtures, explicit dependency installation, and isolated preview state that mirrors production ownership
|
|
144
|
+
|
|
145
|
+
## 15. Stringly Routed Actions
|
|
146
|
+
|
|
147
|
+
Bad:
|
|
148
|
+
|
|
149
|
+
- buttons, tabs, rows, and shortcuts each assemble route strings or params independently
|
|
150
|
+
|
|
151
|
+
Prefer:
|
|
152
|
+
|
|
153
|
+
- one typed route translator with explicit invalid-route fallback and shared deep-link handling
|
|
154
|
+
|
|
155
|
+
## 16. Unstable List Identity
|
|
156
|
+
|
|
157
|
+
Bad:
|
|
158
|
+
|
|
159
|
+
- selection, expansion, or animation state is keyed by array index on a sortable or filterable collection
|
|
160
|
+
|
|
161
|
+
Prefer:
|
|
162
|
+
|
|
163
|
+
- stable item identity plus an explicit scan-heavy performance plan for large result sets
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Isolated Preview Validation
|
|
2
|
+
|
|
3
|
+
Use this playbook before full-page rollout. The goal is to prove the pattern in a stable fixture before broader integration and then carry the same state matrix onto real browser surfaces.
|
|
4
|
+
|
|
5
|
+
## When To Use It
|
|
6
|
+
|
|
7
|
+
- new component families
|
|
8
|
+
- dense shells or editors
|
|
9
|
+
- async-heavy screens
|
|
10
|
+
- motion or scroll-driven interactions
|
|
11
|
+
- any UI that already failed once in live validation
|
|
12
|
+
|
|
13
|
+
## Preview Discipline
|
|
14
|
+
|
|
15
|
+
Build a deterministic isolated surface first:
|
|
16
|
+
|
|
17
|
+
- story, fixture route, local sandbox, or `/canvas` preview target
|
|
18
|
+
- realistic copy and realistic data volume
|
|
19
|
+
- fixed viewport sizes for mobile, tablet, and desktop
|
|
20
|
+
- installed theme, router, and shell dependencies when the real surface requires them
|
|
21
|
+
- explicit reduced-motion and empty/error variants when relevant
|
|
22
|
+
|
|
23
|
+
Do not continue layering polish on a preview that already crashes or visually collapses.
|
|
24
|
+
|
|
25
|
+
## Required Fixture States
|
|
26
|
+
|
|
27
|
+
Cover the relevant set explicitly:
|
|
28
|
+
|
|
29
|
+
- default
|
|
30
|
+
- hover and focus
|
|
31
|
+
- loading
|
|
32
|
+
- empty
|
|
33
|
+
- success
|
|
34
|
+
- error
|
|
35
|
+
- overflow or long-content
|
|
36
|
+
- reduced-motion
|
|
37
|
+
- mobile compact layout
|
|
38
|
+
|
|
39
|
+
If the component never renders one of these states in isolation, it is likely to regress when integrated.
|
|
40
|
+
|
|
41
|
+
## Dependency Rules
|
|
42
|
+
|
|
43
|
+
- inject mock or deterministic data sources into the preview
|
|
44
|
+
- remove network dependence from the isolated fixture
|
|
45
|
+
- install every required environment, provider, or theme dependency directly in the preview
|
|
46
|
+
- keep async, search, and filter fixtures deterministic, including empty-query and non-happy paths
|
|
47
|
+
- keep one owner for feature flags, search params, or overlay state inside the preview
|
|
48
|
+
- if the UI depends on app-shell context, stub only the minimum shell contract needed for the task
|
|
49
|
+
- do not make required production dependencies optional just to silence preview crashes
|
|
50
|
+
|
|
51
|
+
## Validation Loop
|
|
52
|
+
|
|
53
|
+
1. Build the isolated surface.
|
|
54
|
+
2. Fix preview crashes, missing dependency wiring, or state drift before broader integration.
|
|
55
|
+
3. Validate the same states in a real browser session.
|
|
56
|
+
4. Only then move to the integrated page, shell, or `/canvas` workflow.
|
|
57
|
+
|
|
58
|
+
## OpenDevBrowser Commands
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx opendevbrowser launch --no-extension --start-url http://127.0.0.1:3000/preview/component
|
|
62
|
+
npx opendevbrowser snapshot --session-id <session-id>
|
|
63
|
+
npx opendevbrowser screenshot --session-id <session-id>
|
|
64
|
+
npx opendevbrowser debug-trace-snapshot --session-id <session-id>
|
|
65
|
+
npx opendevbrowser canvas --command canvas.preview.render --params '{"canvasSessionId":"<canvas-session-id>","leaseId":"<lease-id>","targetId":"<target-id>","projection":"canvas_html"}'
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Use the same fixture states as the contract when comparing preview and integrated behavior.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Loading And Feedback Surfaces
|
|
2
|
+
|
|
3
|
+
Use this when the screen needs loading, empty, success, error, toast, or banner states that must feel intentional instead of bolted on.
|
|
4
|
+
|
|
5
|
+
## 1. Preserve Layout While Loading
|
|
6
|
+
|
|
7
|
+
Prefer layout-preserving placeholders over generic spinners:
|
|
8
|
+
|
|
9
|
+
- keep the real content structure and swap in placeholder data or skeleton rows
|
|
10
|
+
- use a fixed placeholder count for repeated content, usually `3` to `6`
|
|
11
|
+
- keep placeholder frames stable so the loaded state does not jump
|
|
12
|
+
|
|
13
|
+
Use a single section-level loader only when the layout cannot be meaningfully previewed during load.
|
|
14
|
+
|
|
15
|
+
## 2. Give Each Region One Loading Story
|
|
16
|
+
|
|
17
|
+
- one loading affordance per region
|
|
18
|
+
- one empty-state message per result set
|
|
19
|
+
- one recovery action near the failing region
|
|
20
|
+
|
|
21
|
+
Do not stack row spinners, section spinners, and page spinners for the same fetch.
|
|
22
|
+
|
|
23
|
+
## 3. Empty, Error, And Success Are Part Of The Design
|
|
24
|
+
|
|
25
|
+
- empty states should explain why nothing is shown and offer a next action
|
|
26
|
+
- error states should keep retry or fallback actions close to the failed area
|
|
27
|
+
- success states should confirm progress without hijacking the next task
|
|
28
|
+
|
|
29
|
+
If the screen cannot explain its empty or error behavior in the contract, it is not ready.
|
|
30
|
+
|
|
31
|
+
## 4. Use Overlays For Transient Feedback
|
|
32
|
+
|
|
33
|
+
Use overlays, toasts, or banners for short-lived feedback that should not distort the layout:
|
|
34
|
+
|
|
35
|
+
- keep a single owner for transient feedback state
|
|
36
|
+
- align overlays to a clear edge and keep the motion short
|
|
37
|
+
- auto-dismiss short confirmations when that will not hide critical information
|
|
38
|
+
- queue or replace overlapping feedback instead of stacking many transient surfaces
|
|
39
|
+
|
|
40
|
+
Use modal or blocking UI only when the user must stop and decide.
|
|
41
|
+
|
|
42
|
+
## 5. Review Prompts
|
|
43
|
+
|
|
44
|
+
1. Does the loading state preserve the final layout?
|
|
45
|
+
2. How many placeholders render, and why that count?
|
|
46
|
+
3. What action can the user take from the empty or error state?
|
|
47
|
+
4. Which feedback belongs in layout, and which belongs in an overlay?
|
|
48
|
+
5. Who owns transient banners or toasts?
|
|
49
|
+
|
|
50
|
+
## Failure Signals
|
|
51
|
+
|
|
52
|
+
- placeholder layouts collapse or shift when content arrives
|
|
53
|
+
- the design uses more than one loading indicator for the same async region
|
|
54
|
+
- empty and error states are generic copy without a next action
|
|
55
|
+
- toast or banner feedback reflows the main layout unnecessarily
|
|
56
|
+
- multiple features can stack transient overlays without coordination
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# OpenDevBrowser UI Example Map
|
|
2
|
+
|
|
3
|
+
Use nearby repo examples before inventing new structure. These are not design mandates, but they are the fastest way to align with current patterns and shipped constraints.
|
|
4
|
+
|
|
5
|
+
## Extension UI
|
|
6
|
+
|
|
7
|
+
- `extension/popup.html`
|
|
8
|
+
- compact control surfaces, diagnostics panels, brand treatment, settings rows
|
|
9
|
+
- `extension/src/popup.tsx`
|
|
10
|
+
- popup state orchestration, health-state rendering, annotation history affordances
|
|
11
|
+
- `extension/canvas.html`
|
|
12
|
+
- full-screen extension-hosted editor shell
|
|
13
|
+
- `extension/src/canvas-page.ts`
|
|
14
|
+
- design-tab shell wiring, stage controls, inspector and layers integration
|
|
15
|
+
- `extension/src/canvas/canvas-runtime.ts`
|
|
16
|
+
- runtime-side canvas state ownership and preview synchronization
|
|
17
|
+
- `extension/src/annotate-content.ts`
|
|
18
|
+
- in-page overlay state, annotation affordances, selection lifecycle
|
|
19
|
+
|
|
20
|
+
## Canvas Core
|
|
21
|
+
|
|
22
|
+
- `src/browser/canvas-manager.ts`
|
|
23
|
+
- public `/canvas` contract surface and session-summary ownership
|
|
24
|
+
- `src/canvas/export.ts`
|
|
25
|
+
- canonical preview and export renderer boundary
|
|
26
|
+
- `src/canvas/document-store.ts`
|
|
27
|
+
- normalized design document truth and mutation flow
|
|
28
|
+
|
|
29
|
+
## Tests As UI Behavior Proof
|
|
30
|
+
|
|
31
|
+
- `tests/extension-canvas-editor.test.ts`
|
|
32
|
+
- token editor, layers, inspector, and design-tab interaction expectations
|
|
33
|
+
- `tests/extension-canvas-runtime.test.ts`
|
|
34
|
+
- runtime shell and preview bridge expectations
|
|
35
|
+
- `tests/extension-popup-brand.test.ts`
|
|
36
|
+
- popup brand and icon assertions
|
|
37
|
+
- `tests/extension-background.test.ts`
|
|
38
|
+
- popup and annotation routing expectations that affect UI trust
|
|
39
|
+
|
|
40
|
+
## How To Use This Map
|
|
41
|
+
|
|
42
|
+
1. Find the closest shipped surface.
|
|
43
|
+
2. Reuse its ownership model and shell assumptions unless the new brief requires a deliberate break.
|
|
44
|
+
3. Record any intentional deviation in the design contract and ship audit.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Performance Audit Playbook
|
|
2
|
+
|
|
3
|
+
Use this workflow when the UI feels heavy, re-renders too often, scrolls poorly, or becomes unstable under realistic data volume.
|
|
4
|
+
|
|
5
|
+
## Intake
|
|
6
|
+
|
|
7
|
+
Capture the problem before optimizing:
|
|
8
|
+
|
|
9
|
+
- interaction that feels slow
|
|
10
|
+
- viewport and data size
|
|
11
|
+
- whether the issue is input, scroll, resize, animation, or async refresh
|
|
12
|
+
- suspected heavy subtree or component family
|
|
13
|
+
|
|
14
|
+
## Baseline First
|
|
15
|
+
|
|
16
|
+
Measure before changing structure:
|
|
17
|
+
|
|
18
|
+
- React DevTools Profiler for render churn
|
|
19
|
+
- browser Performance panel when the problem looks layout or paint related
|
|
20
|
+
- `debug-trace-snapshot` for console and network regressions tied to the interaction
|
|
21
|
+
|
|
22
|
+
Treat components taking longer than roughly one frame budget as candidates for deeper audit.
|
|
23
|
+
|
|
24
|
+
## Common Fix Patterns
|
|
25
|
+
|
|
26
|
+
- isolate ticking or rapidly changing state from heavy subtrees
|
|
27
|
+
- avoid top-level branch swapping when a stable base tree can express the same states
|
|
28
|
+
- keep props narrow and stable before reaching for memoization
|
|
29
|
+
- move expensive derivations out of render paths
|
|
30
|
+
- virtualize or progressively reveal long collections
|
|
31
|
+
- delay heavy secondary panels until the user asks for them
|
|
32
|
+
- drive scroll motion from one normalized progress model
|
|
33
|
+
|
|
34
|
+
## Scan-Heavy Surface Discipline
|
|
35
|
+
|
|
36
|
+
When the screen is mostly about rows, cards, or staged panes:
|
|
37
|
+
|
|
38
|
+
- keep stable item identity through sorting, filtering, refresh, and optimistic updates
|
|
39
|
+
- avoid index-based expansion or selection state for reorderable collections
|
|
40
|
+
- pick one scan unit and optimize around that unit before styling the rest of the shell
|
|
41
|
+
- prefer lazy containers or progressive reveal before hand-tuned per-item memoization
|
|
42
|
+
- keep inspectors, previews, and secondary editors lazy when they are not needed for the first scan
|
|
43
|
+
- measure with realistic list density and content length instead of trimmed placeholder data
|
|
44
|
+
|
|
45
|
+
## Restraint Rules
|
|
46
|
+
|
|
47
|
+
- do not add memoization by default when the repo pattern does not support it
|
|
48
|
+
- do not optimize around fake placeholder data
|
|
49
|
+
- fix ownership churn before micro-optimizing components
|
|
50
|
+
- validate that the slow interaction is actually improved after each change
|
|
51
|
+
|
|
52
|
+
## Audit Output
|
|
53
|
+
|
|
54
|
+
Use `assets/templates/design-audit-report.v1.md` and capture:
|
|
55
|
+
|
|
56
|
+
- issue
|
|
57
|
+
- evidence
|
|
58
|
+
- suspected owner
|
|
59
|
+
- fix
|
|
60
|
+
- validation result
|
|
61
|
+
|
|
62
|
+
## Validation Commands
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npx opendevbrowser launch --no-extension --start-url http://127.0.0.1:3000
|
|
66
|
+
npx opendevbrowser debug-trace-snapshot --session-id <session-id>
|
|
67
|
+
npx opendevbrowser screenshot --session-id <session-id>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Pair browser evidence with React DevTools Profiler or equivalent framework tooling when the regression is render-bound.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Research Harvest Workflow
|
|
2
|
+
|
|
3
|
+
Use this workflow before design direction is locked, when the brief references competitors, or when a redesign needs stronger visual and interaction references than the local repo already provides.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Turn live product references into a deterministic pattern board instead of vague inspiration.
|
|
8
|
+
|
|
9
|
+
## Inputs
|
|
10
|
+
|
|
11
|
+
- A focused brief or design question
|
|
12
|
+
- `3` to `5` reference products or pages
|
|
13
|
+
- The target surface in this repo
|
|
14
|
+
- Constraints that must not be violated:
|
|
15
|
+
- existing design system rules
|
|
16
|
+
- supported libraries and runtime budgets
|
|
17
|
+
- accessibility and responsive requirements
|
|
18
|
+
|
|
19
|
+
## Evidence Loop
|
|
20
|
+
|
|
21
|
+
1. Pick reference pages that match the product shape:
|
|
22
|
+
- dashboard
|
|
23
|
+
- marketing landing page
|
|
24
|
+
- onboarding flow
|
|
25
|
+
- editor
|
|
26
|
+
- auth/settings surface
|
|
27
|
+
2. Capture the surface with OpenDevBrowser:
|
|
28
|
+
- `launch`
|
|
29
|
+
- `goto`
|
|
30
|
+
- `snapshot`
|
|
31
|
+
- `screenshot`
|
|
32
|
+
- `debug-trace-snapshot` when motion, loading, or layout churn matters
|
|
33
|
+
3. Record each page in `assets/templates/reference-pattern-board.v1.json`.
|
|
34
|
+
4. For each reference, extract:
|
|
35
|
+
- layout recipe
|
|
36
|
+
- content hierarchy
|
|
37
|
+
- component families
|
|
38
|
+
- motion posture
|
|
39
|
+
- loading and empty-state strategy
|
|
40
|
+
- token and theming clues
|
|
41
|
+
- patterns to borrow
|
|
42
|
+
- patterns to reject
|
|
43
|
+
5. Synthesize only the patterns that fit the repo's current surface, libraries, and runtime budgets.
|
|
44
|
+
6. Translate the synthesis into the design contract before touching `/canvas` or code.
|
|
45
|
+
|
|
46
|
+
## What To Borrow From External Patterns
|
|
47
|
+
|
|
48
|
+
These cues should stay explicit in the pattern board:
|
|
49
|
+
|
|
50
|
+
- From Dimillian:
|
|
51
|
+
- start from the closest shipped screen family
|
|
52
|
+
- decide shell, route, overlay, async, and token ownership before implementation
|
|
53
|
+
- validate patterns in isolation before full integration
|
|
54
|
+
- From Vercel v0:
|
|
55
|
+
- specify structure, state, and constraints directly
|
|
56
|
+
- describe concrete interaction states instead of aesthetic buzzwords
|
|
57
|
+
- From Lovable:
|
|
58
|
+
- use real content and realistic journeys
|
|
59
|
+
- iterate one improvement axis at a time
|
|
60
|
+
- From public frontend-designer agents:
|
|
61
|
+
- inspect current stack and assets first
|
|
62
|
+
- combine aesthetics, accessibility, and implementation practicality in one review loop
|
|
63
|
+
|
|
64
|
+
## OpenDevBrowser Command Pattern
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx opendevbrowser launch --no-extension --start-url https://example.com
|
|
68
|
+
npx opendevbrowser goto --session-id <session-id> --url <reference-url>
|
|
69
|
+
npx opendevbrowser snapshot --session-id <session-id>
|
|
70
|
+
npx opendevbrowser screenshot --session-id <session-id>
|
|
71
|
+
npx opendevbrowser debug-trace-snapshot --session-id <session-id>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Repeat this for each selected reference. Keep the resulting notes in one pattern board so the design contract has a visible source of truth.
|
|
75
|
+
|
|
76
|
+
## Exit Criteria
|
|
77
|
+
|
|
78
|
+
- The pattern board lists at least `3` live references.
|
|
79
|
+
- Borrowed and rejected patterns are both explicit.
|
|
80
|
+
- The chosen design direction is justified by evidence, not taste alone.
|
|
81
|
+
- The resulting design contract names component families, state ownership, and validation targets before implementation starts.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Scroll Reveal Surface Planning
|
|
2
|
+
|
|
3
|
+
Use this when narrative sequencing, pinned sections, or viewport-driven motion is part of the design instead of decorative afterthought.
|
|
4
|
+
|
|
5
|
+
## 1. Declare The Driver First
|
|
6
|
+
|
|
7
|
+
Choose one progress owner before writing animation code:
|
|
8
|
+
|
|
9
|
+
- page-level normalized progress
|
|
10
|
+
- section-local reveal progress
|
|
11
|
+
- pinned stage index with explicit transitions
|
|
12
|
+
|
|
13
|
+
Do not mix multiple observers, ad-hoc scroll listeners, and independent card timers for the same narrative.
|
|
14
|
+
|
|
15
|
+
## 2. Separate Layout From Motion
|
|
16
|
+
|
|
17
|
+
- layout owns reading order, overflow, and breakpoint behavior
|
|
18
|
+
- motion owns interpolation and reveal timing
|
|
19
|
+
- content owns message sequencing and copy density
|
|
20
|
+
|
|
21
|
+
If motion changes layout ownership, the design contract is incomplete.
|
|
22
|
+
|
|
23
|
+
## 3. Reduced Motion Is Not Optional
|
|
24
|
+
|
|
25
|
+
Define the fallback up front:
|
|
26
|
+
|
|
27
|
+
- no pinning
|
|
28
|
+
- instant section reveal
|
|
29
|
+
- opacity-only transitions
|
|
30
|
+
- static ordering with no transform-based staging
|
|
31
|
+
|
|
32
|
+
The reduced-motion path should preserve comprehension, not merely disable animation.
|
|
33
|
+
|
|
34
|
+
## 4. Keep Stages Explicit
|
|
35
|
+
|
|
36
|
+
For every scroll-driven surface, document:
|
|
37
|
+
|
|
38
|
+
- stage count
|
|
39
|
+
- trigger range
|
|
40
|
+
- sticky or pinned regions
|
|
41
|
+
- exit condition
|
|
42
|
+
- fallback behavior on mobile or short viewports
|
|
43
|
+
|
|
44
|
+
If the stage model cannot be written down, it is too implicit to ship safely.
|
|
45
|
+
|
|
46
|
+
## 5. Browser Validation
|
|
47
|
+
|
|
48
|
+
Validate:
|
|
49
|
+
|
|
50
|
+
- mobile, tablet, and desktop viewport behavior
|
|
51
|
+
- keyboard and reading order while the effect is active
|
|
52
|
+
- console stability during scroll
|
|
53
|
+
- reduced-motion output
|
|
54
|
+
- no competing transforms across sibling sections
|
|
55
|
+
|
|
56
|
+
Use `snapshot`, `screenshot`, and `debug-trace-snapshot` on the real surface after the isolated preview passes.
|
|
57
|
+
|
|
58
|
+
## Failure Signals
|
|
59
|
+
|
|
60
|
+
- each section owns its own scroll math
|
|
61
|
+
- pinned content traps focus or blocks reading order
|
|
62
|
+
- reduced-motion removes structure instead of motion only
|
|
63
|
+
- mobile collapses because the reveal model depends on tall desktop viewports
|
|
64
|
+
- the design cannot explain which value actually drives the reveal
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# State Ownership Matrix
|
|
2
|
+
|
|
3
|
+
High-quality frontend work depends on deciding who owns state before component APIs or prompts expand. One state should have one clear owner.
|
|
4
|
+
|
|
5
|
+
| State kind | Primary owner | Typical examples | Avoid |
|
|
6
|
+
| --- | --- | --- | --- |
|
|
7
|
+
| Micro interaction state | Local component state | hover affordance, disclosure open state, input focus styling | lifting purely presentational state into global stores |
|
|
8
|
+
| Draft form state | Closest form controller or route-level model | unsaved edits, validation summary, staged submit payload | mirroring each field into unrelated sibling components |
|
|
9
|
+
| URL-addressable view state | URL or search params | filters, sort order, tabs, pagination, selected record id | hiding shareable or refresh-stable state in local component memory |
|
|
10
|
+
| Navigation and deep-link state | route owner or shell-level router | canonical route params, tab destination, invalid-param fallback, external entry translation | letting buttons and tabs build route strings independently |
|
|
11
|
+
| Remote async state | data layer or query cache | list fetch, optimistic mutations, background refresh | duplicating server state into local component snapshots without invalidation rules |
|
|
12
|
+
| Workspace or session state | app-level store or context | authenticated workspace, current project, cross-route inspector selection | pushing global state into prop chains when many routes need it |
|
|
13
|
+
| Overlay state | single route or feature owner | active modal item, drawer record id, command palette visibility | multiple booleans across siblings controlling one overlay |
|
|
14
|
+
| Canvas governance state | design contract and `/canvas` generation plan | plan acceptance, mutation requirements, validation targets | letting ad-hoc UI state bypass the contract |
|
|
15
|
+
| Scroll or motion progress | dedicated derived controller | section reveal progress, pinned story stage, viewport interpolation | separate observers per card with competing transforms |
|
|
16
|
+
|
|
17
|
+
## Ownership Rules
|
|
18
|
+
|
|
19
|
+
- If state must survive refresh, it probably belongs in the URL, repo, or data layer.
|
|
20
|
+
- If state must coordinate more than one branch of the tree, write down the owner explicitly before coding.
|
|
21
|
+
- If state exists only to mirror props, remove it unless the component is intentionally editing a local draft.
|
|
22
|
+
- For overlays, prefer item identity or a single state object over boolean pairs like `isOpen` plus `selectedId`.
|
|
23
|
+
- For async flows, define loading, success, and failure ownership together so the UI does not split them across unrelated hooks.
|
|
24
|
+
|
|
25
|
+
## Design-Agent Prompt Rules
|
|
26
|
+
|
|
27
|
+
When using this skill, declare:
|
|
28
|
+
|
|
29
|
+
- the owner of selection state
|
|
30
|
+
- the owner of navigation and deep-link translation
|
|
31
|
+
- the owner of async state
|
|
32
|
+
- the owner of overlay state
|
|
33
|
+
- whether view state belongs in the URL
|
|
34
|
+
- whether the `/canvas` plan or repo code is the mutation authority
|
|
35
|
+
|
|
36
|
+
If any of those are unclear, the contract is incomplete.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Theming And Token Ownership
|
|
2
|
+
|
|
3
|
+
Use this when the design task touches visual direction, design systems, or any reusable UI surface that should remain consistent over time.
|
|
4
|
+
|
|
5
|
+
## 1. Keep One Semantic Token Source
|
|
6
|
+
|
|
7
|
+
Choose one owner for shared visual tokens:
|
|
8
|
+
|
|
9
|
+
- app root or workspace shell for global theme values
|
|
10
|
+
- feature shell only when the product intentionally supports a local variant
|
|
11
|
+
|
|
12
|
+
The token source should define semantic values such as background, surface, text, accent, spacing, radius, shadow, and motion tiers.
|
|
13
|
+
|
|
14
|
+
## 2. Keep Components Semantic
|
|
15
|
+
|
|
16
|
+
- consume semantic tokens instead of raw hex values or one-off spacing constants
|
|
17
|
+
- let typography, spacing, and motion inherit from the same token system when possible
|
|
18
|
+
- reserve raw values for rare one-off illustration or algorithmic art cases, not routine UI structure
|
|
19
|
+
|
|
20
|
+
This keeps visual changes centralized and makes previews and audits easier to trust.
|
|
21
|
+
|
|
22
|
+
## 3. Theme Controls Need An Owner
|
|
23
|
+
|
|
24
|
+
- user theme preferences belong in settings or an app-level controller
|
|
25
|
+
- temporary campaign or feature skins must still map back to semantic tokens
|
|
26
|
+
- previews and isolated fixtures should install the same token source the real UI expects
|
|
27
|
+
|
|
28
|
+
Do not let a leaf component quietly become the token authority.
|
|
29
|
+
|
|
30
|
+
## 4. Review Prompts
|
|
31
|
+
|
|
32
|
+
1. Where is the canonical token source?
|
|
33
|
+
2. Which semantic tokens does this surface rely on?
|
|
34
|
+
3. Are any raw values hiding inside repeated components?
|
|
35
|
+
4. Does the preview or fixture install the same theme owner as the integrated screen?
|
|
36
|
+
5. If the product supports theming controls, who owns them?
|
|
37
|
+
|
|
38
|
+
## Failure Signals
|
|
39
|
+
|
|
40
|
+
- repeated components hardcode their own colors or spacing
|
|
41
|
+
- the visual direction depends on raw values scattered across leaves
|
|
42
|
+
- preview fixtures do not install the theme or token owner required by production
|
|
43
|
+
- feature-local overrides drift away from the semantic token vocabulary
|