Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
fbc4b68
docs: align ecosystem installation contract
Aug 8, 2026
2e9e15f
test: resolve documented ecosystem imports
Aug 8, 2026
89eb91b
test: validate ecosystem manifests
Aug 8, 2026
7b0de62
fix: enforce shared ecosystem manifest schema
Aug 8, 2026
f42bee6
feat: define ecosystem compatibility contract
Aug 8, 2026
3c13edd
fix: pin ecosystem fixtures
Aug 8, 2026
573f6e4
fix: enforce ecosystem contract
Aug 8, 2026
a94f493
docs: align layout metadata pin
Aug 8, 2026
d935e08
fix: pin generated layout metadata
Aug 8, 2026
12b13d3
test: pin reviewed companion manifests
Aug 8, 2026
f428379
test: add clean-install ecosystem contract fixture
Aug 8, 2026
bac50e9
fix: stabilize ecosystem snapshots
Aug 8, 2026
02afe49
test: enforce css ownership boundaries
Aug 8, 2026
df11ce4
fix: close css ownership bypasses
Aug 8, 2026
e7b2cc3
chore: refresh layout compatibility pin
Aug 8, 2026
d8dbd08
fix: complete css ownership policy
Aug 9, 2026
d7fa370
fix: seal css ownership fallbacks
Aug 9, 2026
e9a1b7f
fix: align css ownership states
Aug 9, 2026
d48a9d9
test: pin final state probe
Aug 9, 2026
72286fc
ci: verify ecosystem contract before release
Aug 9, 2026
bfbbffe
ci: verify ecosystem contract before release
Aug 9, 2026
e2aa14c
fix: make release preflight executable
Aug 9, 2026
0080528
fix: harden gate c preflight and ownership
Aug 9, 2026
0b89268
test: pin gate c companion revisions
Aug 9, 2026
74e138f
docs: align publishing bootstrap foundation
Aug 9, 2026
ab68294
chore: refresh companion commit pins
Aug 9, 2026
4c20087
docs: specify semantic ui component contract
Aug 9, 2026
823615f
fix: harden semantic ui contract fixtures
Aug 9, 2026
15f367a
feat: add semantic buttons and cards
Aug 9, 2026
9436b4b
feat: add semantic form controls
Aug 9, 2026
8f0af4b
feat: extend semantic component coverage
Aug 9, 2026
ab7de86
docs: demonstrate runtime ui switching
Aug 9, 2026
397007f
fix: preserve semantic alias declaration coverage
Aug 9, 2026
d1c70cd
feat: publish shared semantic ui tokens
Aug 9, 2026
0f22758
docs: document third-party theme integration
Aug 9, 2026
cef243e
fix: preserve interactive adapter surface behavior
Aug 9, 2026
2868b86
chore: normalize package distribution metadata
Aug 9, 2026
36d09b4
chore: secure release toolchain dependencies
Aug 9, 2026
bdbb6a7
chore: stage layout 3.0.1 compatibility
Aug 9, 2026
3869ca4
chore: stage interactive surface 1.6.0 compatibility
Aug 9, 2026
abc7571
chore: prepare ui style kit 2.2.0
Aug 9, 2026
f83f62d
test: stabilize WebKit release verification
Aug 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 79 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ on:
branches:
- main

permissions:
contents: read

jobs:
quality:
name: Lint, Build, Unit Tests
Expand All @@ -34,6 +37,82 @@ jobs:
- name: Run unit tests
run: npm run test:unit

ecosystem-packs:
name: Packed Ecosystem Contract
needs: quality
runs-on: ubuntu-latest
steps:
- name: Checkout UI Style Kit
uses: actions/checkout@v6

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: 20
cache: npm

- name: Install UI Style Kit dependencies
run: npm ci

# The compatibility contract, rather than a mutable branch or release tag,
# selects the exact companion artifacts exercised by this integration job.
- name: Resolve immutable ecosystem fixture sources
id: ecosystem_sources
shell: bash
run: node scripts/write-ecosystem-workflow-outputs.mjs

# The companion commits must be pushed first; checking remote object reachability
# makes that sequencing failure explicit before Actions attempts a checkout.
- name: Require pushed companion commits before UI validation
shell: bash
env:
INTERACTIVE_REPOSITORY: ${{ steps.ecosystem_sources.outputs.interactive_repository }}
INTERACTIVE_REVISION: ${{ steps.ecosystem_sources.outputs.interactive_revision }}
LAYOUT_REPOSITORY: ${{ steps.ecosystem_sources.outputs.layout_repository }}
LAYOUT_REVISION: ${{ steps.ecosystem_sources.outputs.layout_revision }}
run: |
set -euo pipefail
for source in "${INTERACTIVE_REPOSITORY}:${INTERACTIVE_REVISION}" "${LAYOUT_REPOSITORY}:${LAYOUT_REVISION}"; do
repository="${source%%:*}"
revision="${source##*:}"
fixture_dir="$(mktemp -d)"
if ! git init --bare "${fixture_dir}" >/dev/null || ! git -C "${fixture_dir}" fetch --no-tags --depth=1 "https://github.com/${repository}.git" "${revision}" >/dev/null 2>&1 || ! git -C "${fixture_dir}" cat-file -e "${revision}^{commit}"; then
echo "::error::${repository}@${revision} is unavailable. Push the companion commit, verify its remote object, then push or validate this UI branch."
rm -rf "${fixture_dir}"
exit 1
fi
rm -rf "${fixture_dir}"
done

- name: Checkout Layout Style CSS contract fixture
uses: actions/checkout@v6
with:
repository: ${{ steps.ecosystem_sources.outputs.layout_repository }}
ref: ${{ steps.ecosystem_sources.outputs.layout_revision }}
path: _ecosystem/Layout-Style-CSS

- name: Checkout Interactive Surface CSS contract fixture
uses: actions/checkout@v6
with:
repository: ${{ steps.ecosystem_sources.outputs.interactive_repository }}
ref: ${{ steps.ecosystem_sources.outputs.interactive_revision }}
path: _ecosystem/Interactive-Surface-CSS

- name: Install Layout Style CSS fixture dependencies
working-directory: _ecosystem/Layout-Style-CSS
run: npm ci

- name: Install Interactive Surface CSS fixture dependencies
working-directory: _ecosystem/Interactive-Surface-CSS
run: npm ci

- name: Install clean-consumer browser
run: npx playwright install --with-deps chromium

# Explicit candidate mode exempts only the unpublished UI version; every companion version still comes from npm.
- name: Run PR-safe ecosystem release preflight
run: npm run release:preflight -- --candidate-package ui-style-kit-css --layout-repo $GITHUB_WORKSPACE/_ecosystem/Layout-Style-CSS --interactive-repo $GITHUB_WORKSPACE/_ecosystem/Interactive-Surface-CSS --layout-docs-repo $GITHUB_WORKSPACE/_ecosystem/Layout-Style-CSS --interactive-docs-repo $GITHUB_WORKSPACE/_ecosystem/Interactive-Surface-CSS

playwright:
name: Playwright E2E
needs: quality
Expand Down
63 changes: 58 additions & 5 deletions .github/workflows/npm-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,13 @@ jobs:
- name: Install dependencies
run: npm ci

# Release verification packs the immutable Task 4 companion artifacts
# selected by the checked-in compatibility contract.
- name: Resolve immutable ecosystem fixture sources
id: ecosystem_sources
shell: bash
run: node scripts/write-ecosystem-workflow-outputs.mjs

- name: Check if version already exists on npm
id: npm_version_check
shell: bash
Expand All @@ -138,6 +145,30 @@ jobs:
echo "${PACKAGE_NAME}@${PACKAGE_VERSION} is not published yet. Proceeding to publish."
fi

# Publishing validates the same remote companion objects after they are
# pushed, so a release never substitutes a stale registry artifact.
- name: Require pushed companion commits before publish verification
if: steps.npm_version_check.outputs.already_published != 'true'
shell: bash
env:
INTERACTIVE_REPOSITORY: ${{ steps.ecosystem_sources.outputs.interactive_repository }}
INTERACTIVE_REVISION: ${{ steps.ecosystem_sources.outputs.interactive_revision }}
LAYOUT_REPOSITORY: ${{ steps.ecosystem_sources.outputs.layout_repository }}
LAYOUT_REVISION: ${{ steps.ecosystem_sources.outputs.layout_revision }}
run: |
set -euo pipefail
for source in "${INTERACTIVE_REPOSITORY}:${INTERACTIVE_REVISION}" "${LAYOUT_REPOSITORY}:${LAYOUT_REVISION}"; do
repository="${source%%:*}"
revision="${source##*:}"
fixture_dir="$(mktemp -d)"
if ! git init --bare "${fixture_dir}" >/dev/null || ! git -C "${fixture_dir}" fetch --no-tags --depth=1 "https://github.com/${repository}.git" "${revision}" >/dev/null 2>&1 || ! git -C "${fixture_dir}" cat-file -e "${revision}^{commit}"; then
echo "::error::${repository}@${revision} is unavailable. Push the companion commit and verify its remote object before publish verification."
rm -rf "${fixture_dir}"
exit 1
fi
rm -rf "${fixture_dir}"
done

- name: Ensure npm token exists
if: steps.npm_version_check.outputs.already_published != 'true'
shell: bash
Expand All @@ -157,26 +188,48 @@ jobs:
if: steps.npm_version_check.outputs.already_published != 'true'
run: npm run test:e2e:install:ci

# The package prepublish gate runs packed ecosystem checks against the
# staged Layout Style CSS 2.1 line before this UI package reaches npm.
# Stage the immutable companion sources so the prepublish gate packs the
# coordinated artifacts and scans their explicitly maintained documentation.
- name: Checkout Layout Style CSS for publish verification
if: steps.npm_version_check.outputs.already_published != 'true'
uses: actions/checkout@v6
with:
repository: Foscat/Layout-Style-CSS
ref: 2.1.0
repository: ${{ steps.ecosystem_sources.outputs.layout_repository }}
ref: ${{ steps.ecosystem_sources.outputs.layout_revision }}
path: _ecosystem/Layout-Style-CSS

- name: Checkout Interactive Surface CSS documentation for publish verification
if: steps.npm_version_check.outputs.already_published != 'true'
uses: actions/checkout@v6
with:
repository: ${{ steps.ecosystem_sources.outputs.interactive_repository }}
ref: ${{ steps.ecosystem_sources.outputs.interactive_revision }}
path: _ecosystem/Interactive-Surface-CSS

# Layout's prepack contract tests inspect its installed UI dependency, so
# install its locked dependency graph before packing it as an ecosystem fixture.
- name: Install Layout Style CSS dependencies for publish verification
if: steps.npm_version_check.outputs.already_published != 'true'
working-directory: _ecosystem/Layout-Style-CSS
run: npm ci

- name: Install Interactive Surface CSS dependencies for publish verification
if: steps.npm_version_check.outputs.already_published != 'true'
working-directory: _ecosystem/Interactive-Surface-CSS
run: npm ci

# Explicit candidate mode exempts only the UI package being published; all
# minimum and companion versions must already resolve from npm.
- name: Run ecosystem release preflight
if: steps.npm_version_check.outputs.already_published != 'true'
run: npm run release:preflight -- --candidate-package ui-style-kit-css --layout-repo $GITHUB_WORKSPACE/_ecosystem/Layout-Style-CSS --interactive-repo $GITHUB_WORKSPACE/_ecosystem/Interactive-Surface-CSS --layout-docs-repo $GITHUB_WORKSPACE/_ecosystem/Layout-Style-CSS --interactive-docs-repo $GITHUB_WORKSPACE/_ecosystem/Interactive-Surface-CSS

- name: Publish package
if: steps.npm_version_check.outputs.already_published != 'true'
run: npm publish --access public
run: npm publish --access public --ignore-scripts
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
UI_STYLE_KIT_LAYOUT_REPO: ${{ github.workspace }}/_ecosystem/Layout-Style-CSS
UI_STYLE_KIT_LAYOUT_DOCS_REPO: ${{ github.workspace }}/_ecosystem/Layout-Style-CSS
UI_STYLE_KIT_INTERACTIVE_REPO: ${{ github.workspace }}/_ecosystem/Interactive-Surface-CSS
UI_STYLE_KIT_INTERACTIVE_DOCS_REPO: ${{ github.workspace }}/_ecosystem/Interactive-Surface-CSS
31 changes: 31 additions & 0 deletions .github/workflows/release-version-alignment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,37 @@ jobs:
- name: Run full UI matrix
run: npm run test:matrix

- name: Resolve immutable ecosystem fixture sources
id: ecosystem_sources
shell: bash
run: node scripts/write-ecosystem-workflow-outputs.mjs

- name: Checkout Layout Style CSS contract fixture
uses: actions/checkout@v6
with:
repository: ${{ steps.ecosystem_sources.outputs.layout_repository }}
ref: ${{ steps.ecosystem_sources.outputs.layout_revision }}
path: _ecosystem/Layout-Style-CSS

- name: Checkout Interactive Surface CSS contract fixture
uses: actions/checkout@v6
with:
repository: ${{ steps.ecosystem_sources.outputs.interactive_repository }}
ref: ${{ steps.ecosystem_sources.outputs.interactive_revision }}
path: _ecosystem/Interactive-Surface-CSS

- name: Install Layout Style CSS fixture dependencies
working-directory: _ecosystem/Layout-Style-CSS
run: npm ci

- name: Install Interactive Surface CSS fixture dependencies
working-directory: _ecosystem/Interactive-Surface-CSS
run: npm ci

# Explicit candidate mode exempts only the UI tag under review while retaining every published companion check.
- name: Run ecosystem release preflight
run: npm run release:preflight -- --candidate-package ui-style-kit-css --layout-repo $GITHUB_WORKSPACE/_ecosystem/Layout-Style-CSS --interactive-repo $GITHUB_WORKSPACE/_ecosystem/Interactive-Surface-CSS --layout-docs-repo $GITHUB_WORKSPACE/_ecosystem/Layout-Style-CSS --interactive-docs-repo $GITHUB_WORKSPACE/_ecosystem/Interactive-Surface-CSS

- name: Restrict manual runs to main
if: github.event_name == 'workflow_dispatch' && github.ref != 'refs/heads/main'
shell: bash
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@

All notable changes to **UI Style Kit CSS** will be documented here.

## [Unreleased]

## [2.2.0] - 2026-08-09

### Added

- Added the public 12-token shared semantic producer contract and its machine-readable manifest inventory for companion and third-party consumers.
- Implemented the manifest-backed semantic component API with 29 exact `.ui-*` selectors, context-constrained `data-ui-variant` values, and unchanged-markup runtime switching across all 11 presets.
- Added a persistent semantic component demo whose DOM nodes and classes remain stable through every preset switch.
- Documented native `<dialog>` as the neutral modal/dialog fallback without inventing `.ui-modal` or `.ui-dialog` selectors.

### Changed

- Clarified that generated default, visual, with-bridge, and focused entrypoints provide semantic aliases, while raw preset sources, partial extras, and deprecated structural aliases remain prefixed compatibility or advanced APIs.
- Preserved `.ui-spinner` and `.ui-tooltip` as retained hooks while generating the other 27 selectors from existing preset declarations.

## [2.1.0] - 2026-07-20

### Added
Expand Down
Loading
Loading