baldart 3.6.3 → 3.6.4

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
@@ -5,6 +5,18 @@ All notable changes to BALDART will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.6.4] - 2026-05-22
9
+
10
+ Two configure-flow fixes surfaced by a real-world `mayo` install audit.
11
+
12
+ ### Fixed
13
+
14
+ - **API docs false negative** — `has_api_docs` only checked for `docs/.../api/schemas.md` (and OpenAPI/GraphQL specs). Projects that ship API docs as one markdown per resource (e.g. `docs/references/api/{index,admin,push,…}.md`) were marked `has_api_docs: false` despite having extensive API documentation. Added a populated-directory probe: if `docs/references/api/` or `docs/api/` exists and contains ≥1 `.md` file, the feature flag flips to `true` and `api_index` falls back to `<dir>/index.md`.
15
+
16
+ ### Changed
17
+
18
+ - **Prompt label clarity** — `"Charting libraries (canonical, comma-separated)"` → `"Approved charting libraries — comma-separated package names (empty if none)"`. Same edit for forbidden and animation. The previous label read like the user was being asked to type the word `canonical`; one tester actually did.
19
+
8
20
  ## [3.6.3] - 2026-05-22
9
21
 
10
22
  Smarter project autodetection in `baldart configure`. The previous probe only looked at a single hardcoded path (`docs/design-system/INDEX.md`), which silently failed on the vast majority of real projects (monorepos, inline `src/ui/`, `packages/ui/`, shadcn/ui setups, Tailwind-theme-only projects, etc.). The redundant "Design philosophy" prompt is now skipped automatically when a design system is detected.
package/VERSION CHANGED
@@ -1 +1 @@
1
- 3.6.3
1
+ 3.6.4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "baldart",
3
- "version": "3.6.3",
3
+ "version": "3.6.4",
4
4
  "description": "Claude Agent Framework - Reusable framework for coordinating AI agents and humans in software projects",
5
5
  "bin": {
6
6
  "baldart": "./bin/baldart.js"
@@ -192,7 +192,7 @@ function detect(cwd = process.cwd()) {
192
192
  )
193
193
  );
194
194
 
195
- // ---- API docs (widened — OpenAPI, GraphQL) -----------------------------
195
+ // ---- API docs (widened — OpenAPI, GraphQL, populated dir) --------------
196
196
  const apiIndex = findFirst('docs/references/api/index.md', 'docs/api/index.md');
197
197
  const apiSchemas = findFirst('docs/references/api/schemas.md', 'docs/api/schemas.md');
198
198
  const apiErrors = findFirst('docs/references/errors.md', 'docs/errors.md');
@@ -206,6 +206,11 @@ function detect(cwd = process.cwd()) {
206
206
  const graphqlSchema = findFirst(
207
207
  ...expandCandidates('schema.graphql', 'schema.gql', 'src/schema.graphql')
208
208
  );
209
+ // Many projects ship API docs as one markdown per resource (admin.md, push.md, …)
210
+ // without a `schemas.md` or OpenAPI spec. Count any populated docs/.../api dir as
211
+ // a positive signal.
212
+ const apiDocsDir = findFirst('docs/references/api', 'docs/api');
213
+ const apiDocsDirPopulated = apiDocsDir && countMatches(apiDocsDir, /\.md$/) > 0;
209
214
 
210
215
  // ---- Brand name (multi-fallback) ---------------------------------------
211
216
  let brandName = pkg?.name || '';
@@ -236,7 +241,7 @@ function detect(cwd = process.cwd()) {
236
241
  paths: {
237
242
  design_system: designSystemPath,
238
243
  ui_guidelines: uiGuidelines,
239
- api_index: apiIndex,
244
+ api_index: apiIndex || (apiDocsDirPopulated ? path.join(apiDocsDir, 'index.md') : ''),
240
245
  api_schemas: apiSchemas || openapiSpec || graphqlSchema,
241
246
  api_errors: apiErrors,
242
247
  components_primitives: componentsPrimitives,
@@ -287,7 +292,7 @@ function detect(cwd = process.cwd()) {
287
292
  features: {
288
293
  has_design_system: hasDesignSystem,
289
294
  multi_tenant_theming: null,
290
- has_api_docs: !!(apiSchemas || openapiSpec || graphqlSchema),
295
+ has_api_docs: !!(apiSchemas || openapiSpec || graphqlSchema || apiIndex || apiDocsDirPopulated),
291
296
  has_backlog: countMatches('backlog', /\.ya?ml$/) > 0,
292
297
  has_adrs: countMatches('docs/decisions', /^ADR-.*\.md$/) > 0,
293
298
  has_prd_workflow: exists('docs/prd'),
@@ -439,14 +444,14 @@ async function interactivePrompts(merged, detected) {
439
444
  UI.section('Stack (autodetected from package.json — confirm or override)');
440
445
  const charting = merged.stack.charting;
441
446
  const chartingCanonical = await promptForKey(
442
- 'Charting libraries (canonical, comma-separated)',
447
+ 'Approved charting libraries comma-separated package names (empty if none)',
443
448
  (charting.canonical || detected.stack.charting.canonical).join(',')
444
449
  );
445
450
  charting.canonical = chartingCanonical
446
451
  ? chartingCanonical.split(',').map((s) => s.trim()).filter(Boolean)
447
452
  : [];
448
453
  const chartingForbidden = await promptForKey(
449
- 'Charting libraries (forbidden, comma-separated) empty for none',
454
+ 'Forbidden charting libraries comma-separated (empty if none)',
450
455
  (charting.forbidden || []).join(',')
451
456
  );
452
457
  charting.forbidden = chartingForbidden
@@ -459,7 +464,7 @@ async function interactivePrompts(merged, detected) {
459
464
 
460
465
  const animation = merged.stack.animation;
461
466
  const animCanonical = await promptForKey(
462
- 'Animation libraries (canonical, comma-separated)',
467
+ 'Approved animation libraries comma-separated package names (empty if none)',
463
468
  (animation.canonical || detected.stack.animation.canonical).join(',')
464
469
  );
465
470
  animation.canonical = animCanonical