create-better-t-stack 2.35.5 → 2.36.1

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/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { createBtsCli } from "./src-D3yNVHFj.js";
2
+ import { createBtsCli } from "./src-CVjU4aav.js";
3
3
 
4
4
  //#region src/cli.ts
5
5
  createBtsCli().run();
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import { builder, createBtsCli, docs, init, router, sponsors } from "./src-D3yNVHFj.js";
2
+ import { builder, createBtsCli, docs, init, router, sponsors } from "./src-CVjU4aav.js";
3
3
 
4
4
  export { builder, createBtsCli, docs, init, router, sponsors };
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { cancel, confirm, group, groupMultiselect, intro, isCancel, log, multiselect, outro, select, spinner, text } from "@clack/prompts";
2
+ import { autocompleteMultiselect, cancel, confirm, group, groupMultiselect, intro, isCancel, log, multiselect, outro, select, spinner, text } from "@clack/prompts";
3
3
  import pc from "picocolors";
4
4
  import { createCli, trpcServer } from "trpc-cli";
5
5
  import z from "zod";
@@ -128,7 +128,7 @@ const dependencyVersionMap = {
128
128
  "@opennextjs/cloudflare": "^1.3.0",
129
129
  "nitro-cloudflare-dev": "^0.2.2",
130
130
  "@sveltejs/adapter-cloudflare": "^7.2.1",
131
- "@cloudflare/workers-types": "^4.20250813.0",
131
+ "@cloudflare/workers-types": "^4.20250822.0",
132
132
  alchemy: "^0.62.1",
133
133
  nitropack: "^2.12.4",
134
134
  dotenv: "^17.2.1"
@@ -1309,7 +1309,7 @@ async function getProjectName(initialName) {
1309
1309
  initialValue: initialName,
1310
1310
  defaultValue: defaultName,
1311
1311
  validate: (value) => {
1312
- const nameToUse = value.trim() || defaultName;
1312
+ const nameToUse = String(value ?? "").trim() || defaultName;
1313
1313
  const finalDirName = path.basename(nameToUse);
1314
1314
  const validationError = validateDirectoryName(finalDirName);
1315
1315
  if (validationError) return validationError;
@@ -2429,7 +2429,7 @@ async function setupVibeRules(config) {
2429
2429
  kilocode: { label: "Kilo Code" },
2430
2430
  opencode: { label: "OpenCode" }
2431
2431
  };
2432
- const selectedEditors = await multiselect({
2432
+ const selectedEditors = await autocompleteMultiselect({
2433
2433
  message: "Select AI assistants for Ruler",
2434
2434
  options: Object.entries(EDITORS$1).map(([key, v]) => ({
2435
2435
  value: key,
@@ -2572,66 +2572,55 @@ async function setupTauri(config) {
2572
2572
  //#endregion
2573
2573
  //#region src/helpers/addons/ultracite-setup.ts
2574
2574
  const EDITORS = {
2575
- vscode: {
2576
- label: "VSCode / Cursor / Windsurf",
2577
- hint: "Visual Studio Code editor configuration"
2578
- },
2579
- zed: {
2580
- label: "Zed",
2581
- hint: "Zed editor configuration"
2582
- }
2575
+ vscode: { label: "VSCode / Cursor / Windsurf" },
2576
+ zed: { label: "Zed" }
2583
2577
  };
2584
2578
  const RULES = {
2585
- "vscode-copilot": {
2586
- label: "VS Code Copilot",
2587
- hint: "GitHub Copilot integration for VS Code"
2588
- },
2589
- cursor: {
2590
- label: "Cursor",
2591
- hint: "Cursor AI editor configuration"
2592
- },
2593
- windsurf: {
2594
- label: "Windsurf",
2595
- hint: "Windsurf editor configuration"
2596
- },
2597
- zed: {
2598
- label: "Zed",
2599
- hint: "Zed editor rules"
2600
- },
2601
- claude: {
2602
- label: "Claude",
2603
- hint: "Claude AI integration"
2604
- },
2605
- codex: {
2606
- label: "Codex",
2607
- hint: "Codex AI integration"
2608
- }
2579
+ "vscode-copilot": { label: "VS Code Copilot" },
2580
+ cursor: { label: "Cursor" },
2581
+ windsurf: { label: "Windsurf" },
2582
+ zed: { label: "Zed" },
2583
+ claude: { label: "Claude" },
2584
+ codex: { label: "Codex" },
2585
+ kiro: { label: "Kiro" },
2586
+ cline: { label: "Cline" },
2587
+ amp: { label: "Amp" },
2588
+ aider: { label: "Aider" },
2589
+ "firebase-studio": { label: "Firebase Studio" },
2590
+ "open-hands": { label: "Open Hands" },
2591
+ "gemini-cli": { label: "Gemini CLI" },
2592
+ junie: { label: "Junie" },
2593
+ augmentcode: { label: "AugmentCode" },
2594
+ "kilo-code": { label: "Kilo Code" },
2595
+ goose: { label: "Goose" }
2609
2596
  };
2610
2597
  async function setupUltracite(config, hasHusky) {
2611
2598
  const { packageManager, projectDir } = config;
2612
2599
  try {
2613
2600
  log.info("Setting up Ultracite...");
2614
2601
  await setupBiome(projectDir);
2615
- const editors = await multiselect({
2616
- message: "Choose editors",
2617
- options: Object.entries(EDITORS).map(([key, editor]) => ({
2618
- value: key,
2619
- label: editor.label,
2620
- hint: editor.hint
2621
- })),
2622
- required: true
2623
- });
2624
- if (isCancel(editors)) return exitCancelled("Operation cancelled");
2625
- const rules = await multiselect({
2626
- message: "Choose rules",
2627
- options: Object.entries(RULES).map(([key, rule]) => ({
2628
- value: key,
2629
- label: rule.label,
2630
- hint: rule.hint
2631
- })),
2632
- required: true
2633
- });
2634
- if (isCancel(rules)) return exitCancelled("Operation cancelled");
2602
+ const result = await group({
2603
+ editors: () => multiselect({
2604
+ message: "Choose editors",
2605
+ options: Object.entries(EDITORS).map(([key, editor]) => ({
2606
+ value: key,
2607
+ label: editor.label
2608
+ })),
2609
+ required: true
2610
+ }),
2611
+ rules: () => autocompleteMultiselect({
2612
+ message: "Choose rules",
2613
+ options: Object.entries(RULES).map(([key, rule]) => ({
2614
+ value: key,
2615
+ label: rule.label
2616
+ })),
2617
+ required: true
2618
+ })
2619
+ }, { onCancel: () => {
2620
+ exitCancelled("Operation cancelled");
2621
+ } });
2622
+ const editors = result.editors;
2623
+ const rules = result.rules;
2635
2624
  const ultraciteArgs = [
2636
2625
  "init",
2637
2626
  "--pm",
@@ -3001,7 +2990,8 @@ async function setupAlchemyServerDeploy(serverDir, _packageManager) {
3001
2990
  "alchemy",
3002
2991
  "wrangler",
3003
2992
  "@types/node",
3004
- "dotenv"
2993
+ "dotenv",
2994
+ "@cloudflare/workers-types"
3005
2995
  ],
3006
2996
  projectDir: serverDir
3007
2997
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-better-t-stack",
3
- "version": "2.35.5",
3
+ "version": "2.36.1",
4
4
  "description": "A modern CLI tool for scaffolding end-to-end type-safe TypeScript projects with best practices and customizable configurations",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -66,7 +66,7 @@
66
66
  "dependencies": {
67
67
  "@biomejs/js-api": "^3.0.0",
68
68
  "@biomejs/wasm-nodejs": "^2.2.0",
69
- "@clack/prompts": "^0.11.0",
69
+ "@clack/prompts": "^1.0.0-alpha.4",
70
70
  "consola": "^3.4.2",
71
71
  "execa": "^9.6.0",
72
72
  "fs-extra": "^11.3.1",
@@ -22,7 +22,8 @@
22
22
  {{else}}
23
23
  "node",
24
24
  "bun"
25
- {{/if}}
25
+ {{/if}}{{#if (eq serverDeploy "alchemy")}},
26
+ "@cloudflare/workers-types"{{/if}}
26
27
  ]{{#unless (or (eq backend "convex") (eq backend "none"))}},
27
28
  "composite": true{{/unless}},
28
29
  "jsx": "react-jsx"{{#if (eq backend "hono")}},