diff --git a/.changeset/olive-crabs-smash.md b/.changeset/olive-crabs-smash.md new file mode 100644 index 0000000..1800753 --- /dev/null +++ b/.changeset/olive-crabs-smash.md @@ -0,0 +1,5 @@ +--- +"brand-shell": minor +--- + +Expand release PR pack canary coverage to React, Vue, and Svelte npm starter apps. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a3ede2..4478aca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,11 +45,21 @@ jobs: if: ${{ !startsWith(github.event.pull_request.title, 'chore(release):') }} pack-starter-canary: - name: Pack + Starter Canary (release PRs) + name: Pack + Starter Canary (${{ matrix.starter.name }}) runs-on: ubuntu-latest if: >- github.event_name == 'pull_request' && startsWith(github.event.pull_request.title, 'chore(release):') + strategy: + fail-fast: false + matrix: + starter: + - name: react + path: starters/react-npm + - name: vue + path: starters/vue-npm + - name: svelte + path: starters/svelte-npm steps: - name: Checkout @@ -81,13 +91,13 @@ jobs: echo "TARBALL=${tarball}" >> "$GITHUB_OUTPUT" - name: Install tarball into starter - run: bun add ./${{ steps.pack.outputs.TARBALL }} --cwd starters/react-npm --exact + run: bun add ./${{ steps.pack.outputs.TARBALL }} --cwd ${{ matrix.starter.path }} --exact - name: Install starter dependencies - run: bun install --cwd starters/react-npm --frozen-lockfile + run: bun install --cwd ${{ matrix.starter.path }} - name: Build starter - run: bun run --cwd starters/react-npm build + run: bun run --cwd ${{ matrix.starter.path }} build storybook-changes: name: Detect Storybook Changes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6ce756c..e318d8c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -77,14 +77,18 @@ Release is automated through GitHub Actions. ## Starter Canary -The `starters/react-npm` app is intentionally a "real npm consumer" (no local `dist` aliases). +The starter apps are intentionally "real npm consumers" (no local `dist` aliases): -Release PRs run a deterministic canary in CI: +- `starters/react-npm` +- `starters/vue-npm` +- `starters/svelte-npm` + +Release PRs run a best-effort starter canary smoke in CI: - build library - `npm pack` the exact publish artifact -- install the tarball into `starters/react-npm` -- run `bun run build` in the starter +- install the tarball into each starter +- run `bun run build` for each starter ## Pull Request Checklist diff --git a/starters/react-npm/bun.lock b/starters/react-npm/bun.lock index e2ccd00..dfa54a1 100644 --- a/starters/react-npm/bun.lock +++ b/starters/react-npm/bun.lock @@ -5,7 +5,6 @@ "": { "name": "brand-shell-starter-react", "dependencies": { - "brand-shell": "latest", "react": "^18.3.1", "react-dom": "^18.3.1", }, @@ -178,12 +177,12 @@ "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + "@types/node": ["@types/node@22.19.11", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@5.1.4", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA=="], "baseline-browser-mapping": ["baseline-browser-mapping@2.9.19", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg=="], - "brand-shell": ["brand-shell@0.5.0", "", { "peerDependencies": { "react": ">=18.0.0", "svelte": ">=5.0.0", "vue": ">=3.5.0" }, "optionalPeers": ["react", "svelte", "vue"] }, "sha512-5pnmIix2OS8b521Jvu004TlJEwLx+7NqmMOqTcShCy/o2U1gU/uM4NLq/Qhy+b7qWmGNjL3hWx/7suMKC4yt8g=="], - "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "caniuse-lite": ["caniuse-lite@1.0.30001770", "", {}, "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw=="], @@ -204,6 +203,8 @@ "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], + "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], @@ -242,6 +243,8 @@ "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], + "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], "vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="], diff --git a/starters/react-npm/src/App.jsx b/starters/react-npm/src/App.jsx index 39b1933..3a888c7 100644 --- a/starters/react-npm/src/App.jsx +++ b/starters/react-npm/src/App.jsx @@ -33,7 +33,7 @@ export function App() {

Starter smoke

- This app exists to validate the published package (tagged next) before promoting to latest. + This app validates the published npm artifact through the React adapter.