Add reporters: ['default'] to the mcp, cli, tools, registry and cli-smoke vite
configs (brain and helm already had it). Without a default reporter the @nx/vitest
NxReporter is the only one attached, so these projects printed no summary in CI -
which is how mcp's silently-undiscovered specs stayed invisible. The counts are
now shown so test execution is verifiable at a glance.
The mcp vite config lacked `root: __dirname`, so the @nx/vitest executor (which
runs from the workspace root) resolved `src/**/*.spec.ts` against the workspace
root, found nothing, and `passWithNoTests` passed it silently - mcp's 19 tests
never ran.
Pin mcp's root, and drop `passWithNoTests` from every project that has specs
(mcp, cli, tools, brain, helm) so a future test-discovery break fails loudly
instead of going green. registry keeps the flag - it genuinely has no specs.
Replace Jest with Vitest across the workspace. The brain and helm Angular suites
now run in a real browser (Playwright/Chromium via Vitest browser mode) so they
exercise real layout, focus, pointer events and computed styles that jsdom could
not. The cli, tools, mcp, registry and cli-smoke suites run on Vitest's node
environment.
- Add per-project vite configs and switch test targets to @nx/vitest:test
- Convert jest APIs to vi.* and jest module mocks to vi.mock with importOriginal
- Replace jest-axe with a browser-native axe-core helper and toHaveNoViolations
- Regenerate snapshots in vitest format (content unchanged, format-only)
- Remove all jest packages, configs, the preset and the @nx/jest target default
- Install Playwright Chromium in the CI unit job for the browser suites
Also fixes a brain avatar test that asserted inside a fire-and-forget setTimeout,
which passed vacuously under jsdom and only surfaced once a real browser loaded
the image.
* feat(mcp): release and version mcp server alongside cli and brain
Wire the MCP server package into the release pipeline so it is published
and version-synced with the cli and brain packages. Add a
replace-mcp-version generator (invoked by auto-increment-version for
nightly and prepare-manual-release for manual), a release-mcp script,
and sync the package to the current alpha version.
Also drop the orphan scope:core tag from release-ui and list mcp in the
PR template's affected-packages section.
* refactor: document release schemas and harden version error handling
Fill in the empty titles and descriptions on the release generator and
executor schemas, and declare the newVersion option so the version
generators are self-documenting and CLI-invocable.
Make the version generators throw with actionable messages instead of
silently logging and returning, validate the brain version format in
auto-increment-version, and fix the misleading source-of-truth message
in replace-ui-version.
* fix: prevent shell injection in npm publish and correct version flag hints
Validate the TAG dist-tag and publish via execFileSync with an argument
array instead of interpolating it into a shell string, removing a
shell-injection vector in the npm-publish executor.
Correct the version generators' error messages to reference the actual
--newVersion / --new-version flag rather than the reserved --version.
Detect a block's Spartan component dependencies from the
`@spartan-ng/{brain,helm}/...` import paths in its code examples instead of
matching the full page text, which matched the docs navigation sidebar and
over-reported nearly every component. Mirrors the earlier component
dependency fix in analysis.ts.
- match whole words in the keyboard accessibility check so the docs nav no
longer triggers false positives, and lowercase the screen-reader/WCAG checks
- cache block HTML as the single canonical entry and derive text on read so
the two formats cannot drift
- tolerate an undefined argv[1] in the warmup CLI guard and exit non-zero when
any item fails
- treat plain <br>/<hr> as line breaks in htmlToText
- clarify the cache-directory default on the MCP docs page
Make @spartan-ng/mcp publishable and runnable as an MCP server:
- align package metadata, bin, and publishConfig, and add a release target
- bump zod to ^3.25 so it satisfies the MCP SDK peer range, without which
the server fails to start
- route cache and warmup logging to stderr so it never corrupts the stdio
JSON-RPC channel
- validate cache keys to prevent path traversal and default the cache to a
writable user directory
- fix component example rendering, meta tool ids, language detection, and
peer-dependency analysis
- add unit tests and a documentation page for the MCP server
Rename the library from @spartan-ng/ui-mcp to @spartan-ng/mcp, move
libs/ui-mcp to libs/mcp, and update all workspace references. Add mcp
as a valid commitlint scope.
- Remove private flag so the package can be published
- Fix npm package extraction to preserve hyphenated names
- Run all analyzers when building accessibility overview score
- Branch blocks cache by format (text vs html) to prevent corruption
- Mark unused version parameters with underscore prefix
- Add explicit member accessibility modifiers to CacheManager fields
- Validate version strings in switchVersion to prevent path traversal
- Remove unused DOCUMENTATION_TOPICS import from docs.ts
- Key docs cache by topic+format to avoid cross-format responses
- Add AbortController timeouts to fetch calls in health.ts and utils.ts
- Remove irrelevant Brain API/Helm API copy from meta.ts instructions
- Replace collision-prone code ID with SHA-256 hash
- Relax preCodeRegex to allow whitespace between pre and code tags