@scalebun/cli 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const commander_1 = require("commander");
4
7
  const login_1 = require("./commands/login");
@@ -13,9 +16,13 @@ const launch_1 = require("./commands/launch");
13
16
  const migrate_codepush_1 = require("./commands/migrate-codepush");
14
17
  const ci_init_1 = require("./commands/ci-init");
15
18
  const quickstart_1 = require("./commands/quickstart");
19
+ const chalk_1 = __importDefault(require("chalk"));
16
20
  const ui_1 = require("./utils/ui");
17
21
  const banner_1 = require("./ui/banner");
22
+ const graphics_1 = require("./ui/graphics");
18
23
  const program = new commander_1.Command();
24
+ // Kept in one place so the block-art and sixel paths show the same tagline.
25
+ const TAGLINE = 'Enterprise OTA Update & Telemetry Control Plane';
19
26
  // Read the version from package.json so it can never drift from the published
20
27
  // version. The compiled entry lives at lib/index.js, so ../package.json is the
21
28
  // CLI manifest. (Hardcoding it left `scalebun --version` reporting 0.1.0 long
@@ -24,10 +31,26 @@ const { version } = require('../package.json');
24
31
  /**
25
32
  * The no-arg splash: art (mark + wordmark) is gated by shouldShowArt(); the
26
33
  * status line and command table are the command's actual output and always print.
34
+ *
35
+ * Sixel is opt-in this release (SCALEBUN_GRAPHICS=sixel); the default is block
36
+ * art. capabilities() probes stdin, so it runs ONLY when art will actually draw —
37
+ * never on a real command.
27
38
  */
28
- function printSplash() {
29
- if ((0, banner_1.shouldShowArt)())
30
- process.stdout.write((0, banner_1.banner)({ version }));
39
+ async function printSplash() {
40
+ if ((0, banner_1.shouldShowArt)()) {
41
+ // Sixel only into a real terminal. The stdout.isTTY guard matters even with a
42
+ // cached capability: a `scalebun | cat` must never spew sixel bytes into a
43
+ // pipe, and capabilities() (which probes stdin) must not run when piped.
44
+ const caps = process.env.SCALEBUN_GRAPHICS === 'sixel' && process.stdout.isTTY
45
+ ? await (0, graphics_1.capabilities)()
46
+ : null;
47
+ if (caps?.sixel) {
48
+ process.stdout.write((0, graphics_1.lockup)(caps, [...banner_1.WORDMARK], TAGLINE, { level: chalk_1.default.level }));
49
+ }
50
+ else {
51
+ process.stdout.write((0, banner_1.banner)({ version }));
52
+ }
53
+ }
31
54
  (0, ui_1.renderStatus)();
32
55
  (0, ui_1.renderCommands)();
33
56
  }
@@ -35,10 +58,12 @@ program
35
58
  .name('scalebun')
36
59
  .description('Scalebun CLI — OTA bundle publishing and management')
37
60
  .version(version)
38
- // Registered so a strict parser doesn't reject it; shouldShowArt() reads argv.
61
+ // Registered so a strict parser doesn't reject them; the splash reads argv
62
+ // directly (shouldShowArt / renderStatus), so these just keep commander happy.
39
63
  .option('--no-banner', 'Hide the splash art (status + commands still print)')
40
- .action(() => {
41
- printSplash();
64
+ .option('--verbose', 'Show extra detail (e.g. the API target in the status box)')
65
+ .action(async () => {
66
+ await printSplash();
42
67
  });
43
68
  // `registerLoginCommand` was imported and never called, so `scalebun login`
44
69
  // did not exist — every other command depends on the credentials it writes,
@@ -59,7 +84,7 @@ const migrate = program.command('migrate').description('Migration utilities from
59
84
  (0, migrate_codepush_1.registerMigrateCodepushCommand)(migrate);
60
85
  (0, ci_init_1.registerCiInitCommand)(program);
61
86
  if (process.argv.length <= 2) {
62
- printSplash();
87
+ void printSplash();
63
88
  }
64
89
  else {
65
90
  program.parse(process.argv);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,4CAAwD;AACxD,8CAA0D;AAC1D,wDAAmE;AACnE,sDAAiE;AACjE,0DAAqE;AACrE,oEAA8E;AAC9E,kDAA6D;AAC7D,wDAAoE;AACpE,8CAA0D;AAC1D,kEAA6E;AAC7E,gDAA2D;AAC3D,sDAAuF;AACvF,mCAA0D;AAC1D,wCAAoD;AAEpD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,mCAAmC;AACnC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE;;;GAGG;AACH,SAAS,WAAW;IAClB,IAAI,IAAA,sBAAa,GAAE;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAM,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAA,iBAAY,GAAE,CAAC;IACf,IAAA,mBAAc,GAAE,CAAC;AACnB,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,OAAO,CAAC;IACjB,+EAA+E;KAC9E,MAAM,CAAC,aAAa,EAAE,qDAAqD,CAAC;KAC5E,MAAM,CAAC,GAAG,EAAE;IACX,WAAW,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,4EAA4E;AAC5E,4EAA4E;AAC5E,4DAA4D;AAC5D,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,sCAAyB,EAAC,OAAO,CAAC,CAAC;AACnC,IAAA,gCAAmB,EAAC,OAAO,CAAC,CAAC;AAC7B,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AACxE,IAAA,uCAAyB,EAAC,GAAG,CAAC,CAAC;AAC/B,IAAA,qCAAwB,EAAC,GAAG,CAAC,CAAC;AAC9B,IAAA,yCAA0B,EAAC,GAAG,CAAC,CAAC;AAChC,IAAA,kDAA8B,EAAC,GAAG,CAAC,CAAC;AACpC,IAAA,iCAAsB,EAAC,GAAG,CAAC,CAAC;AAC5B,IAAA,wCAA0B,EAAC,GAAG,CAAC,CAAC;AAChC,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC,CAAC;AACnG,IAAA,iDAA8B,EAAC,OAAO,CAAC,CAAC;AACxC,IAAA,+BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC7B,WAAW,EAAE,CAAC;AAChB,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,CAAC;AAGhB,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAOrC,CAAC;AA4DF,gFAAgF;AAChF,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,MAAM,CAAC,CAAC,GAAE,aAAkB,GAAG,MAAM,CAwDpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAK7E"}
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAU,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAE,CAAC;AAGhB,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAOrC,CAAC;AA8DF,gFAAgF;AAChF,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,MAAM,CAAC,CAAC,GAAE,aAAkB,GAAG,MAAM,CAwDpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAK7E"}
package/lib/ui/banner.js CHANGED
@@ -34,9 +34,11 @@ const WORD_W = exports.WORDMARK[0].length;
34
34
  // raw-ANSI emitters below stay local: they do per-character gradient with
35
35
  // repeat-collapsing, which chalk does not offer.
36
36
  const BRAND = [80, 70, 229]; // #5046E5, flat logo indigo
37
+ // Flat: the wordmark is solid brand indigo, identical to the mark (and to the
38
+ // sixel logo). The old purple→pink gradient never matched the real brand logo.
37
39
  const GRAD = [
38
- [108, 92, 231], // #6C5CE7
39
- [244, 114, 208], // #F472D0
40
+ BRAND,
41
+ BRAND,
40
42
  ];
41
43
  function rgb256(r, g, b) {
42
44
  const q = (v) => Math.round((v / 255) * 5);
@@ -97,20 +99,20 @@ function banner(o = {}) {
97
99
  // Narrow terminals: no art at all. One line beats a broken picture.
98
100
  if (width < 46)
99
101
  return `${fg(level, BRAND[0], BRAND[1], BRAND[2])}scalebun${R} ${dim}v${version}${R}\n`;
100
- const GAP = 2;
101
- const OFF = GAP + 3; // gap used by the compact lockup
102
+ const GAP = 5; // must match GAP/TOP in graphics.ts (sixel path)
103
+ const OFF = GAP; // compact lockup uses the same gap
102
104
  const brand = fg(level, BRAND[0], BRAND[1], BRAND[2]);
103
105
  const lines = [];
104
106
  // Full lockup — mark + block wordmark, wordmark optically centred.
105
107
  if (o.mark !== false && width >= mark_1.MARK_W + GAP + WORD_W) {
106
- const top = Math.floor((MARK_H - exports.WORDMARK.length) / 2) - 1;
108
+ const top = 2; // lifts the logo optically — matches graphics.ts TOP
107
109
  for (let i = 0; i < MARK_H; i++) {
108
110
  const left = brand + pad(mark_1.MARK[i] ?? '', mark_1.MARK_W) + R;
109
111
  const wi = i - top;
110
112
  let right = '';
111
113
  if (wi >= 0 && wi < exports.WORDMARK.length)
112
114
  right = gradient(exports.WORDMARK[wi], level);
113
- else if (wi === exports.WORDMARK.length + 1)
115
+ else if (wi === exports.WORDMARK.length)
114
116
  right = `${dim}v${version} · ${tagline}${R}`;
115
117
  lines.push(right ? left + ' '.repeat(GAP) + right : left);
116
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ declare const ROWS = 9, COLS = 13;
2
+ type Caps = {
3
+ sixel: boolean;
4
+ cellH: number;
5
+ cellW: number;
6
+ };
7
+ export declare function capabilities(): Promise<Caps | null>;
8
+ /**
9
+ * Draw the logo, then climb back over it and set the wordmark beside it.
10
+ * DEC save/restore (ESC 7 / ESC 8) does NOT survive a sixel draw in Windows
11
+ * Terminal — the cursor lands near the bottom of the image. Cursor-up plus an
12
+ * absolute column (CSI n G) is what actually works.
13
+ */
14
+ export declare function lockup(caps: Caps, wordmark: string[], tagline: string, opts?: {
15
+ level?: number;
16
+ }): string;
17
+ export { ROWS as LOGO_ROWS, COLS as LOGO_COLS };
18
+ //# sourceMappingURL=graphics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphics.d.ts","sourceRoot":"","sources":["../../src/ui/graphics.ts"],"names":[],"mappings":"AASA,QAAA,MAAM,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC;AAM1B,KAAK,IAAI,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAkD7D,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAUzD;AASD;;;;;GAKG;AACH,wBAAgB,MAAM,CACpB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5B,MAAM,CA6BR;AAED,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LOGO_COLS = exports.LOGO_ROWS = void 0;
4
+ exports.capabilities = capabilities;
5
+ exports.lockup = lockup;
6
+ // scalebun/src/ui/graphics.ts
7
+ // Smooth logo via sixel, where the terminal supports it. Falls back to block art.
8
+ // Zero runtime deps. Payloads pre-generated by tools/gen-sixel.mjs.
9
+ const node_os_1 = require("node:os");
10
+ const node_path_1 = require("node:path");
11
+ const node_fs_1 = require("node:fs");
12
+ /** 9 rows tall, keyed by the terminal's cell height in px. ~5.7 KB total. */
13
+ const sixel_1 = require("./sixel");
14
+ const ROWS = 9, COLS = 13;
15
+ exports.LOGO_ROWS = ROWS;
16
+ exports.LOGO_COLS = COLS;
17
+ const GAP = 5, TOP = 2; // shared with the block-art path in banner.ts
18
+ const E = '\x1b';
19
+ const CACHE = (0, node_path_1.join)((0, node_os_1.homedir)(), '.scalebun', 'graphics.json');
20
+ const TTL = 7 * 24 * 3600 * 1000;
21
+ /**
22
+ * One round trip for everything: DA1 (feature list, 4 = sixel) and CSI 16 t
23
+ * (cell size). Env vars are useless here — cmd.exe inside Windows Terminal
24
+ * reports no TERM, no TERM_PROGRAM and no WT_SESSION, yet supports sixel.
25
+ */
26
+ function probe(ms = 300) {
27
+ return new Promise(resolve => {
28
+ if (!process.stdin.isTTY || !process.stdout.isTTY)
29
+ return resolve(null);
30
+ let buf = '';
31
+ const finish = () => {
32
+ clearTimeout(timer);
33
+ process.stdin.removeListener('data', onData);
34
+ try {
35
+ process.stdin.setRawMode(false);
36
+ }
37
+ catch { }
38
+ process.stdin.pause();
39
+ const da1 = buf.match(/\x1b\[\?([0-9;]+)c/);
40
+ const cell = buf.match(/\x1b\[6;(\d+);(\d+)t/);
41
+ resolve({
42
+ sixel: !!da1 && da1[1].split(';').includes('4'),
43
+ cellH: cell ? +cell[1] : 20,
44
+ cellW: cell ? +cell[2] : 10
45
+ });
46
+ };
47
+ const onData = (d) => {
48
+ buf += d.toString('binary');
49
+ if (/c/.test(buf) && /t/.test(buf))
50
+ finish();
51
+ };
52
+ const timer = setTimeout(finish, ms);
53
+ try {
54
+ process.stdin.setRawMode(true);
55
+ }
56
+ catch {
57
+ return resolve(null);
58
+ }
59
+ process.stdin.resume();
60
+ process.stdin.on('data', onData);
61
+ process.stdout.write(E + '[c' + E + '[16t');
62
+ });
63
+ }
64
+ function readCache() {
65
+ try {
66
+ const c = JSON.parse((0, node_fs_1.readFileSync)(CACHE, 'utf8'));
67
+ return Date.now() - c.at < TTL ? c.caps : null;
68
+ }
69
+ catch {
70
+ return null;
71
+ }
72
+ }
73
+ function writeCache(caps) {
74
+ try {
75
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)((0, node_os_1.homedir)(), '.scalebun'), { recursive: true });
76
+ (0, node_fs_1.writeFileSync)(CACHE, JSON.stringify({ at: Date.now(), caps }));
77
+ }
78
+ catch { /* cache is an optimisation, never a requirement */ }
79
+ }
80
+ async function capabilities() {
81
+ const mode = process.env.SCALEBUN_GRAPHICS; // off | auto | refresh
82
+ if (mode === 'off')
83
+ return null;
84
+ if (mode !== 'refresh') {
85
+ const hit = readCache();
86
+ if (hit)
87
+ return hit;
88
+ }
89
+ const caps = await probe();
90
+ if (caps)
91
+ writeCache(caps);
92
+ return caps;
93
+ }
94
+ /** Pick the payload whose cell height is closest to this terminal's. */
95
+ function payload(cellH) {
96
+ const keys = Object.keys(sixel_1.SIXEL).map(Number);
97
+ const best = keys.reduce((a, b) => Math.abs(b - cellH) < Math.abs(a - cellH) ? b : a);
98
+ return sixel_1.SIXEL[String(best)];
99
+ }
100
+ /**
101
+ * Draw the logo, then climb back over it and set the wordmark beside it.
102
+ * DEC save/restore (ESC 7 / ESC 8) does NOT survive a sixel draw in Windows
103
+ * Terminal — the cursor lands near the bottom of the image. Cursor-up plus an
104
+ * absolute column (CSI n G) is what actually works.
105
+ */
106
+ function lockup(caps, wordmark, tagline, opts = {}) {
107
+ const img = payload(caps.cellH);
108
+ const level = opts.level ?? 3;
109
+ // Same indigo as the mark itself — #5046E5 — with the usual downshift.
110
+ const brand = level >= 3 ? E + '[38;2;80;70;229m'
111
+ : level === 2 ? E + '[38;5;62m'
112
+ : level === 1 ? E + '[95m' : '';
113
+ const dim = level ? E + '[90m' : '';
114
+ const R = level ? E + '[0m' : '';
115
+ // Match the block-art gutter exactly, so the wordmark sits in the same
116
+ // column whether the logo rendered as sixel or as blocks.
117
+ const gutter = Math.max(COLS, Math.ceil(img.w / caps.cellW)) + GAP;
118
+ // The mark's visual mass sits low (ears and arrow are open line, the head is
119
+ // solid), so geometric centring reads as the logo sagging. Dropping the text
120
+ // two rows lifts the logo optically. Rows 0-1 are the arrow and ear tips.
121
+ const top = TOP;
122
+ let s = img.d + E + '[' + ROWS + 'A';
123
+ for (let i = 0; i < ROWS; i++) {
124
+ const wi = i - top;
125
+ let text = '';
126
+ if (wi >= 0 && wi < wordmark.length)
127
+ text = brand + wordmark[wi] + R;
128
+ else if (wi === wordmark.length)
129
+ text = dim + tagline + R;
130
+ s += (text ? E + '[' + gutter + 'G' + text : '') + '\n';
131
+ }
132
+ return s;
133
+ }
134
+ //# sourceMappingURL=graphics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphics.js","sourceRoot":"","sources":["../../src/ui/graphics.ts"],"names":[],"mappings":"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"}
package/lib/ui/mark.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export declare const MARK: readonly string[];
2
- export declare const MARK_W = 20;
2
+ export declare const MARK_W = 13;
3
+ export declare const MARK_H = 9;
3
4
  //# sourceMappingURL=mark.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../src/ui/mark.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,IAAI,EAAE,SAAS,MAAM,EAejC,CAAC;AACF,eAAO,MAAM,MAAM,KAAK,CAAC"}
1
+ {"version":3,"file":"mark.d.ts","sourceRoot":"","sources":["../../src/ui/mark.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,IAAI,EAAE,SAAS,MAAM,EAUjC,CAAC;AACF,eAAO,MAAM,MAAM,KAAK,CAAC;AACzB,eAAO,MAAM,MAAM,IAAI,CAAC"}
package/lib/ui/mark.js CHANGED
@@ -1,24 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MARK_W = exports.MARK = void 0;
3
+ exports.MARK_H = exports.MARK_W = exports.MARK = void 0;
4
4
  /* eslint-disable */
5
5
  // prettier-ignore
6
- // GENERATED by tools/gen-mark.mjs — do not edit by hand.
6
+ // GENERATED by tools/gen-mark.mjs from assets/scalebun-mark.svg — do not edit by hand.
7
+ // 13x9, arrowhead hand-hinted (see HINT in the generator)
7
8
  exports.MARK = [
8
- " ▄▄█████",
9
- " █████ ████████",
10
- "███████ ███████",
11
- "███ ████ ▄███▀ ▀▀",
12
- "████ ███ ████▀",
13
- "▀███▄███▄████▄▄",
14
- " ▀███████████████▄",
15
- " ████▀▀▀ ▀▀████▄",
16
- "████ ▄▄▄ ▀███",
17
- "███ ███ ▄███",
18
- "███ ▀███",
19
- "███▄ ▄▄▄ ▄████",
20
- "▀████▄▄▄▄▄▄███████▀",
21
- " ▀██████████▀▀▀▀",
9
+ " ▄▄▄ ▄██",
10
+ "████▄ ████",
11
+ "██ ██ ▄██▀",
12
+ "▀████████▄",
13
+ " ████▀▀▀▀███",
14
+ "██▀ ▄▄▀██",
15
+ "██ ▀▀ ██",
16
+ "██▄ ▄▄▄▄██",
17
+ " ▀██████▀▀▀▀"
22
18
  ];
23
- exports.MARK_W = 20;
19
+ exports.MARK_W = 13;
20
+ exports.MARK_H = 9;
24
21
  //# sourceMappingURL=mark.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mark.js","sourceRoot":"","sources":["../../src/ui/mark.ts"],"names":[],"mappings":";;;AAAA,oBAAoB;AACpB,kBAAkB;AAClB,yDAAyD;AAC5C,QAAA,IAAI,GAAsB;IACrC,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IACrB,mBAAmB;CACpB,CAAC;AACW,QAAA,MAAM,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"mark.js","sourceRoot":"","sources":["../../src/ui/mark.ts"],"names":[],"mappings":";;;AAAA,oBAAoB;AACpB,kBAAkB;AAClB,uFAAuF;AACvF,0DAA0D;AAC7C,QAAA,IAAI,GAAsB;IACrC,cAAc;IACd,cAAc;IACd,aAAa;IACb,YAAY;IACZ,cAAc;IACd,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;CACf,CAAC;AACW,QAAA,MAAM,GAAG,EAAE,CAAC;AACZ,QAAA,MAAM,GAAG,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const SIXEL: Record<string, {
2
+ w: number;
3
+ h: number;
4
+ d: string;
5
+ }>;
6
+ //# sourceMappingURL=sixel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sixel.d.ts","sourceRoot":"","sources":["../../src/ui/sixel.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAC6xL,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SIXEL = void 0;
4
+ /* eslint-disable */
5
+ // prettier-ignore
6
+ // GENERATED by tools/gen-sixel.mjs from assets/scalebun-mark.svg — do not edit by hand.
7
+ // 9 rows tall, keyed by terminal cell height in px.
8
+ exports.SIXEL = { "16": { "w": 102, "h": 144, "d": "\u001bP0;1;0q\"1;1;102;144#0;2;31;27;90#0!77?__ooww{{}}!5~}{!8-#0!15?!5_!46?__oow{{}}!19~}!7-#0!8?_w{}}!9~}}{wo_!33?O{}!10~^!20~!7-#0!6?w}!8~NNN^!8~}{o!31?BB!4FBB@@ow}!8~NFB!9~_!6-#0!4?o!9~F!6?@BF^!7~{_!34?_w}!8~NF@!4?@^!6~^B!6-#0!4?!10~!11?B^!7~{_!28?_w{!8~^F@!24-#0!4?!10~!13?N!8~w!23?_o{!8~^FB!28-#0!4?B!9~o!13?N!8~{!18?_o{}!7~^NB!32-#0!6?N!8~{_!12?^!8~}!14?ow}!8~NB@!35-#0!7?@F!8~}w_!10?^!8~}!9?_w}!9~f`!4_!35-#0!10?BN^!7~}wo!8?!9~w!7?^!22~}}{{{wwo__!21-#0!13?@F^!8~}{o!5?N!7~^!9?!4@!10B!4FNNN^^!10~}{wwo_!13-#0!11?ow{}!9~^NF!7?@BBB@@!35?@@BFFN^!8~}{w_!8-#0!7?o{}!8~^FFB@!60?@BN^!8~{w_!4-#0!4?o{!8~NB@!50?!5_!15?@BN!8~{o-#0??w!8~NB!51?{}!7~}{!15?@F!8~{-#0_!9~B!53?BFN!4^NNFB!13?oww{|!8~}-#0!10~!77?F^!13~-#0N!9~_!80?p!8~^-#0?F!9~{o!74?_ow}!7~^B-#0???BN!9~{wo_!41?{}!4~}}{wo__!6?___oow{}!8~^NB@!4-#0!6?@FN^!9~}{{woo___!32?BN^!24~^^NFB@!9-#0!11?@BFFN^^!13~!4}!18{!5}{{{o???@@BBB!10FBBB@@!17-#0!20?@@BBFFF!4N!5^!15~!5^NNNFF@!40-\u001b\\" }, "20": { "w": 127, "h": 180, "d": "\u001bP0;1;0q\"1;1;127;180#0;2;31;27;90#0!99?__ooww{{}}}!5~}{!10-#0!87?__ooww{{}}!21~!9-#0!13?_ooww!6{wwwoo_!48?_oww{{}}!32~o!8-#0!9?_w{!19~}{wo!42?!12~^^NNn!25~!8-#0!7?w}!10~^NFFN^!11~}w_!39?@!6B@@??_o{}!10~^FB@N!11~!8-#0!5?o!12~B!7?@BF^!9~}w!45?o{}!10~^FB!6?^!9~^!8-#0!5?!12~!14?F!10~{!39?ow}!10~^FB!12?@!5B@!10-#0!5?!12~!16?^!10~w!33?_w}!10~^NB@!32-#0!5?!12~!17?N!10~}!28?_w{!11~NB@!36-#0!5?@!11~}!17?^!11~_!22?_o{!11~NF@!40-#0!7?F!11~w!16?^!11~_!17?_o{}!10~^FB!44-#0!8?@F!11~w_!14?^!11~!14?ow}!10~^FB!48-#0!11?BN!10~}w_!12?!12~!10?w}!14~}}!6{wwwooo___!34-#0!14?BN!11~{wo!9?!11~{!9?FN^!32~}}{{woo__!23-#0!17?BF^!11~}w_!6?N!9~^!18?!10@!5BFFFNN^^!14~}{{wo_!16-#0!14?_ow{}!12~^NB!8?@!6B@!43?@@BBFN^!12~}{wo!11-#0!10?ow{!11~^^NFB@!72?@BN^!11~}wo!7-#0!7?o{!10~^NFB!84?@FN!11~{o!4-#0!4?o{!10~NB@!62?__ooowwoo__!19?BN!10~}o-#0??w!11~F!64?w}!12~w!19?@N!10~}-#0_}!10~N!67?FN^!6~^^NF!17?_ooww|!11~-#0!12~!97?!18~-#0!12~!98?@BFN^!11~N-#0F!11~}_!99?o}!10~F-#0?@^!11~{o!93?_w{!10~^F-#0???@F^!11~{wo_!53?{}!5~}}{wo_!14?__oww{}!11~NF@!5-#0!6?@BN^!12~}{woo_!46?BN!13~!10}!14~^NFB@!9-#0!11?@BFN^!14~}}{{{www!4o!6_!12?!8_ooo!4_??@BFFN^^^!16~^^^NNFFBB@!16-#0!17?@BBFNN^^!51~}!12?!8@!30-#0!27?@@@BB!4F!4N!7^!15~!6^!4NFFBB!51-\u001b\\" }, "26": { "w": 165, "h": 234, "d": "\u001bP0;1;0q\"1;1;165;234#0;2;31;27;90#0!132?__ooww{{}}}!5~}}{o!13-#0!120?__ooww{{}}!22~}!12-#0!109?__oow{{}}!35~o!11-#0!17?_ow{{!4}~~~!5}{{woo_!61?_ow{{}!47~!11-#0!12?_o{}!25~}{w_!54?K!18~^^NN!32~!11-#0!10?o}!15~^^!17~}w_!51?@BFF!5NFFFBBB@@?_w}!15~NFB^!15~!10-#0!8?w!15~NB!5?@BFN^!14~{_!62?_w{!15~NF@!5?!15~!10-#0!7?}!15~B!13?BF^!12~}w!56?_o{}!14~NF@!9?@N!11~^B!10-#0!6?}!15~!18?BN!13~w!51?o{}!14~^FB!16?@@@BBB@@!14-#0!6?!16~!20?B!14~o!45?ow}!14~^FB!42-#0!6?!16~!21?@!14~}!40?_w}!14~^NB!46-#0!6?B!15~_!22?!15~_!34?_w{!15~NB@!49-#0!7?B!15~o!22?!15~o!29?_o{!15~NF@!53-#0!9?N!14~{_!21?!15~o!24?_o{}!14~^FB!57-#0!10?@N!14~{o!19?@!15~o!20?ow}!14~^FB!61-#0!12?@F^!13~}w_!17?@!15~_!15?_w}!15~nb`!64-#0!15?BN!14~}{o!15?B!15~!13?{!28~!4}!4{wwooo__!43-#0!18?BF^!14~}wo_!11?B!14~}!12?F^!44~}}{{wwo__!32-#0!21?@FN!15~}{o_!8?B!14~!16?!4@!12B!7F!4N^^^!22~}}{woo_!24-#0!23?_o!18~{!9?FN^^!4~^^^NB!49?@@BBFFNN^!18~}{wo_!18-#0!17?_ow{}!17~^NF@!83?@BBFN^!16~}{w_!13-#0!13?_w{}!15~^NFBB@!95?@BFN^!15~}w_!9-#0!10?o{!15~^FB@!107?@BF^!15~{_!6-#0!7?o{!14~NF@!116?@BN!14~}w!4-#0!4?_{!14~NB!82?_ow{{!7}{{wo_!25?F^!14~o-#0??_{!14~F!84?}!17~w!26?B^!13~{-#0?w!14~N!86?@F^!12~^NF!24?_ooow!14~{-#0{!14~^!91?@@!5B@@@!24?o{}!21~-#0!15~!126?@N^!21~-#0!15~{!129?@BFF!15~@-#0B!15~w!130?o{!13~^@-#0?@^!15~w_!124?o{!14~^B-#0???BN!15~}w_!74?_o!6woo_!30?_ow{}!14~^F@!5-#0!6?BN!16~}wo_!68?!13~}{{wo__!12?__ooow{{}!16~^FB!9-#0!9?@FN!17~}}{woo_!60?@F^!48~^NFB@!13-#0!13?@BFN^!20~}}{{wwooo___!50?@BFN^!32~^^NNFFB@@!19-#0!19?@BBFN^^!28~!6}!20{!7}!6~!4}{wo!7?@@@BBB!15F!4B@@@!30-#0!27?@@BBFFNN^^!62~N!65-#0!40?@@@BBB!4F!5N!8^!15~!8^!4N!4FBB@@!67-\u001b\\" }, "34": { "w": 216, "h": 306, "d": "\u001bP0;1;0q\"1;1;216;306#0;2;31;27;90#0!176?__ooww{{{}}}!6~}}{w_!17-#0!164?__ooww{{}}!25~{!16-#0!153?_ooww{{}}!38~o!15-#0!141?__ooww{{}}!50~!15-#0!23?_ow{{}}}!10~}}}{{wwoo_!82?_oww{}}!61~w!14-#0!18?_w{}!30~}{wo_!73?w}!70~!14-#0!15?o{!41~{wo!69?@N!17~^^NNFFBB`p{!42~!14-#0!12?_w!20~^!4N^!22~{w_!68?@@!9B@@@!7?ow}!20~NF@??B!19~!14-#0!10?_{!20~F@!7?@BFN^!19~}w_!82?ow}!20~NF@!7?!20~!13-#0!9?o!20~N!16?@BN^!17~}o!76?_w{!20~^FB!12?^!17~!14-#0!8?o!20~F!21?@F!18~w!70?_w{!20~^FB!17?@BFNN!5^NNNFB@!15-#0!8?!21~!25?F!18~w!64?_o{}!19~^NB!52-#0!8?!20~@!26?@^!18~o!59?ow}!19~^NB@!55-#0!8?!20~w!28?N!18~{!54?ow}!20~NB@!59-#0!8?N!20~!29?F!19~_!48?_w{!20~NF@!63-#0!9?^!19~w!29?F!19~o!43?_o{!20~^FB!67-#0!10?N!19~{!29?F!19~w!38?_o{}!19~^NB!71-#0!11?B^!19~o!28?N!19~w!34?o{}!19~^NB@!74-#0!13?B^!18~}o!27?^!19~w!29?ow}!20~NF@!78-#0!15?B^!19~w_!25?^!19~w!24?_w}!20~^F@!82-#0!17?@N!19~}w_!23?!20~_!19?_w{!22~b!6_!80-#0!20?BN!19~}wo!21?!20~!17?w}!38~!4}{{{wwwooo__!59-#0!23?BN!20~{wo!17?@!19~}!16?^!57~}}{{wwo__!47-#0!26?BF^!20~}wo_!13?@!19~!17?@BFFNN!8^!54~}{{woo_!38-#0!29?@FN!21~}wo!12?N!17~!43?!7@!5BFFFNNN^^!31~}{wwo_!30-#0!31?_o!24~!12?@N^!11~^NB!66?@@BBFFNN^^!25~}{wo_!24-#0!25?_ow{}!23~^NFB!106?@@BFFN^!23~}{w_!19-#0!20?_o{}!23~^NFB@!119?@BFN^!22~}wo!15-#0!16?_w{!22~^NFB@!131?@BFN!21~}w_!11-#0!13?o{}!19~^NFB@!142?@BN^!19~}w_!8-#0!10?o{!19~^FB!152?@F^!19~}w!6-#0!7?_{!19~NB!110?__!4owwwooo__!35?@F^!19~w!4-#0!5?o}!18~NB!109?w{}!17~{w_!33?BN!19~o-#0???o}!18~N@!110?!24~!35?@N!18~w-#0??}!19~@!112?@N!20~^F!33?!4_r!18~o-#0?!20~!117?@BFF!8NFFFBB@!30?ow{}!26~-#0}!19~!165?}!30~-#0!20~!166?FN^!27~-#0!20~_!169?@BFFN!20~-#0B!20~_!172?o!18~^@-#0?F!20~w!168?_w!19~F-#0??@N!20~{o!161?_o{}!18~^B!5-#0!4?@N!21~{o_!97?__oo!6woo_!42?_ow{!20~^F@!7-#0!7?BN!21~}{w_!91?o}!15~}{wo_!27?_oow{{}!21~^NB@!10-#0!10?BF^!22~}{woo_!84?@^!21~}}{{!14w!4{}}!25~^NFB!15-#0!14?BFN!25~}{{woo__!77?@FN^!59~^^NFB@!20-#0!18?@BFN^!29~}}{{wwooo___!67?@BFFN^!44~^^NFFBB@!27-#0!24?@BBFN^!38~!4}!6{!27w!8{!10}{{{wwo_!9?@@BBFFF!5N!13^!6NFFFBBB@@!38-#0!32?@BBFNN^^!90~}!85-#0!42?@@BBFFNNN^^!74~^NF@!85-#0!56?!4@!4B!4F!6N!8^!20~!9^!5N!4FBBB@@!91-\u001b\\" } };
9
+ //# sourceMappingURL=sixel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sixel.js","sourceRoot":"","sources":["../../src/ui/sixel.ts"],"names":[],"mappings":";;;AAAA,oBAAoB;AACpB,kBAAkB;AAClB,wFAAwF;AACxF,oDAAoD;AACvC,QAAA,KAAK,GAChB,EAAC,IAAI,EAAC,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,26BAA26B,EAAC,EAAC,IAAI,EAAC,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,ksCAAksC,EAAC,EAAC,IAAI,EAAC,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,4kDAA4kD,EAAC,EAAC,IAAI,EAAC,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,ujEAAujE,EAAC,EAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,IAAI,IAAI,CAUnC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAwDrC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"AAYA,wBAAgB,YAAY,IAAI,IAAI,CAyBnC;AAED,wBAAgB,cAAc,IAAI,IAAI,CA0DrC"}
package/lib/utils/ui.js CHANGED
@@ -9,22 +9,42 @@ const chalk_1 = __importDefault(require("chalk"));
9
9
  const credentials_1 = require("./credentials");
10
10
  // NOTE: the splash art (mark + wordmark) now lives in ../ui/banner.ts. This file
11
11
  // keeps only the status box and command table — the body of the no-arg command.
12
+ // Column arithmetic must measure the RENDERED width, not the string length —
13
+ // coloured content carries ANSI escapes that take zero columns. Strip them first,
14
+ // or the right border lands on a different column on every row.
15
+ const STRIP_ANSI = /\x1b\[[0-9;]*m/g;
16
+ const visibleLen = (s) => s.replace(STRIP_ANSI, '').length;
12
17
  function renderStatus() {
13
18
  const creds = (0, credentials_1.readCredentials)();
14
- console.log(chalk_1.default.gray('┌─────────────────────────────────────────────────────────────┐'));
19
+ const verbose = process.argv.slice(2).includes('--verbose');
20
+ const inner = 58;
21
+ const border = (l, r) => console.log(chalk_1.default.gray(l + '─'.repeat(inner + 2) + r));
22
+ const row = (content) => {
23
+ const pad = ' '.repeat(Math.max(0, inner - visibleLen(content)));
24
+ console.log(`${chalk_1.default.gray('│')} ${content}${pad} ${chalk_1.default.gray('│')}`);
25
+ };
26
+ border('┌', '┐');
15
27
  if (creds) {
16
- console.log(`│ ${chalk_1.default.bold.green('● AUTHENTICATED')} │`);
17
- console.log(`│ ${chalk_1.default.dim('API Target:')} ${chalk_1.default.cyan(creds.apiUrl.padEnd(46))} │`);
28
+ row(chalk_1.default.bold.green('● AUTHENTICATED'));
29
+ // Show the API target only when it is NOT the default production backend
30
+ // (someone pointed at staging / self-hosted / localhost needs to see where
31
+ // their deploy is going), or under --verbose. On production it is noise.
32
+ if (verbose || creds.apiUrl !== credentials_1.DEFAULT_API_URL) {
33
+ row(`${chalk_1.default.dim('API')} ${chalk_1.default.cyan(creds.apiUrl)}`);
34
+ }
18
35
  }
19
36
  else {
20
- console.log(`│ ${chalk_1.default.bold.yellow('○ NOT LOGGED IN')} (Run ${chalk_1.default.cyan('scalebun login')} to authenticate) │`);
37
+ row(`${chalk_1.default.bold.yellow('○ NOT LOGGED IN')} ${chalk_1.default.dim( run')} ${chalk_1.default.cyan('scalebun login')}`);
21
38
  }
22
- console.log(chalk_1.default.gray('└─────────────────────────────────────────────────────────────┘\n'));
39
+ border('', '┘');
40
+ console.log('');
23
41
  }
24
42
  function renderCommands() {
25
- const cmd = (name, desc) => console.log(` ${chalk_1.default.cyan(name.padEnd(34))} ${chalk_1.default.dim(desc)}`);
43
+ // 7-space indent aligns these command names under the numbered steps'
44
+ // commands above (' 1. ' is 7 chars wide, so `scalebun login` sits at col 7).
45
+ const cmd = (name, desc) => console.log(` ${chalk_1.default.cyan(name.padEnd(34))} ${chalk_1.default.dim(desc)}`);
26
46
  // ── Get started: publish your first OTA update ──────────────────────────────
27
- console.log(chalk_1.default.bold.white(' 🚀 PUBLISH YOUR FIRST OTA UPDATE'));
47
+ console.log(chalk_1.default.bold.white(' PUBLISH YOUR FIRST OTA UPDATE'));
28
48
  console.log(` ${chalk_1.default.green('scalebun quickstart')} ${chalk_1.default.dim('one guided flow: login → app → keys → health check → first release')}`);
29
49
  console.log(chalk_1.default.dim(' …or do it step by step:'));
30
50
  console.log(` ${chalk_1.default.dim('1.')} ${chalk_1.default.cyan('scalebun login')} ${chalk_1.default.dim('authenticate (paste an access token)')}`);
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/utils/ui.ts"],"names":[],"mappings":";;;;;AAYA,oCAyBC;AAED,wCA0DC;AAjGD,kDAA0B;AAC1B,+CAAiE;AAEjE,iFAAiF;AACjF,gFAAgF;AAEhF,6EAA6E;AAC7E,kFAAkF;AAClF,gEAAgE;AAChE,MAAM,UAAU,GAAG,iBAAiB,CAAC;AACrC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;AAE3E,SAAgB,YAAY;IAC1B,MAAM,KAAK,GAAG,IAAA,6BAAe,GAAE,CAAC;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG,IAAI,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACzC,yEAAyE;QACzE,2EAA2E;QAC3E,yEAAyE;QACzE,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,6BAAe,EAAE,CAAC;YAChD,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAgB,cAAc;IAC5B,sEAAsE;IACtE,iFAAiF;IACjF,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,EAAE,CACzC,OAAO,CAAC,GAAG,CAAC,UAAU,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1E,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,oEAAoE,CAAC,EAAE,CAAC,CAAC;IAC5I,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,qCAAqC,eAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;IAC5J,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,sCAAsC,eAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC1I,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,eAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAC;IAClM,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,OAAO,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAC/I,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChD,GAAG,CAAC,iBAAiB,EAAE,uDAAuD,CAAC,CAAC;IAChF,GAAG,CAAC,mBAAmB,EAAE,sEAAsE,CAAC,CAAC;IACjG,GAAG,CAAC,uBAAuB,EAAE,gEAAgE,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IAC9C,GAAG,CAAC,sBAAsB,EAAE,qEAAqE,CAAC,CAAC;IACnG,GAAG,CAAC,qBAAqB,EAAE,4DAA4D,CAAC,CAAC;IACzF,GAAG,CAAC,uBAAuB,EAAE,kDAAkD,CAAC,CAAC;IACjF,GAAG,CAAC,uBAAuB,EAAE,+CAA+C,CAAC,CAAC;IAC9E,GAAG,CAAC,sBAAsB,EAAE,sDAAsD,CAAC,CAAC;IACpF,GAAG,CAAC,gCAAgC,EAAE,4DAA4D,CAAC,CAAC;IACpG,GAAG,CAAC,2BAA2B,EAAE,6CAA6C,CAAC,CAAC;IAChF,GAAG,CAAC,mBAAmB,EAAE,yCAAyC,CAAC,CAAC;IACpE,GAAG,CAAC,4BAA4B,EAAE,kCAAkC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACpD,GAAG,CAAC,yBAAyB,EAAE,yDAAyD,CAAC,CAAC;IAC1F,GAAG,CAAC,eAAe,EAAE,+CAA+C,CAAC,CAAC;IACtE,GAAG,CAAC,qBAAqB,EAAE,kCAAkC,CAAC,CAAC;IAC/D,GAAG,CAAC,2BAA2B,EAAE,2DAA2D,CAAC,CAAC;IAC9F,GAAG,CAAC,kBAAkB,EAAE,8CAA8C,CAAC,CAAC;IACxE,GAAG,CAAC,iBAAiB,EAAE,8CAA8C,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,sFAAsF,CAAC,CAAC,CAAC;IAC/G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,0EAA0E,CAAC,CAAC;IAClJ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,qGAAqG,CAAC,CAAC;IAC7K,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,yDAAyD,CAAC,CAAC;IACjI,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,eAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,gCAAgC,CAAC,CAAC;AAC1G,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scalebun/cli",
3
- "version": "1.8.1",
3
+ "version": "1.9.0",
4
4
  "description": "Scalebun CLI — OTA bundle publishing and management",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -29,6 +29,7 @@
29
29
  "dev": "tsc --watch",
30
30
  "typecheck": "tsc --noEmit",
31
31
  "clean": "rm -rf lib",
32
- "gen:mark": "node tools/gen-mark.mjs assets/scalebun-mark.svg 20 14"
32
+ "gen:mark": "node tools/gen-mark.mjs assets/scalebun-mark.svg 13 9",
33
+ "gen:sixel": "node tools/gen-sixel.mjs assets/scalebun-mark.svg"
33
34
  }
34
35
  }