@stackbone/cli 0.1.0-alpha.3 → 0.1.0-alpha.5

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
@@ -7,6 +7,95 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.0-alpha.5] - 2026-05-18
11
+
12
+ ### Added
13
+
14
+ - `stackbone docs <section>` content is now generated from the wiki
15
+ (`apps/wiki/public/content/docs/<section>/*.md`). A new
16
+ `cli:sync-docs` Nx target reads every markdown page, strips the
17
+ frontmatter, prepends the title as an H1 and emits
18
+ `apps/cli/src/docs/topics.generated.ts`; `cli:build` depends on it so
19
+ the bundled CLI can never drift from the wiki again. `docs <section>`
20
+ prints an auto-generated table of contents; `docs <section>/<slug>`
21
+ prints the page body. The inline `starters` / `connections`
22
+ placeholders are gone — once the corresponding wiki pages land they
23
+ surface automatically.
24
+ - Branded interactive surface. Clack's prompt glyphs (`◆`, `│`, `┌`,
25
+ `└`, spinner) are repainted to brand orange via a pnpm patch on
26
+ `@clack/prompts`, the boot banner picks up the same truecolor
27
+ accent, and every interactive command (`init`, `link`, `dev`,
28
+ `login`) now opens with a `◆◆◆ stackbone v<version> · <command>`
29
+ header. The `login` flow uses `note()` for the device code + URL,
30
+ `log.step()` for the browser hint and a `spinner()` for the polling
31
+ wait — replacing the raw `process.stdout` writes that read flat
32
+ against the rest of the clack session.
33
+
34
+ ### Changed
35
+
36
+ - **Breaking — `--api-url` flag removed.** Control-plane URL resolution
37
+ collapses to `STACKBONE_API_URL` → project config → global config.
38
+ The env var keeps working internally so the team can still point at
39
+ staging/prod, but it is no longer advertised in the wiki, the
40
+ embedded skill template or the README — external developers should
41
+ not need to think about it. HTTP, device-flow and dev-tunnel error
42
+ suggestions are updated to match.
43
+ - Native Windows shells (PowerShell, CMD, Git Bash) are now blocked at
44
+ startup. `process.platform === 'win32'` triggers a branded `◆◆◆`
45
+ banner pointing at issue #70 for the long-term Windows-support work,
46
+ routed through the canonical `StackboneCliError` envelope so
47
+ `--json` consumers see the same `{schema_version, error, exit_code}`
48
+ shape they get from every other failure. WSL is unaffected because
49
+ Node there reports `linux`.
50
+ - The truecolor ANSI palette is centralised in `core/ansi.ts` and
51
+ reused from the boot-banner, brand-header and platform-guard
52
+ formatters instead of three hand-copied `{ reset, bold, dim, accent }`
53
+ objects drifting in parallel.
54
+ - Internal cleanup: `parseResponse(schema, raw, context)` extracted to
55
+ `infra/http.ts` so every control-plane service shares one error
56
+ envelope for unexpected response shapes; `resolveDrizzleKitBin`
57
+ consolidated in `dev/drizzle-bin.ts`; UUID validation centralised in
58
+ `dev/uuid.ts`. `stackbone dev` only fetches the active organization
59
+ when the project is missing `localDevInstallationId` /
60
+ `organizationSlug`, and SIGINT teardown runs the tunnel-PATCH and
61
+ `session.stop()` via `Promise.allSettled` so a hung control-plane
62
+ call cannot block docker teardown. Independent filesystem writes in
63
+ `project.service` and `dev/compose.ts` now run in parallel.
64
+
65
+ ### Fixed
66
+
67
+ - `stackbone init` on a clean directory no longer errors with "Refusing
68
+ to overwrite agent.yaml". Every starter ships a placeholder manifest
69
+ that `writeStarterFiles` would write first, then
70
+ `writeAgentManifest` would refuse to overwrite. The new
71
+ `writeStarterProject` helper drops the placeholder, writes the rest
72
+ of the starter, and regenerates the manifest with the user-chosen
73
+ name; a flow-level test pins the contract so the two helpers cannot
74
+ re-diverge.
75
+
76
+ ## [0.1.0-alpha.4] - 2026-05-18
77
+
78
+ ### Changed
79
+
80
+ - **Breaking — `--template` renamed to `--starter`.** The `stackbone init`
81
+ command now reads `--starter <slug>` and scaffolds from `starters/<slug>/`,
82
+ a directory subtreed from one of the public
83
+ `github.com/stackbone/starter-<slug>` repos (10 slugs: `hello-world`, `ai`,
84
+ `rag`, `db`, `storage`, `queues`, `hitl`, `secrets`, `prompts`, `config`).
85
+ The legacy `--template` flag is recognised solely to emit the migration
86
+ message `--template was renamed to --starter; rerun with --starter <slug>`
87
+ and exit non-zero. The interactive picker now groups starters by
88
+ `stackbone.category` (`Core` first, then `Capabilities`) and lists ten
89
+ entries (the three bundled `hello-world` / `workflow` / `autonomous`
90
+ templates are gone — `workflow` and `autonomous` were mocks).
91
+ `.stackbone/project.json` writes `starter: <slug>`; the field is read-compat
92
+ with the legacy `template:` key (one release) and rewritten on next
93
+ `init`/`link`. The bundled `apps/cli/src/templates/` directory is deleted
94
+ in favour of the subtreed `starters/` layout. Public exports of
95
+ `services/scaffolding.ts` were renamed: `TEMPLATES` → `STARTERS`,
96
+ `TemplateChoice` → `StarterChoice`, `parseTemplateId` → `parseStarterId`,
97
+ `renderTemplate` → `renderStarter`.
98
+
10
99
  ## [0.1.0-alpha.3] - 2026-05-15
11
100
 
12
101
  ### Added