@lumerahq/cli 0.19.12 → 0.19.14

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.
@@ -116,10 +116,10 @@ async function deploy(options) {
116
116
  throw new Error(`Deploy failed: ${await res.text()}`);
117
117
  }
118
118
  const result = await res.json();
119
- const launchUrl = result.launch_url || result.url;
119
+ const launchUrl = result.launch_url;
120
120
  console.log(pc.green(`
121
121
  Deployed! ${launchUrl}`));
122
- return { url: launchUrl, version };
122
+ return { launchUrl, version };
123
123
  }
124
124
  function isPortInUse(port, host = "127.0.0.1") {
125
125
  return new Promise((resolve2) => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  dev
3
- } from "./chunk-OGG5TR4Y.js";
3
+ } from "./chunk-VOIZWYZD.js";
4
4
  import {
5
5
  syncDeps
6
6
  } from "./chunk-4WZMUFC7.js";
package/dist/index.js CHANGED
@@ -219,36 +219,36 @@ async function main() {
219
219
  switch (command) {
220
220
  // Resource commands
221
221
  case "plan":
222
- await import("./resources-DPGY7KC3.js").then((m) => m.plan(args.slice(1)));
222
+ await import("./resources-UZ3TNZ4K.js").then((m) => m.plan(args.slice(1)));
223
223
  break;
224
224
  case "apply":
225
- await import("./resources-DPGY7KC3.js").then((m) => m.apply(args.slice(1)));
225
+ await import("./resources-UZ3TNZ4K.js").then((m) => m.apply(args.slice(1)));
226
226
  break;
227
227
  case "pull":
228
- await import("./resources-DPGY7KC3.js").then((m) => m.pull(args.slice(1)));
228
+ await import("./resources-UZ3TNZ4K.js").then((m) => m.pull(args.slice(1)));
229
229
  break;
230
230
  case "destroy":
231
- await import("./resources-DPGY7KC3.js").then((m) => m.destroy(args.slice(1)));
231
+ await import("./resources-UZ3TNZ4K.js").then((m) => m.destroy(args.slice(1)));
232
232
  break;
233
233
  case "list":
234
- await import("./resources-DPGY7KC3.js").then((m) => m.list(args.slice(1)));
234
+ await import("./resources-UZ3TNZ4K.js").then((m) => m.list(args.slice(1)));
235
235
  break;
236
236
  case "show":
237
- await import("./resources-DPGY7KC3.js").then((m) => m.show(args.slice(1)));
237
+ await import("./resources-UZ3TNZ4K.js").then((m) => m.show(args.slice(1)));
238
238
  break;
239
239
  case "diff":
240
- await import("./resources-DPGY7KC3.js").then((m) => m.diff(args.slice(1)));
240
+ await import("./resources-UZ3TNZ4K.js").then((m) => m.diff(args.slice(1)));
241
241
  break;
242
242
  // Development
243
243
  case "dev":
244
- await import("./dev-EZTXUSD2.js").then((m) => m.dev(args.slice(1)));
244
+ await import("./dev-PONRO7VN.js").then((m) => m.dev(args.slice(1)));
245
245
  break;
246
246
  case "run":
247
247
  await import("./run-R6MO23U7.js").then((m) => m.run(args.slice(1)));
248
248
  break;
249
249
  // Project
250
250
  case "init":
251
- await import("./init-QCNR4ULM.js").then((m) => m.init(args.slice(1)));
251
+ await import("./init-KJOWD2KQ.js").then((m) => m.init(args.slice(1)));
252
252
  break;
253
253
  case "register":
254
254
  await import("./register-QBRKXWNX.js").then((m) => m.register(args.slice(1)));
@@ -25,7 +25,7 @@ init_auth();
25
25
  import pc from "picocolors";
26
26
  import prompts from "prompts";
27
27
  import { execSync } from "child_process";
28
- import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, readlinkSync, symlinkSync } from "fs";
28
+ import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, rmSync, readlinkSync, symlinkSync } from "fs";
29
29
  import { join, resolve } from "path";
30
30
  function toTitleCase(str) {
31
31
  return str.split(/[-_]/).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
@@ -41,6 +41,7 @@ function processTemplate(content, replacements) {
41
41
  }
42
42
  var TEMPLATE_EXCLUDE = /* @__PURE__ */ new Set(["template.json"]);
43
43
  var TEMPLATE_RENAMES = /* @__PURE__ */ new Map([["_gitignore", ".gitignore"]]);
44
+ var TEMPLATE_RAW_COPY = /* @__PURE__ */ new Set(["pnpm-lock.yaml"]);
44
45
  function copyDir(src, dest, replacements, isRoot = true) {
45
46
  if (!existsSync(dest)) {
46
47
  mkdirSync(dest, { recursive: true });
@@ -60,6 +61,10 @@ function copyDir(src, dest, replacements, isRoot = true) {
60
61
  } else if (entry.isDirectory()) {
61
62
  copyDir(srcPath, destPath, replacements, false);
62
63
  } else {
64
+ if (TEMPLATE_RAW_COPY.has(entry.name)) {
65
+ copyFileSync(srcPath, destPath);
66
+ continue;
67
+ }
63
68
  const content = readFileSync(srcPath, "utf-8");
64
69
  const processed = processTemplate(content, replacements);
65
70
  writeFileSync(destPath, processed);
@@ -363,6 +368,7 @@ async function init(args) {
363
368
  ];
364
369
  copyDir(templateDir, targetDir, replacements);
365
370
  ensureClaudeInstructionsLink(targetDir);
371
+ const installCommand = existsSync(join(targetDir, "pnpm-lock.yaml")) ? "pnpm install --frozen-lockfile" : "pnpm install";
366
372
  function listFiles(dir, prefix = "") {
367
373
  for (const entry of readdirSync(dir, { withFileTypes: true })) {
368
374
  const relativePath = prefix + entry.name;
@@ -405,7 +411,7 @@ async function init(args) {
405
411
  if (opts.install) {
406
412
  const stopInstall = spinner("Installing dependencies...");
407
413
  try {
408
- execSync("pnpm install", { cwd: targetDir, stdio: "ignore" });
414
+ execSync(installCommand, { cwd: targetDir, stdio: "ignore" });
409
415
  stopInstall(pc.green("\u2713") + pc.dim(" Dependencies installed"));
410
416
  } catch {
411
417
  stopInstall(pc.yellow("\u26A0") + pc.dim(" Failed to install dependencies"));
@@ -453,7 +459,7 @@ async function init(args) {
453
459
  console.log();
454
460
  console.log(pc.cyan(` cd ${finalDirectory}`));
455
461
  if (!opts.install) {
456
- console.log(pc.cyan(" pnpm install"));
462
+ console.log(pc.cyan(` ${installCommand}`));
457
463
  }
458
464
  if (!registered) {
459
465
  console.log(pc.cyan(" lumera login"));
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  deploy
3
- } from "./chunk-OGG5TR4Y.js";
3
+ } from "./chunk-VOIZWYZD.js";
4
4
  import {
5
5
  syncDeps
6
6
  } from "./chunk-4WZMUFC7.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumerahq/cli",
3
- "version": "0.19.12",
3
+ "version": "0.19.14",
4
4
  "description": "CLI for building and deploying Lumera apps",
5
5
  "type": "module",
6
6
  "engines": {
@@ -55,11 +55,11 @@ For detailed technical reference (data models, relationships, design decisions),
55
55
 
56
56
  ### Installing components
57
57
 
58
- Install shadcn components with `pnpm dlx` (the sandbox's default JS package manager):
58
+ Install shadcn components with `pnpm dlx` (the sandbox's default JS package manager). Match the sandbox-pinned shadcn version:
59
59
 
60
60
  ```bash
61
- pnpm dlx shadcn@latest add button card dialog # Install specific components
62
- pnpm dlx shadcn@latest add table input label select # Install more as needed
61
+ pnpm dlx shadcn@4.1.2 add button card dialog # Install specific components
62
+ pnpm dlx shadcn@4.1.2 add table input label select # Install more as needed
63
63
  ```
64
64
 
65
65
  Components install into `src/components/ui/` and are fully editable.
@@ -126,7 +126,7 @@ const link = getShareableAppUrl(); // preserves current path/search/hash
126
126
  const invoiceLink = buildShareableAppUrl('/invoices/123', { router: 'hash' });
127
127
  ```
128
128
 
129
- When reporting a deployed app, use `launch_url` or `url` from the deploy response. Do not share `iframe_url`; it is only the internal iframe/static asset mount.
129
+ When reporting a deployed app, use `launch_url` from the deploy response. Do not share `iframe_url`; it is only the internal iframe/static asset mount.
130
130
 
131
131
  ## Preview and Verification
132
132
 
@@ -1,6 +1,5 @@
1
1
  node_modules
2
2
  dist
3
- pnpm-lock.yaml
4
3
  .env
5
4
  .env.local
6
5
  *.local
@@ -27,26 +27,23 @@
27
27
  "@lumerahq/ui": "^0.9.1",
28
28
  "@tanstack/react-query": "^5.90.11",
29
29
  "@tanstack/react-router": "1.155.0",
30
- "@tanstack/router-plugin": "1.155.0",
31
- "class-variance-authority": "^0.7.1",
32
30
  "clsx": "^2.1.1",
33
31
  "lucide-react": "^1.7.0",
34
- "radix-ui": "^1.4.3",
35
- "shadcn": "^4.1.2",
36
32
  "tailwind-merge": "^3.4.0",
37
- "tw-animate-css": "^1.4.0",
38
33
  "react": "^19.2.0",
39
34
  "react-dom": "^19.2.0",
40
- "sonner": "^2.0.7",
41
- "tailwindcss": "^4.2.2"
35
+ "sonner": "^2.0.7"
42
36
  },
43
37
  "devDependencies": {
44
38
  "@biomejs/biome": "^2.4.10",
45
39
  "@tailwindcss/vite": "^4.2.2",
46
40
  "@tanstack/router-cli": "1.155.0",
41
+ "@tanstack/router-plugin": "1.155.0",
47
42
  "@types/react": "^19.2.14",
48
43
  "@types/react-dom": "^19.2.3",
49
44
  "@vitejs/plugin-react": "^6.0.1",
45
+ "tailwindcss": "^4.2.2",
46
+ "tw-animate-css": "^1.4.0",
50
47
  "typescript": "^6.0.2",
51
48
  "vite": "^8.0.3"
52
49
  }