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
29 changes: 0 additions & 29 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ jobs:
strategy:
matrix:
include:
- { goos: darwin, goarch: amd64 }
- { goos: darwin, goarch: arm64 }
- { goos: linux, goarch: amd64 }
- { goos: linux, goarch: arm64 }
Expand Down Expand Up @@ -56,7 +55,6 @@ jobs:
matrix:
include:
- { runner: macos-14, goos: darwin, goarch: arm64 }
- { runner: macos-13, goos: darwin, goarch: amd64 }
- { runner: ubuntu-latest, goos: linux, goarch: amd64 }
- { runner: ubuntu-24.04-arm, goos: linux, goarch: arm64 }
- { runner: windows-latest, goos: windows, goarch: amd64 }
Expand Down Expand Up @@ -114,7 +112,6 @@ jobs:
matrix:
include:
- { runner: macos-14, goos: darwin, goarch: arm64 }
- { runner: macos-13, goos: darwin, goarch: amd64 }
- { runner: ubuntu-latest, goos: linux, goarch: amd64 }
- { runner: ubuntu-24.04-arm, goos: linux, goarch: arm64 }
- { runner: windows-latest, goos: windows, goarch: amd64 }
Expand Down Expand Up @@ -155,29 +152,3 @@ jobs:
with:
files: dist/*
generate_release_notes: true

publish-npm:
needs: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
registry-url: 'https://registry.npmjs.org'
- name: Assert NPM_TOKEN is set
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
if [ -z "$NODE_AUTH_TOKEN" ]; then
echo "::error::NPM_TOKEN secret is not set — refusing to publish. The GitHub release and assets are already published; set the secret and re-run this job." >&2
exit 1
fi
- name: Publish wrapper pinned to the tag
working-directory: npm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
VERSION="${GITHUB_REF_NAME#v}"
npm version "$VERSION" --no-git-tag-version --allow-same-version
npm publish --access public
9 changes: 3 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,19 +169,16 @@ curl -fsSL https://raw.githubusercontent.com/nmbrthirteen/podcli/main/install.sh
irm https://raw.githubusercontent.com/nmbrthirteen/podcli/main/install.ps1 | iex
```

**With npm** (if you already have Node):

```bash
npm install -g podcli
```

Then just run it — the first launch sets itself up:

```bash
podcli # interactive menu (and Web UI)
podcli process episode.mp4 # transcribe + export clips
```

Supported platforms: macOS (Apple Silicon), Linux (x64 / arm64), Windows (x64).
Intel Macs are coming in a follow-up release.

**Optional**, for AI clip suggestion and the PodStack slash commands: install
[Claude Code](https://docs.anthropic.com/en/docs/claude-code) or
[Codex](https://openai.com/index/introducing-codex/) (auto-detected).
Expand Down
28 changes: 12 additions & 16 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,41 @@
# Releasing podcli

Distribution is fully automated by `.github/workflows/release.yml`: pushing a
`v*` tag builds the launcher for all five platforms, builds whisper.cpp, bundles
the studio and Remotion, generates `checksums.txt`, publishes a GitHub release,
and publishes the npm package. End users then install with no prerequisites:
`v*` tag builds the launcher per platform, builds whisper.cpp, bundles the studio
and Remotion, generates `checksums.txt`, and publishes a GitHub release. End users
install with no prerequisites:

```bash
curl -fsSL https://raw.githubusercontent.com/nmbrthirteen/podcli/main/install.sh | sh
# or: npm install -g podcli (Windows: install.ps1)
# Windows: irm https://raw.githubusercontent.com/nmbrthirteen/podcli/main/install.ps1 | iex
```

## One-time setup

- Set the **`NPM_TOKEN`** repository secret (an npm automation token with publish
rights). Without it the GitHub release still publishes; the npm job fails and
can be re-run after the secret is added.
Platforms: macOS arm64, Linux x64/arm64, Windows x64. (npm isn't used — the
unscoped name `podcli` is blocked by npm as too similar to `pod-cli`.)

## Cutting a release

1. Pick the version `X.Y.Z`. Set it in **`npm/package.json`** (`install.js` fetches
the binary from `releases/download/vX.Y.Z/`, so the npm version must equal the
tag). Optionally align the root `package.json`.
1. Pick the version `X.Y.Z` and tag with it. The installers resolve the latest
release automatically.
2. Merge to `main` and make sure CI is green.
3. Tag and push:
```bash
git tag vX.Y.Z
git push origin vX.Y.Z
```
4. Watch the `release` workflow. It produces these assets (the names the npm
wrapper, self-update, and provisioner expect):
4. Watch the `release` workflow. It produces these assets (the names the
installers, self-update, and provisioner expect):
- `podcli-{darwin,linux,windows}-{amd64,arm64}[.exe]` — static launchers
- `whisper-cli-<os>-<arch>[.exe]`
- `studio-bundle.tar.gz`
- `remotion-<os>-<arch>.tar.gz`
- `checksums.txt`
5. Verify the npm publish succeeded (`npm view podcli version`).
5. Verify the release is published with all assets, then run the smoke test below.

## Smoke test (ideally one machine per OS)

```bash
curl -fsSL .../install.sh | sh # or npm i -g podcli
curl -fsSL .../install.sh | sh # Windows: irm .../install.ps1 | iex
podcli doctor # paths + engine resolution
podcli process sample.mp4 --top 1 # transcribe -> suggest -> export a clip
podcli # interactive menu -> Open Web UI
Expand Down
3 changes: 3 additions & 0 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ case "$arch" in
*) err "unsupported architecture: $arch" ;;
esac
target="${goos}-${goarch}"
if [ "$target" = "darwin-amd64" ]; then
err "Intel Macs aren't supported yet (coming in v2.0.1). Apple Silicon, Linux, and Windows are available."
fi
bin_dir="$home_dir/bin"
mkdir -p "$bin_dir"

Expand Down
1 change: 0 additions & 1 deletion npm/scripts/install.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ function allowedHost(h) {
}

const TARGETS = {
'darwin-x64': 'darwin-amd64',
'darwin-arm64': 'darwin-arm64',
'linux-x64': 'linux-amd64',
'linux-arm64': 'linux-arm64',
Expand Down
Loading