Commit Graph

17 Commits

Author SHA1 Message Date
Leonidas f1cdfcbc9b chore: nightly release 2026-06-18 ⚡ 2026-06-18 04:04:01 +00:00
Leonidas b5e12f4140 chore: nightly release 2026-06-17 ⚡ 2026-06-17 04:12:35 +00:00
Leonidas bd321c9ab0 chore: nightly release 2026-06-16 ⚡ 2026-06-16 04:12:33 +00:00
Leonidas 7da9d3e4c3 chore: nightly release 2026-06-15 ⚡ 2026-06-15 04:22:11 +00:00
Leonidas f377723a53 chore: nightly release 2026-06-14 ⚡ 2026-06-14 04:09:37 +00:00
Ashley Hunter 16ecd13eab test: surface vitest test counts in CI logs for the node projects
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.
2026-06-13 17:35:00 +01:00
Ashley Hunter e0f236ba47 fix: run mcp tests and stop passWithNoTests masking missing test discovery
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.
2026-06-13 17:16:45 +01:00
Ashley Hunter 1b743f8019 test: migrate from jest to vitest with browser testing for brain/helm
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.
2026-06-13 15:16:45 +01:00
Leonidas f29b10bb68 chore: nightly release 2026-06-13 ⚡ 2026-06-13 03:47:26 +00:00
Leonidas 1d4b389e6e chore: nightly release 2026-06-12 ⚡ 2026-06-12 04:02:56 +00:00
Leonidas a3607e71d7 chore: nightly release 2026-06-11 ⚡ 2026-06-11 04:03:48 +00:00
Robin Goetz fc8c037add feat(mcp): release and version mcp server alongside cli and brain (#1448)
* 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.
2026-06-10 09:58:55 +02:00
Ashley Hunter d3ff5c0edf fix(mcp): derive block dependencies from import paths
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.
2026-06-03 21:39:25 +01:00
Ashley Hunter c9b6163149 fix(mcp): address review feedback on a11y heuristics, block cache, and CLI
- 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
2026-06-03 21:22:32 +01:00
Ashley Hunter c8d97abb42 fix(mcp): make the library publishable and harden the server
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
2026-06-03 21:02:33 +01:00
SOG-web de10eee885 fix(mcp): resolve lint errors, path traversal, and cross-platform issues
- Add public modifier to currentVersion (explicit-member-accessibility)
- Fix validateVersion to reject '.' and '..' path traversal
- Use pathToFileURL for cross-platform main-module check
- Remove unused variables and parameters
- Namespace block cache keys by format
- Remove redundant fetchContent call in docs.ts
- Rename private fields with underscore prefix (_cacheDir, _cacheMetadata)
- Add lint target to project.json
- Add missing dependency declarations to package.json
2026-05-28 11:56:27 +01:00
SOG-web fc90194a71 refactor(mcp): rename ui-mcp to mcp and apply code quality fixes
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
2026-05-21 20:28:56 +01:00