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.
Files changed (447) hide show
  1. package/README.md +18 -18
  2. package/dist/configs/animations.d.ts +25 -0
  3. package/dist/configs/animations.d.ts.map +1 -0
  4. package/dist/configs/animations.js +29 -0
  5. package/dist/configs/animations.js.map +1 -0
  6. package/dist/helpers/add/hooks-config.d.ts +22 -0
  7. package/dist/helpers/add/hooks-config.d.ts.map +1 -0
  8. package/dist/helpers/add/hooks-config.js +37 -0
  9. package/dist/helpers/add/hooks-config.js.map +1 -0
  10. package/dist/helpers/add/index.d.ts +18 -0
  11. package/dist/helpers/add/index.d.ts.map +1 -0
  12. package/dist/helpers/add/index.js +152 -0
  13. package/dist/helpers/add/index.js.map +1 -0
  14. package/dist/helpers/create/copy-template.d.ts +11 -0
  15. package/dist/helpers/create/copy-template.d.ts.map +1 -0
  16. package/dist/helpers/create/copy-template.js +19 -0
  17. package/dist/helpers/create/copy-template.js.map +1 -0
  18. package/dist/helpers/create/index.d.ts +22 -0
  19. package/dist/helpers/create/index.d.ts.map +1 -0
  20. package/dist/helpers/create/index.js +81 -0
  21. package/dist/helpers/create/index.js.map +1 -0
  22. package/dist/helpers/create/install.d.ts +8 -0
  23. package/dist/helpers/create/install.d.ts.map +1 -0
  24. package/dist/helpers/create/install.js +20 -0
  25. package/dist/helpers/create/install.js.map +1 -0
  26. package/dist/helpers/create/rename-files.d.ts +10 -0
  27. package/dist/helpers/create/rename-files.d.ts.map +1 -0
  28. package/dist/helpers/create/rename-files.js +17 -0
  29. package/dist/helpers/create/rename-files.js.map +1 -0
  30. package/dist/helpers/create/setup-agent.d.ts +21 -0
  31. package/dist/helpers/create/setup-agent.d.ts.map +1 -0
  32. package/dist/helpers/create/setup-agent.js +65 -0
  33. package/dist/helpers/create/setup-agent.js.map +1 -0
  34. package/dist/helpers/create/setup-sanity.d.ts +23 -0
  35. package/dist/helpers/create/setup-sanity.d.ts.map +1 -0
  36. package/dist/helpers/create/setup-sanity.js +354 -0
  37. package/dist/helpers/create/setup-sanity.js.map +1 -0
  38. package/dist/helpers/create/update-package.d.ts +20 -0
  39. package/dist/helpers/create/update-package.d.ts.map +1 -0
  40. package/dist/helpers/create/update-package.js +87 -0
  41. package/dist/helpers/create/update-package.js.map +1 -0
  42. package/dist/helpers/integrate/index.d.ts +13 -0
  43. package/dist/helpers/integrate/index.d.ts.map +1 -0
  44. package/dist/helpers/integrate/index.js +204 -0
  45. package/dist/helpers/integrate/index.js.map +1 -0
  46. package/dist/helpers/integrate/merge-config.d.ts +21 -0
  47. package/dist/helpers/integrate/merge-config.d.ts.map +1 -0
  48. package/dist/helpers/integrate/merge-config.js +38 -0
  49. package/dist/helpers/integrate/merge-config.js.map +1 -0
  50. package/dist/helpers/integrate/merge-orchestrator.d.ts +10 -0
  51. package/dist/helpers/integrate/merge-orchestrator.d.ts.map +1 -0
  52. package/dist/helpers/integrate/merge-orchestrator.js +188 -0
  53. package/dist/helpers/integrate/merge-orchestrator.js.map +1 -0
  54. package/dist/helpers/integrate/sanity/config.d.ts +14 -0
  55. package/dist/helpers/integrate/sanity/config.d.ts.map +1 -0
  56. package/dist/helpers/integrate/sanity/config.js +38 -0
  57. package/dist/helpers/integrate/sanity/config.js.map +1 -0
  58. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts +13 -0
  59. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.d.ts.map +1 -0
  60. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js +84 -0
  61. package/dist/helpers/integrate/sanity/mergers/check-integration-merger.js.map +1 -0
  62. package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts +23 -0
  63. package/dist/helpers/integrate/sanity/mergers/layout-merger.d.ts.map +1 -0
  64. package/dist/helpers/integrate/sanity/mergers/layout-merger.js +161 -0
  65. package/dist/helpers/integrate/sanity/mergers/layout-merger.js.map +1 -0
  66. package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts +13 -0
  67. package/dist/helpers/integrate/sanity/mergers/sitemap-merger.d.ts.map +1 -0
  68. package/{packages/create-basement-app/src → dist/helpers/integrate/sanity}/mergers/sitemap-merger.js +33 -45
  69. package/dist/helpers/integrate/sanity/mergers/sitemap-merger.js.map +1 -0
  70. package/dist/index.d.ts +3 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +337 -0
  73. package/dist/index.js.map +1 -0
  74. package/dist/paths.d.ts +14 -0
  75. package/dist/paths.d.ts.map +1 -0
  76. package/dist/paths.js +24 -0
  77. package/dist/paths.js.map +1 -0
  78. package/dist/utils/detect-project.d.ts +40 -0
  79. package/dist/utils/detect-project.d.ts.map +1 -0
  80. package/dist/utils/detect-project.js +69 -0
  81. package/dist/utils/detect-project.js.map +1 -0
  82. package/dist/utils/format-results.d.ts +24 -0
  83. package/dist/utils/format-results.d.ts.map +1 -0
  84. package/dist/utils/format-results.js +27 -0
  85. package/dist/utils/format-results.js.map +1 -0
  86. package/index.js +25 -0
  87. package/package.json +25 -12
  88. package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/package.json +1 -1
  89. package/src/templates/next-webgl/lib/renderer.ts +7 -0
  90. package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/package.json +1 -1
  91. package/.changeset/README.md +0 -10
  92. package/.changeset/config.json +0 -16
  93. package/.github/workflows/ci.yml +0 -37
  94. package/.github/workflows/release.yml +0 -56
  95. package/.tldr/cache/call_graph.json +0 -7
  96. package/.tldr/languages.json +0 -6
  97. package/.tldr/status +0 -1
  98. package/.tldrignore +0 -84
  99. package/.vscode/settings.json +0 -98
  100. package/CHANGELOG.md +0 -68
  101. package/CLAUDE.md +0 -156
  102. package/biome.json +0 -45
  103. package/bun.lock +0 -496
  104. package/changelog/04-02-26.md +0 -86
  105. package/changelog/05-02-26.md +0 -101
  106. package/changelog/09-02-26.md +0 -83
  107. package/docs/architecture.drawio +0 -250
  108. package/docs/architecture.mermaid +0 -85
  109. package/docs/fix-studio-hydration.md +0 -46
  110. package/docs/plans/2026-01-29-sanity-smart-merge-design.md +0 -196
  111. package/docs/plans/2026-01-29-sanity-smart-merge-implementation.md +0 -695
  112. package/docs/sanity-setup-steps.md +0 -199
  113. package/packages/cli/bin/index.js +0 -259
  114. package/packages/cli/package.json +0 -16
  115. package/packages/cli/src/commands/add-integration.js +0 -310
  116. package/packages/cli/src/commands/create.js +0 -409
  117. package/packages/cli/src/commands/setup-sanity.js +0 -426
  118. package/packages/cli/src/commands/worktree.js +0 -805
  119. package/packages/create-basement-app/integrations/sanity/config.js +0 -46
  120. package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/disable/route.ts +0 -7
  121. package/packages/create-basement-app/integrations/sanity/files/app/api/draft-mode/enable/route.ts +0 -21
  122. package/packages/create-basement-app/integrations/sanity/files/app/api/revalidate/route.ts +0 -37
  123. package/packages/create-basement-app/integrations/sanity/files/app/layout.tsx +0 -111
  124. package/packages/create-basement-app/integrations/sanity/files/app/sitemap.ts +0 -80
  125. package/packages/create-basement-app/integrations/sanity/files/app/studio/[[...tool]]/page.tsx +0 -8
  126. package/packages/create-basement-app/integrations/sanity/files/app/studio/layout.tsx +0 -7
  127. package/packages/create-basement-app/integrations/sanity/files/components/ui/sanity-image/index.tsx +0 -37
  128. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/README.md +0 -58
  129. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/check-integration.ts +0 -62
  130. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/README.md +0 -144
  131. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/client.ts +0 -30
  132. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/disable-draft-mode.tsx +0 -29
  133. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/components/rich-text.tsx +0 -73
  134. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/env.ts +0 -38
  135. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/live/index.tsx +0 -34
  136. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/queries.ts +0 -99
  137. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.cli.ts +0 -20
  138. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.config.ts +0 -94
  139. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/sanity.types.ts +0 -337
  140. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schema.json +0 -1850
  141. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/article.ts +0 -132
  142. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/example.ts +0 -203
  143. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/index.ts +0 -37
  144. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/link.ts +0 -127
  145. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/metadata.ts +0 -68
  146. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/navigation.ts +0 -39
  147. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/page.ts +0 -77
  148. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/schemas/richText.ts +0 -59
  149. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/structure.ts +0 -5
  150. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/image.ts +0 -11
  151. package/packages/create-basement-app/integrations/sanity/files/lib/integrations/sanity/utils/link.ts +0 -61
  152. package/packages/create-basement-app/integrations/sanity/files/lib/scripts/copy-sanity-mcp.ts +0 -23
  153. package/packages/create-basement-app/integrations/sanity/files/lib/scripts/generate-page.ts +0 -310
  154. package/packages/create-basement-app/integrations/sanity/files/lib/utils/metadata.ts +0 -190
  155. package/packages/create-basement-app/integrations/sanity/mergers/check-integration-merger.js +0 -105
  156. package/packages/create-basement-app/integrations/sanity/mergers/layout-merger.js +0 -223
  157. package/packages/create-basement-app/integrations/sanity/mergers/sitemap-merger.js +0 -121
  158. package/packages/create-basement-app/package.json +0 -10
  159. package/packages/create-basement-app/src/configs/animations.js +0 -28
  160. package/packages/create-basement-app/src/index.js +0 -15
  161. package/packages/create-basement-app/src/mergers/check-integration-merger.js +0 -105
  162. package/packages/create-basement-app/src/mergers/config.js +0 -109
  163. package/packages/create-basement-app/src/mergers/index.js +0 -346
  164. package/packages/create-basement-app/src/mergers/layout-merger.js +0 -223
  165. package/packages/create-basement-app/templates/experiment/.cursor/rules/README.md +0 -184
  166. package/packages/create-basement-app/templates/experiment/.cursor/rules/architecture.mdc +0 -437
  167. package/packages/create-basement-app/templates/experiment/.cursor/rules/components.mdc +0 -436
  168. package/packages/create-basement-app/templates/experiment/.cursor/rules/integrations.mdc +0 -447
  169. package/packages/create-basement-app/templates/experiment/.cursor/rules/main.mdc +0 -278
  170. package/packages/create-basement-app/templates/experiment/.cursor/rules/styling.mdc +0 -433
  171. package/packages/create-basement-app/templates/experiment/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  172. package/packages/create-basement-app/templates/experiment/.vscode/extensions.json +0 -20
  173. package/packages/create-basement-app/templates/experiment/app/page.tsx +0 -275
  174. package/packages/create-basement-app/templates/webgl/.biome/plugins/README.md +0 -21
  175. package/packages/create-basement-app/templates/webgl/.biome/plugins/no-anchor-element.grit +0 -12
  176. package/packages/create-basement-app/templates/webgl/.biome/plugins/no-relative-parent-imports.grit +0 -10
  177. package/packages/create-basement-app/templates/webgl/.biome/plugins/no-unnecessary-forwardref.grit +0 -9
  178. package/packages/create-basement-app/templates/webgl/.cursor/rules/README.md +0 -184
  179. package/packages/create-basement-app/templates/webgl/.cursor/rules/architecture.mdc +0 -437
  180. package/packages/create-basement-app/templates/webgl/.cursor/rules/components.mdc +0 -436
  181. package/packages/create-basement-app/templates/webgl/.cursor/rules/integrations.mdc +0 -447
  182. package/packages/create-basement-app/templates/webgl/.cursor/rules/main.mdc +0 -278
  183. package/packages/create-basement-app/templates/webgl/.cursor/rules/styling.mdc +0 -433
  184. package/packages/create-basement-app/templates/webgl/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  185. package/packages/create-basement-app/templates/webgl/.github/workflows/lighthouse-to-slack.yml +0 -136
  186. package/packages/create-basement-app/templates/webgl/.vscode/extensions.json +0 -20
  187. package/packages/create-basement-app/templates/webgl/.vscode/settings.json +0 -105
  188. package/packages/create-basement-app/templates/webgl/app/favicon.ico +0 -0
  189. package/packages/create-basement-app/templates/webgl/app/layout.tsx +0 -104
  190. package/packages/create-basement-app/templates/webgl/app/robots.ts +0 -15
  191. package/packages/create-basement-app/templates/webgl/app/sitemap.ts +0 -16
  192. package/packages/create-basement-app/templates/webgl/components/layout/footer/index.tsx +0 -27
  193. package/packages/create-basement-app/templates/webgl/components/layout/header/index.tsx +0 -11
  194. package/packages/create-basement-app/templates/webgl/components/layout/theme/index.tsx +0 -66
  195. package/packages/create-basement-app/templates/webgl/components/layout/wrapper/index.tsx +0 -65
  196. package/packages/create-basement-app/templates/webgl/components/ui/README.md +0 -77
  197. package/packages/create-basement-app/templates/webgl/components/ui/image/README.md +0 -37
  198. package/packages/create-basement-app/templates/webgl/components/ui/image/index.tsx +0 -224
  199. package/packages/create-basement-app/templates/webgl/components/ui/link/index.tsx +0 -146
  200. package/packages/create-basement-app/templates/webgl/lib/integrations/.gitkeep +0 -0
  201. package/packages/create-basement-app/templates/webgl/public/fonts/geist/Geist-Mono.woff2 +0 -0
  202. package/tasks/.last-branch +0 -1
  203. package/tasks/CLAUDE.md +0 -104
  204. package/tasks/archive/2026-02-09-next-starter-dynamic-layers/prd.json +0 -153
  205. package/tasks/archive/2026-02-09-next-starter-dynamic-layers/progress.txt +0 -115
  206. package/tasks/prd-next-starter-dynamic-layers.md +0 -184
  207. package/tasks/prd-project-restructure.md +0 -375
  208. package/tasks/prd.json +0 -289
  209. package/tasks/progress.txt +0 -309
  210. package/tasks/ralph.sh +0 -113
  211. /package/{packages/create-basement-app/plugins → plugins}/no-anchor-element.grit +0 -0
  212. /package/{packages/create-basement-app/plugins → plugins}/no-relative-parent-imports.grit +0 -0
  213. /package/{packages/create-basement-app/plugins → plugins}/no-unnecessary-forwardref.grit +0 -0
  214. /package/{packages/create-basement-app → src}/template-hooks/config.js +0 -0
  215. /package/{packages/create-basement-app → src}/template-hooks/use-battery.ts +0 -0
  216. /package/{packages/create-basement-app → src}/template-hooks/use-device-perf.ts +0 -0
  217. /package/{packages/create-basement-app → src}/template-hooks/use-intersection-observer.ts +0 -0
  218. /package/{packages/create-basement-app → src}/template-hooks/use-media.ts +0 -0
  219. /package/{packages/create-basement-app → src/templates/next-default/.biome}/plugins/README.md +0 -0
  220. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.editorconfig +0 -0
  221. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.env.example +0 -0
  222. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/.gitattributes +0 -0
  223. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/README.md +0 -0
  224. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/_gitignore +0 -0
  225. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/biome.json +0 -0
  226. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/components/basement.svg +0 -0
  227. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/README.md +0 -0
  228. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/index.ts +0 -0
  229. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-device-detection.ts +0 -0
  230. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-media-breakpoint.ts +0 -0
  231. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/hooks/use-prefetch.ts +0 -0
  232. /package/{.github/workflows → src/templates/next-default/lib/integrations}/.gitkeep +0 -0
  233. /package/{packages/create-basement-app/templates/webgl → src/templates/next-default}/lib/renderer.ts +0 -0
  234. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/dev.ts +0 -0
  235. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-component.ts +0 -0
  236. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate-page.ts +0 -0
  237. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/generate.ts +0 -0
  238. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/scripts/utils.ts +0 -0
  239. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/app.ts +0 -0
  240. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/store/index.ts +0 -0
  241. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/README.md +0 -0
  242. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/cn.ts +0 -0
  243. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/colors.ts +0 -0
  244. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/config.ts +0 -0
  245. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/global.css +0 -0
  246. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/index.css +0 -0
  247. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/reset.css +0 -0
  248. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/root.css +0 -0
  249. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/css/tailwind.css +0 -0
  250. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/easings.ts +0 -0
  251. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/fonts.ts +0 -0
  252. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/index.ts +0 -0
  253. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/layout.mjs +0 -0
  254. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/README.md +0 -0
  255. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-root.ts +0 -0
  256. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/generate-tailwind.ts +0 -0
  257. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/postcss-functions.mjs +0 -0
  258. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/setup-styles.ts +0 -0
  259. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/scripts/utils.ts +0 -0
  260. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/styles/typography.ts +0 -0
  261. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/README.md +0 -0
  262. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/css.d.ts +0 -0
  263. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/easings.ts +0 -0
  264. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/fetch.ts +0 -0
  265. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.test.ts +0 -0
  266. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/math.ts +0 -0
  267. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/metadata.ts +0 -0
  268. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.test.ts +0 -0
  269. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/strings.ts +0 -0
  270. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/types.d.ts +0 -0
  271. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.test.ts +0 -0
  272. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/lib/utils/viewport.ts +0 -0
  273. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/next.config.ts +0 -0
  274. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/package.json +0 -0
  275. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/postcss.config.mjs +0 -0
  276. /package/{packages/create-basement-app/templates/default → src/templates/next-default}/tsconfig.json +0 -0
  277. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/README.md +0 -0
  278. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/no-anchor-element.grit +0 -0
  279. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  280. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  281. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/README.md +0 -0
  282. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/architecture.mdc +0 -0
  283. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/components.mdc +0 -0
  284. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/integrations.mdc +0 -0
  285. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/main.mdc +0 -0
  286. /package/{.cursor → src/templates/next-experiments/.cursor}/rules/styling.mdc +0 -0
  287. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.editorconfig +0 -0
  288. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.env.example +0 -0
  289. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/.gitattributes +0 -0
  290. /package/{.github → src/templates/next-experiments/.github}/PULL_REQUEST_TEMPLATE.md +0 -0
  291. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.github/workflows/lighthouse-to-slack.yml +0 -0
  292. /package/{.vscode → src/templates/next-experiments/.vscode}/extensions.json +0 -0
  293. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/.vscode/settings.json +0 -0
  294. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/README.md +0 -0
  295. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/_gitignore +0 -0
  296. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/favicon.ico +0 -0
  297. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/layout.tsx +0 -0
  298. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/page.tsx +0 -0
  299. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/robots.ts +0 -0
  300. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/app/sitemap.ts +0 -0
  301. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/biome.json +0 -0
  302. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/basement.svg +0 -0
  303. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/footer/index.tsx +0 -0
  304. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/header/index.tsx +0 -0
  305. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/components/layout/navigation-menu.tsx +0 -0
  306. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/theme/index.tsx +0 -0
  307. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/layout/wrapper/index.tsx +0 -0
  308. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/README.md +0 -0
  309. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/image/README.md +0 -0
  310. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/image/index.tsx +0 -0
  311. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/components/ui/link/index.tsx +0 -0
  312. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/README.md +0 -0
  313. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/constants.ts +0 -0
  314. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/index.ts +0 -0
  315. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-device-detection.ts +0 -0
  316. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-media-breakpoint.ts +0 -0
  317. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/hooks/use-prefetch.ts +0 -0
  318. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/lib/integrations/.gitkeep +0 -0
  319. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/dev.ts +0 -0
  320. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-component.ts +0 -0
  321. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate-page.ts +0 -0
  322. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/generate.ts +0 -0
  323. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/scripts/utils.ts +0 -0
  324. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/app.ts +0 -0
  325. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/store/index.ts +0 -0
  326. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/README.md +0 -0
  327. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/cn.ts +0 -0
  328. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/colors.ts +0 -0
  329. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/config.ts +0 -0
  330. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/global.css +0 -0
  331. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/index.css +0 -0
  332. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/reset.css +0 -0
  333. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/root.css +0 -0
  334. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/css/tailwind.css +0 -0
  335. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/easings.ts +0 -0
  336. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/fonts.ts +0 -0
  337. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/index.ts +0 -0
  338. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/layout.mjs +0 -0
  339. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/README.md +0 -0
  340. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-root.ts +0 -0
  341. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/generate-tailwind.ts +0 -0
  342. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/postcss-functions.mjs +0 -0
  343. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/setup-styles.ts +0 -0
  344. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/scripts/utils.ts +0 -0
  345. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/styles/typography.ts +0 -0
  346. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/README.md +0 -0
  347. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/css.d.ts +0 -0
  348. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/easings.ts +0 -0
  349. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/fetch.ts +0 -0
  350. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.test.ts +0 -0
  351. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/math.ts +0 -0
  352. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/metadata.ts +0 -0
  353. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.test.ts +0 -0
  354. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/strings.ts +0 -0
  355. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/types.d.ts +0 -0
  356. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.test.ts +0 -0
  357. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/lib/utils/viewport.ts +0 -0
  358. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/next.config.ts +0 -0
  359. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/postcss.config.mjs +0 -0
  360. /package/{packages/create-basement-app/templates/default → src/templates/next-experiments}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  361. /package/{packages/create-basement-app/templates/experiment → src/templates/next-experiments}/tsconfig.json +0 -0
  362. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/README.md +0 -0
  363. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/no-anchor-element.grit +0 -0
  364. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/no-relative-parent-imports.grit +0 -0
  365. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.biome/plugins/no-unnecessary-forwardref.grit +0 -0
  366. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/README.md +0 -0
  367. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/architecture.mdc +0 -0
  368. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/components.mdc +0 -0
  369. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/integrations.mdc +0 -0
  370. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/main.mdc +0 -0
  371. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.cursor/rules/styling.mdc +0 -0
  372. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.editorconfig +0 -0
  373. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.env.example +0 -0
  374. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/.gitattributes +0 -0
  375. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  376. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.github/workflows/lighthouse-to-slack.yml +0 -0
  377. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/.vscode/extensions.json +0 -0
  378. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/.vscode/settings.json +0 -0
  379. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/README.md +0 -0
  380. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/_gitignore +0 -0
  381. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/favicon.ico +0 -0
  382. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/layout.tsx +0 -0
  383. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/app/page.tsx +0 -0
  384. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/robots.ts +0 -0
  385. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/app/sitemap.ts +0 -0
  386. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/biome.json +0 -0
  387. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/basement.svg +0 -0
  388. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/footer/index.tsx +0 -0
  389. /package/{packages/create-basement-app/templates/default → src/templates/next-webgl}/components/layout/header/index.tsx +0 -0
  390. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/theme/index.tsx +0 -0
  391. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/layout/wrapper/index.tsx +0 -0
  392. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/README.md +0 -0
  393. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/image/README.md +0 -0
  394. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/image/index.tsx +0 -0
  395. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/components/ui/link/index.tsx +0 -0
  396. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/dynamic.tsx +0 -0
  397. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/canvas/index.tsx +0 -0
  398. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/components/webgl/components/scene/index.tsx +0 -0
  399. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/README.md +0 -0
  400. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/index.ts +0 -0
  401. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-device-detection.ts +0 -0
  402. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-media-breakpoint.ts +0 -0
  403. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/hooks/use-prefetch.ts +0 -0
  404. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/lib/integrations/.gitkeep +0 -0
  405. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/dev.ts +0 -0
  406. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-component.ts +0 -0
  407. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate-page.ts +0 -0
  408. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/generate.ts +0 -0
  409. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/scripts/utils.ts +0 -0
  410. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/app.ts +0 -0
  411. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/store/index.ts +0 -0
  412. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/README.md +0 -0
  413. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/cn.ts +0 -0
  414. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/colors.ts +0 -0
  415. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/config.ts +0 -0
  416. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/global.css +0 -0
  417. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/index.css +0 -0
  418. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/reset.css +0 -0
  419. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/root.css +0 -0
  420. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/css/tailwind.css +0 -0
  421. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/easings.ts +0 -0
  422. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/fonts.ts +0 -0
  423. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/index.ts +0 -0
  424. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/layout.mjs +0 -0
  425. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/README.md +0 -0
  426. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-root.ts +0 -0
  427. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/generate-tailwind.ts +0 -0
  428. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/postcss-functions.mjs +0 -0
  429. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/setup-styles.ts +0 -0
  430. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/scripts/utils.ts +0 -0
  431. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/styles/typography.ts +0 -0
  432. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/README.md +0 -0
  433. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/css.d.ts +0 -0
  434. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/easings.ts +0 -0
  435. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/fetch.ts +0 -0
  436. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.test.ts +0 -0
  437. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/math.ts +0 -0
  438. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/metadata.ts +0 -0
  439. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.test.ts +0 -0
  440. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/strings.ts +0 -0
  441. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/types.d.ts +0 -0
  442. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.test.ts +0 -0
  443. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/lib/utils/viewport.ts +0 -0
  444. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/next.config.ts +0 -0
  445. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/postcss.config.mjs +0 -0
  446. /package/{packages/create-basement-app/templates/experiment → src/templates/next-webgl}/public/fonts/geist/Geist-Mono.woff2 +0 -0
  447. /package/{packages/create-basement-app/templates/webgl → src/templates/next-webgl}/tsconfig.json +0 -0
@@ -1,86 +0,0 @@
1
- # Changelog
2
-
3
- ## [Unreleased] - Worktree Management
4
-
5
- ### Added
6
-
7
- #### Git Worktree Management (`-w`, `--worktree`)
8
-
9
- A new CLI mode for managing git worktrees, enabling isolated development environments for parallel feature work.
10
-
11
- **New Commands:**
12
-
13
- | Flag | Long Flag | Description |
14
- |------|-----------|-------------|
15
- | `-w` | `--worktree` | Interactive worktree menu |
16
- | `-wc` | `--worktree-create` | Create new worktree(s) |
17
- | `-wl` | `--worktree-list` | List all worktrees for current project |
18
- | `-ws` | `--worktree-switch` | Get cd command to switch to a worktree |
19
- | `-wr` | `--worktree-remove` | Remove a worktree |
20
- | `-wp` | `--worktree-prune` | Clean up stale worktrees |
21
-
22
- **Options:**
23
-
24
- | Flag | Description |
25
- |------|-------------|
26
- | `-b=<name>` | Specify branch name (supports comma-separated for multiple) |
27
- | `-db`, `--delete-branch` | Delete branch when removing worktree |
28
- | `-f`, `--force` | Skip confirmation prompts |
29
-
30
- **Features:**
31
-
32
- - **Multiple worktree creation**: Create several worktrees at once via interactive prompts or comma-separated flag values
33
- - **Auto-dependency installation**: Detects and installs dependencies based on lock files:
34
- - `bun.lock` / `bun.lockb` → `bun install`
35
- - `pnpm-lock.yaml` → `pnpm install`
36
- - `yarn.lock` → `yarn install`
37
- - `package.json` (no lock) → `npm install`
38
- - `Cargo.toml` → `cargo build`
39
- - `requirements.txt` → `pip install -r requirements.txt`
40
- - `pyproject.toml` → `poetry install` or `pip install -e .`
41
- - `go.mod` → `go mod download`
42
- - **Smart directory structure**: Worktrees stored in `~/.claude/worktrees/<project>/<branch>`
43
- - **Branch name sanitization**: Converts `feature/auth` to `feature-auth` for directory names
44
- - **Prune command**: Cleans up stale git references and orphaned directories
45
-
46
- **Examples:**
47
-
48
- ```bash
49
- # Interactive worktree management
50
- basement -w
51
-
52
- # Create single worktree
53
- basement -wc -b=feature/auth
54
-
55
- # Create multiple worktrees at once
56
- basement -wc -b=feature/auth,feature/dashboard,fix/bug-123
57
-
58
- # List all worktrees
59
- basement -wl
60
-
61
- # Remove worktree and delete branch
62
- basement -wr -b=feature/auth -db -f
63
-
64
- # Clean up stale worktrees
65
- basement -wp
66
- ```
67
-
68
- ### Files Added
69
-
70
- - `src/commands/worktree.js` - Worktree command implementation
71
-
72
- ### Files Modified
73
-
74
- - `bin/index.js` - Added worktree mode, flags, routing, and help text
75
-
76
- ---
77
-
78
- ## Previous Releases
79
-
80
- ### Sanity Integration Branch
81
-
82
- - Added `add-integration` command (`-a`, `--add`)
83
- - Sanity CMS integration with revalidate API
84
- - Support for Next.js projects with `src/` directory structure
85
- - Layout merging for Sanity integration
86
- - Updated sitemap paths for Sanity content
@@ -1,101 +0,0 @@
1
- # Changelog — February 5, 2026
2
-
3
- ## Sanity Integration Overhaul
4
-
5
- ### Added
6
-
7
- #### Automated Sanity Project Setup (`setup-sanity.js`)
8
-
9
- A new 8-step automated setup flow that provisions a Sanity project without leaving the CLI.
10
-
11
- **Steps performed automatically:**
12
- 1. Verify Sanity CLI is available
13
- 2. Check user authentication (prompts `sanity login` if needed)
14
- 3. Create Sanity project via `sanity projects create`
15
- 4. Create an API read token via the Sanity Management API
16
- 5. Write credentials to `.env.local`
17
- 6. Deploy a CORS origin for `localhost:3000`
18
- 7. Create an initial dataset (`production`)
19
- 8. Display a summary with project ID, dataset, and Studio URL
20
-
21
- Wired into both `create.js` (step 5.5) and `add-integration.js` (step 7) — if auto-setup is skipped or fails, the CLI falls back to manual credential instructions.
22
-
23
- #### `add-integration` Command (`-a`, `--add`)
24
-
25
- Post-scaffold command to inject a CMS integration into an existing Next.js project.
26
-
27
- - Validates the target is a Next.js App Router project
28
- - Supports Sanity and BaseHub integrations
29
- - Automatically injects dependencies, scripts, and CMS files
30
- - Registers the Sanity MCP server (`claude mcp add`) when Claude Code is detected
31
- - Installs `sanity-io/agent-toolkit` skills for AI-assisted workflows
32
- - Conditional next-steps messaging based on whether auto-setup succeeded
33
-
34
- #### Smart Merge System (`src/mergers/`)
35
-
36
- CMS-specific file mergers that intelligently inject integration code into existing project files instead of blindly overwriting them.
37
-
38
- | Merger | File | What it does |
39
- |--------|------|--------------|
40
- | `layout-merger.js` | `app/layout.tsx` | Injects Sanity providers, draft-mode components, and imports |
41
- | `sitemap-merger.js` | `app/sitemap.ts` | Adds Sanity content routes to the sitemap generator |
42
- | `check-integration-merger.js` | `lib/integrations/check-integration.ts` | Registers Sanity in the integration check map |
43
- | `config.js` | — | File classification config (merge vs. copy vs. skip) |
44
- | `index.js` | — | Orchestrator: detects `src/` prefix, resolves mergers, handles fallbacks |
45
-
46
- **Key features:**
47
- - Auto-detects `src/` directory structure and adjusts all paths accordingly
48
- - Downloads integration files from a dedicated branch (`#sanity-integration`)
49
- - Falls back to direct copy when no merger is defined for a file
50
-
51
- #### Sanity MCP Server & Agent Toolkit
52
-
53
- - Registers `https://mcp.sanity.io` as an MCP server during setup (Claude Code projects)
54
- - Installs `sanity-io/agent-toolkit` skills via `bunx skills add`
55
-
56
- #### Integration Files (moved to `integrations/sanity/`)
57
-
58
- Sanity CMS files are now centralized under `integrations/sanity/` instead of being duplicated across all four templates:
59
-
60
- - `app/studio/[[...tool]]/page.tsx` — Embedded Sanity Studio route
61
- - `app/studio/layout.tsx` — Studio layout (passthrough, no nested `<html>`)
62
- - `app/api/revalidate/route.ts` — On-demand ISR revalidation webhook
63
- - `app/api/draft-mode/{enable,disable}/route.ts` — Draft mode toggle
64
- - `app/layout.tsx` — Layout with Sanity providers
65
- - `app/sitemap.ts` — Sitemap with Sanity content routes
66
- - `lib/integrations/sanity/` — Client, schemas, queries, types, structure
67
- - `lib/integrations/check-integration.ts` — Integration checker
68
- - `lib/scripts/generate-page.ts` — Page scaffolding with Sanity schema support
69
- - `lib/utils/metadata.ts` — Sanity-aware metadata helpers
70
- - `components/ui/sanity-image/` — Sanity image component
71
-
72
- ### Fixed
73
-
74
- #### Studio Hydration Errors
75
-
76
- `app/studio/layout.tsx` previously rendered its own `<html>` and `<body>` tags, causing React hydration mismatches when nested inside the root layout. The layout now passes `children` through directly.
77
-
78
- ### Changed
79
-
80
- - **Templates cleaned up** — Removed duplicated Sanity files from `template/{default,webgl,webgpu,experiment}/`. Sanity is now injected at build time via the merger system.
81
- - **Removed `sanity:mcp` script** — The `copy-sanity-mcp.ts` script and its `package.json` entry were removed in favor of direct MCP registration via `claude mcp add`.
82
- - **`create.js` updated** — Sanity auto-setup (step 5.5), MCP registration (step 5.6), and conditional next-steps messaging added.
83
- - **`CLAUDE.md` updated** — Added guidance that nested layouts must not render `<html>` or `<body>` tags.
84
-
85
- ### Files Added
86
-
87
- - `src/commands/setup-sanity.js`
88
- - `src/commands/add-integration.js`
89
- - `src/mergers/index.js`
90
- - `src/mergers/config.js`
91
- - `src/mergers/layout-merger.js`
92
- - `src/mergers/sitemap-merger.js`
93
- - `src/mergers/check-integration-merger.js`
94
- - `integrations/sanity/` (all CMS files)
95
-
96
- ### Files Modified
97
-
98
- - `bin/index.js` — Added `--add` / `-a` flag routing
99
- - `src/commands/create.js` — Sanity auto-setup, MCP registration, agent toolkit
100
- - `CLAUDE.md` — Nested layout guidance
101
- - `package.json` — Updated dependencies
@@ -1,83 +0,0 @@
1
- # Changelog — February 9, 2026
2
-
3
- ## Dynamic Layer Architecture (next-starter migration)
4
-
5
- Replaced the duplicated full-template system with a layer-based architecture. The CLI now clones `basementstudio/next-starter` as the base for all project types and overlays technology-specific layers on top, eliminating ~27,000 lines of duplicated code.
6
-
7
- ### Added
8
-
9
- #### Layer Configuration System (`src/mergers/config.js`)
10
-
11
- Centralized configuration that defines per-layer dependencies, scripts, and dev dependencies.
12
-
13
- **Supported layers:**
14
-
15
- | Layer | Key Dependencies |
16
- |-------|-----------------|
17
- | `default` | (base next-starter, no extra deps) |
18
- | `webgl` | `@react-three/fiber`, `@react-three/drei`, `three`, `@types/three` |
19
- | `webgpu` | `three` (WebGPU renderer) |
20
- | `experiment` | (navigation/header components, no extra deps) |
21
-
22
- Each layer config specifies `dependencies`, `devDependencies`, and `scripts` that get injected into `package.json` during project hydration.
23
-
24
- #### Layer Files (`layers/`)
25
-
26
- Technology-specific files extracted from the old full templates into minimal overlay directories:
27
-
28
- - `layers/webgl/` — Custom `app/page.tsx`, WebGL canvas, and scene components
29
- - `layers/webgpu/` — `.gitkeep` placeholder (deps-only layer)
30
- - `layers/experiment/` — Header component, navigation menu, and constants
31
-
32
- #### Layer Injection Function (`src/mergers/index.js`)
33
-
34
- New `injectLayer()` function that copies layer-specific files on top of the cloned next-starter base. Handles file overlay with proper path resolution.
35
-
36
- #### Config-Driven Package Hydration
37
-
38
- `package.json` hydration now reads dependencies from `LAYER_CONFIG` instead of hardcoding them per template. The `hydratePackageJson()` function in `create.js` merges layer-specific deps, scripts, and devDeps into the base `package.json`.
39
-
40
- ### Changed
41
-
42
- - **`create.js` — Clone source changed**: All template types now clone from `basementstudio/next-starter#main` instead of per-type template directories. Layer injection happens as a post-clone step.
43
- - **`create.js` — Template directory deleted after injection**: The CLI cleans up the local `layers/` artifacts from the generated project after overlay.
44
- - **`bin/index.js` — Command renamed**: Updated CLI command name.
45
- - **`src/commands/worktree.js`** — Minor update.
46
- - **`src/mergers/config.js`** — Added `LAYER_CONFIG` export with per-layer dependency maps.
47
- - **`src/mergers/index.js`** — Added `injectLayer()` alongside existing merger functions.
48
-
49
- ### Removed
50
-
51
- - **`template/` directory** — Deleted all four full template directories (`default/`, `webgl/`, `webgpu/`, `experiment/`), removing ~27,000 lines of duplicated boilerplate. Each template previously contained a full copy of the next-starter codebase.
52
-
53
- ### Files Added
54
-
55
- - `layers/webgl/app/page.tsx`
56
- - `layers/webgl/components/webgl/canvas/dynamic.tsx`
57
- - `layers/webgl/components/webgl/canvas/index.tsx`
58
- - `layers/webgl/components/webgl/components/scene/index.tsx`
59
- - `layers/webgpu/.gitkeep`
60
- - `layers/experiment/components/layout/header/index.tsx`
61
- - `layers/experiment/components/layout/navigation-menu.tsx`
62
- - `layers/experiment/lib/constants.ts`
63
- - `tasks/prd-next-starter-dynamic-layers.md`
64
- - `tasks/prd.json`
65
- - `tasks/progress.txt`
66
-
67
- ### Files Modified
68
-
69
- - `bin/index.js`
70
- - `src/commands/create.js`
71
- - `src/commands/worktree.js`
72
- - `src/mergers/config.js`
73
- - `src/mergers/index.js`
74
- - `CLAUDE.md`
75
- - `README.md`
76
- - `package.json`
77
-
78
- ### Files Deleted
79
-
80
- - `template/default/` (all files)
81
- - `template/webgl/` (all files)
82
- - `template/webgpu/` (all files)
83
- - `template/experiment/` (all files)
@@ -1,250 +0,0 @@
1
- <mxfile host="app.diagrams.net" modified="2026-02-12T00:00:00.000Z" agent="Claude Code" version="24.0.0" type="device">
2
- <diagram id="architecture" name="Project Structure">
3
- <mxGraphModel dx="1422" dy="794" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1200" math="0" shadow="0">
4
- <root>
5
- <mxCell id="0" />
6
- <mxCell id="1" parent="0" />
7
-
8
- <!-- ROOT -->
9
- <mxCell id="root" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a1a2e;strokeColor=#e94560;arcSize=8;" vertex="1" parent="1">
10
- <mxGeometry x="20" y="20" width="1560" height="1160" as="geometry" />
11
- </mxCell>
12
- <mxCell id="root_label" value="&lt;b&gt;basement-starter-cli&lt;/b&gt; (root)" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#e94560;fontSize=16;" vertex="1" parent="1">
13
- <mxGeometry x="40" y="30" width="250" height="30" as="geometry" />
14
- </mxCell>
15
-
16
- <!-- Root files -->
17
- <mxCell id="root_pkg" value="package.json&#xa;workspaces: [packages/*]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2d2d44;strokeColor=#e94560;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
18
- <mxGeometry x="40" y="70" width="160" height="40" as="geometry" />
19
- </mxCell>
20
- <mxCell id="root_biome" value="biome.json&#xa;shared linting" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2d2d44;strokeColor=#e94560;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
21
- <mxGeometry x="210" y="70" width="120" height="40" as="geometry" />
22
- </mxCell>
23
- <mxCell id="root_changeset" value=".changeset/&#xa;versioning" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2d2d44;strokeColor=#e94560;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
24
- <mxGeometry x="340" y="70" width="120" height="40" as="geometry" />
25
- </mxCell>
26
- <mxCell id="root_ci" value=".github/workflows/&#xa;release pipeline" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2d2d44;strokeColor=#e94560;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
27
- <mxGeometry x="470" y="70" width="140" height="40" as="geometry" />
28
- </mxCell>
29
-
30
- <!-- CLI PACKAGE -->
31
- <mxCell id="cli" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#16213e;strokeColor=#0f3460;arcSize=6;" vertex="1" parent="1">
32
- <mxGeometry x="40" y="140" width="360" height="420" as="geometry" />
33
- </mxCell>
34
- <mxCell id="cli_label" value="&lt;b&gt;packages/cli&lt;/b&gt;&#xa;@basementstudio/cli" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#4da6ff;fontSize=14;" vertex="1" parent="1">
35
- <mxGeometry x="55" y="150" width="200" height="40" as="geometry" />
36
- </mxCell>
37
-
38
- <mxCell id="cli_bin" value="&lt;b&gt;bin/index.js&lt;/b&gt;&#xa;CLI entry point&#xa;&#x27;basement&#x27; command&#xa;arg parsing + routing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
39
- <mxGeometry x="60" y="200" width="150" height="70" as="geometry" />
40
- </mxCell>
41
-
42
- <mxCell id="cli_create" value="&lt;b&gt;src/commands/create.js&lt;/b&gt;&#xa;Orchestrates scaffolding&#xa;Calls create-basement-app" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
43
- <mxGeometry x="60" y="285" width="160" height="60" as="geometry" />
44
- </mxCell>
45
-
46
- <mxCell id="cli_add" value="&lt;b&gt;src/commands/&#xa;add-integration.js&lt;/b&gt;&#xa;Add CMS to existing project" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
47
- <mxGeometry x="230" y="285" width="155" height="60" as="geometry" />
48
- </mxCell>
49
-
50
- <mxCell id="cli_worktree" value="&lt;b&gt;src/commands/&#xa;worktree.js&lt;/b&gt;&#xa;Git worktree mgmt" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
51
- <mxGeometry x="60" y="360" width="130" height="55" as="geometry" />
52
- </mxCell>
53
-
54
- <mxCell id="cli_sanity" value="&lt;b&gt;src/commands/&#xa;setup-sanity.js&lt;/b&gt;&#xa;Sanity project setup" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
55
- <mxGeometry x="200" y="360" width="140" height="55" as="geometry" />
56
- </mxCell>
57
-
58
- <mxCell id="cli_pkg" value="&lt;b&gt;package.json&lt;/b&gt;&#xa;deps: fs-extra, ora, picocolors,&#xa;prompts, dotenv" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
59
- <mxGeometry x="60" y="430" width="200" height="50" as="geometry" />
60
- </mxCell>
61
-
62
- <mxCell id="cli_dep_label" value="depends on&#xa;create-basement-app&#xa;(workspace:*)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b6b;fontSize=10;fontStyle=2;" vertex="1" parent="1">
63
- <mxGeometry x="60" y="490" width="130" height="50" as="geometry" />
64
- </mxCell>
65
-
66
- <!-- CREATE-BASEMENT-APP PACKAGE -->
67
- <mxCell id="cba" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#0f3460;strokeColor=#533483;arcSize=4;" vertex="1" parent="1">
68
- <mxGeometry x="420" y="140" width="1140" height="1020" as="geometry" />
69
- </mxCell>
70
- <mxCell id="cba_label" value="&lt;b&gt;packages/create-basement-app&lt;/b&gt;&#xa;@basementstudio/create-basement-app" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#b388ff;fontSize=14;" vertex="1" parent="1">
71
- <mxGeometry x="440" y="150" width="350" height="40" as="geometry" />
72
- </mxCell>
73
-
74
- <!-- SRC -->
75
- <mxCell id="cba_src" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a2744;strokeColor=#533483;arcSize=6;" vertex="1" parent="1">
76
- <mxGeometry x="440" y="200" width="520" height="200" as="geometry" />
77
- </mxCell>
78
- <mxCell id="cba_src_label" value="&lt;b&gt;src/&lt;/b&gt; — scaffolding logic" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#b388ff;fontSize=12;" vertex="1" parent="1">
79
- <mxGeometry x="450" y="205" width="180" height="25" as="geometry" />
80
- </mxCell>
81
-
82
- <mxCell id="cba_index" value="&lt;b&gt;index.js&lt;/b&gt;&#xa;Public API&#xa;barrel export" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3f5f;strokeColor=#b388ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
83
- <mxGeometry x="455" y="235" width="100" height="55" as="geometry" />
84
- </mxCell>
85
-
86
- <mxCell id="cba_mergers" value="&lt;b&gt;mergers/&lt;/b&gt;&#xa;index.js — injectLayer, injectIntegration&#xa;config.js — CMS_CONFIG, LAYER_CONFIG" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3f5f;strokeColor=#b388ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
87
- <mxGeometry x="570" y="235" width="250" height="55" as="geometry" />
88
- </mxCell>
89
-
90
- <mxCell id="cba_configs" value="&lt;b&gt;configs/&lt;/b&gt;&#xa;animations.js&#xa;GSAP + Motion deps" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3f5f;strokeColor=#b388ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
91
- <mxGeometry x="835" y="235" width="110" height="55" as="geometry" />
92
- </mxCell>
93
-
94
- <mxCell id="cba_pkg" value="&lt;b&gt;package.json&lt;/b&gt; — deps: fs-extra, picocolors" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3f5f;strokeColor=#b388ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
95
- <mxGeometry x="455" y="310" width="280" height="30" as="geometry" />
96
- </mxCell>
97
-
98
- <!-- TEMPLATES -->
99
- <mxCell id="templates" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#3d1f6d;strokeColor=#e94560;arcSize=6;" vertex="1" parent="1">
100
- <mxGeometry x="440" y="420" width="520" height="280" as="geometry" />
101
- </mxCell>
102
- <mxCell id="templates_label" value="&lt;b&gt;templates/&lt;/b&gt; — full standalone Next.js projects" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b9d;fontSize=12;" vertex="1" parent="1">
103
- <mxGeometry x="450" y="425" width="330" height="25" as="geometry" />
104
- </mxCell>
105
-
106
- <mxCell id="t_default" value="&lt;b&gt;default/&lt;/b&gt;&#xa;84 files&#xa;Base next-starter&#xa;&#xa;next 16.1.4&#xa;react 19.2.4&#xa;tailwindcss v4&#xa;zustand&#xa;biome" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4a2080;strokeColor=#ff6b9d;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
107
- <mxGeometry x="455" y="460" width="110" height="130" as="geometry" />
108
- </mxCell>
109
-
110
- <mxCell id="t_webgl" value="&lt;b&gt;webgl/&lt;/b&gt;&#xa;87 files&#xa;default + R3F&#xa;&#xa;@react-three/fiber&#xa;@react-three/drei&#xa;three ^0.182.0&#xa;+ canvas/scene" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4a2080;strokeColor=#ff6b9d;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
111
- <mxGeometry x="580" y="460" width="115" height="130" as="geometry" />
112
- </mxCell>
113
-
114
- <mxCell id="t_webgpu" value="&lt;b&gt;webgpu/&lt;/b&gt;&#xa;84 files&#xa;default + alpha R3F&#xa;&#xa;fiber 10.0.0-alpha&#xa;drei ^11.0.0-alpha&#xa;(deps only,&#xa;no extra files)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4a2080;strokeColor=#ff6b9d;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
115
- <mxGeometry x="710" y="460" width="115" height="130" as="geometry" />
116
- </mxCell>
117
-
118
- <mxCell id="t_experiment" value="&lt;b&gt;experiment/&lt;/b&gt;&#xa;86 files&#xa;default + nav&#xa;&#xa;Radix NavMenu&#xa;CVA styling&#xa;+ header/nav&#xa;+ constants.ts" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4a2080;strokeColor=#ff6b9d;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
119
- <mxGeometry x="840" y="460" width="110" height="130" as="geometry" />
120
- </mxCell>
121
-
122
- <mxCell id="t_note" value="Each template is independently runnable:&#xa;cd templates/webgl &amp;&amp; bun install &amp;&amp; bun dev" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b9d;fontSize=10;fontStyle=2;" vertex="1" parent="1">
123
- <mxGeometry x="455" y="605" width="280" height="35" as="geometry" />
124
- </mxCell>
125
-
126
- <!-- INTEGRATIONS -->
127
- <mxCell id="integrations" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#5c1a1a;strokeColor=#ff4d4d;arcSize=6;" vertex="1" parent="1">
128
- <mxGeometry x="980" y="200" width="560" height="310" as="geometry" />
129
- </mxCell>
130
- <mxCell id="int_label" value="&lt;b&gt;integrations/&lt;/b&gt; — CMS overlays (applied on top of any template)" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b6b;fontSize=12;" vertex="1" parent="1">
131
- <mxGeometry x="990" y="205" width="400" height="25" as="geometry" />
132
- </mxCell>
133
-
134
- <!-- Sanity -->
135
- <mxCell id="sanity" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#6b2020;strokeColor=#ff4d4d;arcSize=8;" vertex="1" parent="1">
136
- <mxGeometry x="995" y="240" width="340" height="250" as="geometry" />
137
- </mxCell>
138
- <mxCell id="sanity_label" value="&lt;b&gt;sanity/&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff8a8a;fontSize=11;" vertex="1" parent="1">
139
- <mxGeometry x="1005" y="245" width="70" height="22" as="geometry" />
140
- </mxCell>
141
-
142
- <mxCell id="s_config" value="&lt;b&gt;config.js&lt;/b&gt;&#xa;Single source of truth&#xa;deps: @sanity/*, next-sanity&#xa;devDeps: sanity&#xa;scripts: extract, typegen&#xa;additivePaths: 9&#xa;mergeFiles: 3" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7a2a2a;strokeColor=#ff8a8a;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
143
- <mxGeometry x="1010" y="270" width="150" height="100" as="geometry" />
144
- </mxCell>
145
-
146
- <mxCell id="s_files" value="&lt;b&gt;files/&lt;/b&gt;&#xa;35 Sanity files&#xa;app/ components/&#xa;lib/integrations/sanity/" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7a2a2a;strokeColor=#ff8a8a;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
147
- <mxGeometry x="1175" y="270" width="145" height="70" as="geometry" />
148
- </mxCell>
149
-
150
- <mxCell id="s_mergers" value="&lt;b&gt;mergers/&lt;/b&gt;&#xa;layout-merger.js&#xa;sitemap-merger.js&#xa;check-integration-merger.js" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7a2a2a;strokeColor=#ff8a8a;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
151
- <mxGeometry x="1175" y="355" width="145" height="70" as="geometry" />
152
- </mxCell>
153
-
154
- <!-- HOOKS -->
155
- <mxCell id="hooks" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a3a4a;strokeColor=#4ecdc4;arcSize=6;" vertex="1" parent="1">
156
- <mxGeometry x="980" y="530" width="560" height="170" as="geometry" />
157
- </mxCell>
158
- <mxCell id="hooks_label" value="&lt;b&gt;template-hooks/&lt;/b&gt; — optional hooks copied during scaffolding" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#4ecdc4;fontSize=12;" vertex="1" parent="1">
159
- <mxGeometry x="990" y="535" width="380" height="25" as="geometry" />
160
- </mxCell>
161
-
162
- <mxCell id="h_config" value="&lt;b&gt;config.js&lt;/b&gt;&#xa;Hook metadata&#xa;+ npm deps per hook" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
163
- <mxGeometry x="1000" y="570" width="120" height="55" as="geometry" />
164
- </mxCell>
165
-
166
- <mxCell id="h_battery" value="use-battery.ts&#xa;deps: lodash-es" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
167
- <mxGeometry x="1135" y="570" width="100" height="40" as="geometry" />
168
- </mxCell>
169
-
170
- <mxCell id="h_perf" value="use-device-perf.ts&#xa;deps: detect-gpu,&#xa;react-device-detect, zustand" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
171
- <mxGeometry x="1250" y="570" width="130" height="55" as="geometry" />
172
- </mxCell>
173
-
174
- <mxCell id="h_observer" value="use-intersection-&#xa;observer.ts&#xa;(no deps)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
175
- <mxGeometry x="1395" y="570" width="100" height="50" as="geometry" />
176
- </mxCell>
177
-
178
- <mxCell id="h_media" value="use-media.ts&#xa;(no deps)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
179
- <mxGeometry x="1135" y="625" width="100" height="35" as="geometry" />
180
- </mxCell>
181
-
182
- <!-- PLUGINS -->
183
- <mxCell id="plugins" value="&lt;b&gt;plugins/&lt;/b&gt;&#xa;no-anchor-element.grit&#xa;no-unnecessary-forwardref.grit&#xa;no-relative-parent-imports.grit" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3a2a;strokeColor=#66bb6a;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
184
- <mxGeometry x="980" y="720" width="220" height="70" as="geometry" />
185
- </mxCell>
186
-
187
- <!-- ARROWS: CLI -> CBA -->
188
- <mxCell id="arrow1" value="" style="endArrow=block;endFill=1;html=1;strokeColor=#ff6b6b;strokeWidth=2;entryX=0;entryY=0.5;exitX=1;exitY=0.5;" edge="1" parent="1" source="cli_create" target="cba_index">
189
- <mxGeometry relative="1" as="geometry" />
190
- </mxCell>
191
- <mxCell id="arrow1_label" value="imports" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#ff6b6b;fontSize=10;" vertex="1" connectable="0" parent="arrow1">
192
- <mxGeometry x="-0.2" relative="1" as="geometry">
193
- <mxPoint as="offset" />
194
- </mxGeometry>
195
- </mxCell>
196
-
197
- <!-- ARROW: CLI create -> templates -->
198
- <mxCell id="arrow2" value="" style="endArrow=block;endFill=1;html=1;strokeColor=#ff6b9d;strokeWidth=2;dashed=1;exitX=1;exitY=1;entryX=0;entryY=0;" edge="1" parent="1" source="cli_create" target="templates">
199
- <mxGeometry relative="1" as="geometry" />
200
- </mxCell>
201
- <mxCell id="arrow2_label" value="fs.copy" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#ff6b9d;fontSize=10;" vertex="1" connectable="0" parent="arrow2">
202
- <mxGeometry x="-0.2" relative="1" as="geometry">
203
- <mxPoint as="offset" />
204
- </mxGeometry>
205
- </mxCell>
206
-
207
- <!-- ARROW: CLI create -> integrations -->
208
- <mxCell id="arrow3" value="" style="endArrow=block;endFill=1;html=1;strokeColor=#ff4d4d;strokeWidth=2;dashed=1;exitX=1;exitY=0.3;entryX=0;entryY=0.5;" edge="1" parent="1" source="cli" target="integrations">
209
- <mxGeometry relative="1" as="geometry" />
210
- </mxCell>
211
- <mxCell id="arrow3_label" value="merge + copy" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#ff4d4d;fontSize=10;" vertex="1" connectable="0" parent="arrow3">
212
- <mxGeometry x="-0.3" relative="1" as="geometry">
213
- <mxPoint as="offset" />
214
- </mxGeometry>
215
- </mxCell>
216
-
217
- <!-- ARROW: mergers -> sanity mergers -->
218
- <mxCell id="arrow4" value="" style="endArrow=block;endFill=1;html=1;strokeColor=#ff8a8a;strokeWidth=1;dashed=1;" edge="1" parent="1" source="cba_mergers" target="s_mergers">
219
- <mxGeometry relative="1" as="geometry" />
220
- </mxCell>
221
- <mxCell id="arrow4_label" value="imports" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#ff8a8a;fontSize=9;" vertex="1" connectable="0" parent="arrow4">
222
- <mxGeometry x="-0.2" relative="1" as="geometry">
223
- <mxPoint as="offset" />
224
- </mxGeometry>
225
- </mxCell>
226
-
227
- <!-- DATA FLOW LEGEND -->
228
- <mxCell id="legend" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a1a2e;strokeColor=#555;arcSize=8;" vertex="1" parent="1">
229
- <mxGeometry x="440" y="730" width="500" height="110" as="geometry" />
230
- </mxCell>
231
- <mxCell id="legend_title" value="&lt;b&gt;Data Flow&lt;/b&gt;" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#fff;fontSize=11;" vertex="1" parent="1">
232
- <mxGeometry x="455" y="735" width="80" height="22" as="geometry" />
233
- </mxCell>
234
- <mxCell id="legend1" value="1. User runs &lt;b&gt;basement&lt;/b&gt; → CLI parses args, prompts for choices" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#4da6ff;fontSize=10;" vertex="1" parent="1">
235
- <mxGeometry x="455" y="758" width="340" height="22" as="geometry" />
236
- </mxCell>
237
- <mxCell id="legend2" value="2. CLI copies selected &lt;b&gt;template&lt;/b&gt; to target dir (instant, no network)" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b9d;fontSize=10;" vertex="1" parent="1">
238
- <mxGeometry x="455" y="778" width="380" height="22" as="geometry" />
239
- </mxCell>
240
- <mxCell id="legend3" value="3. CLI applies CMS &lt;b&gt;integration&lt;/b&gt; via merge + copy (if selected)" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff4d4d;fontSize=10;" vertex="1" parent="1">
241
- <mxGeometry x="455" y="798" width="350" height="22" as="geometry" />
242
- </mxCell>
243
- <mxCell id="legend4" value="4. CLI hydrates package.json from &lt;b&gt;config manifests&lt;/b&gt; (zero hardcoded deps)" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#b388ff;fontSize=10;" vertex="1" parent="1">
244
- <mxGeometry x="455" y="818" width="420" height="22" as="geometry" />
245
- </mxCell>
246
-
247
- </root>
248
- </mxGraphModel>
249
- </diagram>
250
- </mxfile>
@@ -1,85 +0,0 @@
1
- graph TD
2
- subgraph ROOT["basement-starter-cli (root)"]
3
- PKG_ROOT["package.json<br/><i>workspaces: packages/*</i>"]
4
- BIOME["biome.json<br/><i>shared linting</i>"]
5
- CHANGESET[".changeset/<br/><i>versioning</i>"]
6
- CI[".github/workflows/<br/><i>release pipeline</i>"]
7
- end
8
-
9
- subgraph CLI["packages/cli — @basementstudio/cli"]
10
- CLI_BIN["bin/index.js<br/><i>CLI entry point</i><br/><i>basement command</i>"]
11
- CLI_CREATE["src/commands/create.js<br/><i>orchestrates scaffolding</i>"]
12
- CLI_ADD["src/commands/add-integration.js<br/><i>add CMS to existing project</i>"]
13
- CLI_WORKTREE["src/commands/worktree.js<br/><i>git worktree management</i>"]
14
- CLI_SANITY["src/commands/setup-sanity.js<br/><i>automated Sanity setup</i>"]
15
- CLI_PKG["package.json<br/><i>depends on create-basement-app</i>"]
16
- end
17
-
18
- subgraph CBA["packages/create-basement-app — @basementstudio/create-basement-app"]
19
- CBA_INDEX["src/index.js<br/><i>public API barrel export</i>"]
20
-
21
- subgraph MERGERS["src/mergers/"]
22
- MERGER_INDEX["index.js<br/><i>injectLayer, injectIntegration</i>"]
23
- MERGER_CONFIG["config.js<br/><i>CMS_CONFIG, LAYER_CONFIG</i>"]
24
- end
25
-
26
- subgraph CONFIGS["src/configs/"]
27
- ANIM_CONFIG["animations.js<br/><i>GSAP, Motion deps</i>"]
28
- end
29
-
30
- subgraph TEMPLATES["templates/ — standalone Next.js projects"]
31
- T_DEFAULT["default/<br/><i>84 files, base starter</i>"]
32
- T_WEBGL["webgl/<br/><i>87 files, R3F + canvas</i>"]
33
- T_WEBGPU["webgpu/<br/><i>84 files, alpha R3F deps</i>"]
34
- T_EXPERIMENT["experiment/<br/><i>86 files, nav components</i>"]
35
- end
36
-
37
- subgraph INTEGRATIONS["integrations/ — CMS overlays"]
38
- subgraph SANITY["sanity/"]
39
- S_CONFIG["config.js<br/><i>deps, scripts, paths</i>"]
40
- S_FILES["files/<br/><i>35 Sanity files</i>"]
41
- S_MERGERS["mergers/<br/><i>layout, sitemap, check</i>"]
42
- end
43
- end
44
-
45
- subgraph HOOKS["template-hooks/"]
46
- H_CONFIG["config.js<br/><i>hook metadata + deps</i>"]
47
- H_BATTERY["use-battery.ts"]
48
- H_PERF["use-device-perf.ts"]
49
- H_OBSERVER["use-intersection-observer.ts"]
50
- H_MEDIA["use-media.ts"]
51
- end
52
-
53
- PLUGINS["plugins/<br/><i>3 Biome Grit rules</i>"]
54
- end
55
-
56
- %% Dependencies
57
- CLI_BIN --> CLI_CREATE
58
- CLI_BIN --> CLI_ADD
59
- CLI_BIN --> CLI_WORKTREE
60
- CLI_CREATE --> CBA_INDEX
61
- CLI_CREATE --> S_CONFIG
62
- CLI_CREATE --> H_CONFIG
63
- CLI_ADD --> CBA_INDEX
64
- CLI_ADD --> S_CONFIG
65
- CBA_INDEX --> MERGER_INDEX
66
- CBA_INDEX --> ANIM_CONFIG
67
- MERGER_INDEX --> MERGER_CONFIG
68
- MERGER_INDEX --> S_MERGERS
69
- CLI_CREATE --> TEMPLATES
70
- CLI_CREATE --> CLI_SANITY
71
-
72
- %% Styling
73
- classDef root fill:#1a1a2e,stroke:#e94560,color:#fff
74
- classDef cli fill:#16213e,stroke:#0f3460,color:#fff
75
- classDef cba fill:#0f3460,stroke:#533483,color:#fff
76
- classDef template fill:#533483,stroke:#e94560,color:#fff
77
- classDef integration fill:#e94560,stroke:#fff,color:#fff
78
- classDef hook fill:#0f3460,stroke:#e94560,color:#fff
79
-
80
- class ROOT root
81
- class CLI cli
82
- class CBA cba
83
- class TEMPLATES,T_DEFAULT,T_WEBGL,T_WEBGPU,T_EXPERIMENT template
84
- class INTEGRATIONS,SANITY integration
85
- class HOOKS hook