Prepare 0.2.18 release automation

This commit is contained in:
Advait Paliwal
2026-04-15 18:10:56 -07:00
parent d5b6f9cd00
commit 419bcea3d1
9 changed files with 86 additions and 48 deletions

View File

@@ -5,54 +5,93 @@ env:
on: on:
push: push:
branches: [main] tags:
- "v*"
workflow_dispatch: workflow_dispatch:
inputs:
tag:
description: Existing git tag to publish and release (for example: v0.2.18)
required: true
type: string
jobs: jobs:
version-check: verify:
runs-on: blacksmith-4vcpu-ubuntu-2404 runs-on: ubuntu-latest
permissions:
contents: read
outputs: outputs:
version: ${{ steps.version.outputs.version }} tag: ${{ steps.meta.outputs.tag }}
should_release: ${{ steps.version.outputs.should_release }} version: ${{ steps.meta.outputs.version }}
steps: steps:
- uses: actions/checkout@v6 - name: Resolve release metadata
- uses: actions/setup-node@v5 id: meta
with:
node-version: 24.14.0
- id: version
shell: bash shell: bash
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} INPUT_TAG: ${{ inputs.tag }}
REF_NAME: ${{ github.ref_name }}
run: | run: |
LOCAL=$(node -p "require('./package.json').version") TAG="${INPUT_TAG:-$REF_NAME}"
echo "version=$LOCAL" >> "$GITHUB_OUTPUT" VERSION="${TAG#v}"
if gh release view "v$LOCAL" >/dev/null 2>&1; then echo "tag=$TAG" >> "$GITHUB_OUTPUT"
echo "should_release=false" >> "$GITHUB_OUTPUT" echo "version=$VERSION" >> "$GITHUB_OUTPUT"
else - uses: actions/checkout@v6
echo "should_release=true" >> "$GITHUB_OUTPUT" with:
fi ref: refs/tags/${{ steps.meta.outputs.tag }}
- uses: actions/setup-node@v6
with:
node-version: 24
registry-url: "https://registry.npmjs.org"
- run: npm ci
- name: Verify package version matches tag
shell: bash
run: |
ACTUAL="$(node -p "require('./package.json').version")"
EXPECTED="${{ steps.meta.outputs.version }}"
test "$ACTUAL" = "$EXPECTED"
- run: npm test
- run: npm pack
publish-npm:
needs: verify
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v6
with:
ref: refs/tags/${{ needs.verify.outputs.tag }}
- uses: actions/setup-node@v6
with:
node-version: 24
registry-url: "https://registry.npmjs.org"
- run: npm ci
- run: npm publish --provenance --access public
build-native-bundles: build-native-bundles:
needs: version-check needs: verify
if: needs.version-check.outputs.should_release == 'true'
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- id: linux-x64 - id: linux-x64
os: blacksmith-4vcpu-ubuntu-2404 os: ubuntu-latest
- id: darwin-x64 - id: darwin-x64
os: macos-15-intel os: macos-15-intel
- id: darwin-arm64 - id: darwin-arm64
os: macos-14 os: macos-14
- id: win32-x64 - id: win32-x64
os: blacksmith-4vcpu-windows-2025 os: windows-latest
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
permissions:
contents: read
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v6
- uses: actions/setup-node@v5
with: with:
node-version: 24.14.0 ref: refs/tags/${{ needs.verify.outputs.tag }}
- uses: actions/setup-node@v6
with:
node-version: 24
- run: npm ci --ignore-scripts - run: npm ci --ignore-scripts
- run: npm run build - run: npm run build
- run: npm run build:native-bundle - run: npm run build:native-bundle
@@ -82,10 +121,9 @@ jobs:
release-github: release-github:
needs: needs:
- version-check - publish-npm
- build-native-bundles - build-native-bundles
if: needs.version-check.outputs.should_release == 'true' && needs.build-native-bundles.result == 'success' runs-on: ubuntu-latest
runs-on: blacksmith-4vcpu-ubuntu-2404
permissions: permissions:
contents: write contents: write
steps: steps:
@@ -93,22 +131,22 @@ jobs:
with: with:
path: release-assets path: release-assets
merge-multiple: true merge-multiple: true
- shell: bash - name: Create GitHub release
shell: bash
env: env:
GH_REPO: ${{ github.repository }} GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERSION: ${{ needs.version-check.outputs.version }} TAG: ${{ needs.verify.outputs.tag }}
run: | run: |
if gh release view "v$VERSION" >/dev/null 2>&1; then if gh release view "$TAG" >/dev/null 2>&1; then
gh release upload "v$VERSION" release-assets/* --clobber gh release upload "$TAG" release-assets/* --clobber
gh release edit "v$VERSION" \ gh release edit "$TAG" \
--title "v$VERSION" \ --title "$TAG" \
--notes "Standalone Feynman bundles for native installation." \ --notes "Standalone Feynman bundles for native installation." \
--draft=false \ --draft=false \
--target "$GITHUB_SHA" --latest
else else
gh release create "v$VERSION" release-assets/* \ gh release create "$TAG" release-assets/* \
--title "v$VERSION" \ --title "$TAG" \
--notes "Standalone Feynman bundles for native installation." \ --notes "Standalone Feynman bundles for native installation."
--target "$GITHUB_SHA"
fi fi

View File

@@ -25,7 +25,7 @@ curl -fsSL https://feynman.is/install | bash
irm https://feynman.is/install.ps1 | iex irm https://feynman.is/install.ps1 | iex
``` ```
The one-line installer fetches the latest tagged release. To pin a version, pass it explicitly, for example `curl -fsSL https://feynman.is/install | bash -s -- 0.2.17`. The one-line installer fetches the latest tagged release. To pin a version, pass it explicitly, for example `curl -fsSL https://feynman.is/install | bash -s -- 0.2.18`.
The installer downloads a standalone native bundle with its own Node.js runtime. The installer downloads a standalone native bundle with its own Node.js runtime.

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "@companion-ai/feynman", "name": "@companion-ai/feynman",
"version": "0.2.17", "version": "0.2.18",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@companion-ai/feynman", "name": "@companion-ai/feynman",
"version": "0.2.17", "version": "0.2.18",
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "@companion-ai/feynman", "name": "@companion-ai/feynman",
"version": "0.2.17", "version": "0.2.18",
"description": "Research-first CLI agent built on Pi and alphaXiv", "description": "Research-first CLI agent built on Pi and alphaXiv",
"license": "MIT", "license": "MIT",
"type": "module", "type": "module",

View File

@@ -110,7 +110,7 @@ This usually means the release exists, but not all platform bundles were uploade
Workarounds: Workarounds:
- try again after the release finishes publishing - try again after the release finishes publishing
- pass the latest published version explicitly, e.g.: - pass the latest published version explicitly, e.g.:
& ([scriptblock]::Create((irm https://feynman.is/install.ps1))) -Version 0.2.16 & ([scriptblock]::Create((irm https://feynman.is/install.ps1))) -Version 0.2.18
"@ "@
} }

View File

@@ -261,7 +261,7 @@ This usually means the release exists, but not all platform bundles were uploade
Workarounds: Workarounds:
- try again after the release finishes publishing - try again after the release finishes publishing
- pass the latest published version explicitly, e.g.: - pass the latest published version explicitly, e.g.:
curl -fsSL https://feynman.is/install | bash -s -- 0.2.16 curl -fsSL https://feynman.is/install | bash -s -- 0.2.18
EOF EOF
exit 1 exit 1
fi fi

View File

@@ -261,7 +261,7 @@ This usually means the release exists, but not all platform bundles were uploade
Workarounds: Workarounds:
- try again after the release finishes publishing - try again after the release finishes publishing
- pass the latest published version explicitly, e.g.: - pass the latest published version explicitly, e.g.:
curl -fsSL https://feynman.is/install | bash -s -- 0.2.16 curl -fsSL https://feynman.is/install | bash -s -- 0.2.18
EOF EOF
exit 1 exit 1
fi fi

View File

@@ -110,7 +110,7 @@ This usually means the release exists, but not all platform bundles were uploade
Workarounds: Workarounds:
- try again after the release finishes publishing - try again after the release finishes publishing
- pass the latest published version explicitly, e.g.: - pass the latest published version explicitly, e.g.:
& ([scriptblock]::Create((irm https://feynman.is/install.ps1))) -Version 0.2.16 & ([scriptblock]::Create((irm https://feynman.is/install.ps1))) -Version 0.2.18
"@ "@
} }

View File

@@ -117,13 +117,13 @@ These installers download the bundled `skills/` and `prompts/` trees plus the re
The one-line installer already targets the latest tagged release. To pin an exact version, pass it explicitly: The one-line installer already targets the latest tagged release. To pin an exact version, pass it explicitly:
```bash ```bash
curl -fsSL https://feynman.is/install | bash -s -- 0.2.17 curl -fsSL https://feynman.is/install | bash -s -- 0.2.18
``` ```
On Windows: On Windows:
```powershell ```powershell
& ([scriptblock]::Create((irm https://feynman.is/install.ps1))) -Version 0.2.17 & ([scriptblock]::Create((irm https://feynman.is/install.ps1))) -Version 0.2.18
``` ```
## Post-install setup ## Post-install setup