@fiestaboard/ui 1.6.3 → 1.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +18 -38
  2. package/package.json +4 -3
package/README.md CHANGED
@@ -6,23 +6,18 @@ FiestaUI is the [FiestaBoard](https://github.com/Fiestaboard/FiestaBoard) design
6
6
 
7
7
  ## Installation
8
8
 
9
- The package is published to the **GitHub Packages npm registry** (not npmjs.com — yet). GitHub Packages requires authentication to install, even for public packages, so consumers need a one-time setup:
10
-
11
- 1. Create a [personal access token](https://github.com/settings/tokens) with the `read:packages` scope.
12
- 2. Configure npm (in `~/.npmrc`, NOT committed to any repo):
13
-
14
- ```ini
15
- @fiestaboard:registry=https://npm.pkg.github.com
16
- //npm.pkg.github.com/:_authToken=YOUR_TOKEN
17
- ```
18
-
19
- 3. Install:
9
+ ```bash
10
+ npm install @fiestaboard/ui
11
+ ```
20
12
 
21
- ```bash
22
- npm install @fiestaboard/ui
23
- ```
13
+ No token, no `.npmrc`, no registry configuration — the package is public on
14
+ [registry.npmjs.org](https://www.npmjs.com/package/@fiestaboard/ui) and installs anonymously,
15
+ in CI and Docker builds as much as locally.
24
16
 
25
- In GitHub Actions, use the workflow's `GITHUB_TOKEN` (with `packages: read`) as `NODE_AUTH_TOKEN` via `actions/setup-node`'s `registry-url`/`scope` options instead of a PAT.
17
+ > Before 1.6.3 this package lived on the GitHub Packages npm registry, which requires
18
+ > authentication for every read even when the package is public. If you still have a
19
+ > `@fiestaboard:registry=https://npm.pkg.github.com` line in an `.npmrc` anywhere, delete it —
20
+ > it will pin you to the old registry and to versions no longer published there.
26
21
 
27
22
  Peer dependencies: `react` / `react-dom` ^19, `lucide-react`, and `tailwindcss` ^4 in the consuming app.
28
23
 
@@ -96,17 +91,15 @@ npm run build && npm pack # produces fiestaboard-ui-<version>.tgz
96
91
 
97
92
  ## Releasing
98
93
 
99
- Releases are manual: **Actions → Release → Run workflow**, choosing a `patch` / `minor` / `major` bump. The workflow bumps the version, tags `v<version>`, publishes to npm, and creates a GitHub Release.
94
+ Releases are continuous: every merge to `main` that changes shipped code bumps the version, tags `v<version>`, publishes to [registry.npmjs.org](https://www.npmjs.com/package/@fiestaboard/ui), and creates a GitHub Release. `scripts/release/gate.mjs` decides whether a merge earns a release and how big a bump; CI-only changes (workflows, `scripts/ci`, VRT baselines) mint nothing. **Actions → Release → Run workflow** remains the manual override.
100
95
 
101
- Publishing authenticates with the workflow's built-in `GITHUB_TOKEN` (`packages: write`) — no npm account, no long-lived secrets, nothing to rotate.
96
+ Publishing uses [npm Trusted Publishing](https://docs.npmjs.com/trusted-publishers/) (OIDC). The workflow's `id-token: write` permission mints a short-lived credential that npm exchanges for publish rights, so there is no npm token anywhere — nothing to store, leak, or rotate. Provenance is attested from the OIDC claims, linking each tarball to the workflow run that built it.
102
97
 
103
- If the package later moves to registry.npmjs.org (which would allow anonymous installs), switch the release workflow to [npm Trusted Publishing](https://docs.npmjs.com/trusted-publishers/) (OIDC); note that npm's [bypass-2FA token deprecation](https://github.blog/changelog/2026-07-08-npm-install-time-security-and-gat-bypass2fa-deprecation/) means the first npmjs publish must be done manually, satisfying 2FA interactively (see below).
98
+ This requires a **trusted publisher configured on the npmjs package** — repository `Fiestaboard/FiestaUI`, workflow `release.yml`. Without it the publish step fails outright; it does not fall back to a token.
104
99
 
105
- ### Bootstrapping the npmjs publish
100
+ ### Publishing by hand
106
101
 
107
- `npm run release:npmjs` performs that manual first publish. It is a local, human-run
108
- command by design: Trusted Publishing can only be configured on a package that already
109
- exists on npmjs, and the 2FA challenge cannot come from CI.
102
+ `npm run release:npmjs` builds and publishes from a local checkout. It exists as an escape hatch for when the workflow is broken — normal releases should go through CI.
110
103
 
111
104
  ```bash
112
105
  npm login # once — web-based, completes 2FA in the browser
@@ -114,22 +107,9 @@ npm run release:npmjs -- --dry-run # inspect the tarball contents first
114
107
  npm run release:npmjs # publish; completes 2FA interactively
115
108
  ```
116
109
 
117
- The account's 2FA mode is `auth-and-writes` (check with `npm profile get`), so the
118
- publish itself needs a second factor. **Do not pass `--otp`** unless you have a TOTP
119
- authenticator app — with a passkey or hardware security key there is no code to type.
120
- With `auth-type=web` (npm's default) the CLI instead prints a
121
- `https://www.npmjs.com/login/<uuid>` URL; open it, satisfy the passkey, and the publish
122
- continues. `--otp=<code>` remains valid only for authenticator-app users.
123
-
124
- The script rebuilds before publishing (`files` ships only `dist`, and there is no
125
- `prepack` hook, so a stale `dist/` would otherwise publish silently-wrong contents) and
126
- passes `--access public` because scoped packages default to `restricted`. The
127
- `--registry` flag overrides `publishConfig.registry`, so this leaves the GitHub Packages
128
- release workflow untouched — both registries serve the same version until the migration
129
- completes.
130
-
131
- Publish from an up-to-date `main`. The version comes from `package.json`, so a stale
132
- checkout would point npmjs's `latest` tag at a superseded release.
110
+ The account's 2FA mode is `auth-and-writes` (check with `npm profile get`), so the publish needs a second factor. **Do not pass `--otp`** unless you have a TOTP authenticator app — with a passkey or hardware security key there is no code to type. With `auth-type=web` (npm's default) the CLI prints a `https://www.npmjs.com/login/<uuid>` URL; open it, satisfy the passkey, and the publish continues.
111
+
112
+ The script rebuilds first because `files` ships only `dist` and there is no `prepack` hook, so a stale `dist/` would otherwise publish silently-wrong contents — unrecoverable, since npm forbids republishing a version. Publish from an up-to-date `main`: the version comes from `package.json`, so a stale checkout would point npmjs's `latest` tag at a superseded release.
133
113
 
134
114
  ## Downstream upgrade automation
135
115
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiestaboard/ui",
3
- "version": "1.6.3",
3
+ "version": "1.6.4",
4
4
  "description": "FiestaUI — the FiestaBoard design system. React components on Base UI with Tailwind v4 design tokens.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -53,7 +53,7 @@
53
53
  "perf:bench": "node scripts/perf/bench.mjs",
54
54
  "perf:test": "node --test scripts/perf/tests/*.test.mjs",
55
55
  "release:test": "node --test scripts/ci/tests/*.test.mjs scripts/release/tests/*.test.mjs",
56
- "release:npmjs": "npm run build && npm publish --registry=https://registry.npmjs.org --access public"
56
+ "release:npmjs": "npm run build && npm publish"
57
57
  },
58
58
  "dependencies": {
59
59
  "@base-ui/react": "^1.6.0",
@@ -103,6 +103,7 @@
103
103
  "vite": "^8.1.5"
104
104
  },
105
105
  "publishConfig": {
106
- "registry": "https://npm.pkg.github.com"
106
+ "registry": "https://registry.npmjs.org",
107
+ "access": "public"
107
108
  }
108
109
  }