@lizard-build/cli 0.3.60 → 0.3.61

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.
@@ -3,7 +3,7 @@ import { Command } from "commander";
3
3
  * `lizard scale` — service scaling.
4
4
  * --replicas <n> change replica count (1-10) — apps only
5
5
  * --cpu <cores> CPU cap; allowed: 1, 2, 4
6
- * --memory <mb> memory cap; allowed: 512, 1024, 2048, 4096
6
+ * --memory <mb> memory cap in MB; any whole value 128-8192
7
7
  * --storage <mb> data volume size; addons only, grow-only;
8
8
  * allowed: 512, 1024, 2048, 4096, 8192, 16384
9
9
  */
@@ -2,13 +2,18 @@ import chalk from "chalk";
2
2
  import { api, withScope } from "../lib/api.js";
3
3
  import { getActiveServiceWithKind, resolveProjectScope } from "../lib/resolve.js";
4
4
  import { success, isJSONMode, printJSON } from "../lib/format.js";
5
- // Discrete tiers the dashboard slider exposes (CPU_OPTIONS / MEMORY_OPTIONS in
6
- // lizard-client). The API and node-agent accept other values, but anything off
7
- // the tier list lands in DB as a string the UI slider can't snap to — the row
8
- // shows raw "3000m" and the slider falls to index 0. Mirror the UI tiers so the
9
- // CLI and dashboard stay in lockstep.
5
+ // Discrete tiers the dashboard exposes (CPU_OPTIONS / STORAGE in lizard-client).
6
+ // The API and node-agent accept other values, but anything off the tier list
7
+ // lands in DB as a string the UI selector can't snap to — the row shows raw
8
+ // "3000m" and the selector falls to index 0. Mirror the UI tiers so the CLI and
9
+ // dashboard stay in lockstep.
10
10
  const ALLOWED_CPU_CORES = [1, 2, 4];
11
- const ALLOWED_MEMORY_MB = [512, 1024, 2048, 4096];
11
+ // Memory is a free-range slider on the dashboard (MemorySliderRow): 1 MB step,
12
+ // 128 MB floor, 8192 MB ceiling. Accept any whole MB in that range — no tier
13
+ // list. Emitted k8s string stays canonical (mbToK8s → Gi when divisible by
14
+ // 1024), so a CLI edit produces the same stored value as the slider.
15
+ const MEM_MIN_MB = 128;
16
+ const MEM_MAX_MB = 8192;
12
17
  // Storage tiers match the addon size selector on the dashboard. Addon-only —
13
18
  // apps don't have a resizable data volume on this path.
14
19
  const ALLOWED_STORAGE_MB = [512, 1024, 2048, 4096, 8192, 16384];
@@ -16,7 +21,7 @@ const ALLOWED_STORAGE_MB = [512, 1024, 2048, 4096, 8192, 16384];
16
21
  * `lizard scale` — service scaling.
17
22
  * --replicas <n> change replica count (1-10) — apps only
18
23
  * --cpu <cores> CPU cap; allowed: 1, 2, 4
19
- * --memory <mb> memory cap; allowed: 512, 1024, 2048, 4096
24
+ * --memory <mb> memory cap in MB; any whole value 128-8192
20
25
  * --storage <mb> data volume size; addons only, grow-only;
21
26
  * allowed: 512, 1024, 2048, 4096, 8192, 16384
22
27
  */
@@ -29,7 +34,7 @@ export function registerScale(program) {
29
34
  .option("-p, --project <id>", "Project name, slug, or ID")
30
35
  .option("--replicas <n>", "Number of replicas (1-10), apps only", parseIntOption)
31
36
  .option("--cpu <cores>", `CPU cap, whole cores (allowed: ${ALLOWED_CPU_CORES.join(", ")})`, parseIntOption)
32
- .option("--memory <mb>", `Memory cap in MB (allowed: ${ALLOWED_MEMORY_MB.join(", ")})`, parseIntOption)
37
+ .option("--memory <mb>", `Memory cap in MB (${MEM_MIN_MB}-${MEM_MAX_MB}, 1 MB steps)`, parseIntOption)
33
38
  .option("--storage <mb>", `Data volume size in MB, addons only, grow-only (allowed: ${ALLOWED_STORAGE_MB.join(", ")})`, parseIntOption)
34
39
  .action(async (serviceArg, opts, _cmd) => {
35
40
  const { projectId, scope } = await resolveProjectScope(opts.project);
@@ -46,8 +51,8 @@ export function registerScale(program) {
46
51
  if (opts.cpu !== undefined && !ALLOWED_CPU_CORES.includes(opts.cpu)) {
47
52
  throw new Error(`--cpu ${opts.cpu} not supported. Allowed: ${ALLOWED_CPU_CORES.join(", ")} cores.`);
48
53
  }
49
- if (opts.memory !== undefined && !ALLOWED_MEMORY_MB.includes(opts.memory)) {
50
- throw new Error(`--memory ${opts.memory} not supported. Allowed: ${ALLOWED_MEMORY_MB.join(", ")} MB.`);
54
+ if (opts.memory !== undefined && (opts.memory < MEM_MIN_MB || opts.memory > MEM_MAX_MB)) {
55
+ throw new Error(`--memory ${opts.memory} out of range. Allowed: ${MEM_MIN_MB}-${MEM_MAX_MB} MB.`);
51
56
  }
52
57
  if (opts.storage !== undefined && !ALLOWED_STORAGE_MB.includes(opts.storage)) {
53
58
  throw new Error(`--storage ${opts.storage} not supported. Allowed: ${ALLOWED_STORAGE_MB.join(", ")} MB.`);
@@ -1 +1 @@
1
- {"version":3,"file":"scale.js","sourceRoot":"","sources":["../../src/commands/scale.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scale.js","sourceRoot":"","sources":["../../src/commands/scale.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export declare const CURRENT_VERSION = "0.3.60";
1
+ export declare const CURRENT_VERSION = "0.3.61";
2
2
  /**
3
3
  * True only when running as the Bun-compiled standalone binary. Under
4
4
  * npm/node, `process.execPath` is the *node* executable — self-update would
@@ -4,7 +4,7 @@ import { Readable } from "node:stream";
4
4
  import { join, dirname } from "node:path";
5
5
  import os from "node:os";
6
6
  import { spawn } from "node:child_process";
7
- export const CURRENT_VERSION = "0.3.60";
7
+ export const CURRENT_VERSION = "0.3.61";
8
8
  const RELEASES_API = "https://api.github.com/repos/lizard-build/lizard-cli/releases/latest";
9
9
  const RELEASE_BASE = "https://github.com/lizard-build/lizard-cli/releases/latest/download";
10
10
  /** Minimum gap between background update checks. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lizard-build/cli",
3
- "version": "0.3.60",
3
+ "version": "0.3.61",
4
4
  "description": "Lizard CLI — deploy and manage apps on Lizard",
5
5
  "type": "module",
6
6
  "bin": {
@@ -4,13 +4,18 @@ import { api, withScope, type ResourceScope } from "../lib/api.js";
4
4
  import { getActiveServiceWithKind, resolveProjectScope } from "../lib/resolve.js";
5
5
  import { success, isJSONMode, printJSON } from "../lib/format.js";
6
6
 
7
- // Discrete tiers the dashboard slider exposes (CPU_OPTIONS / MEMORY_OPTIONS in
8
- // lizard-client). The API and node-agent accept other values, but anything off
9
- // the tier list lands in DB as a string the UI slider can't snap to — the row
10
- // shows raw "3000m" and the slider falls to index 0. Mirror the UI tiers so the
11
- // CLI and dashboard stay in lockstep.
7
+ // Discrete tiers the dashboard exposes (CPU_OPTIONS / STORAGE in lizard-client).
8
+ // The API and node-agent accept other values, but anything off the tier list
9
+ // lands in DB as a string the UI selector can't snap to — the row shows raw
10
+ // "3000m" and the selector falls to index 0. Mirror the UI tiers so the CLI and
11
+ // dashboard stay in lockstep.
12
12
  const ALLOWED_CPU_CORES = [1, 2, 4] as const;
13
- const ALLOWED_MEMORY_MB = [512, 1024, 2048, 4096] as const;
13
+ // Memory is a free-range slider on the dashboard (MemorySliderRow): 1 MB step,
14
+ // 128 MB floor, 8192 MB ceiling. Accept any whole MB in that range — no tier
15
+ // list. Emitted k8s string stays canonical (mbToK8s → Gi when divisible by
16
+ // 1024), so a CLI edit produces the same stored value as the slider.
17
+ const MEM_MIN_MB = 128;
18
+ const MEM_MAX_MB = 8192;
14
19
  // Storage tiers match the addon size selector on the dashboard. Addon-only —
15
20
  // apps don't have a resizable data volume on this path.
16
21
  const ALLOWED_STORAGE_MB = [512, 1024, 2048, 4096, 8192, 16384] as const;
@@ -19,7 +24,7 @@ const ALLOWED_STORAGE_MB = [512, 1024, 2048, 4096, 8192, 16384] as const;
19
24
  * `lizard scale` — service scaling.
20
25
  * --replicas <n> change replica count (1-10) — apps only
21
26
  * --cpu <cores> CPU cap; allowed: 1, 2, 4
22
- * --memory <mb> memory cap; allowed: 512, 1024, 2048, 4096
27
+ * --memory <mb> memory cap in MB; any whole value 128-8192
23
28
  * --storage <mb> data volume size; addons only, grow-only;
24
29
  * allowed: 512, 1024, 2048, 4096, 8192, 16384
25
30
  */
@@ -32,7 +37,7 @@ export function registerScale(program: Command) {
32
37
  .option("-p, --project <id>", "Project name, slug, or ID")
33
38
  .option("--replicas <n>", "Number of replicas (1-10), apps only", parseIntOption)
34
39
  .option("--cpu <cores>", `CPU cap, whole cores (allowed: ${ALLOWED_CPU_CORES.join(", ")})`, parseIntOption)
35
- .option("--memory <mb>", `Memory cap in MB (allowed: ${ALLOWED_MEMORY_MB.join(", ")})`, parseIntOption)
40
+ .option("--memory <mb>", `Memory cap in MB (${MEM_MIN_MB}-${MEM_MAX_MB}, 1 MB steps)`, parseIntOption)
36
41
  .option("--storage <mb>", `Data volume size in MB, addons only, grow-only (allowed: ${ALLOWED_STORAGE_MB.join(", ")})`, parseIntOption)
37
42
  .action(async (serviceArg: string | undefined, opts, _cmd) => {
38
43
  const { projectId, scope } = await resolveProjectScope(opts.project);
@@ -55,9 +60,9 @@ export function registerScale(program: Command) {
55
60
  `--cpu ${opts.cpu} not supported. Allowed: ${ALLOWED_CPU_CORES.join(", ")} cores.`,
56
61
  );
57
62
  }
58
- if (opts.memory !== undefined && !(ALLOWED_MEMORY_MB as readonly number[]).includes(opts.memory)) {
63
+ if (opts.memory !== undefined && (opts.memory < MEM_MIN_MB || opts.memory > MEM_MAX_MB)) {
59
64
  throw new Error(
60
- `--memory ${opts.memory} not supported. Allowed: ${ALLOWED_MEMORY_MB.join(", ")} MB.`,
65
+ `--memory ${opts.memory} out of range. Allowed: ${MEM_MIN_MB}-${MEM_MAX_MB} MB.`,
61
66
  );
62
67
  }
63
68
  if (opts.storage !== undefined && !(ALLOWED_STORAGE_MB as readonly number[]).includes(opts.storage)) {
@@ -5,7 +5,7 @@ import { join, dirname } from "node:path";
5
5
  import os from "node:os";
6
6
  import { spawn } from "node:child_process";
7
7
 
8
- export const CURRENT_VERSION = "0.3.60";
8
+ export const CURRENT_VERSION = "0.3.61";
9
9
  const RELEASES_API = "https://api.github.com/repos/lizard-build/lizard-cli/releases/latest";
10
10
  const RELEASE_BASE = "https://github.com/lizard-build/lizard-cli/releases/latest/download";
11
11