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
21 changes: 21 additions & 0 deletions .github/node-maintenance.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"directory": "website",
"toolchain": {
"node": "24",
"pnpm": "11.21.0"
},
"validationScript": "check",
"minimumReleaseAgeDays": 10,
"maintenance": {
"mode": "security-and-maintenance",
"upgradeScope": "major"
},
"schedule": {
"security": [
"0 2 * * 1"
],
"upgrades": [
"0 2 1 */3 *"
]
}
}
9 changes: 3 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -180,18 +180,15 @@ jobs:

- uses: actions/setup-node@v4
with:
node-version: "22"
node-version-file: website/.nvmrc
cache: pnpm
cache-dependency-path: website/pnpm-lock.yaml

- name: Install website dependencies
run: pnpm --dir website install --frozen-lockfile

- name: Check generated schema docs
run: python website/scripts/update_recording_schema_docs.py --check

- name: Build website
run: pnpm --dir website build
- name: Check generated schema docs and build website
run: pnpm --dir website run check

- name: Summary
if: always()
Expand Down
43 changes: 43 additions & 0 deletions .github/workflows/dependency-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Node dependency audit

'on':
schedule:
- cron: '0 2 * * 1'
- cron: '0 2 1 */3 *'
workflow_dispatch:
inputs:
audit-kind:
description: Security fixes only, or security plus routine upgrades for this run.
type: choice
default: security
options:
- security
- upgrades

permissions:
contents: read

concurrency:
group: dependency-audit
cancel-in-progress: false

jobs:
audit:
permissions:
contents: read
issues: write
uses: hydra-ecosystem/github-actions/.github/workflows/node-audit.yml@241d646f6b83d17aeee2bb97a8c1e1e788eb6099
with:
audit-kind: ${{ inputs.audit-kind || 'auto' }}

pull-request:
needs: audit
permissions:
contents: write
pull-requests: write
uses: hydra-ecosystem/github-actions/.github/workflows/node-publish.yml@241d646f6b83d17aeee2bb97a8c1e1e788eb6099
with:
validation-passed: ${{ needs.audit.outputs.validation_passed }}
app-client-id: ${{ vars.NODE_AUDIT_APP_CLIENT_ID }}
secrets:
app-private-key: ${{ secrets.NODE_AUDIT_APP_PRIVATE_KEY }}
2 changes: 1 addition & 1 deletion .github/workflows/deploy-website.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
package_json_file: website/package.json
- uses: actions/setup-node@v4
with:
node-version: "22"
node-version-file: website/.nvmrc
cache: pnpm
cache-dependency-path: website/pnpm-lock.yaml
- name: Install dependencies
Expand Down
46 changes: 40 additions & 6 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,34 +14,68 @@ python -m pip install -e '.[dev]'

## Website development

Install `pnpm` once per machine if needed:
Use Node 24, as declared in `website/.nvmrc`.
The website pins pnpm 11.21.0 in `website/package.json`. Enable Corepack
with your Node installation:

```bash
npm install --global pnpm@10.14.0
corepack enable
```

Install the website dependencies once per checkout, and again when the lockfile
changes:

```bash
pnpm --dir website install
cd website
corepack pnpm install --frozen-lockfile
```

Start the local development server whenever you work on the website:

```bash
pnpm --dir website start
corepack pnpm start
```

## Validation

Run these common checks before submitting a change:
From the repository root, run these common checks before submitting a change.
The website check verifies generated schema docs before the production build:

```bash
nox -s tests
pnpm --dir website build
cd website
corepack pnpm run check
```

## Website dependency maintenance

[Shared Node maintenance workflows](https://github.com/hydra-ecosystem/github-actions/blob/main/docs/node-maintenance.md)
audit the standalone `website` project and validate proposals with its `check`
script. This runs the schema checks and production build. The configuration in
`.github/node-maintenance.json` requires Node 24 and pnpm 11.21.0, matching the
project declarations. Setup changes are reviewed here; the audit reports a
configuration mismatch in the run and one configuration issue rather than
silently rewriting declarations.

Security checks run every Monday at 02:00 UTC. Routine upgrades, including major
versions, run on the first day of January, April, July, and October at 02:00 UTC.
To run either check sooner, open **Actions → Node dependency audit → Run workflow**
on `main` and select `security` or `upgrades`. Change a cadence in both the JSON
configuration and `.github/workflows/dependency-audit.yml`.

Before the first run, enable **Allow GitHub Actions to create and approve pull
requests** under **Settings → Actions → General → Workflow permissions**.
The built-in `GITHUB_TOKEN` opens or updates the maintenance PR after candidate
validation; it does not trigger additional PR workflows. Maintenance does not
deploy the website.

The workspace applies a ten-day release delay and explicit dependency build
script approvals. It retains the existing security overrides and the `core-js`
build approval. Review any additional approvals a dependency update needs.
After merging setup, dispatch a `security` audit from `main` and inspect the
configuration result, validation, and dependency report before merging any
maintenance PR.

## Release procedure

Releases are prepared on `main` and published only after the release candidate
Expand Down
1 change: 1 addition & 0 deletions website/.nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
8 changes: 6 additions & 2 deletions website/package.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
{
"name": "omegaflow-website",
"private": true,
"packageManager": "pnpm@11.13.1",
"packageManager": "pnpm@11.21.0",
"scripts": {
"schema-docs": "python3 scripts/update_recording_schema_docs.py",
"build": "python3 scripts/update_recording_schema_docs.py && docusaurus build",
"serve": "docusaurus serve --port 6761",
"start": "docusaurus start --port 6761 --no-open"
"start": "docusaurus start --port 6761 --no-open",
"check": "python3 scripts/update_recording_schema_docs.py --check && pnpm run build"
},
"dependencies": {
"@docusaurus/core": "^3.10.2",
"@docusaurus/preset-classic": "^3.10.2",
"@docusaurus/theme-mermaid": "^3.10.2",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"engines": {
"node": ">=24"
}
}
9 changes: 9 additions & 0 deletions website/pnpm-workspace.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
packages:
- "."

minimumReleaseAge: 14400
blockExoticSubdeps: true
strictDepBuilds: true

allowBuilds:
core-js: true
core-js-pure: false
fsevents: false

overrides:
copy-webpack-plugin>serialize-javascript: 7.0.5
Expand Down
Loading