@dfosco/storyboard 0.5.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commandpalette.config.json +152 -0
- package/dist/storyboard-ui.css +1 -0
- package/dist/storyboard-ui.js +21328 -0
- package/dist/storyboard-ui.js.map +1 -0
- package/dist/tailwind.css +2 -0
- package/dist/tiny-canvas.css +1 -0
- package/dist/tiny-canvas.js +389 -0
- package/package.json +121 -0
- package/paste.config.json +67 -0
- package/scaffold/AGENTS.md +432 -0
- package/scaffold/agents/prompt-agent.agent.md +181 -0
- package/scaffold/agents/terminal-agent.agent.md +351 -0
- package/scaffold/codex/config.toml +246 -0
- package/scaffold/deploy.yml +103 -0
- package/scaffold/githooks/pre-push +114 -0
- package/scaffold/gitignore +64 -0
- package/scaffold/manifest.json +56 -0
- package/scaffold/preview.yml +181 -0
- package/scaffold/scripts/link.sh +26 -0
- package/scaffold/scripts/unlink.sh +10 -0
- package/scaffold/skills/agent-browser/SKILL.md +260 -0
- package/scaffold/skills/canvas/SKILL.md +364 -0
- package/scaffold/skills/create/SKILL.md +501 -0
- package/scaffold/skills/ship/SKILL.md +237 -0
- package/scaffold/skills/storyboard/SKILL.md +360 -0
- package/scaffold/skills/update-storyboard/SKILL.md +16 -0
- package/scaffold/skills/update-storyboard/update-storyboard-packages.sh +26 -0
- package/scaffold/skills/vitest/GENERATION.md +5 -0
- package/scaffold/skills/vitest/SKILL.md +52 -0
- package/scaffold/skills/vitest/references/advanced-environments.md +264 -0
- package/scaffold/skills/vitest/references/advanced-projects.md +300 -0
- package/scaffold/skills/vitest/references/advanced-type-testing.md +237 -0
- package/scaffold/skills/vitest/references/advanced-vi.md +249 -0
- package/scaffold/skills/vitest/references/core-cli.md +166 -0
- package/scaffold/skills/vitest/references/core-config.md +174 -0
- package/scaffold/skills/vitest/references/core-describe.md +193 -0
- package/scaffold/skills/vitest/references/core-expect.md +219 -0
- package/scaffold/skills/vitest/references/core-hooks.md +244 -0
- package/scaffold/skills/vitest/references/core-test-api.md +233 -0
- package/scaffold/skills/vitest/references/features-concurrency.md +250 -0
- package/scaffold/skills/vitest/references/features-context.md +238 -0
- package/scaffold/skills/vitest/references/features-coverage.md +207 -0
- package/scaffold/skills/vitest/references/features-filtering.md +211 -0
- package/scaffold/skills/vitest/references/features-mocking.md +265 -0
- package/scaffold/skills/vitest/references/features-snapshots.md +207 -0
- package/scaffold/skills/worktree/SKILL.md +93 -0
- package/scaffold/storyboard.config.json +44 -0
- package/src/canvas/Canvas.jsx +78 -0
- package/src/canvas/Draggable.jsx +235 -0
- package/src/canvas/index.d.ts +41 -0
- package/src/canvas/index.js +6 -0
- package/src/canvas/style.css +118 -0
- package/src/canvas/useResetCanvas.js +17 -0
- package/src/canvas/utils.js +136 -0
- package/src/core/assets/fonts/IoskeleyMono-Bold.woff2 +0 -0
- package/src/core/assets/fonts/IoskeleyMono-Italic.woff2 +0 -0
- package/src/core/assets/fonts/IoskeleyMono-Medium.woff2 +0 -0
- package/src/core/assets/fonts/IoskeleyMono-Regular.woff2 +0 -0
- package/src/core/assets/fonts/IoskeleyMono-SemiBold.woff2 +0 -0
- package/src/core/autosync/server.js +714 -0
- package/src/core/autosync/server.test.js +158 -0
- package/src/core/canvas/__tests__/agent-integration.test.js +596 -0
- package/src/core/canvas/__tests__/helpers/browser.js +95 -0
- package/src/core/canvas/__tests__/helpers/canvas-api.js +129 -0
- package/src/core/canvas/__tests__/helpers/perf.js +118 -0
- package/src/core/canvas/__tests__/helpers/setup.js +176 -0
- package/src/core/canvas/__tests__/helpers/tmux.js +130 -0
- package/src/core/canvas/__tests__/helpers/transcript.js +132 -0
- package/src/core/canvas/__tests__/terminal-integration.test.js +177 -0
- package/src/core/canvas/collision.js +292 -0
- package/src/core/canvas/collision.test.js +371 -0
- package/src/core/canvas/compact.js +83 -0
- package/src/core/canvas/deriveCanvasId.test.js +40 -0
- package/src/core/canvas/githubEmbeds.js +527 -0
- package/src/core/canvas/githubEmbeds.test.js +302 -0
- package/src/core/canvas/hot-pool.js +766 -0
- package/src/core/canvas/identity.js +107 -0
- package/src/core/canvas/identity.test.js +100 -0
- package/src/core/canvas/materializer.js +259 -0
- package/src/core/canvas/materializer.test.js +356 -0
- package/src/core/canvas/selectedWidgets.js +270 -0
- package/src/core/canvas/selectedWidgets.test.js +321 -0
- package/src/core/canvas/server.js +3134 -0
- package/src/core/canvas/server.test.js +379 -0
- package/src/core/canvas/terminal-config.js +330 -0
- package/src/core/canvas/terminal-registry.js +465 -0
- package/src/core/canvas/terminal-server.js +1436 -0
- package/src/core/canvas/writeGuard.js +53 -0
- package/src/core/cli/agent.js +85 -0
- package/src/core/cli/branch.js +386 -0
- package/src/core/cli/canvasAdd.js +241 -0
- package/src/core/cli/canvasBatch.js +98 -0
- package/src/core/cli/canvasBounds.js +160 -0
- package/src/core/cli/canvasRead.js +236 -0
- package/src/core/cli/canvasUpdate.js +179 -0
- package/src/core/cli/code.js +67 -0
- package/src/core/cli/compact.js +62 -0
- package/src/core/cli/create.js +674 -0
- package/src/core/cli/dev-helpers.js +53 -0
- package/src/core/cli/dev-helpers.test.js +53 -0
- package/src/core/cli/dev.js +430 -0
- package/src/core/cli/exit.js +38 -0
- package/src/core/cli/flags.js +174 -0
- package/src/core/cli/flags.test.js +155 -0
- package/src/core/cli/index.js +233 -0
- package/src/core/cli/intro.js +37 -0
- package/src/core/cli/proxy.js +319 -0
- package/src/core/cli/proxy.test.js +63 -0
- package/src/core/cli/schemas.js +223 -0
- package/src/core/cli/server.js +192 -0
- package/src/core/cli/serverUrl.js +61 -0
- package/src/core/cli/sessions.js +459 -0
- package/src/core/cli/setup.js +404 -0
- package/src/core/cli/terminal-commands.js +287 -0
- package/src/core/cli/terminal-messaging.js +231 -0
- package/src/core/cli/terminal-welcome.js +515 -0
- package/src/core/cli/updateVersion.js +124 -0
- package/src/core/comments/api.js +284 -0
- package/src/core/comments/api.test.js +282 -0
- package/src/core/comments/auth.js +151 -0
- package/src/core/comments/auth.test.js +167 -0
- package/src/core/comments/commentCache.js +109 -0
- package/src/core/comments/commentCache.test.js +48 -0
- package/src/core/comments/commentDrafts.js +68 -0
- package/src/core/comments/commentMode.js +63 -0
- package/src/core/comments/commentMode.test.js +90 -0
- package/src/core/comments/config.js +47 -0
- package/src/core/comments/config.test.js +77 -0
- package/src/core/comments/graphql.js +65 -0
- package/src/core/comments/graphql.test.js +95 -0
- package/src/core/comments/index.js +42 -0
- package/src/core/comments/metadata.js +52 -0
- package/src/core/comments/metadata.test.js +110 -0
- package/src/core/comments/queries.js +245 -0
- package/src/core/comments/ui/AuthModal.jsx +114 -0
- package/src/core/comments/ui/CommentOverlay.js +52 -0
- package/src/core/comments/ui/CommentWindow.jsx +329 -0
- package/src/core/comments/ui/CommentsDrawer.jsx +102 -0
- package/src/core/comments/ui/Composer.jsx +64 -0
- package/src/core/comments/ui/authModal.js +66 -0
- package/src/core/comments/ui/authModal.test.js +76 -0
- package/src/core/comments/ui/comment-cursor-dark.svg +1 -0
- package/src/core/comments/ui/comment-cursor.svg +1 -0
- package/src/core/comments/ui/comment-layout.css +142 -0
- package/src/core/comments/ui/commentWindow.js +121 -0
- package/src/core/comments/ui/comments.css +242 -0
- package/src/core/comments/ui/commentsDrawer.js +84 -0
- package/src/core/comments/ui/composer.js +136 -0
- package/src/core/comments/ui/index.js +14 -0
- package/src/core/comments/ui/mount.js +687 -0
- package/src/core/comments/ui/mount.test.js +336 -0
- package/src/core/data/dotPath.js +53 -0
- package/src/core/data/dotPath.test.js +114 -0
- package/src/core/data/loader.js +409 -0
- package/src/core/data/loader.test.js +599 -0
- package/src/core/data/viewfinder.js +363 -0
- package/src/core/data/viewfinder.test.js +456 -0
- package/src/core/devtools/devtools-consumer.js +28 -0
- package/src/core/devtools/devtools.js +144 -0
- package/src/core/devtools/devtools.test.js +75 -0
- package/src/core/devtools/sceneDebug.js +112 -0
- package/src/core/devtools/sceneDebug.test.js +141 -0
- package/src/core/index.js +124 -0
- package/src/core/inspector/fiberWalker.js +239 -0
- package/src/core/inspector/highlighter.js +275 -0
- package/src/core/inspector/mouseMode.js +259 -0
- package/src/core/lib/components/ui/alert/alert-action.jsx +11 -0
- package/src/core/lib/components/ui/alert/alert-description.jsx +11 -0
- package/src/core/lib/components/ui/alert/alert-title.jsx +11 -0
- package/src/core/lib/components/ui/alert/alert.jsx +25 -0
- package/src/core/lib/components/ui/alert/index.js +17 -0
- package/src/core/lib/components/ui/avatar/avatar-badge.jsx +22 -0
- package/src/core/lib/components/ui/avatar/avatar-fallback.jsx +18 -0
- package/src/core/lib/components/ui/avatar/avatar-group-count.jsx +19 -0
- package/src/core/lib/components/ui/avatar/avatar-group.jsx +19 -0
- package/src/core/lib/components/ui/avatar/avatar-image.jsx +15 -0
- package/src/core/lib/components/ui/avatar/avatar.jsx +19 -0
- package/src/core/lib/components/ui/avatar/index.js +22 -0
- package/src/core/lib/components/ui/badge/badge.jsx +31 -0
- package/src/core/lib/components/ui/badge/index.js +2 -0
- package/src/core/lib/components/ui/button/button.jsx +100 -0
- package/src/core/lib/components/ui/button/index.js +12 -0
- package/src/core/lib/components/ui/card/card-action.jsx +11 -0
- package/src/core/lib/components/ui/card/card-content.jsx +11 -0
- package/src/core/lib/components/ui/card/card-description.jsx +11 -0
- package/src/core/lib/components/ui/card/card-footer.jsx +11 -0
- package/src/core/lib/components/ui/card/card-header.jsx +19 -0
- package/src/core/lib/components/ui/card/card-title.jsx +11 -0
- package/src/core/lib/components/ui/card/card.jsx +17 -0
- package/src/core/lib/components/ui/card/index.js +25 -0
- package/src/core/lib/components/ui/checkbox/checkbox.jsx +29 -0
- package/src/core/lib/components/ui/checkbox/index.js +6 -0
- package/src/core/lib/components/ui/collapsible/collapsible-content.jsx +7 -0
- package/src/core/lib/components/ui/collapsible/collapsible-trigger.jsx +7 -0
- package/src/core/lib/components/ui/collapsible/collapsible.jsx +7 -0
- package/src/core/lib/components/ui/collapsible/index.js +13 -0
- package/src/core/lib/components/ui/dialog/dialog-close.jsx +7 -0
- package/src/core/lib/components/ui/dialog/dialog-content.jsx +34 -0
- package/src/core/lib/components/ui/dialog/dialog-description.jsx +15 -0
- package/src/core/lib/components/ui/dialog/dialog-footer.jsx +23 -0
- package/src/core/lib/components/ui/dialog/dialog-header.jsx +11 -0
- package/src/core/lib/components/ui/dialog/dialog-overlay.jsx +15 -0
- package/src/core/lib/components/ui/dialog/dialog-portal.jsx +4 -0
- package/src/core/lib/components/ui/dialog/dialog-title.jsx +15 -0
- package/src/core/lib/components/ui/dialog/dialog-trigger.jsx +7 -0
- package/src/core/lib/components/ui/dialog/dialog.jsx +4 -0
- package/src/core/lib/components/ui/dialog/index.js +34 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.jsx +8 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.jsx +30 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-content.jsx +22 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.jsx +16 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-group.jsx +7 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-item.jsx +20 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-label.jsx +17 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-portal.jsx +4 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.jsx +7 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.jsx +29 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-separator.jsx +15 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.jsx +16 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.jsx +15 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.jsx +23 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-sub.jsx +4 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu-trigger.jsx +7 -0
- package/src/core/lib/components/ui/dropdown-menu/dropdown-menu.jsx +4 -0
- package/src/core/lib/components/ui/dropdown-menu/index.js +54 -0
- package/src/core/lib/components/ui/input/index.js +7 -0
- package/src/core/lib/components/ui/input/input.jsx +19 -0
- package/src/core/lib/components/ui/label/index.js +7 -0
- package/src/core/lib/components/ui/label/label.jsx +19 -0
- package/src/core/lib/components/ui/panel/index.js +24 -0
- package/src/core/lib/components/ui/panel/panel-body.jsx +11 -0
- package/src/core/lib/components/ui/panel/panel-close.jsx +16 -0
- package/src/core/lib/components/ui/panel/panel-content.jsx +29 -0
- package/src/core/lib/components/ui/panel/panel-footer.jsx +11 -0
- package/src/core/lib/components/ui/panel/panel-header.jsx +11 -0
- package/src/core/lib/components/ui/panel/panel-title.jsx +12 -0
- package/src/core/lib/components/ui/panel/panel.jsx +4 -0
- package/src/core/lib/components/ui/popover/index.js +28 -0
- package/src/core/lib/components/ui/popover/popover-close.jsx +7 -0
- package/src/core/lib/components/ui/popover/popover-content.jsx +22 -0
- package/src/core/lib/components/ui/popover/popover-description.jsx +11 -0
- package/src/core/lib/components/ui/popover/popover-header.jsx +11 -0
- package/src/core/lib/components/ui/popover/popover-portal.jsx +4 -0
- package/src/core/lib/components/ui/popover/popover-title.jsx +11 -0
- package/src/core/lib/components/ui/popover/popover-trigger.jsx +8 -0
- package/src/core/lib/components/ui/popover/popover.jsx +4 -0
- package/src/core/lib/components/ui/searchable-list.jsx +160 -0
- package/src/core/lib/components/ui/select/index.js +37 -0
- package/src/core/lib/components/ui/select/select-content.jsx +30 -0
- package/src/core/lib/components/ui/select/select-group-heading.jsx +17 -0
- package/src/core/lib/components/ui/select/select-group.jsx +15 -0
- package/src/core/lib/components/ui/select/select-item.jsx +26 -0
- package/src/core/lib/components/ui/select/select-label.jsx +11 -0
- package/src/core/lib/components/ui/select/select-portal.jsx +4 -0
- package/src/core/lib/components/ui/select/select-scroll-down-button.jsx +18 -0
- package/src/core/lib/components/ui/select/select-scroll-up-button.jsx +18 -0
- package/src/core/lib/components/ui/select/select-separator.jsx +15 -0
- package/src/core/lib/components/ui/select/select-trigger.jsx +25 -0
- package/src/core/lib/components/ui/select/select.jsx +4 -0
- package/src/core/lib/components/ui/separator/index.js +7 -0
- package/src/core/lib/components/ui/separator/separator.jsx +22 -0
- package/src/core/lib/components/ui/sheet/index.js +34 -0
- package/src/core/lib/components/ui/sheet/sheet-close.jsx +7 -0
- package/src/core/lib/components/ui/sheet/sheet-content.jsx +35 -0
- package/src/core/lib/components/ui/sheet/sheet-description.jsx +15 -0
- package/src/core/lib/components/ui/sheet/sheet-footer.jsx +11 -0
- package/src/core/lib/components/ui/sheet/sheet-header.jsx +11 -0
- package/src/core/lib/components/ui/sheet/sheet-overlay.jsx +15 -0
- package/src/core/lib/components/ui/sheet/sheet-portal.jsx +4 -0
- package/src/core/lib/components/ui/sheet/sheet-title.jsx +15 -0
- package/src/core/lib/components/ui/sheet/sheet-trigger.jsx +7 -0
- package/src/core/lib/components/ui/sheet/sheet.jsx +4 -0
- package/src/core/lib/components/ui/textarea/index.js +7 -0
- package/src/core/lib/components/ui/textarea/textarea.jsx +18 -0
- package/src/core/lib/components/ui/toggle/index.js +8 -0
- package/src/core/lib/components/ui/toggle/toggle.jsx +36 -0
- package/src/core/lib/components/ui/toggle-group/index.js +10 -0
- package/src/core/lib/components/ui/toggle-group/toggle-group-item.jsx +29 -0
- package/src/core/lib/components/ui/toggle-group/toggle-group.jsx +43 -0
- package/src/core/lib/components/ui/tooltip/index.js +3 -0
- package/src/core/lib/components/ui/tooltip/tooltip-content.jsx +21 -0
- package/src/core/lib/components/ui/tooltip/tooltip-trigger.jsx +23 -0
- package/src/core/lib/components/ui/tooltip/tooltip.jsx +11 -0
- package/src/core/lib/components/ui/trigger-button/index.js +6 -0
- package/src/core/lib/components/ui/trigger-button/trigger-button.css +38 -0
- package/src/core/lib/components/ui/trigger-button/trigger-button.jsx +63 -0
- package/src/core/lib/utils/index.js +6 -0
- package/src/core/logger/devLogger.js +238 -0
- package/src/core/logger/devLogger.test.js +193 -0
- package/src/core/modes/modes.css +98 -0
- package/src/core/modes/modes.js +492 -0
- package/src/core/modes/modes.test.js +562 -0
- package/src/core/mountStoryboardCore.js +478 -0
- package/src/core/rename-watcher/config.json +23 -0
- package/src/core/rename-watcher/watcher.js +531 -0
- package/src/core/scaffold.js +100 -0
- package/src/core/server/index.js +391 -0
- package/src/core/session/bodyClasses.js +128 -0
- package/src/core/session/bodyClasses.test.js +192 -0
- package/src/core/session/hashSubscribe.js +19 -0
- package/src/core/session/hashSubscribe.test.js +62 -0
- package/src/core/session/hideMode.js +424 -0
- package/src/core/session/hideMode.test.js +268 -0
- package/src/core/session/interceptHideParams.js +35 -0
- package/src/core/session/interceptHideParams.test.js +90 -0
- package/src/core/session/localStorage.js +134 -0
- package/src/core/session/localStorage.test.js +148 -0
- package/src/core/session/session.js +76 -0
- package/src/core/session/session.test.js +91 -0
- package/src/core/stores/canvasConfig.js +134 -0
- package/src/core/stores/canvasConfig.test.js +120 -0
- package/src/core/stores/commandActions.js +284 -0
- package/src/core/stores/commandPaletteConfig.js +31 -0
- package/src/core/stores/configSchema.js +232 -0
- package/src/core/stores/configSchema.test.js +72 -0
- package/src/core/stores/configStore.js +161 -0
- package/src/core/stores/customerModeConfig.js +30 -0
- package/src/core/stores/featureFlags.js +127 -0
- package/src/core/stores/paletteProviders.js +360 -0
- package/src/core/stores/paletteProviders.test.js +186 -0
- package/src/core/stores/plugins.js +40 -0
- package/src/core/stores/plugins.test.js +68 -0
- package/src/core/stores/recentArtifacts.js +68 -0
- package/src/core/stores/recentArtifacts.test.js +71 -0
- package/src/core/stores/sidePanelStore.ts +143 -0
- package/src/core/stores/themeStore.ts +291 -0
- package/src/core/stores/toolRegistry.js +227 -0
- package/src/core/stores/toolStateStore.js +183 -0
- package/src/core/stores/toolStateStore.test.js +220 -0
- package/src/core/stores/toolbarConfigStore.js +165 -0
- package/src/core/stores/uiConfig.js +64 -0
- package/src/core/stores/uiConfig.test.js +63 -0
- package/src/core/styles/tailwind.css +204 -0
- package/src/core/tools/handlers/autosync.js +12 -0
- package/src/core/tools/handlers/canvasAddWidget.js +11 -0
- package/src/core/tools/handlers/canvasAgents.js +20 -0
- package/src/core/tools/handlers/canvasToolbar.js +56 -0
- package/src/core/tools/handlers/commandPalette.js +9 -0
- package/src/core/tools/handlers/comments.js +16 -0
- package/src/core/tools/handlers/create.js +39 -0
- package/src/core/tools/handlers/devtools.js +122 -0
- package/src/core/tools/handlers/devtools.test.js +87 -0
- package/src/core/tools/handlers/featureFlags.js +21 -0
- package/src/core/tools/handlers/flows.js +68 -0
- package/src/core/tools/handlers/hideChrome.js +9 -0
- package/src/core/tools/handlers/hideToolbars.js +25 -0
- package/src/core/tools/handlers/inspector.js +19 -0
- package/src/core/tools/handlers/paletteTheme.js +35 -0
- package/src/core/tools/handlers/theme.js +9 -0
- package/src/core/tools/registry.js +26 -0
- package/src/core/tools/surfaces/canvasToolbar.js +10 -0
- package/src/core/tools/surfaces/commandList.js +10 -0
- package/src/core/tools/surfaces/mainToolbar.js +11 -0
- package/src/core/tools/surfaces/registry.js +19 -0
- package/src/core/ui/ActionMenuButton.jsx +114 -0
- package/src/core/ui/AutosyncMenuButton.css +67 -0
- package/src/core/ui/AutosyncMenuButton.jsx +242 -0
- package/src/core/ui/BranchSelect.jsx +29 -0
- package/src/core/ui/BranchSelect.module.css +30 -0
- package/src/core/ui/CanvasAgentsMenu.jsx +89 -0
- package/src/core/ui/CanvasCreateMenu.jsx +611 -0
- package/src/core/ui/CanvasSnap.css +27 -0
- package/src/core/ui/CanvasSnap.jsx +51 -0
- package/src/core/ui/CanvasUndoRedo.css +36 -0
- package/src/core/ui/CanvasUndoRedo.jsx +62 -0
- package/src/core/ui/CanvasZoomControl.css +53 -0
- package/src/core/ui/CanvasZoomControl.jsx +49 -0
- package/src/core/ui/CanvasZoomToFit.css +18 -0
- package/src/core/ui/CanvasZoomToFit.jsx +26 -0
- package/src/core/ui/CommandMenu.css +8 -0
- package/src/core/ui/CommandMenu.jsx +287 -0
- package/src/core/ui/CommandPalette.jsx +35 -0
- package/src/core/ui/CommandPaletteTrigger.jsx +25 -0
- package/src/core/ui/CommentsMenuButton.jsx +40 -0
- package/src/core/ui/CoreUIBar.css +47 -0
- package/src/core/ui/CoreUIBar.jsx +905 -0
- package/src/core/ui/CreateMenuButton.jsx +117 -0
- package/src/core/ui/HideChromeTrigger.jsx +48 -0
- package/src/core/ui/Icon.jsx +279 -0
- package/src/core/ui/InspectorPanel.css +109 -0
- package/src/core/ui/InspectorPanel.jsx +632 -0
- package/src/core/ui/PwaInstallBanner.css +42 -0
- package/src/core/ui/PwaInstallBanner.jsx +124 -0
- package/src/core/ui/SidePanel.jsx +261 -0
- package/src/core/ui/ThemeMenuButton.jsx +139 -0
- package/src/core/ui/core-ui-colors.css +129 -0
- package/src/core/ui/design-modes.ts +7 -0
- package/src/core/ui/sidepanel.css +301 -0
- package/src/core/ui/viewfinder.ts +7 -0
- package/src/core/ui-entry.js +30 -0
- package/src/core/utils/fuzzySearch.js +117 -0
- package/src/core/utils/fuzzySearch.test.js +119 -0
- package/src/core/utils/mobileViewport.js +57 -0
- package/src/core/utils/mobileViewport.test.js +68 -0
- package/src/core/utils/prodMode.js +38 -0
- package/src/core/utils/smoothCorners.js +20 -0
- package/src/core/vite/docs-handler.js +155 -0
- package/src/core/vite/server-plugin.js +797 -0
- package/src/core/workshop/features/createCanvas/CreateCanvasForm.jsx +260 -0
- package/src/core/workshop/features/createCanvas/index.js +14 -0
- package/src/core/workshop/features/createFlow/CreateFlowForm.jsx +334 -0
- package/src/core/workshop/features/createFlow/index.js +19 -0
- package/src/core/workshop/features/createFlow/server.js +663 -0
- package/src/core/workshop/features/createPage/CreatePageForm.jsx +304 -0
- package/src/core/workshop/features/createPage/index.js +11 -0
- package/src/core/workshop/features/createPrototype/CreatePrototypeForm.jsx +289 -0
- package/src/core/workshop/features/createPrototype/index.js +19 -0
- package/src/core/workshop/features/createPrototype/server.js +433 -0
- package/src/core/workshop/features/createStory/CreateStoryForm.jsx +208 -0
- package/src/core/workshop/features/createStory/index.js +14 -0
- package/src/core/workshop/features/registry-server.js +22 -0
- package/src/core/workshop/features/registry.js +28 -0
- package/src/core/workshop/features/templateIndex.js +155 -0
- package/src/core/workshop/ui/WorkshopPanel.jsx +98 -0
- package/src/core/workshop/ui/mount.ts +6 -0
- package/src/core/worktree/port.js +268 -0
- package/src/core/worktree/port.test.js +222 -0
- package/src/core/worktree/serverRegistry.js +120 -0
- package/src/internals/AuthModal/AuthModal.jsx +132 -0
- package/src/internals/AuthModal/AuthModal.module.css +221 -0
- package/src/internals/BranchBar/BranchBar.jsx +87 -0
- package/src/internals/BranchBar/BranchBar.module.css +247 -0
- package/src/internals/BranchBar/useBranches.js +93 -0
- package/src/internals/BranchBar/useBranches.test.js +68 -0
- package/src/internals/CommandPalette/CommandPalette.jsx +1361 -0
- package/src/internals/CommandPalette/CreateDialog.jsx +219 -0
- package/src/internals/CommandPalette/command-palette.css +180 -0
- package/src/internals/FlowError.module.css +30 -0
- package/src/internals/Icon.jsx +279 -0
- package/src/internals/StoryboardContext.js +3 -0
- package/src/internals/Viewfinder.jsx +1479 -0
- package/src/internals/Viewfinder.module.css +1540 -0
- package/src/internals/Workspace.jsx +7 -0
- package/src/internals/__mocks__/virtual-storyboard-data-index.js +4 -0
- package/src/internals/canvas/CanvasControls.jsx +112 -0
- package/src/internals/canvas/CanvasControls.module.css +135 -0
- package/src/internals/canvas/CanvasPage.bridge.test.jsx +387 -0
- package/src/internals/canvas/CanvasPage.dragdrop.test.jsx +350 -0
- package/src/internals/canvas/CanvasPage.jsx +3092 -0
- package/src/internals/canvas/CanvasPage.module.css +187 -0
- package/src/internals/canvas/CanvasPage.multiselect.test.jsx +358 -0
- package/src/internals/canvas/CanvasToolbar.jsx +73 -0
- package/src/internals/canvas/CanvasToolbar.module.css +92 -0
- package/src/internals/canvas/ComponentErrorBoundary.jsx +50 -0
- package/src/internals/canvas/ConnectorLayer.jsx +208 -0
- package/src/internals/canvas/ConnectorLayer.module.css +129 -0
- package/src/internals/canvas/MarqueeOverlay.jsx +20 -0
- package/src/internals/canvas/PageSelector.jsx +587 -0
- package/src/internals/canvas/PageSelector.module.css +261 -0
- package/src/internals/canvas/PageSelector.test.jsx +113 -0
- package/src/internals/canvas/WebGLContextPool.jsx +292 -0
- package/src/internals/canvas/WebGLContextPool.test.jsx +165 -0
- package/src/internals/canvas/canvasApi.js +164 -0
- package/src/internals/canvas/canvasReloadGuard.js +37 -0
- package/src/internals/canvas/canvasReloadGuard.test.js +27 -0
- package/src/internals/canvas/canvasTheme.js +118 -0
- package/src/internals/canvas/componentIsolate.jsx +165 -0
- package/src/internals/canvas/componentSetIsolate.jsx +257 -0
- package/src/internals/canvas/computeCanvasBounds.test.js +121 -0
- package/src/internals/canvas/connectorGeometry.js +132 -0
- package/src/internals/canvas/hotPoolDevLogs.js +25 -0
- package/src/internals/canvas/textSelection.js +10 -0
- package/src/internals/canvas/textSelection.test.js +26 -0
- package/src/internals/canvas/useCanvas.js +126 -0
- package/src/internals/canvas/useCanvas.test.js +26 -0
- package/src/internals/canvas/useMarqueeSelect.js +213 -0
- package/src/internals/canvas/useMarqueeSelect.test.js +78 -0
- package/src/internals/canvas/useUndoRedo.js +86 -0
- package/src/internals/canvas/useUndoRedo.test.js +231 -0
- package/src/internals/canvas/widgets/CodePenEmbed.jsx +293 -0
- package/src/internals/canvas/widgets/CodePenEmbed.module.css +161 -0
- package/src/internals/canvas/widgets/ComponentSetWidget.jsx +2 -0
- package/src/internals/canvas/widgets/ComponentSetWidget.module.css +89 -0
- package/src/internals/canvas/widgets/ComponentWidget.jsx +14 -0
- package/src/internals/canvas/widgets/ComponentWidget.module.css +0 -0
- package/src/internals/canvas/widgets/CropOverlay.jsx +179 -0
- package/src/internals/canvas/widgets/CropOverlay.module.css +154 -0
- package/src/internals/canvas/widgets/ExpandedPane.jsx +474 -0
- package/src/internals/canvas/widgets/ExpandedPane.module.css +179 -0
- package/src/internals/canvas/widgets/ExpandedPane.test.jsx +240 -0
- package/src/internals/canvas/widgets/ExpandedPaneTopBar.jsx +111 -0
- package/src/internals/canvas/widgets/ExpandedPaneTopBar.module.css +59 -0
- package/src/internals/canvas/widgets/ExpandedPaneTopBar.test.jsx +45 -0
- package/src/internals/canvas/widgets/FigmaEmbed.jsx +296 -0
- package/src/internals/canvas/widgets/FigmaEmbed.module.css +222 -0
- package/src/internals/canvas/widgets/FrozenTerminalOverlay.jsx +151 -0
- package/src/internals/canvas/widgets/FrozenTerminalOverlay.module.css +83 -0
- package/src/internals/canvas/widgets/ImageWidget.jsx +287 -0
- package/src/internals/canvas/widgets/ImageWidget.module.css +81 -0
- package/src/internals/canvas/widgets/LinkPreview.jsx +439 -0
- package/src/internals/canvas/widgets/LinkPreview.module.css +585 -0
- package/src/internals/canvas/widgets/LinkPreview.test.jsx +193 -0
- package/src/internals/canvas/widgets/MarkdownBlock.jsx +354 -0
- package/src/internals/canvas/widgets/MarkdownBlock.module.css +377 -0
- package/src/internals/canvas/widgets/MarkdownBlock.test.jsx +92 -0
- package/src/internals/canvas/widgets/PromptWidget.jsx +428 -0
- package/src/internals/canvas/widgets/PromptWidget.module.css +273 -0
- package/src/internals/canvas/widgets/PrototypeEmbed.jsx +463 -0
- package/src/internals/canvas/widgets/PrototypeEmbed.module.css +579 -0
- package/src/internals/canvas/widgets/PrototypeEmbed.test.jsx +10 -0
- package/src/internals/canvas/widgets/ResizeHandle.jsx +67 -0
- package/src/internals/canvas/widgets/ResizeHandle.module.css +29 -0
- package/src/internals/canvas/widgets/StickyNote.jsx +92 -0
- package/src/internals/canvas/widgets/StickyNote.module.css +70 -0
- package/src/internals/canvas/widgets/StickyNote.test.jsx +116 -0
- package/src/internals/canvas/widgets/StorySetWidget.jsx +208 -0
- package/src/internals/canvas/widgets/StorySetWidget.module.css +89 -0
- package/src/internals/canvas/widgets/StoryWidget.jsx +334 -0
- package/src/internals/canvas/widgets/StoryWidget.module.css +211 -0
- package/src/internals/canvas/widgets/TerminalReadWidget.jsx +146 -0
- package/src/internals/canvas/widgets/TerminalReadWidget.module.css +94 -0
- package/src/internals/canvas/widgets/TerminalWidget.jsx +704 -0
- package/src/internals/canvas/widgets/TerminalWidget.module.css +444 -0
- package/src/internals/canvas/widgets/TilesWidget.jsx +300 -0
- package/src/internals/canvas/widgets/TilesWidget.module.css +133 -0
- package/src/internals/canvas/widgets/WidgetChrome.jsx +580 -0
- package/src/internals/canvas/widgets/WidgetChrome.module.css +421 -0
- package/src/internals/canvas/widgets/WidgetWrapper.jsx +15 -0
- package/src/internals/canvas/widgets/WidgetWrapper.module.css +25 -0
- package/src/internals/canvas/widgets/codepenUrl.js +75 -0
- package/src/internals/canvas/widgets/codepenUrl.test.js +76 -0
- package/src/internals/canvas/widgets/embedInteraction.test.jsx +173 -0
- package/src/internals/canvas/widgets/embedOverlay.module.css +35 -0
- package/src/internals/canvas/widgets/embedTheme.js +148 -0
- package/src/internals/canvas/widgets/expandUtils.js +559 -0
- package/src/internals/canvas/widgets/expandUtils.test.js +155 -0
- package/src/internals/canvas/widgets/figmaUrl.js +118 -0
- package/src/internals/canvas/widgets/figmaUrl.test.js +139 -0
- package/src/internals/canvas/widgets/githubUrl.js +82 -0
- package/src/internals/canvas/widgets/githubUrl.test.js +74 -0
- package/src/internals/canvas/widgets/iframeDevLogs.js +49 -0
- package/src/internals/canvas/widgets/iframeDevLogs.test.jsx +81 -0
- package/src/internals/canvas/widgets/index.js +42 -0
- package/src/internals/canvas/widgets/pasteRules.js +295 -0
- package/src/internals/canvas/widgets/pasteRules.test.js +474 -0
- package/src/internals/canvas/widgets/snapshotDisplay.test.jsx +211 -0
- package/src/internals/canvas/widgets/tilePool.js +23 -0
- package/src/internals/canvas/widgets/tiles/diagonal-bl.png +0 -0
- package/src/internals/canvas/widgets/tiles/diagonal-br.png +0 -0
- package/src/internals/canvas/widgets/tiles/diagonal-tl.png +0 -0
- package/src/internals/canvas/widgets/tiles/leaf.png +0 -0
- package/src/internals/canvas/widgets/tiles/quarter-tl.png +0 -0
- package/src/internals/canvas/widgets/tiles/quarter-tr.png +0 -0
- package/src/internals/canvas/widgets/tiles/solid-a.png +0 -0
- package/src/internals/canvas/widgets/tiles/solid-b.png +0 -0
- package/src/internals/canvas/widgets/widgetConfig.js +291 -0
- package/src/internals/canvas/widgets/widgetConfig.test.js +68 -0
- package/src/internals/canvas/widgets/widgetIcons.jsx +190 -0
- package/src/internals/canvas/widgets/widgetProps.js +133 -0
- package/src/internals/context/FormContext.js +13 -0
- package/src/internals/context/FormContext.test.js +48 -0
- package/src/internals/context.jsx +481 -0
- package/src/internals/context.test.jsx +296 -0
- package/src/internals/hashPreserver.js +73 -0
- package/src/internals/hashPreserver.test.js +107 -0
- package/src/internals/hooks/useConfig.js +14 -0
- package/src/internals/hooks/useFeatureFlag.js +14 -0
- package/src/internals/hooks/useFlows.js +50 -0
- package/src/internals/hooks/useFlows.test.js +134 -0
- package/src/internals/hooks/useHideMode.js +31 -0
- package/src/internals/hooks/useHideMode.test.js +43 -0
- package/src/internals/hooks/useLocalStorage.js +57 -0
- package/src/internals/hooks/useLocalStorage.test.js +75 -0
- package/src/internals/hooks/useMode.js +43 -0
- package/src/internals/hooks/useObject.js +101 -0
- package/src/internals/hooks/useObject.test.js +74 -0
- package/src/internals/hooks/useOverride.js +84 -0
- package/src/internals/hooks/useOverride.test.js +71 -0
- package/src/internals/hooks/usePrototypeReloadGuard.js +64 -0
- package/src/internals/hooks/useRecord.js +158 -0
- package/src/internals/hooks/useRecord.test.js +221 -0
- package/src/internals/hooks/useScene.js +38 -0
- package/src/internals/hooks/useScene.test.js +66 -0
- package/src/internals/hooks/useSceneData.js +108 -0
- package/src/internals/hooks/useSceneData.test.js +136 -0
- package/src/internals/hooks/useSession.js +4 -0
- package/src/internals/hooks/useSession.test.js +8 -0
- package/src/internals/hooks/useThemeState.js +61 -0
- package/src/internals/hooks/useThemeState.test.js +66 -0
- package/src/internals/hooks/useUndoRedo.js +28 -0
- package/src/internals/hooks/useUndoRedo.test.js +64 -0
- package/src/internals/index.js +58 -0
- package/src/internals/story/ComponentSetPage.jsx +198 -0
- package/src/internals/story/ComponentSetPage.module.css +129 -0
- package/src/internals/story/StoryPage.jsx +147 -0
- package/src/internals/story/StoryPage.module.css +18 -0
- package/src/internals/test-utils.js +45 -0
- package/src/internals/vite/data-plugin.js +1508 -0
- package/src/internals/vite/data-plugin.test.js +1223 -0
- package/src/test-utils.js +44 -0
- package/toolbar.config.json +271 -0
- package/widgets.config.json +1537 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
name: Deploy branch preview
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches-ignore:
|
|
6
|
+
- main
|
|
7
|
+
- gh-pages
|
|
8
|
+
delete:
|
|
9
|
+
|
|
10
|
+
concurrency:
|
|
11
|
+
group: gh-pages-deploy
|
|
12
|
+
cancel-in-progress: false
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
deploy-preview:
|
|
16
|
+
if: github.event_name == 'push'
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
permissions:
|
|
19
|
+
contents: write
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout source
|
|
23
|
+
uses: actions/checkout@v6
|
|
24
|
+
|
|
25
|
+
- name: Setup Node
|
|
26
|
+
uses: actions/setup-node@v6
|
|
27
|
+
with:
|
|
28
|
+
node-version: 22
|
|
29
|
+
|
|
30
|
+
- name: Derive branch folder name
|
|
31
|
+
id: branch
|
|
32
|
+
run: |
|
|
33
|
+
# Sanitize branch name: replace non-alphanumeric chars with hyphens
|
|
34
|
+
BRANCH_NAME="${GITHUB_REF_NAME}"
|
|
35
|
+
SAFE_NAME=$(echo "$BRANCH_NAME" | sed 's/[^a-zA-Z0-9._-]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
|
|
36
|
+
FOLDER="branch--${SAFE_NAME}"
|
|
37
|
+
|
|
38
|
+
echo "folder=$FOLDER" >> "$GITHUB_OUTPUT"
|
|
39
|
+
echo "base=/${FOLDER}/" >> "$GITHUB_OUTPUT"
|
|
40
|
+
echo "Preview folder: $FOLDER"
|
|
41
|
+
echo "Base path: /${FOLDER}/"
|
|
42
|
+
|
|
43
|
+
- name: Install dependencies
|
|
44
|
+
run: npm ci
|
|
45
|
+
|
|
46
|
+
- name: Build with custom base path
|
|
47
|
+
run: npm run build
|
|
48
|
+
env:
|
|
49
|
+
VITE_BASE_PATH: ${{ steps.branch.outputs.base }}
|
|
50
|
+
|
|
51
|
+
- name: Deploy preview to gh-pages
|
|
52
|
+
run: |
|
|
53
|
+
set -e
|
|
54
|
+
FOLDER="${{ steps.branch.outputs.folder }}"
|
|
55
|
+
|
|
56
|
+
git config user.name "github-actions[bot]"
|
|
57
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
58
|
+
|
|
59
|
+
git fetch origin gh-pages:gh-pages 2>/dev/null || true
|
|
60
|
+
DEPLOY_DIR=$(mktemp -d)
|
|
61
|
+
if git show-ref --verify --quiet refs/heads/gh-pages; then
|
|
62
|
+
git worktree add "$DEPLOY_DIR" gh-pages
|
|
63
|
+
else
|
|
64
|
+
git worktree add --orphan "$DEPLOY_DIR" gh-pages
|
|
65
|
+
rm -rf "$DEPLOY_DIR"/*
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# Replace only this branch's folder
|
|
69
|
+
cd "$DEPLOY_DIR"
|
|
70
|
+
rm -rf "$FOLDER"
|
|
71
|
+
mkdir -p "$FOLDER"
|
|
72
|
+
cp -r "$GITHUB_WORKSPACE/dist/." "$FOLDER/"
|
|
73
|
+
|
|
74
|
+
# Ensure .nojekyll exists at root (GitHub Pages ignores _-prefixed dirs without it)
|
|
75
|
+
touch .nojekyll
|
|
76
|
+
|
|
77
|
+
git add -A
|
|
78
|
+
git diff --cached --quiet && echo "No changes to deploy" && exit 0
|
|
79
|
+
git commit -m "Deploy preview: $FOLDER @ $(echo $GITHUB_SHA | head -c 7)"
|
|
80
|
+
git push origin gh-pages
|
|
81
|
+
|
|
82
|
+
- name: Generate branch manifest
|
|
83
|
+
run: |
|
|
84
|
+
set -e
|
|
85
|
+
# Remove stale worktrees from previous steps
|
|
86
|
+
git worktree list --porcelain | awk '/^worktree \/tmp/{print $2}' | while read wt; do
|
|
87
|
+
git worktree remove --force "$wt" 2>/dev/null || true
|
|
88
|
+
done
|
|
89
|
+
git fetch origin gh-pages:gh-pages 2>/dev/null || true
|
|
90
|
+
DEPLOY_DIR=$(mktemp -d)
|
|
91
|
+
git worktree add "$DEPLOY_DIR" gh-pages
|
|
92
|
+
|
|
93
|
+
cd "$DEPLOY_DIR"
|
|
94
|
+
|
|
95
|
+
echo '[' > branches.json
|
|
96
|
+
FIRST=true
|
|
97
|
+
for dir in branch--*/; do
|
|
98
|
+
[ -d "$dir" ] || continue
|
|
99
|
+
FOLDER="${dir%/}"
|
|
100
|
+
BRANCH="${FOLDER#branch--}"
|
|
101
|
+
if [ "$FIRST" = true ]; then
|
|
102
|
+
FIRST=false
|
|
103
|
+
else
|
|
104
|
+
echo ',' >> branches.json
|
|
105
|
+
fi
|
|
106
|
+
printf ' {"folder":"%s","branch":"%s"}' "$FOLDER" "$BRANCH" >> branches.json
|
|
107
|
+
done
|
|
108
|
+
echo '' >> branches.json
|
|
109
|
+
echo ']' >> branches.json
|
|
110
|
+
|
|
111
|
+
git add branches.json
|
|
112
|
+
git diff --cached --quiet && echo "Manifest unchanged" && exit 0
|
|
113
|
+
git config user.name "github-actions[bot]"
|
|
114
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
115
|
+
git commit -m "Update branch manifest"
|
|
116
|
+
git push origin gh-pages
|
|
117
|
+
|
|
118
|
+
- name: Print preview URL
|
|
119
|
+
run: |
|
|
120
|
+
echo "## 🔗 Branch Preview" >> "$GITHUB_STEP_SUMMARY"
|
|
121
|
+
echo "" >> "$GITHUB_STEP_SUMMARY"
|
|
122
|
+
echo "Preview deployed at: ${{ steps.branch.outputs.base }}" >> "$GITHUB_STEP_SUMMARY"
|
|
123
|
+
|
|
124
|
+
cleanup-preview:
|
|
125
|
+
if: github.event_name == 'delete' && github.event.ref_type == 'branch'
|
|
126
|
+
runs-on: ubuntu-latest
|
|
127
|
+
permissions:
|
|
128
|
+
contents: write
|
|
129
|
+
|
|
130
|
+
steps:
|
|
131
|
+
- name: Checkout gh-pages
|
|
132
|
+
uses: actions/checkout@v6
|
|
133
|
+
with:
|
|
134
|
+
ref: gh-pages
|
|
135
|
+
|
|
136
|
+
- name: Remove branch preview folder
|
|
137
|
+
run: |
|
|
138
|
+
set -e
|
|
139
|
+
BRANCH_NAME="${{ github.event.ref }}"
|
|
140
|
+
SAFE_NAME=$(echo "$BRANCH_NAME" | sed 's/[^a-zA-Z0-9._-]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//')
|
|
141
|
+
FOLDER="branch--${SAFE_NAME}"
|
|
142
|
+
|
|
143
|
+
if [ -d "$FOLDER" ]; then
|
|
144
|
+
git config user.name "github-actions[bot]"
|
|
145
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
146
|
+
|
|
147
|
+
rm -rf "$FOLDER"
|
|
148
|
+
git add -A
|
|
149
|
+
git commit -m "Remove preview: $FOLDER"
|
|
150
|
+
git push origin gh-pages
|
|
151
|
+
echo "Removed preview: $FOLDER"
|
|
152
|
+
else
|
|
153
|
+
echo "No preview folder found for: $FOLDER"
|
|
154
|
+
fi
|
|
155
|
+
|
|
156
|
+
- name: Generate branch manifest
|
|
157
|
+
run: |
|
|
158
|
+
set -e
|
|
159
|
+
|
|
160
|
+
echo '[' > branches.json
|
|
161
|
+
FIRST=true
|
|
162
|
+
for dir in branch--*/; do
|
|
163
|
+
[ -d "$dir" ] || continue
|
|
164
|
+
FOLDER="${dir%/}"
|
|
165
|
+
BRANCH="${FOLDER#branch--}"
|
|
166
|
+
if [ "$FIRST" = true ]; then
|
|
167
|
+
FIRST=false
|
|
168
|
+
else
|
|
169
|
+
echo ',' >> branches.json
|
|
170
|
+
fi
|
|
171
|
+
printf ' {"folder":"%s","branch":"%s"}' "$FOLDER" "$BRANCH" >> branches.json
|
|
172
|
+
done
|
|
173
|
+
echo '' >> branches.json
|
|
174
|
+
echo ']' >> branches.json
|
|
175
|
+
|
|
176
|
+
git add branches.json
|
|
177
|
+
git diff --cached --quiet && echo "Manifest unchanged" && exit 0
|
|
178
|
+
git config user.name "github-actions[bot]"
|
|
179
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
180
|
+
git commit -m "Update branch manifest"
|
|
181
|
+
git push origin gh-pages
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Link all @dfosco/* packages to local storyboard-core source.
|
|
3
|
+
# Run from storyboard root: npm run link
|
|
4
|
+
#
|
|
5
|
+
# Prerequisites: run `npm run link` in storyboard-core first
|
|
6
|
+
# to register the packages globally.
|
|
7
|
+
#
|
|
8
|
+
# IMPORTANT: npm install wipes symlinks. Always re-run this script
|
|
9
|
+
# after any npm install in this repo.
|
|
10
|
+
set -euo pipefail
|
|
11
|
+
|
|
12
|
+
PACKAGES=(
|
|
13
|
+
"@dfosco/storyboard-core"
|
|
14
|
+
"@dfosco/storyboard-react"
|
|
15
|
+
"@dfosco/storyboard-react-primer"
|
|
16
|
+
"@dfosco/storyboard-react-reshaped"
|
|
17
|
+
"@dfosco/tiny-canvas"
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
echo "Linking local @dfosco/* packages..."
|
|
21
|
+
npm link "${PACKAGES[@]}"
|
|
22
|
+
|
|
23
|
+
echo ""
|
|
24
|
+
echo "✔ All packages linked to local source."
|
|
25
|
+
echo ""
|
|
26
|
+
echo "⚠ Remember: 'npm install' wipes symlinks. Re-run 'npm run link' after installing packages."
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Unlink all @dfosco/* packages and restore registry versions.
|
|
3
|
+
# Run from storyboard root: npm run unlink
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
echo "Restoring @dfosco/* packages from registry..."
|
|
7
|
+
npm install
|
|
8
|
+
|
|
9
|
+
echo ""
|
|
10
|
+
echo "✔ All packages restored to registry versions."
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-browser
|
|
3
|
+
description: Browser inspection and interaction during development using agent-browser CLI. Use when asked to inspect the browser, check the page, take a screenshot, get the accessibility tree, check for console errors, inspect an element, or see what's on screen.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent Browser
|
|
7
|
+
|
|
8
|
+
> Triggered by: "inspect the browser", "check the page", "what does the page look like", "browser snapshot", "screenshot the page", "get the accessibility tree", "check for console errors", "inspect element", "check the dev server", "what's on screen"
|
|
9
|
+
|
|
10
|
+
Uses `agent-browser` to inspect and interact with the running dev server (or any URL) during development. Provides accessibility snapshots, screenshots, console error checking, element inspection, and interactive debugging — all without leaving the terminal.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g agent-browser
|
|
16
|
+
agent-browser install # Downloads Chrome for Testing (first time only)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Both are already installed on this machine.
|
|
20
|
+
|
|
21
|
+
## Core Workflow
|
|
22
|
+
|
|
23
|
+
### Step 0: Resolve the target URL
|
|
24
|
+
|
|
25
|
+
Before opening the browser, check for a saved `devURL` in the session database:
|
|
26
|
+
|
|
27
|
+
```sql
|
|
28
|
+
SELECT value FROM session_state WHERE key = 'devURL';
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- **If the user provided a URL** (e.g. "inspect http://localhost:3000") — assume the dev server is already running at that URL. Use it directly and save it as `devURL` for the session. Do **not** start a dev server.
|
|
32
|
+
```sql
|
|
33
|
+
INSERT OR REPLACE INTO session_state (key, value) VALUES ('devURL', 'http://localhost:3000');
|
|
34
|
+
```
|
|
35
|
+
- **If set** — use the saved `devURL`. Assume the dev server is already running.
|
|
36
|
+
- **If neither** — fall back to `http://localhost:1234` and save it as `devURL`.
|
|
37
|
+
|
|
38
|
+
### Step 1: Open the dev server
|
|
39
|
+
|
|
40
|
+
Open the resolved URL in a headless browser session:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
agent-browser --session dev open <devURL>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
> **Headed mode:** If the user wants to see the browser window, add `--headed`:
|
|
47
|
+
> ```bash
|
|
48
|
+
> agent-browser --session dev --headed open <devURL>
|
|
49
|
+
> ```
|
|
50
|
+
|
|
51
|
+
> **Navigate to a specific prototype:** Append the prototype path:
|
|
52
|
+
> ```bash
|
|
53
|
+
> agent-browser --session dev open <devURL>/src/prototypes/Example
|
|
54
|
+
> ```
|
|
55
|
+
|
|
56
|
+
### Step 2: Inspect the page
|
|
57
|
+
|
|
58
|
+
Choose the right inspection method based on what you need:
|
|
59
|
+
|
|
60
|
+
#### Accessibility snapshot (best for understanding page structure)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
agent-browser --session dev snapshot
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Options:
|
|
67
|
+
- `-i` — Interactive elements only (buttons, inputs, links)
|
|
68
|
+
- `-c` — Compact (remove empty structural elements)
|
|
69
|
+
- `-d 3` — Limit tree depth
|
|
70
|
+
- `-s "#main"` — Scope to a CSS selector
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Common: interactive elements in the main content area
|
|
74
|
+
agent-browser --session dev snapshot -i -c -s "main"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### Screenshot
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
agent-browser --session dev screenshot /tmp/storyboard-screenshot.png
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Options:
|
|
84
|
+
- `--full` — Full page screenshot (not just viewport)
|
|
85
|
+
- `--annotate` — Overlay numbered labels on interactive elements
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Annotated screenshot showing all interactive elements
|
|
89
|
+
agent-browser --session dev screenshot --annotate /tmp/storyboard-annotated.png
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
#### Console errors
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
agent-browser --session dev console
|
|
96
|
+
agent-browser --session dev errors
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### Get element info
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
agent-browser --session dev get text @e1 # Text content by ref
|
|
103
|
+
agent-browser --session dev get html "#main" # innerHTML by selector
|
|
104
|
+
agent-browser --session dev get title # Page title
|
|
105
|
+
agent-browser --session dev get url # Current URL
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### Check element state
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
agent-browser --session dev is visible "#my-element"
|
|
112
|
+
agent-browser --session dev is enabled "#submit-btn"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Step 3: Interact with the page
|
|
116
|
+
|
|
117
|
+
After taking a snapshot, use refs (`@e1`, `@e2`, etc.) to interact:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
agent-browser --session dev click @e2
|
|
121
|
+
agent-browser --session dev fill @e3 "search query"
|
|
122
|
+
agent-browser --session dev hover @e4
|
|
123
|
+
agent-browser --session dev scroll down 300
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Or use CSS selectors:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
agent-browser --session dev click "#sidebar-toggle"
|
|
130
|
+
agent-browser --session dev fill "input[name=search]" "hello"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Step 4: Navigate
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
agent-browser --session dev open <devURL>/other-page
|
|
137
|
+
agent-browser --session dev back
|
|
138
|
+
agent-browser --session dev forward
|
|
139
|
+
agent-browser --session dev reload
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Step 5: Close the session
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
agent-browser --session dev close
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Common Recipes
|
|
151
|
+
|
|
152
|
+
### Quick page check after a code change
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
agent-browser --session dev open <devURL>
|
|
156
|
+
agent-browser --session dev snapshot -i -c
|
|
157
|
+
agent-browser --session dev errors
|
|
158
|
+
agent-browser --session dev close
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Screenshot + accessibility audit
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
agent-browser --session dev open <devURL>/src/prototypes/Example
|
|
165
|
+
agent-browser --session dev screenshot --annotate /tmp/audit.png
|
|
166
|
+
agent-browser --session dev snapshot
|
|
167
|
+
agent-browser --session dev close
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Debug a specific component
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
agent-browser --session dev open <devURL>/src/prototypes/Example
|
|
174
|
+
agent-browser --session dev snapshot -s "[data-testid=my-component]"
|
|
175
|
+
agent-browser --session dev get html "[data-testid=my-component]"
|
|
176
|
+
agent-browser --session dev close
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Check for JavaScript errors
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
agent-browser --session dev open <devURL>
|
|
183
|
+
agent-browser --session dev wait --load networkidle
|
|
184
|
+
agent-browser --session dev errors
|
|
185
|
+
agent-browser --session dev console
|
|
186
|
+
agent-browser --session dev close
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Batch multiple commands
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
agent-browser --session dev batch \
|
|
193
|
+
"open <devURL>" \
|
|
194
|
+
"wait --load networkidle" \
|
|
195
|
+
"snapshot -i -c" \
|
|
196
|
+
"errors" \
|
|
197
|
+
"screenshot /tmp/check.png"
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Viewport emulation
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
agent-browser --session dev set viewport 375 812 # iPhone-sized
|
|
204
|
+
agent-browser --session dev set device "iPhone 14" # Device preset
|
|
205
|
+
agent-browser --session dev screenshot /tmp/mobile.png
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Network request inspection
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
agent-browser --session dev network requests --type xhr,fetch
|
|
212
|
+
agent-browser --session dev network requests --filter api
|
|
213
|
+
agent-browser --session dev network requests --status 4xx
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Visual diff between two pages
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
agent-browser --session dev diff url <devURL>/page-a <devURL>/page-b --screenshot
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Session Management
|
|
225
|
+
|
|
226
|
+
- **Named sessions** (`--session dev`) keep browser state across commands. Always use `--session dev` for the development workflow.
|
|
227
|
+
- **Reuse sessions:** Don't close and reopen — just navigate with `open` or `goto`.
|
|
228
|
+
- **Multiple sessions:** Use different names if inspecting multiple things at once:
|
|
229
|
+
```bash
|
|
230
|
+
agent-browser --session dev open <devURL>
|
|
231
|
+
agent-browser --session prod open https://production-url.com
|
|
232
|
+
```
|
|
233
|
+
- **List sessions:** `agent-browser session list`
|
|
234
|
+
- **Close all:** `agent-browser close --all`
|
|
235
|
+
|
|
236
|
+
## Selectors
|
|
237
|
+
|
|
238
|
+
| Type | Example | Notes |
|
|
239
|
+
|------|---------|-------|
|
|
240
|
+
| Ref | `@e1` | From snapshot output. Deterministic, preferred. |
|
|
241
|
+
| CSS | `"#id"`, `".class"` | Standard CSS selectors |
|
|
242
|
+
| Text | `"text=Submit"` | Match by text content |
|
|
243
|
+
| XPath | `"xpath=//button"` | XPath expressions |
|
|
244
|
+
| Semantic | `find role button --name "Submit"` | ARIA role-based |
|
|
245
|
+
|
|
246
|
+
> **Prefer refs** (`@e1`) after taking a snapshot — they're deterministic and fast.
|
|
247
|
+
|
|
248
|
+
## Troubleshooting
|
|
249
|
+
|
|
250
|
+
- **"No active session"** — Run `agent-browser --session dev open <url>` first
|
|
251
|
+
- **Dev server not running** — Start with `npm run dev` before inspecting
|
|
252
|
+
- **Stale refs** — Take a new `snapshot` after page changes; refs are from the last snapshot
|
|
253
|
+
- **Browser stuck** — `agent-browser close --all` or `agent-browser --session dev close`
|
|
254
|
+
- **Chrome not found** — Run `agent-browser install`
|
|
255
|
+
|
|
256
|
+
## Repository Cleanup
|
|
257
|
+
|
|
258
|
+
- Screenshot files in `/tmp/` are ephemeral — no cleanup needed
|
|
259
|
+
- Session data lives in `~/.agent-browser/` — not in the repo
|
|
260
|
+
- Add `agent-browser.json` to `.gitignore` if you create a project-level config
|