Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 5 additions & 4 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Add these **repository Actions secrets** in the GitHub UI (do not commit values)
| `FTP_USERNAME_PRODUCTION` | FTPS username |
| `FTP_PASSWORD_PRODUCTION` | FTPS password |
| `ANTHROPIC_API_KEY` | Optional. Manual Skills eval only (`skills-eval.yml`). Not required for docs deploy or for using the published skills. |
| `NPM_TOKEN` | Optional. Only for the manual **Publish to npm** workflow (`workflow_dispatch`). Local `npm publish` from the release tag needs no Actions secret. |
| `NPM_TOKEN` | Optional. Only for the manual **Publish to npm** workflow (`workflow_dispatch`). Local `npm publish` from `develop` needs no Actions secret. |

After secrets exist, push to `main` or run **Deploy docs** via `workflow_dispatch`.

Expand All @@ -54,9 +54,10 @@ After secrets exist, push to `main` or run **Deploy docs** via `workflow_dispatc
1. On `develop`: update `CHANGELOG.md` (Keep a Changelog) and the `package.json` version.
2. Run `npm run docs:build`. This rebuilds `dist/`, then `docs:sri` rewrites `docs/public/sri.json` and re-pins the versioned CDN + SRI snippets in `docs/getting-started.md`, `docs/theming.md` and `docs/theming/dark-mode.md`. Commit the result.
3. Update the version strings no script patches: the self-host archive link in `docs/getting-started.md` and the `?v<major>` cache-buster in `src/docs/kitchen-sink/` (major releases only).
4. Open the release PR `develop` into `main` and merge it. Confirm the docs deploy triggered by the push to `main`.
5. On `main`, create an annotated tag and GitHub Release (`vX.Y.Z`). Publishing to npm is **manual**: check out the tag and run `npm publish --provenance --access public`. Optionally dispatch **Publish to npm** after `NPM_TOKEN` is set; the workflow does not run on `release: published`.
6. Delete merged branches. Keep `develop`.
4. Publish to npm (manual) from `develop`: `npm ci`, `npm login`, `npm publish --access public`. `prepublishOnly` rebuilds `dist/`; `--provenance` fails outside CI. The docs pin this version on jsDelivr, so it must be live before step 5. Alternatively dispatch **Publish to npm** on `develop` after `NPM_TOKEN` is set; it does not run on `release: published`.
5. Open the release PR `develop` into `main` and merge it. Confirm the docs deploy triggered by the push to `main`.
6. On `main`, create an annotated tag and GitHub Release (`vX.Y.Z`).
7. Delete merged branches. Keep `develop`.

### Visual baselines (Playwright)

Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
name: Publish to npm

# Manual only. Releases do not publish automatically: the maintainer runs
# `npm publish --provenance --access public` from the tagged tree, or dispatches
# this workflow after `NPM_TOKEN` is set in Actions secrets.
# `npm publish --access public` from `develop`, or dispatches this
# workflow after `NPM_TOKEN` is set in Actions secrets. `--provenance` needs
# CI OIDC, so it only works here, not locally.
on:
workflow_dispatch:

Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- HTML-scene brand image generator.

### Fixed

- Built CSS banners, the skills index, and docs CDN + SRI snippets report 6.2.2.

## [6.2.1] - 2026-09-29

### Changed
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Repo Actions secrets required for docs deploy (same names as md2pdf FTPS):
| `FTP_PASSWORD_PRODUCTION` | FTPS password |
| `ANTHROPIC_API_KEY` | Optional. Only for the manual Skills eval workflow (`workflow_dispatch`). Absent → exit 0. Never a PR gate. |

`NPM_TOKEN` is optional. Local `npm publish` from the release tag needs no Actions secret. The **Publish to npm** workflow is `workflow_dispatch` only (it does not run on GitHub Release publish). Dispatch it only after the secret exists. Agents must not invent or commit secret values. Consumers of `npx bullframe.css skills install` need no API key.
`NPM_TOKEN` is optional. Local `npm publish` from `develop` needs no Actions secret. The **Publish to npm** workflow is `workflow_dispatch` only (it does not run on GitHub Release publish). Dispatch it only after the secret exists. Agents must not invent or commit secret values. Consumers of `npx bullframe.css skills install` need no API key.

## Changelog

Expand Down
2 changes: 1 addition & 1 deletion dist/css/bullframe-classless-dark.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* ! Bullframe CSS v6.2.1 | MIT License | https://github.com/marcop135/bullframe.css */
/* ! Bullframe CSS v6.2.2 | MIT License | https://github.com/marcop135/bullframe.css */

/* Always-dark classless build. */

Expand Down
2 changes: 1 addition & 1 deletion dist/css/bullframe-classless-dark.min.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-classless-dark.min.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-classless-system-default.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* ! Bullframe CSS v6.2.1 | MIT License | https://github.com/marcop135/bullframe.css */
/* ! Bullframe CSS v6.2.2 | MIT License | https://github.com/marcop135/bullframe.css */

/* Classless + system dark via prefers-color-scheme (element styles only). */

Expand Down
2 changes: 1 addition & 1 deletion dist/css/bullframe-classless-system-default.min.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-classless-system-default.min.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-classless.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* ! Bullframe CSS v6.2.1 | MIT License | https://github.com/marcop135/bullframe.css */
/* ! Bullframe CSS v6.2.2 | MIT License | https://github.com/marcop135/bullframe.css */

/* Classless build: semantic element styles only (no .bf-* classes). */

Expand Down
2 changes: 1 addition & 1 deletion dist/css/bullframe-classless.min.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-classless.min.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-dark.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* ! Bullframe CSS v6.2.1 | MIT License | https://github.com/marcop135/bullframe.css */
/* ! Bullframe CSS v6.2.2 | MIT License | https://github.com/marcop135/bullframe.css */

/* Always-dark class-based build. */

Expand Down
2 changes: 1 addition & 1 deletion dist/css/bullframe-dark.min.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-dark.min.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-system-default.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* ! Bullframe CSS v6.2.1 | MIT License | https://github.com/marcop135/bullframe.css */
/* ! Bullframe CSS v6.2.2 | MIT License | https://github.com/marcop135/bullframe.css */

/* Class-based + system dark: bullframe.css, then dark rules under prefers-color-scheme. */

Expand Down
2 changes: 1 addition & 1 deletion dist/css/bullframe-system-default.min.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-system-default.min.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-utilities.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* ! Bullframe CSS v6.2.1 | MIT License | https://github.com/marcop135/bullframe.css */
/* ! Bullframe CSS v6.2.2 | MIT License | https://github.com/marcop135/bullframe.css */

/* Utilities-only build: tokens + .bf-* helpers (no base element styles). */

Expand Down
2 changes: 1 addition & 1 deletion dist/css/bullframe-utilities.min.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe-utilities.min.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe.css
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* ! Bullframe CSS v6.2.1 | MIT License | https://github.com/marcop135/bullframe.css */
/* ! Bullframe CSS v6.2.2 | MIT License | https://github.com/marcop135/bullframe.css */

/* Class-based default build (light). Import map for the full framework. */

Expand Down
2 changes: 1 addition & 1 deletion dist/css/bullframe.min.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/css/bullframe.min.css.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/skills/api.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bullframe.css",
"version": "6.2.1",
"version": "6.2.2",
"docs": "https://bullframecss.marcopontili.com",
"builds": [
{
Expand Down
2 changes: 1 addition & 1 deletion dist/skills/index.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bullframe.css",
"version": "6.2.1",
"version": "6.2.2",
"docs": "https://bullframecss.marcopontili.com",
"api": "api.json",
"agentsBlock": "AGENTS.bullframe.md",
Expand Down
8 changes: 4 additions & 4 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Quick drop-in (latest published package entry):
**Recommended for production:** pin an exact version, point at a published `.min.css` file, and add Subresource Integrity plus `crossorigin`. Package-root / unversioned CDN URLs are not SRI-safe.

```html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe.min.css" integrity="sha384-yWDof8CTMEkowmjk4t/3A/M7E1np4Oq+5jsFd0StDsQRvRDR/eOmzhfeYAZSq6eU" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe.min.css" integrity="sha384-BhYzNPmgYBaxx3Ovu2oxCblRVNUS2uq4YWb6q8FtV6YCLZ9y/5VMRVpqz8l3TFh4" crossorigin="anonymous" />
```

Swap the filename for another build (`bullframe-classless.min.css`, `bullframe-dark.min.css`, …). Hashes for all seven builds: [sri.json](/sri.json).
Expand Down Expand Up @@ -104,7 +104,7 @@ import 'bullframe.css/utilities';

## Download

Self-host from the [v6.2.0 archive](https://github.com/marcop135/bullframe.css/archive/refs/tags/v6.2.0.zip). Source maps ship beside the minified CSS in `dist/css/`.
Self-host from the [v6.2.2 archive](https://github.com/marcop135/bullframe.css/archive/refs/tags/v6.2.2.zip). Source maps ship beside the minified CSS in `dist/css/`.

## Starter HTML

Expand All @@ -117,7 +117,7 @@ Self-host from the [v6.2.0 archive](https://github.com/marcop135/bullframe.css/a
<meta charset="utf-8" />
<title>Bullframe CSS Starter</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe.min.css" integrity="sha384-yWDof8CTMEkowmjk4t/3A/M7E1np4Oq+5jsFd0StDsQRvRDR/eOmzhfeYAZSq6eU" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe.min.css" integrity="sha384-BhYzNPmgYBaxx3Ovu2oxCblRVNUS2uq4YWb6q8FtV6YCLZ9y/5VMRVpqz8l3TFh4" crossorigin="anonymous" />
</head>
<body>
<a class="bf-skip-link" href="#main">Skip to content</a>
Expand All @@ -138,7 +138,7 @@ Self-host from the [v6.2.0 archive](https://github.com/marcop135/bullframe.css/a
<meta charset="utf-8" />
<title>Bullframe CSS Classless Starter</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-classless.min.css" integrity="sha384-32vn9uOL8LKcipdEkc0z5RHGLeiRiArpkjpPTPOfGPuXEVzN1uLVLWxf9S80jJVC" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-classless.min.css" integrity="sha384-+QwB6qpq3lV/82Ho9Gqnto/rX+wpNo7wtXBwCFRFOP8RasV/SevTJOAuNAI/egdY" crossorigin="anonymous" />
<style>
body {
margin-left: auto;
Expand Down
32 changes: 16 additions & 16 deletions docs/public/sri.json
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
{
"version": "6.2.1",
"version": "6.2.2",
"algorithm": "sha384",
"generatedAt": "2026-09-29T12:13:34.434Z",
"generatedAt": "2026-10-02T10:09:47.378Z",
"files": {
"bullframe.min.css": {
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe.min.css",
"integrity": "sha384-yWDof8CTMEkowmjk4t/3A/M7E1np4Oq+5jsFd0StDsQRvRDR/eOmzhfeYAZSq6eU",
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe.min.css",
"integrity": "sha384-BhYzNPmgYBaxx3Ovu2oxCblRVNUS2uq4YWb6q8FtV6YCLZ9y/5VMRVpqz8l3TFh4",
"crossorigin": "anonymous"
},
"bullframe-dark.min.css": {
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-dark.min.css",
"integrity": "sha384-rOBU+2K0jzOie/z89918PWzDd0HSmmN9w15GyJnZIOYbEylte7l9TJKtA95iyfjm",
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-dark.min.css",
"integrity": "sha384-7AtSvUjEjHp0wc6IBvtz+MfmBxglADw2GnlgPKOryTDE8YPGoxTo8rvectm5nJqd",
"crossorigin": "anonymous"
},
"bullframe-system-default.min.css": {
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-system-default.min.css",
"integrity": "sha384-PRYo6KOJBNupLQILMfcQQuZ3qfxYLT0JourY4DgfrpwN3d2+CQhQc3cPG41/tpg+",
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-system-default.min.css",
"integrity": "sha384-Auun6ZESNGdPZw2s9kfQ7sppDm4QMuZUg7MJPG3cBDwT8MsGbDpaRbwei4lwpNV2",
"crossorigin": "anonymous"
},
"bullframe-classless.min.css": {
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-classless.min.css",
"integrity": "sha384-32vn9uOL8LKcipdEkc0z5RHGLeiRiArpkjpPTPOfGPuXEVzN1uLVLWxf9S80jJVC",
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-classless.min.css",
"integrity": "sha384-+QwB6qpq3lV/82Ho9Gqnto/rX+wpNo7wtXBwCFRFOP8RasV/SevTJOAuNAI/egdY",
"crossorigin": "anonymous"
},
"bullframe-classless-dark.min.css": {
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-classless-dark.min.css",
"integrity": "sha384-OzBHfWHCd/fWX1D63YQpFnn2DoWNAZbODaKbE4dv5WDb69cInjd/8Mx48UNfsd8G",
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-classless-dark.min.css",
"integrity": "sha384-nCZwzAsqkRZi9gT8x75oklKfFbXnbeGcNOKhttl1xQ7yyoKr0WYwUiqZ7ItNu/uE",
"crossorigin": "anonymous"
},
"bullframe-classless-system-default.min.css": {
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-classless-system-default.min.css",
"integrity": "sha384-70UCYl+DX6lKKeWDAumsiyGgWyCwB6breOBTIL1j8pknVaTa+MyBhPLJDeeUya09",
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-classless-system-default.min.css",
"integrity": "sha384-nxuvBkIgdvaiU7Is9Nzo3DYqn98qCEe094C/D0tmm8jNk+Hm00WEA2MTIJ3VjQWr",
"crossorigin": "anonymous"
},
"bullframe-utilities.min.css": {
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-utilities.min.css",
"integrity": "sha384-lGUEW5MFXTpQwkaVAtJWYxpDAoenOFCcW/8UhDM+ckvBfmSG45CqlKmvesgf+cSH",
"href": "https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-utilities.min.css",
"integrity": "sha384-Xfa0giNMuqAydFpRWUN98iqPNYv5PH7DL+dqg7AMClbBus396yNNEIbR/Lbsoug2",
"crossorigin": "anonymous"
}
}
Expand Down
6 changes: 3 additions & 3 deletions docs/theming.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Bullframe CSS provides multiple theme variants and easy customization options. O
<!-- sri:cdn-light:start -->

```html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe.min.css" integrity="sha384-yWDof8CTMEkowmjk4t/3A/M7E1np4Oq+5jsFd0StDsQRvRDR/eOmzhfeYAZSq6eU" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe.min.css" integrity="sha384-BhYzNPmgYBaxx3Ovu2oxCblRVNUS2uq4YWb6q8FtV6YCLZ9y/5VMRVpqz8l3TFh4" crossorigin="anonymous" />
```

<!-- sri:cdn-light:end -->
Expand All @@ -19,7 +19,7 @@ Bullframe CSS provides multiple theme variants and easy customization options. O
<!-- sri:cdn-dark:start -->

```html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-dark.min.css" integrity="sha384-rOBU+2K0jzOie/z89918PWzDd0HSmmN9w15GyJnZIOYbEylte7l9TJKtA95iyfjm" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-dark.min.css" integrity="sha384-7AtSvUjEjHp0wc6IBvtz+MfmBxglADw2GnlgPKOryTDE8YPGoxTo8rvectm5nJqd" crossorigin="anonymous" />
```

<!-- sri:cdn-dark:end -->
Expand All @@ -31,7 +31,7 @@ Switches between light and dark from `prefers-color-scheme`:
<!-- sri:cdn-system:start -->

```html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-system-default.min.css" integrity="sha384-PRYo6KOJBNupLQILMfcQQuZ3qfxYLT0JourY4DgfrpwN3d2+CQhQc3cPG41/tpg+" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-system-default.min.css" integrity="sha384-Auun6ZESNGdPZw2s9kfQ7sppDm4QMuZUg7MJPG3cBDwT8MsGbDpaRbwei4lwpNV2" crossorigin="anonymous" />
```

<!-- sri:cdn-system:end -->
Expand Down
4 changes: 2 additions & 2 deletions docs/theming/dark-mode.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The `bullframe-system-default.css` build automatically switches between light an
<!-- sri:cdn-system:start -->

```html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-system-default.min.css" integrity="sha384-PRYo6KOJBNupLQILMfcQQuZ3qfxYLT0JourY4DgfrpwN3d2+CQhQc3cPG41/tpg+" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-system-default.min.css" integrity="sha384-Auun6ZESNGdPZw2s9kfQ7sppDm4QMuZUg7MJPG3cBDwT8MsGbDpaRbwei4lwpNV2" crossorigin="anonymous" />
```

<!-- sri:cdn-system:end -->
Expand All @@ -23,7 +23,7 @@ Use `bullframe-dark.css` for a permanent dark theme:
<!-- sri:cdn-dark:start -->

```html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.1/dist/css/bullframe-dark.min.css" integrity="sha384-rOBU+2K0jzOie/z89918PWzDd0HSmmN9w15GyJnZIOYbEylte7l9TJKtA95iyfjm" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bullframe.css@6.2.2/dist/css/bullframe-dark.min.css" integrity="sha384-7AtSvUjEjHp0wc6IBvtz+MfmBxglADw2GnlgPKOryTDE8YPGoxTo8rvectm5nJqd" crossorigin="anonymous" />
```

<!-- sri:cdn-dark:end -->
Expand Down
2 changes: 1 addition & 1 deletion tests/skills/__snapshots__/index.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bullframe.css",
"version": "6.2.1",
"version": "6.2.2",
"docs": "https://bullframecss.marcopontili.com",
"api": "api.json",
"agentsBlock": "AGENTS.bullframe.md",
Expand Down
Loading