Skip to content

promote: dev → staging (16 features, 153 commits)#223

Merged
himerus merged 35 commits intostagingfrom
dev
Mar 26, 2026
Merged

promote: dev → staging (16 features, 153 commits)#223
himerus merged 35 commits intostagingfrom
dev

Conversation

@himerus
Copy link
Copy Markdown
Contributor

@himerus himerus commented Mar 26, 2026

Promotion: dev → staging

Features included (16 features, 4 epics)

Epics closed

  • [Epic] Release Readiness: Pre-Release Quality Gate
  • [Epic] Test Coverage Hardening
  • [Epic] Code Quality Sweep
  • [Epic] VS Code Extension: Marketplace Distribution

Promotion type

dev → staging (merge commit, no squash)

🤖 Generated with Claude Code

himerus and others added 30 commits March 26, 2026 05:49
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace webp-only social card with PNG exported from Playwright.
helixir purple (#8b5cf6) branded at 1200x630.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ontextprotocolsdk

fix: align @modelcontextprotocol/sdk versions across monorepo packages
…dcomponent-and

fix: wire scaffold_component and extend_component into MCP server
Adds the helixir-vscode VS Code extension package at packages/vscode/.
The extension registers helixir as an MCP server definition provider
(vscode.lm, VS Code ≥ 1.99.0) so AI assistants receive full component
library awareness automatically when a workspace is opened.

Files created:
- packages/vscode/package.json — extension manifest with publisher,
  mcpServerDefinitionProviders contribution, Run Health Check command,
  helixir.configPath setting, and vsce/ovsx scripts
- packages/vscode/tsconfig.json — extends root tsconfig, noEmit for
  type-check-only (esbuild handles transpilation)
- packages/vscode/esbuild.config.mjs — dual-bundle config: extension.js
  (CJS, vscode externalized) + mcp-server.js (ESM, bundles helixir)
- packages/vscode/src/extension.ts — activate/deactivate exports, wires
  MCP provider and Run Health Check command
- packages/vscode/src/mcpProvider.ts — registerMcpServerDefinitionProvider
  call; spawns bundled mcp-server.js via stdio with MCP_WC_PROJECT_ROOT
  set to the current workspace folder; degrades gracefully on older VS Code
- packages/vscode/src/mcp-server-entry.ts — imports helixir/mcp and calls
  main(); bundled into the self-contained dist/mcp-server.js
- packages/vscode/.vscodeignore — excludes src, tsconfig, node_modules,
  and build artefacts from the .vsix package
- packages/vscode/README.md — marketplace listing with setup, config
  reference, commands table, and troubleshooting guide

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ckagesvscode-extension

feat: scaffold packages/vscode VS Code extension MVP
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…fault case

Replaces the '/* TODO: set value */' literal in the default branch of
lightPlaceholder() with var(${tokenName}), which produces valid CSS that
degrades gracefully when a token category is unknown.

Adds a test case that exercises the default code path by creating a CEM
with a token name that does not match any known CATEGORY_PATTERNS entry,
causing it to land in the 'other' bucket and hit the default switch case.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add comprehensive test coverage for packages/core/src/tools/styling.ts —
previously the single largest untested file in the codebase (1089 lines,
zero coverage).

- Tests all 29 MCP tool handlers via mocked dependencies
- Verifies happy paths, missing-arg validation errors, and error propagation
- Covers isStylingTool guard and the handleStylingCall dispatcher
- Designed to achieve 80%+ line coverage per vitest thresholds

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…r-returns-todo

fix: replace TODO placeholder with var() fallback in theme handler
…ite-for-styling-tools

test: add test suite for styling tools (29 tools, zero coverage)
- packages/core/src/handlers/cem.ts: throw MCPError with VALIDATION category
  for CSS custom property name validation
- packages/core/src/handlers/dependencies.ts: import MCPError/ErrorCategory,
  throw MCPError with NOT_FOUND category for missing component
- packages/core/src/handlers/extend.ts: import MCPError/ErrorCategory,
  throw MCPError with NOT_FOUND category for missing parent component
- src/mcp/index.ts: import handleToolError, use .message for stderr logging
- src/cli/index.ts: import handleToolError, use .message for stderr logging

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n-error-throws-with

fix: replace plain Error throws with MCPError across all handlers
- Updates tool count badge from 87+ to 73 (accurate count)
- Updates feature headline from "30+ MCP tools" to "73 MCP tools"
- Adds audit_library to Health section (was missing)
- Adds all 29 styling tools in a new Styling section
- Adds TypeGenerate, Theme, Scaffold, and Extend tool sections
- Verified all tool names match src/mcp/index.ts registrations
- Prettier format check passes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e-tool-count-badge-and

fix: update README tool count badge and tools reference
…ilure

The post-merge verification ran `npm run typecheck` but the root package.json
only had `type-check` (with hyphen). Added a `typecheck` alias that delegates
to `pnpm run type-check` so both script names work.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…erification-failure-for

fix: add typecheck script alias for post-merge verification
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ites-for-scaffold

test: add test suites for scaffold, extend, theme, and bundle tools
Resolve README.md conflict: keep 87+ tool count from feature branch while
incorporating dev's expanded tool description list.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…me-social-card-to

docs: update README social card to PNG and fix tool count to 87+
… typegenerate, typescript, and validate tools

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ites-for-remaining-9

test: add test suites for 9 remaining tool files
- Replace 10 nearly-identical if-blocks with ENV_MAP_STRING and
  ENV_MAP_NULLABLE lookup tables iterated in a loop
- Remove deprecated mcpwc.config.json fallback and its warning message
- readConfigFile() now only reads helixir.mcp.json

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…figts-env-var-loading

fix: refactor config.ts env var loading to table-driven pattern
…indsurf-mcpjson-helper

feat: add Cursor/Windsurf mcp.json helper command to VS Code extension
himerus and others added 5 commits March 26, 2026 18:20
Standardize all required args[] accesses in cli/index.ts to check
args.length first, then access with type assertion. This applies to
cmdHealth (trend), cmdMigrate, cmdSuggest, cmdBundle, cmdCompare,
cmdValidate, and cmdCdn — replacing the pattern of access-then-check
with the consistent check-before-access pattern.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…hecking-for-cli-array

fix: add bounds checking for CLI array index accesses
- mixin-resolver: chain resolution, architecture classification, aggregated markers, ResolvedSource structure
- naming-consistency: prefix detection, per-component scoring, confidence levels, normalization
- source-accessibility: PATTERNS export, scanSourceForA11yPatterns, scoreSourceMarkers, isInteractiveComponent, resolveComponentSourceFilePath
- slot-architecture: default/named slot scoring, type constraints, kebab-to-camel coherence, jsdocTags detection
- api-surface: method/attribute/default/description scoring, null cases, normalization
- type-coverage: property/event/method type scoring, bare Event exclusion, single-dimension normalization
- event-architecture: kebab-case validation, typed payload scoring, description scoring
- css-architecture: CSS property/parts documentation, design token naming pattern validation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix mixin-resolver: LitElement is a framework base class that
  getInheritanceChain() skips entirely — it does not appear in
  unresolved; add a separate test for non-framework superclasses
- Fix source-accessibility: TABINDEX_SOURCE used setAttribute which
  does not match the tabindex\s*[=:] pattern; use property assignment
  form that the regex actually matches

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ites-for-8-untested

test: add test suites for 8 untested analyzers
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 26, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (1)
  • dev

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 39b33965-0850-4ba0-80b2-a9c4d45dda41

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@himerus himerus merged commit b476e1c into staging Mar 26, 2026
10 of 26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant