@m-kopa/launchpad-cli 0.25.0 → 0.26.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/CHANGELOG.md CHANGED
@@ -6,6 +6,77 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
  This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html);
7
7
  pre-1.0 minor bumps may carry breaking changes per ADR 0005.
8
8
 
9
+ ## 0.26.1 — 2026-06-11
10
+
11
+ Two `launchpad status` UX faults found live by the owner (fast-track,
12
+ type:bug).
13
+
14
+ ### Fixed
15
+
16
+ - **Slug inference now reads the local manifest** (Fault 1). Bare
17
+ `launchpad status` in a directory named e.g. `AI-Audit-Assistant/`
18
+ containing a valid `launchpad.yaml` (`metadata.name: ai-audit`) used
19
+ to fail with "slug not provided + cannot infer from cwd" — inference
20
+ only knew the `launchpad-app-<slug>` directory-name convention and the
21
+ manifest's own declared slug was ignored. Resolution order is now:
22
+ (1) explicit positional / `--slug`, (2) the local manifest's slug
23
+ (`./launchpad.yaml` or `--file`; v1 `metadata.name` / v2
24
+ `metadata.slug`), (3) the directory-name convention. When the manifest
25
+ and the directory name disagree, the manifest wins with a stderr note.
26
+ Applied consistently across every verb that infers (`status`, `pull`,
27
+ `recover`, `logs`, `review`, `merge`, `envvars`, `destroy`, legacy
28
+ `deploy`) — the five drifted copies of the helper are centralised in
29
+ one module (`recover`'s inference was dirname-first; it is now
30
+ manifest-first like everything else).
31
+ - **`launchpad status <slug>` no longer demands a local manifest**
32
+ (Fault 2). With an explicit (or inferred) slug and no local
33
+ `launchpad.yaml`, status used to exit 2 on ENOENT — after already
34
+ fetching the lifecycle and even saying the app was live in its own
35
+ error text. It now degrades to the live-truth-only view: lifecycle +
36
+ deployment block (live/failed/in-progress, trigger, build outcome,
37
+ standing exceptions) plus a one-line "drift not checked" note, exit 0.
38
+ `--json` carries `"drift": null` and the `live_drift_unknown` state as
39
+ the not-evaluated discriminant. `--strict` without a manifest exits 0
40
+ (drift can't be evaluated; status says so) unless the live build
41
+ itself failed, which exits 1. The hard exit-2 error remains for a
42
+ present-but-unreadable or invalid manifest, and the usage error
43
+ remains when no slug can be resolved at all.
44
+
45
+ (Note: 0.26.0 was never published to npm — a failed docs gate, since
46
+ fixed — so this release ships 0.26.0's `recover` verb and these fixes
47
+ together.)
48
+
49
+ ## 0.26.0 — 2026-06-11
50
+
51
+ ### Added
52
+
53
+ - **`launchpad recover [<slug>]`** (sp-devlp1 AC12). Repairs an app whose
54
+ registry record is stuck at a terminal provisioning failure although the
55
+ app is actually live (the ai-audit class: a since-fixed platform bug
56
+ failed the record after content shipped, leaving `launchpad status`
57
+ short-circuited on the failed lifecycle with no CLI way out). The bot
58
+ verifies LIVE Cloudflare state first — Pages project exists + a
59
+ successful production deployment is serving — and only then reconciles
60
+ the record to `live`, preserving every non-lifecycle field. A not-live
61
+ app is refused with exactly what was checked and the next steps
62
+ (`deploy --resume` / `--abandon` / re-deploy): recover never fabricates
63
+ a live state. Owner/editor/break-glass gated, audited, fail-closed
64
+ (Cloudflare unreachable → nothing changes). Recovering a healthy app is
65
+ a no-op success.
66
+
67
+ ### Fixed
68
+
69
+ - **`launchpad deploy` usage text no longer advertises the removed
70
+ `--platform-repo` flag** (apply runs server-side via portal-bot). The
71
+ banner now reflects the real mode surface, and a misused flag (e.g.
72
+ bare `deploy --yes`) prints a pointed one-line error instead of a wall
73
+ of stale usage.
74
+ - **Policy-rejected deploys now say the retry is clean.** A
75
+ bundle-policy / app-boundary / build-command rejection leaves no
76
+ residue (nothing committed, no slug claimed, no staged bundle) — the
77
+ error now states that explicitly: fix the file and re-run
78
+ `launchpad deploy`.
79
+
9
80
  ## 0.25.0 — 2026-06-11
10
81
 
11
82
  ### Changed