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 +12 -0
- package/VERSION +1 -1
- package/package.json +1 -1
- package/src/commands/configure.js +11 -6
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.
|
|
1
|
+
3.6.4
|
package/package.json
CHANGED
|
@@ -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
|
-
'
|
|
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
|
-
'
|
|
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
|
-
'
|
|
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
|