Repository navigation
feat: make DevPass Code installable via npm, brew, curl, and Docker - #2
Merged
Merged
Conversation
Rework the inherited opencode release pipeline so it publishes DevPass
Code artifacts under this fork's identity:
- build: compile binaries as bin/devpass-code (user agent devpass-code/<v>)
- npm: publish wrapper package `devpass-code` (name is free — no -ai
suffix needed) plus devpass-code-{os}-{arch} platform packages;
postinstall + dev shim resolve the new names
- brew: generate devpass-code.rb (class DevpassCode) and push to
theopenco/homebrew-tap; formula installs the devpass-code binary
- curl: rebrand the install script — installs to ~/.devpass-code/bin
from theopenco/devpass-code releases, new wordmark + outro
- docker: ghcr.io/theopenco/devpass-code, devpass-code entrypoint
- AUR: devpass-code-bin, only pushed when AUR_KEY is configured
- workflow: run on theopenco/devpass-code with GitHub-hosted runners,
drop the GitHub-App committer (RELEASE_TOKEN || github.token), gate
Windows signing and desktop builds on their secrets so a bare repo
can still release CLI artifacts, add NODE_AUTH_TOKEN for npm, stop
building/publishing the @opencode-ai-scoped packages upstream owns
- versioning: bump from the devpass-code npm package, falling back to
the repo version for the first release; changelog is best-effort
- self-upgrade: devpass-code upgrade now points every method (curl,
npm/bun/pnpm, brew tap, choco, scoop, GitHub releases) at the fork
- GitHub Action: install devpass-code from this repo's releases
- README: real install instructions
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FQXtaZmzWzXTrEikFpfCpK
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
steebchen
force-pushed
the
feat/installable-release-pipeline
branch
from
July 2, 2026 18:56
6d5bef2 to
5de30d3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes DevPass Code actually installable by end users. Until now nothing was published anywhere — no npm packages, no GitHub releases, no tap — and the inherited opencode release pipeline still pointed at
anomalyco/opencode, so a release run would have failed (or pushed to someone else's channels).What users get
curl -fsSL https://raw.githubusercontent.com/theopenco/devpass-code/main/install | bashnpm i -g devpass-codebrew install theopenco/tap/devpass-codedocker run -it --rm ghcr.io/theopenco/devpass-codeparu -S devpass-code-bin(only published whenAUR_KEYis configured)devpass-code-windows-*.ziprelease assets, or npmThe npm wrapper publishes as plain
devpass-code— the name is free on the registry, so no-aisuffix like upstream needed. Platform binary packages aredevpass-code-{os}-{arch}[-baseline][-musl], and the compiled binary is now nameddevpass-code(wasopencode).Changes
packages/devpass-code/script/build.ts— compile tobin/devpass-code, user agentdevpass-code/<version>.packages/devpass-code/script/publish.ts— wrapper/platform npm packages under the new names; Docker imageghcr.io/theopenco/devpass-code; Homebrew formuladevpass-code.rb(classDevpassCode) pushed totheopenco/homebrew-tap; AURdevpass-code-bingated onAUR_KEY; checksums computed from thedevpass-code-*artifacts (upstream still hashedopencode-*names, which would have crashed).postinstall.mjs/bin/devpass-codeshim — resolve the new platform package + binary names; shim honorsDEVPASS_CODE_BIN_PATH(legacyOPENCODE_BIN_PATHstill works)..github/workflows/publish.yml— runs ontheopenco/devpass-code; GitHub-hosted runners (was Blacksmith); GitHub-App committer replaced withRELEASE_TOKEN || github.token; Windows signing and desktop/Electron jobs are skipped automatically when their secrets are absent so a bare repo can still ship CLI releases (unsigned Windows zips are still uploaded by the build job); npm auth viaNODE_AUTH_TOKEN; preview-CLI build removed.script/publish.ts— stops publishing@opencode-ai/{cli,sdk,plugin,ui}(that npm scope belongs to upstream; we can't publish to it); desktoplatest.ymlfinalization only runs when desktop artifacts exist; release version-sync pushes to the triggering branch instead of upstream'sdev.packages/script— release versions bump from thedevpass-codenpm package, falling back to the repo version (1.17.12→ first release1.17.13) while unpublished.script/version.ts— changelog generation is best-effort (needsOPENCODE_API_KEY); release notes fall back to "No notable changes".install— full rebrand: installsdevpass-codeto~/.devpass-code/binfrom this repo's releases, new wordmark,auth loginhint.src/installation—devpass-code upgrade+ autoupdate now point every method (curl, npm/bun/pnpm, brew taptheopenco/tap, choco, scoop, GitHub releases API) at the fork.github/action.yml— the CI action installs devpass-code from this repo.Verified
bun test test/installation— 12/12 pass.build.ts --single: producesdist/devpass-code-darwin-arm64/bin/devpass-code,--versionworks, build's smoke test passes.postinstall.mjsresolves the platform package, replaces the stub, binary runs.1.17.13on channellatest.One-time setup before the first release
NPM_TOKENsecret — npm automation token that can create new public packages (first publish can't use OIDC trusted publishing).theopenco/homebrew-taprepo (can be empty) and add aRELEASE_TOKENsecret (PAT with push access to the tap). Without it the tap push fails at the end of a stable release; everything before (GitHub release, npm, Docker) still lands.AUR_KEY(AUR SSH key +devpass-code-binpackage ownership), Azure Trusted Signing secrets (Windows binary signing), Apple certs (desktop builds). All are skipped cleanly when absent.Then cut a release with
./script/release(defaults to patch) orgh workflow run publish.yml -f bump=patch. Pushes todev/beta/cipublish preview builds to npm under matching dist-tags.Not in this PR
@opencode-ai/{sdk,plugin,ui}remain unpublished — they'd need a new npm scope and coordinated rename.packages/consoledownload routes and the docs site still reference upstream URLs (separate deploy surface).🤖 Generated with Claude Code
https://claude.ai/code/session_01FQXtaZmzWzXTrEikFpfCpK