mergestorm 0.3.8 → 0.3.9

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/README.md CHANGED
@@ -28,7 +28,7 @@ After install, both `mergestorm` and `mg` invoke the same CLI.
28
28
  ## Source
29
29
 
30
30
  Public source (MIT): [github.com/marginsystems/mergestorm-cli](https://github.com/marginsystems/mergestorm-cli).
31
- Tags there match npm versions (`v0.3.8`, …).
31
+ Tags there match npm versions (`v0.3.9`, …). Clone, install, and build:
32
32
 
33
33
  ```bash
34
34
  git clone https://github.com/marginsystems/mergestorm-cli.git
@@ -36,6 +36,7 @@ cd mergestorm-cli
36
36
  npm install
37
37
  npm run build
38
38
  node dist/cli.js --help
39
+ # optional: npm link # puts `mergestorm` / `mg` on your PATH
39
40
  ```
40
41
 
41
42
  ## Interactive shell
@@ -43,13 +44,13 @@ node dist/cli.js --help
43
44
  On a TTY, bare `mergestorm` (or `mergestorm shell`) opens a branded REPL: a **full-width** welcome panel (logo + status on the left, tips / what's new on the right) and a **full-width** bordered input box with a live `/` slash-command dropdown. Non-TTY (CI/pipes) prints usage instead — no hanging prompt.
44
45
 
45
46
  ```
46
- ╭─ mergestorm v0.3.8 ──────────────────────────────────────────────────────────╮
47
+ ╭─ mergestorm v0.3.9 ──────────────────────────────────────────────────────────╮
47
48
  │ ▟██████████▛ Tips for getting started │
48
49
  │ ▜████████▛ review review origin/HEAD or main │
49
50
  │ ▝▜████▛▘ stack create → submit → restack → land │
50
51
  │ ▜██▛ /help list all commands │
51
52
  │ ██ │
52
- │ ▝▘ What's new in v0.3.8 │
53
+ │ ▝▘ What's new in v0.3.9 │
53
54
  │ ● msk… · maelstrom • MIT license + public source (mergestorm-cli) │
54
55
  │ [████░░░░░░░░░░] 12% used │
55
56
  ╰──────────────────────────────────────────────────────────────────────────────╯
@@ -109,7 +110,7 @@ Legacy repo-local `.mergestorm/stack.json` state migrates automatically on the n
109
110
 
110
111
  Runs a browser device-authorization flow: prints a short code, opens `https://mergestorm.ai/cli/auth`, and — once you approve — mints and stores an API key in `~/.mergestorm/config.json` (mode `600`). No key copy/paste needed.
111
112
 
112
- For headless or CI environments, use `mergestorm login --key` to paste an existing `msk_live_…` key (create one on the dashboard [API tab](https://mergestorm.ai/dashboard/api)). On a TTY the paste is hidden (not echoed); the CLI verifies the key with the API before saving.
113
+ For headless or CI environments, use `mergestorm login --key` to paste an existing `msk_live_…` key (create one on the dashboard [Settings → API](https://mergestorm.ai/settings#api)). On a TTY the paste is hidden (not echoed); the CLI verifies the key with the API before saving.
113
114
 
114
115
  ### `logout`
115
116
 
@@ -45,7 +45,7 @@ export async function cmdJobs(args) {
45
45
  console.log(ansi.dim(fmt(header)));
46
46
  for (const r of rows)
47
47
  console.log(fmt(r));
48
- console.log(ansi.dim(" branches: `branches` · full history: https://mergestorm.ai/dashboard/api"));
48
+ console.log(ansi.dim(" branches: `branches` · full history: https://mergestorm.ai/settings#api"));
49
49
  }
50
50
  /** Numbered chain timeline for a thread (branch/PR meta when present). */
51
51
  export function formatThreadTimeline(data) {
@@ -101,7 +101,7 @@ export async function cmdLogin(args) {
101
101
  continue;
102
102
  }
103
103
  if (err === "key_limit_reached") {
104
- throw new CommandError("You have reached the max active API keys. Revoke one at https://mergestorm.ai/dashboard/api and try again.");
104
+ throw new CommandError("You have reached the max active API keys. Revoke one at https://mergestorm.ai/settings#api and try again.");
105
105
  }
106
106
  if (err === "expired_token") {
107
107
  throw new CommandError("Login code expired. Run `mergestorm login` again.");
@@ -311,7 +311,7 @@ export async function cmdStackSubmit(args, deps = {}) {
311
311
  else {
312
312
  console.log(ansi.dim(" Stack registration returned no stack ID"));
313
313
  }
314
- console.log(ansi.dim(" Dashboard: https://mergestorm.ai/dashboard/stacks"));
314
+ console.log(ansi.dim(" Dashboard: https://mergestorm.ai/dashboard"));
315
315
  }
316
316
  async function cmdStackReset(args) {
317
317
  parseStackResetArgs(args);
@@ -329,7 +329,7 @@ async function cmdStackList(args) {
329
329
  if (stacks.length === 0) {
330
330
  console.log(ansi.dim(" No stacks yet. Author with `stack create` → commit → `stack submit`."));
331
331
  console.log(ansi.dim(" Import an existing chain only: `stack adopt owner/repo#pr`"));
332
- console.log(ansi.dim(" Dashboard: https://mergestorm.ai/dashboard/stacks"));
332
+ console.log(ansi.dim(" Dashboard: https://mergestorm.ai/dashboard"));
333
333
  return;
334
334
  }
335
335
  for (const s of stacks) {
@@ -337,7 +337,7 @@ async function cmdStackList(args) {
337
337
  console.log(line);
338
338
  console.log("");
339
339
  }
340
- console.log(ansi.dim(" Dashboard: https://mergestorm.ai/dashboard/stacks"));
340
+ console.log(ansi.dim(" Dashboard: https://mergestorm.ai/dashboard"));
341
341
  }
342
342
  async function cmdStackAdopt(args) {
343
343
  const asJson = args.includes("--json");
@@ -364,7 +364,7 @@ async function cmdStackAdopt(args) {
364
364
  if (stack?.trunkBranch) {
365
365
  console.log(ansi.dim(` trunk: ${stack.trunkBranch}`));
366
366
  }
367
- console.log(ansi.dim(" Dashboard: https://mergestorm.ai/dashboard/stacks"));
367
+ console.log(ansi.dim(" Dashboard: https://mergestorm.ai/dashboard"));
368
368
  }
369
369
  async function cmdStackRestack(args) {
370
370
  const asJson = args.includes("--json");
package/dist/shell.js CHANGED
@@ -14,7 +14,7 @@ function printHelp() {
14
14
  ${ansi.bold("Commands")}
15
15
  ${rows}
16
16
 
17
- Dashboard: https://mergestorm.ai/dashboard/api
17
+ Dashboard: https://mergestorm.ai/settings#api
18
18
  `);
19
19
  }
20
20
  /** Strips an optional leading "/" so both "review" and "/review" work. */
package/dist/ui/banner.js CHANGED
@@ -61,6 +61,11 @@ const WHATS_NEW = {
61
61
  "Review poll retries + status <job_id> recovery; empty-submit / narrow-TTY fixes",
62
62
  "login --key muted + validated; API timeouts; Node 22 hard-fail; --version",
63
63
  ],
64
+ "0.3.9": [
65
+ "Public source repo open (github.com/marginsystems/mergestorm-cli)",
66
+ "npm description points at MIT build-from-source URL",
67
+ "Dashboard links → Settings → API / Work (product URL cleanup)",
68
+ ],
64
69
  };
65
70
  function formatStatusLines(me, key, barWidth, keyInvalid = false) {
66
71
  if (!key) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mergestorm",
3
- "version": "0.3.8",
4
- "description": "Mergestorm CLI — interactive shell and one-shot review commands",
3
+ "version": "0.3.9",
4
+ "description": "Mergestorm CLI (mg) — local reviews & stacked PRs. MIT; build from source: https://github.com/marginsystems/mergestorm-cli",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "author": "Margin Systems <hello@mergestorm.ai>",