bsmnt 0.1.2 → 0.2.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/README.md +18 -18
- package/dist/configs/animations.d.ts +25 -0
- package/dist/configs/animations.d.ts.map +1 -0
- package/dist/configs/animations.js +29 -0
- package/dist/configs/animations.js.map +1 -0
- package/dist/helpers/add/hooks-config.d.ts +22 -0
- package/dist/helpers/add/hooks-config.d.ts.map +1 -0
- package/dist/helpers/add/hooks-config.js +37 -0
- package/dist/helpers/add/hooks-config.js.map +1 -0
- package/dist/helpers/add/index.d.ts +18 -0
- package/dist/helpers/add/index.d.ts.map +1 -0
- package/dist/helpers/add/index.js +152 -0
- package/dist/helpers/add/index.js.map +1 -0
- package/dist/helpers/create/copy-template.d.ts +11 -0
- package/dist/helpers/create/copy-template.d.ts.map +1 -0
- package/dist/helpers/create/copy-template.js +19 -0
- package/dist/helpers/create/copy-template.js.map +1 -0
- package/dist/helpers/create/index.d.ts +22 -0
- package/dist/helpers/create/index.d.ts.map +1 -0
- package/dist/helpers/create/index.js +81 -0
- package/dist/helpers/create/index.js.map +1 -0
- package/dist/helpers/create/install.d.ts +8 -0
- package/dist/helpers/create/install.d.ts.map +1 -0
- package/dist/helpers/create/install.js +20 -0
- package/dist/helpers/create/install.js.map +1 -0
- package/dist/helpers/create/rename-files.d.ts +10 -0
- package/dist/helpers/create/rename-files.d.ts.map +1 -0
- package/dist/helpers/create/rename-files.js +17 -0
- package/dist/helpers/create/rename-files.js.map +1 -0
- package/dist/helpers/create/setup-agent.d.ts +21 -0
- package/dist/helpers/create/setup-agent.d.ts.map +1 -0
- package/dist/helpers/create/setup-agent.js +65 -0
- package/dist/helpers/create/setup-agent.js.map +1 -0
- package/dist/helpers/create/setup-sanity.d.ts +23 -0
- package/dist/helpers/create/setup-sanity.d.ts.map +1 -0
- package/dist/helpers/create/setup-sanity.js +354 -0
- package/dist/helpers/create/setup-sanity.js.map +1 -0
- package/dist/helpers/create/update-package.d.ts +20 -0
- package/dist/helpers/create/update-package.d.ts.map +1 -0
- package/dist/helpers/create/update-package.js +87 -0
- package/dist/helpers/create/update-package.js.map +1 -0
- package/dist/helpers/integrate/index.d.ts +13 -0
- package/dist/helpers/integrate/index.d.ts.map +1 -0
- package/dist/helpers/integrate/index.js +204 -0
- package/dist/helpers/integrate/index.js.map +1 -0
- package/dist/helpers/integrate/merge-config.d.ts +21 -0
- package/dist/helpers/integrate/merge-config.d.ts.map +1 -0
- package/dist/helpers/integrate/merge-config.js +38 -0
- package/dist/helpers/integrate/merge-config.js.map +1 -0
- package/dist/helpers/integrate/merge-orchestrator.d.ts +10 -0
- package/dist/helpers/integrate/merge-orchestrator.d.ts.map +1 -0
- package/dist/helpers/integrate/merge-orchestrator.js +188 -0
- package/dist/helpers/integrate/merge-orchestrator.js.map +1 -0
- package/dist/helpers/integrate/sanity/config.d.ts +14 -0
- package/dist/helpers/integrate/sanity/config.d.ts.map +1 -0
- package/dist/helpers/integrate/sanity/config.js +38 -0
- package/dist/helpers/integrate/sanity/config.js.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts +13 -0
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js +84 -0
- package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts +23 -0
- package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/layout-merger.js +161 -0
- package/dist/helpers/integrate/sanity/mergers/layout-merger.js.map +1 -0
- package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts +13 -0
- package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts.map +1 -0
- package/{packages/create-basement-app/src → dist/helpers/integrate/sanity}/mergers/sitemap-merger.js +33 -45
- package/dist/helpers/integrate/sanity/mergers/sitemap-merger.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +337 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +14 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +24 -0
- package/dist/paths.js.map +1 -0
- package/dist/utils/detect-project.d.ts +40 -0
- package/dist/utils/detect-project.d.ts.map +1 -0
- package/dist/utils/detect-project.js +69 -0
- package/dist/utils/detect-project.js.map +1 -0
- package/dist/utils/format-results.d.ts +24 -0
- package/dist/utils/format-results.d.ts.map +1 -0
- package/dist/utils/format-results.js +27 -0
- package/dist/utils/format-results.js.map +1 -0
- package/index.js +25 -0
- package/package.json +25 -12
- package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/package.json +1 -1
- package/src/templates/next-webgl/lib/renderer.ts +7 -0
- package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/package.json +1 -1
- package/.changeset/README.md +0 -10
- package/.changeset/config.json +0 -16
- package/.github/workflows/ci.yml +0 -37
- package/.github/workflows/release.yml +0 -56
- package/.tldr/cache/call_graph.json +0 -7
- package/.tldr/languages.json +0 -6
- package/.tldr/status +0 -1
- package/.tldrignore +0 -84
- package/.vscode/settings.json +0 -98
- package/CHANGELOG.md +0 -68
- package/CLAUDE.md +0 -156
- package/biome.json +0 -45
- package/bun.lock +0 -496
- package/changelog/04-02-26.md +0 -86
- package/changelog/05-02-26.md +0 -101
- package/changelog/09-02-26.md +0 -83
- package/docs/architecture.drawio +0 -250
- package/docs/architecture.mermaid +0 -85
- package/docs/fix-studio-hydration.md +0 -46
- package/docs/plans/2026-01-29-sanity-smart-merge-design.md +0 -196
- package/docs/plans/2026-01-29-sanity-smart-merge-implementation.md +0 -695
- package/docs/sanity-setup-steps.md +0 -199
- package/packages/cli/bin/index.js +0 -259
- package/packages/cli/package.json +0 -16
- package/packages/cli/src/commands/add-integration.js +0 -310
- package/packages/cli/src/commands/create.js +0 -409
- package/packages/cli/src/commands/setup-sanity.js +0 -426
- package/packages/cli/src/commands/worktree.js +0 -805
- package/packages/create-basement-app/integrations/sanity/config.js +0 -46
- package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/disable/route.ts +0 -7
- package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/enable/route.ts +0 -21
- package/packages/create-basement-app/integrations/sanity/files/app/api/revalidate/route.ts +0 -37
- package/packages/create-basement-app/integrations/sanity/files/app/layout.tsx +0 -111
- package/packages/create-basement-app/integrations/sanity/files/app/sitemap.ts +0 -80
- package/packages/create-basement-app/integrations/sanity/files/app/studio/[[...tool]]/page.tsx +0 -8
- package/packages/create-basement-app/integrations/sanity/files/app/studio/layout.tsx +0 -7
- package/packages/create-basement-app/integrations/sanity/files/components/ui/sanity-image/index.tsx +0 -37
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/README.md +0 -58
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/check-integration.ts +0 -62
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/README.md +0 -144
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/client.ts +0 -30
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/disable-draft-mode.tsx +0 -29
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/rich-text.tsx +0 -73
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/env.ts +0 -38
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/live/index.tsx +0 -34
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/queries.ts +0 -99
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.cli.ts +0 -20
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.config.ts +0 -94
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.types.ts +0 -337
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schema.json +0 -1850
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/article.ts +0 -132
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/example.ts +0 -203
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/index.ts +0 -37
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/link.ts +0 -127
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/metadata.ts +0 -68
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/navigation.ts +0 -39
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/page.ts +0 -77
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/richText.ts +0 -59
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/structure.ts +0 -5
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/image.ts +0 -11
- package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/link.ts +0 -61
- package/packages/create-basement-app/integrations/sanity/files/lib/scripts/copy-sanity-mcp.ts +0 -23
- package/packages/create-basement-app/integrations/sanity/files/lib/scripts/generate-page.ts +0 -310
- package/packages/create-basement-app/integrations/sanity/files/lib/utils/metadata.ts +0 -190
- package/packages/create-basement-app/integrations/sanity/mergers/check-integration-merger.js +0 -105
- package/packages/create-basement-app/integrations/sanity/mergers/layout-merger.js +0 -223
- package/packages/create-basement-app/integrations/sanity/mergers/sitemap-merger.js +0 -121
- package/packages/create-basement-app/package.json +0 -10
- package/packages/create-basement-app/src/configs/animations.js +0 -28
- package/packages/create-basement-app/src/index.js +0 -15
- package/packages/create-basement-app/src/mergers/check-integration-merger.js +0 -105
- package/packages/create-basement-app/src/mergers/config.js +0 -109
- package/packages/create-basement-app/src/mergers/index.js +0 -346
- package/packages/create-basement-app/src/mergers/layout-merger.js +0 -223
- package/packages/create-basement-app/templates/experiment/.cursor/rules/README.md +0 -184
- package/packages/create-basement-app/templates/experiment/.cursor/rules/architecture.mdc +0 -437
- package/packages/create-basement-app/templates/experiment/.cursor/rules/components.mdc +0 -436
- package/packages/create-basement-app/templates/experiment/.cursor/rules/integrations.mdc +0 -447
- package/packages/create-basement-app/templates/experiment/.cursor/rules/main.mdc +0 -278
- package/packages/create-basement-app/templates/experiment/.cursor/rules/styling.mdc +0 -433
- package/packages/create-basement-app/templates/experiment/.github/PULL_REQUEST_TEMPLATE.md +0 -14
- package/packages/create-basement-app/templates/experiment/.vscode/extensions.json +0 -20
- package/packages/create-basement-app/templates/experiment/app/page.tsx +0 -275
- package/packages/create-basement-app/templates/webgl/.biome/plugins/README.md +0 -21
- package/packages/create-basement-app/templates/webgl/.biome/plugins/no-anchor-element.grit +0 -12
- package/packages/create-basement-app/templates/webgl/.biome/plugins/no-relative-parent-imports.grit +0 -10
- package/packages/create-basement-app/templates/webgl/.biome/plugins/no-unnecessary-forwardref.grit +0 -9
- package/packages/create-basement-app/templates/webgl/.cursor/rules/README.md +0 -184
- package/packages/create-basement-app/templates/webgl/.cursor/rules/architecture.mdc +0 -437
- package/packages/create-basement-app/templates/webgl/.cursor/rules/components.mdc +0 -436
- package/packages/create-basement-app/templates/webgl/.cursor/rules/integrations.mdc +0 -447
- package/packages/create-basement-app/templates/webgl/.cursor/rules/main.mdc +0 -278
- package/packages/create-basement-app/templates/webgl/.cursor/rules/styling.mdc +0 -433
- package/packages/create-basement-app/templates/webgl/.github/PULL_REQUEST_TEMPLATE.md +0 -14
- package/packages/create-basement-app/templates/webgl/.github/workflows/lighthouse-to-slack.yml +0 -136
- package/packages/create-basement-app/templates/webgl/.vscode/extensions.json +0 -20
- package/packages/create-basement-app/templates/webgl/.vscode/settings.json +0 -105
- package/packages/create-basement-app/templates/webgl/app/favicon.ico +0 -0
- package/packages/create-basement-app/templates/webgl/app/layout.tsx +0 -104
- package/packages/create-basement-app/templates/webgl/app/robots.ts +0 -15
- package/packages/create-basement-app/templates/webgl/app/sitemap.ts +0 -16
- package/packages/create-basement-app/templates/webgl/components/layout/footer/index.tsx +0 -27
- package/packages/create-basement-app/templates/webgl/components/layout/header/index.tsx +0 -11
- package/packages/create-basement-app/templates/webgl/components/layout/theme/index.tsx +0 -66
- package/packages/create-basement-app/templates/webgl/components/layout/wrapper/index.tsx +0 -65
- package/packages/create-basement-app/templates/webgl/components/ui/README.md +0 -77
- package/packages/create-basement-app/templates/webgl/components/ui/image/README.md +0 -37
- package/packages/create-basement-app/templates/webgl/components/ui/image/index.tsx +0 -224
- package/packages/create-basement-app/templates/webgl/components/ui/link/index.tsx +0 -146
- package/packages/create-basement-app/templates/webgl/lib/integrations/.gitkeep +0 -0
- package/packages/create-basement-app/templates/webgl/public/fonts/geist/Geist-Mono.woff2 +0 -0
- package/tasks/.last-branch +0 -1
- package/tasks/CLAUDE.md +0 -104
- package/tasks/archive/2026-02-09-next-starter-dynamic-layers/prd.json +0 -153
- package/tasks/archive/2026-02-09-next-starter-dynamic-layers/progress.txt +0 -115
- package/tasks/prd-next-starter-dynamic-layers.md +0 -184
- package/tasks/prd-project-restructure.md +0 -375
- package/tasks/prd.json +0 -289
- package/tasks/progress.txt +0 -309
- package/tasks/ralph.sh +0 -113
- /package/{packages/create-basement-app/plugins → plugins}/no-anchor-element.grit +0 -0
- /package/{packages/create-basement-app/plugins → plugins}/no-relative-parent-imports.grit +0 -0
- /package/{packages/create-basement-app/plugins → plugins}/no-unnecessary-forwardref.grit +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/config.js +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/use-battery.ts +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/use-device-perf.ts +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/use-intersection-observer.ts +0 -0
- /package/{packages/create-basement-app → src}/template-hooks/use-media.ts +0 -0
- /package/{packages/create-basement-app → src/templates/next-default/.biome}/plugins/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.editorconfig +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.env.example +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.gitattributes +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/_gitignore +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/biome.json +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/basement.svg +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/index.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-device-detection.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-media-breakpoint.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-prefetch.ts +0 -0
- /package/{.github/workflows → src/templates/next-default/lib/integrations}/.gitkeep +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/lib/renderer.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/dev.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-component.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-page.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/app.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/index.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/cn.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/colors.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/config.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/global.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/index.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/reset.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/root.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/tailwind.css +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/fonts.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/index.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/layout.mjs +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-root.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-tailwind.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/postcss-functions.mjs +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/setup-styles.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/typography.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/css.d.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/fetch.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.test.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/metadata.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.test.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/types.d.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.test.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/next.config.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/package.json +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/postcss.config.mjs +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-default}/tsconfig.json +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/no-anchor-element.grit +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/no-relative-parent-imports.grit +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
- /package/{.cursor → src/templates/next-experiments/.cursor}/rules/README.md +0 -0
- /package/{.cursor → src/templates/next-experiments/.cursor}/rules/architecture.mdc +0 -0
- /package/{.cursor → src/templates/next-experiments/.cursor}/rules/components.mdc +0 -0
- /package/{.cursor → src/templates/next-experiments/.cursor}/rules/integrations.mdc +0 -0
- /package/{.cursor → src/templates/next-experiments/.cursor}/rules/main.mdc +0 -0
- /package/{.cursor → src/templates/next-experiments/.cursor}/rules/styling.mdc +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.editorconfig +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.env.example +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.gitattributes +0 -0
- /package/{.github → src/templates/next-experiments/.github}/PULL_REQUEST_TEMPLATE.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.github/workflows/lighthouse-to-slack.yml +0 -0
- /package/{.vscode → src/templates/next-experiments/.vscode}/extensions.json +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.vscode/settings.json +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/_gitignore +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/favicon.ico +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/layout.tsx +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/page.tsx +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/robots.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/sitemap.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/biome.json +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/basement.svg +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/footer/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/header/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/navigation-menu.tsx +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/theme/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/wrapper/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/image/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/image/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/link/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/constants.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/index.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-device-detection.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-media-breakpoint.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-prefetch.ts +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/lib/integrations/.gitkeep +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/dev.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-component.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-page.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/app.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/index.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/cn.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/colors.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/config.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/global.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/index.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/reset.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/root.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/tailwind.css +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/fonts.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/index.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/layout.mjs +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-root.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-tailwind.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/postcss-functions.mjs +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/setup-styles.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/typography.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/css.d.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/fetch.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.test.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/metadata.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.test.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/types.d.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.test.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/next.config.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/postcss.config.mjs +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/public/fonts/geist/Geist-Mono.woff2 +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/tsconfig.json +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/no-anchor-element.grit +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/no-relative-parent-imports.grit +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/README.md +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/architecture.mdc +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/components.mdc +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/integrations.mdc +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/main.mdc +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/styling.mdc +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.editorconfig +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.env.example +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.gitattributes +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.github/workflows/lighthouse-to-slack.yml +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.vscode/extensions.json +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.vscode/settings.json +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/_gitignore +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/favicon.ico +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/layout.tsx +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/app/page.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/robots.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/sitemap.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/biome.json +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/basement.svg +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/footer/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/components/layout/header/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/theme/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/wrapper/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/image/README.md +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/image/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/link/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/dynamic.tsx +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/components/scene/index.tsx +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/index.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-device-detection.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-media-breakpoint.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-prefetch.ts +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/lib/integrations/.gitkeep +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/dev.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-component.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-page.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/app.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/index.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/cn.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/colors.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/config.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/global.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/index.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/reset.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/root.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/tailwind.css +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/fonts.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/index.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/layout.mjs +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-root.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-tailwind.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/postcss-functions.mjs +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/setup-styles.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/utils.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/typography.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/README.md +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/css.d.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/easings.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/fetch.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.test.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/metadata.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.test.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/types.d.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.test.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/next.config.ts +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/postcss.config.mjs +0 -0
- /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/public/fonts/geist/Geist-Mono.woff2 +0 -0
- /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/tsconfig.json +0 -0
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
## Codebase Patterns
|
|
2
|
-
- This is a plain JS (ESM) CLI project - no TypeScript, no typecheck command. "Typecheck passes" = no syntax errors.
|
|
3
|
-
- Config pattern: export const CONFIG object + getXConfig(name) helper that returns config or null
|
|
4
|
-
- src/mergers/config.js holds all configuration (CMS_CONFIG, LAYER_CONFIG)
|
|
5
|
-
- src/mergers/index.js holds injection/merge logic (injectIntegration for CMS, injectLayer for layers)
|
|
6
|
-
- src/commands/create.js is the main CLI flow
|
|
7
|
-
- next-starter uses package.json directly (no template rename needed)
|
|
8
|
-
- Layer files are local (in layers/ directory), CMS integration files are remote (fetched via tiged)
|
|
9
|
-
- ESM requires __dirname workaround: `path.dirname(fileURLToPath(import.meta.url))`
|
|
10
|
-
- CLI binary is basement (defined in package.json bin field)
|
|
11
|
-
- Dependency injection order in create.js: layer deps → CMS deps → animation deps
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 2026-02-09 - US-001
|
|
16
|
-
- Implemented LAYER_CONFIG export with webgl, webgpu, experiment entries
|
|
17
|
-
- Added getLayerConfig() helper function
|
|
18
|
-
- Each layer config has: replaceFiles, additivePaths, dependencies, devDependencies
|
|
19
|
-
- webgpu is deps-only (empty replaceFiles and additivePaths)
|
|
20
|
-
- Files changed: src/mergers/config.js
|
|
21
|
-
- **Learnings for future iterations:**
|
|
22
|
-
- The CLI project is plain JS ESM, verified by running `node --input-type=module -e "import {...}"`
|
|
23
|
-
- Config pattern follows existing CMS_CONFIG style - object + getter helper
|
|
24
|
-
- experiment uses three ^0.172.0 (not ^0.182.0 like webgl/webgpu) per PRD
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 2026-02-09 - US-002
|
|
28
|
-
- Created layers/webgl/ with app/page.tsx and 3 webgl component files from template/webgl/
|
|
29
|
-
- Created layers/experiment/ with header, navigation-menu, constats.ts, cn.ts from template/experiment/
|
|
30
|
-
- Created layers/webgpu/.gitkeep (empty layer, deps-only)
|
|
31
|
-
- Verified all files are byte-for-byte identical using diff
|
|
32
|
-
- Files changed: 9 new files in layers/
|
|
33
|
-
- **Learnings for future iterations:**
|
|
34
|
-
- Layer files are local to CLI repo (no network clone needed, unlike CMS integrations)
|
|
35
|
-
- webgl is the only layer with a different app/page.tsx (imports DynamicCanvas)
|
|
36
|
-
- experiment has its own header and navigation-menu components
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## 2026-02-09 - US-003
|
|
40
|
-
- Added injectLayer(targetDir, layer, spinner) function to src/mergers/index.js
|
|
41
|
-
- Uses __dirname (via import.meta.url + fileURLToPath) to resolve layers/ directory
|
|
42
|
-
- Reuses detectPathPrefix() and transformPath() for src/ directory support
|
|
43
|
-
- Handles replaceFiles (overwrite: true) and additivePaths (overwrite: false) separately
|
|
44
|
-
- Returns results with replaced, copied, skipped, failed arrays
|
|
45
|
-
- Extended formatMergeResults() with defensive optional chaining for replaced/merged/copied/etc
|
|
46
|
-
- Files changed: src/mergers/index.js
|
|
47
|
-
- **Learnings for future iterations:**
|
|
48
|
-
- ESM doesn't have __dirname, must use: `const __dirname = path.dirname(fileURLToPath(import.meta.url))`
|
|
49
|
-
- Layer injection is purely local file copy (no network), unlike CMS integration which uses tiged
|
|
50
|
-
- formatMergeResults now handles both CMS results (merged) and layer results (replaced) gracefully
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 2026-02-09 - US-004
|
|
54
|
-
- Changed tiged source from basement/template/${type} to basementstudio/next-starter#main
|
|
55
|
-
- Removed BASEMENT_CLI_BRANCH env var usage (was only used for template, not used elsewhere)
|
|
56
|
-
- Added bun.lock deletion after clone (since deps will be modified by layers/CMS/animation)
|
|
57
|
-
- Updated spinner text to "Downloading next-starter from GitHub..."
|
|
58
|
-
- Updated troubleshooting message to reference basementstudio/next-starter
|
|
59
|
-
- Kept dotenv import as it may be used by merger modules
|
|
60
|
-
- Files changed: src/commands/create.js
|
|
61
|
-
- **Learnings for future iterations:**
|
|
62
|
-
- dotenv is loaded in create.js but env vars are only used in merger modules (check-integration-merger.js)
|
|
63
|
-
- bun.lock must be deleted before modifying package.json deps, otherwise bun install may conflict
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 2026-02-09 - US-005
|
|
67
|
-
- Added layer injection step (3.2) between template download and CMS integration (3.5)
|
|
68
|
-
- Layer injection only runs when type !== 'default'
|
|
69
|
-
- Uses dynamic import for injectLayer and formatMergeResults from mergers/index.js
|
|
70
|
-
- Shows ora spinner with layer name during injection
|
|
71
|
-
- On failure, shows warning and continues (not a hard error)
|
|
72
|
-
- Files changed: src/commands/create.js
|
|
73
|
-
- **Learnings for future iterations:**
|
|
74
|
-
- Layer injection MUST happen before CMS integration to keep layout.tsx intact for CMS mergers
|
|
75
|
-
- Uses dynamic import (await import) consistent with existing CMS integration pattern
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## 2026-02-09 - US-006
|
|
79
|
-
- Imported getLayerConfig from src/mergers/config.js at top of create.js
|
|
80
|
-
- Layer deps injected from LAYER_CONFIG before CMS and animation deps
|
|
81
|
-
- Simplified package.json handling: removed package.template.json logic (next-starter uses package.json directly)
|
|
82
|
-
- CMS and animation dependency injection unchanged
|
|
83
|
-
- Project name and version still set correctly
|
|
84
|
-
- Files changed: src/commands/create.js
|
|
85
|
-
- **Learnings for future iterations:**
|
|
86
|
-
- Dependency injection order matters: layer deps first, then CMS, then animation (later ones override earlier)
|
|
87
|
-
- next-starter uses package.json directly, no need for package.template.json rename logic
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## 2026-02-09 - US-007
|
|
91
|
-
- Deleted template/default/, template/webgl/, template/webgpu/, template/experiment/ directories
|
|
92
|
-
- Removed entire template/ directory (281 files, -27,778 lines)
|
|
93
|
-
- Verified no remaining references to template/ paths in source code (src/)
|
|
94
|
-
- Updated CLAUDE.md to reflect new architecture (layers/ instead of template/)
|
|
95
|
-
- Files changed: template/ deleted, CLAUDE.md updated
|
|
96
|
-
- **Learnings for future iterations:**
|
|
97
|
-
- CLAUDE.md should be kept in sync with architecture changes
|
|
98
|
-
- Only documentation files (CLAUDE.md, PRD) had remaining references to template/ paths, not source code
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## 2026-02-09 - US-008
|
|
102
|
-
- Installed CLI locally via npm link
|
|
103
|
-
- E2E test results (all passed):
|
|
104
|
-
- test-default: Created successfully, name=test-default, version=0.1.0, has next dep, no R3F deps
|
|
105
|
-
- test-webgl: Created with layer applied (replaced page.tsx, added 3 webgl components), R3F ^9.5.0, three ^0.182.0, @types/three ^0.182.0
|
|
106
|
-
- test-webgpu: Created with deps-only layer, R3F 10.0.0-alpha.2, drei ^11.0.0-alpha.4, lucide-react ^0.474.0
|
|
107
|
-
- test-experiment: Created with layer (header, navigation-menu, constats.ts, cn.ts), three ^0.172.0
|
|
108
|
-
- test-sanity: Combined webgl + sanity + gsap - all deps present (R3F, next-sanity, sanity, gsap, @gsap/react, sanity:extract script)
|
|
109
|
-
- All 4 projects pass bun install without errors
|
|
110
|
-
- CLI command is basement (not basement-starter as PRD mentions)
|
|
111
|
-
- **Learnings for future iterations:**
|
|
112
|
-
- Skills installation may fail without network (bunx skills add), but it's non-blocking
|
|
113
|
-
- The sanity integration triggers an interactive Sanity setup prompt after project creation
|
|
114
|
-
- bun install correctly resolves all dependency versions including alpha packages
|
|
115
|
-
---
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
# PRD: Replace Static Templates with next-starter + Dynamic Layers
|
|
2
|
-
|
|
3
|
-
## Introduction
|
|
4
|
-
|
|
5
|
-
The CLI currently maintains 4 complete, nearly-identical template copies (default, webgl, webgpu, experiment). Every bug fix, dependency bump, or structural change must be applied 4 times. The `default` template is essentially a stale snapshot of the `basementstudio/next-starter` repo.
|
|
6
|
-
|
|
7
|
-
This feature replaces the static templates with a single `next-starter` clone as the base, then dynamically overlays technology-specific files and dependencies using a "layers" system — reusing the same smart-merge pattern already proven by the CMS integration system.
|
|
8
|
-
|
|
9
|
-
## Goals
|
|
10
|
-
|
|
11
|
-
- Eliminate template duplication by using `basementstudio/next-starter` as the single source of truth
|
|
12
|
-
- Maintain the same user-facing CLI experience (same 4 template choices, same prompt flow)
|
|
13
|
-
- Create a `layers/` system for technology-specific additions (WebGL, WebGPU, Experiment)
|
|
14
|
-
- Reuse the existing merger infrastructure (`src/mergers/`) for layer injection
|
|
15
|
-
- Delete the entire `template/` directory from the repo
|
|
16
|
-
|
|
17
|
-
## User Stories
|
|
18
|
-
|
|
19
|
-
### US-001: Clone next-starter as base template
|
|
20
|
-
**Description:** As a developer using the CLI, I want my project to be scaffolded from the latest `next-starter` repo so that I always get the most up-to-date base configuration.
|
|
21
|
-
|
|
22
|
-
**Acceptance Criteria:**
|
|
23
|
-
- [ ] `create.js` clones from `github:basementstudio/next-starter#main` instead of `github:basementstudio/basement/template/{type}#main`
|
|
24
|
-
- [ ] Selecting "Default" template produces a project identical to cloning next-starter directly
|
|
25
|
-
- [ ] `bun.lock` is deleted after clone (since dependencies will be modified)
|
|
26
|
-
- [ ] Download spinner text updated to reflect new source
|
|
27
|
-
- [ ] Error/troubleshooting messages updated to reference `basementstudio/next-starter`
|
|
28
|
-
- [ ] Typecheck passes
|
|
29
|
-
|
|
30
|
-
### US-002: Create layer configuration system
|
|
31
|
-
**Description:** As a CLI maintainer, I want technology layers defined in a config file so that adding or modifying layers only requires changing one file.
|
|
32
|
-
|
|
33
|
-
**Acceptance Criteria:**
|
|
34
|
-
- [ ] `LAYER_CONFIG` export added to `src/mergers/config.js` alongside existing `CMS_CONFIG`
|
|
35
|
-
- [ ] Each layer config defines: `replaceFiles`, `additivePaths`, `dependencies`, `devDependencies`
|
|
36
|
-
- [ ] `getLayerConfig(layer)` helper function exported
|
|
37
|
-
- [ ] Config contains entries for `webgl`, `webgpu`, and `experiment`
|
|
38
|
-
- [ ] `webgpu` is a deps-only layer (empty `replaceFiles` and `additivePaths`)
|
|
39
|
-
- [ ] Dependencies match what's currently in each template's `package.template.json`
|
|
40
|
-
|
|
41
|
-
### US-003: Implement layer injection function
|
|
42
|
-
**Description:** As the CLI system, I need to overlay layer-specific files on top of the next-starter base so that WebGL/WebGPU/Experiment projects get their unique components.
|
|
43
|
-
|
|
44
|
-
**Acceptance Criteria:**
|
|
45
|
-
- [ ] `injectLayer(targetDir, layer, spinner)` function added to `src/mergers/index.js`
|
|
46
|
-
- [ ] Function copies additive files from local `layers/{type}/` directory (no tiged needed)
|
|
47
|
-
- [ ] Function replaces files listed in `replaceFiles` (overwrites base version)
|
|
48
|
-
- [ ] Function uses existing `detectPathPrefix()` and `transformPath()` for `src/` directory support
|
|
49
|
-
- [ ] Function returns results object with `replaced`, `copied`, `skipped`, `failed` arrays
|
|
50
|
-
- [ ] `formatMergeResults()` extended to handle `replaced` entries
|
|
51
|
-
- [ ] Skipped layers (type === 'default') produce no errors
|
|
52
|
-
|
|
53
|
-
### US-004: Extract layer files from templates
|
|
54
|
-
**Description:** As a CLI maintainer, I need the unique files from each template extracted into a `layers/` directory so they can be overlaid on next-starter.
|
|
55
|
-
|
|
56
|
-
**Acceptance Criteria:**
|
|
57
|
-
- [ ] `layers/webgl/app/page.tsx` contains the WebGL-specific page (DynamicCanvas import)
|
|
58
|
-
- [ ] `layers/webgl/components/webgl/canvas/dynamic.tsx` exists (from template/webgl)
|
|
59
|
-
- [ ] `layers/webgl/components/webgl/canvas/index.tsx` exists (from template/webgl)
|
|
60
|
-
- [ ] `layers/webgl/components/webgl/components/scene/index.tsx` exists (from template/webgl)
|
|
61
|
-
- [ ] `layers/experiment/components/layout/header/index.tsx` exists (custom header with NavigationMenu)
|
|
62
|
-
- [ ] `layers/experiment/components/layout/navigation-menu.tsx` exists
|
|
63
|
-
- [ ] `layers/experiment/lib/constats.ts` exists
|
|
64
|
-
- [ ] `layers/experiment/lib/utils/cn.ts` exists
|
|
65
|
-
- [ ] `layers/webgpu/` directory exists (empty, deps-only layer)
|
|
66
|
-
- [ ] Files are byte-for-byte identical to their template counterparts
|
|
67
|
-
|
|
68
|
-
### US-005: Integrate layer injection into create flow
|
|
69
|
-
**Description:** As the CLI system, I need the layer injection step wired into the project creation flow so it runs between template download and CMS integration.
|
|
70
|
-
|
|
71
|
-
**Acceptance Criteria:**
|
|
72
|
-
- [ ] Layer injection runs after next-starter clone, before CMS integration
|
|
73
|
-
- [ ] Layer injection only runs when `type !== 'default'`
|
|
74
|
-
- [ ] Progress spinner shows layer name during injection
|
|
75
|
-
- [ ] Injection results displayed to user (files added/replaced)
|
|
76
|
-
- [ ] Failures produce warnings, not hard errors
|
|
77
|
-
- [ ] CMS integration (Sanity) still works correctly after layer injection
|
|
78
|
-
- [ ] Typecheck passes
|
|
79
|
-
|
|
80
|
-
### US-006: Config-driven dependency injection
|
|
81
|
-
**Description:** As the CLI system, I need package.json hydration to read layer dependencies from config instead of being hardcoded in create.js.
|
|
82
|
-
|
|
83
|
-
**Acceptance Criteria:**
|
|
84
|
-
- [ ] Layer dependencies read from `LAYER_CONFIG` and merged into `package.json`
|
|
85
|
-
- [ ] CMS dependencies still injected as before (unchanged)
|
|
86
|
-
- [ ] Animation library dependencies still injected as before (unchanged)
|
|
87
|
-
- [ ] `package.template.json` rename logic simplified (next-starter uses `package.json` directly)
|
|
88
|
-
- [ ] Project name and version still set correctly
|
|
89
|
-
- [ ] Typecheck passes
|
|
90
|
-
|
|
91
|
-
### US-007: Delete template directory
|
|
92
|
-
**Description:** As a CLI maintainer, I want the `template/` directory removed so there's no duplicated code to maintain.
|
|
93
|
-
|
|
94
|
-
**Acceptance Criteria:**
|
|
95
|
-
- [ ] `template/default/` deleted
|
|
96
|
-
- [ ] `template/webgl/` deleted
|
|
97
|
-
- [ ] `template/webgpu/` deleted
|
|
98
|
-
- [ ] `template/experiment/` deleted
|
|
99
|
-
- [ ] No remaining references to `template/` paths in source code
|
|
100
|
-
- [ ] No remaining references to `basementstudio/basement/template/` in source code
|
|
101
|
-
|
|
102
|
-
### US-008: End-to-end verification
|
|
103
|
-
**Description:** As a CLI maintainer, I need to verify all template + CMS + animation combinations work correctly.
|
|
104
|
-
|
|
105
|
-
**Acceptance Criteria:**
|
|
106
|
-
- [ ] `basement -c test-default -d -no-cms -no-animation -claude -no-hooks` produces a working project
|
|
107
|
-
- [ ] `basement -c test-webgl -webgl -no-cms -no-animation -claude -no-hooks` produces a working project with R3F components
|
|
108
|
-
- [ ] `basement -c test-webgpu -webgpu -no-cms -no-animation -claude -no-hooks` produces a working project with WebGPU deps
|
|
109
|
-
- [ ] `basement -c test-experiment -exp -no-cms -no-animation -claude -no-hooks` produces a working project with experiment header
|
|
110
|
-
- [ ] `basement -c test-sanity -webgl -sanity -gsap -claude -no-hooks` produces a working project with CMS + animation + layer
|
|
111
|
-
- [ ] All generated projects pass `bun install && bun dev` (dev server starts)
|
|
112
|
-
|
|
113
|
-
## Functional Requirements
|
|
114
|
-
|
|
115
|
-
- FR-1: The CLI must clone `basementstudio/next-starter#main` as the base for all template types
|
|
116
|
-
- FR-2: When `type !== 'default'`, the CLI must apply the corresponding layer from the local `layers/` directory
|
|
117
|
-
- FR-3: Layer injection must copy additive files without overwriting existing files
|
|
118
|
-
- FR-4: Layer injection must replace files listed in `replaceFiles`, overwriting the base version
|
|
119
|
-
- FR-5: Layer injection must respect `src/` directory structure (using existing `detectPathPrefix`)
|
|
120
|
-
- FR-6: Layer dependencies must be merged into `package.json` from `LAYER_CONFIG`
|
|
121
|
-
- FR-7: CMS integration must continue to work identically after layer injection
|
|
122
|
-
- FR-8: The `bun.lock` file must be deleted after cloning next-starter
|
|
123
|
-
- FR-9: The user-facing prompt flow must remain unchanged (same 4 template choices)
|
|
124
|
-
- FR-10: The `template/` directory must be deleted from the repository
|
|
125
|
-
|
|
126
|
-
## Non-Goals
|
|
127
|
-
|
|
128
|
-
- No multi-layer support (combining WebGL + Experiment) — one layer per project
|
|
129
|
-
- No `add-layer` command for existing projects (only `create` flow)
|
|
130
|
-
- No version pinning UI — always clones latest `main`
|
|
131
|
-
- No changes to the CMS integration system (`src/mergers/` for Sanity/BaseHub)
|
|
132
|
-
- No changes to the hooks, plugins, or agent skills systems
|
|
133
|
-
- No new merger functions for layers (layers use simple copy/replace, not smart merge)
|
|
134
|
-
|
|
135
|
-
## Technical Considerations
|
|
136
|
-
|
|
137
|
-
- **Reuse existing infrastructure:** `detectPathPrefix()`, `transformPath()`, and `formatMergeResults()` from `src/mergers/index.js` are already built for this pattern
|
|
138
|
-
- **Layer files are local:** Unlike CMS integrations (cloned via tiged from a remote branch), layer files live in the CLI repo's `layers/` directory. No network request needed.
|
|
139
|
-
- **Application order matters:** Layers run before CMS integration. Layers do NOT modify `layout.tsx`, so the Sanity layout merger continues to work on the unmodified base layout.
|
|
140
|
-
- **Package.json format:** `next-starter` uses `package.json` (not `package.template.json`), simplifying hydration logic.
|
|
141
|
-
|
|
142
|
-
### Files to Modify
|
|
143
|
-
|
|
144
|
-
| File | Change Type |
|
|
145
|
-
|------|-------------|
|
|
146
|
-
| `src/mergers/config.js` | Add `LAYER_CONFIG`, `getLayerConfig()` |
|
|
147
|
-
| `src/mergers/index.js` | Add `injectLayer()`, extend `formatMergeResults()` |
|
|
148
|
-
| `src/commands/create.js` | Change tiged source, add layer step, config-driven deps |
|
|
149
|
-
|
|
150
|
-
### Files to Create
|
|
151
|
-
|
|
152
|
-
| File | Source |
|
|
153
|
-
|------|--------|
|
|
154
|
-
| `layers/webgl/app/page.tsx` | `template/webgl/app/page.tsx` |
|
|
155
|
-
| `layers/webgl/components/webgl/canvas/dynamic.tsx` | `template/webgl/components/webgl/canvas/dynamic.tsx` |
|
|
156
|
-
| `layers/webgl/components/webgl/canvas/index.tsx` | `template/webgl/components/webgl/canvas/index.tsx` |
|
|
157
|
-
| `layers/webgl/components/webgl/components/scene/index.tsx` | `template/webgl/components/webgl/components/scene/index.tsx` |
|
|
158
|
-
| `layers/experiment/components/layout/header/index.tsx` | `template/experiment/components/layout/header/index.tsx` |
|
|
159
|
-
| `layers/experiment/components/layout/navigation-menu.tsx` | `template/experiment/components/layout/navigation-menu.tsx` |
|
|
160
|
-
| `layers/experiment/lib/constats.ts` | `template/experiment/lib/constats.ts` |
|
|
161
|
-
| `layers/experiment/lib/utils/cn.ts` | `template/experiment/lib/utils/cn.ts` |
|
|
162
|
-
|
|
163
|
-
### Files/Directories to Delete
|
|
164
|
-
|
|
165
|
-
| Path | Reason |
|
|
166
|
-
|------|--------|
|
|
167
|
-
| `template/default/` | Replaced by next-starter clone |
|
|
168
|
-
| `template/webgl/` | Replaced by `layers/webgl/` |
|
|
169
|
-
| `template/webgpu/` | Replaced by `layers/webgpu/` |
|
|
170
|
-
| `template/experiment/` | Replaced by `layers/experiment/` |
|
|
171
|
-
|
|
172
|
-
## Success Metrics
|
|
173
|
-
|
|
174
|
-
- Template directory eliminated (0 duplicated files to maintain)
|
|
175
|
-
- All 4 template types produce working projects with `bun dev`
|
|
176
|
-
- CMS + layer combinations work correctly
|
|
177
|
-
- CLI prompt flow unchanged (invisible to users)
|
|
178
|
-
- Layer addition requires only: adding files to `layers/`, adding config to `LAYER_CONFIG`
|
|
179
|
-
|
|
180
|
-
## Open Questions
|
|
181
|
-
|
|
182
|
-
- Should we add a `--starter-ref` CLI flag in a future iteration for version pinning?
|
|
183
|
-
- If next-starter changes its directory structure significantly, should the CLI validate expected paths before applying layers?
|
|
184
|
-
- Should the `experiment` template's `constats.ts` typo be fixed to `constants.ts`?
|