# Releasing bird Target destinations: - npm: `@yuta/bird` - Gitea Packages: `https://git.yutakobayashi.com/api/packages/yuta/npm/` - Nix flake: `packages..bird` and `apps..default` - Homebrew: tap formula in `steipete/homebrew-tap` (e.g., `bird.rb`) ## Checklist (npm + Gitea) 1) Version bump - Update `package.json` `version` (semver, e.g., `0.5.0`). - Update `CHANGELOG.md` and tag the release section. 2) Clean build & tests - `pnpm install` - `pnpm test` - `pnpm run build` - `nix build .#bird` - `nix flake check` 3) Publish to npmjs (scoped) - Ensure you are logged in (`npm whoami`). - `npm publish --access public` (from repo root). Package name is `@yuta/bird`. - Verify: - `npm view @yuta/bird version` - `npx -y @yuta/bird@ --help` 4) Publish to Gitea Packages - Push a `v` tag or run the `Publish npm package` workflow manually. - The workflow writes npm auth for `https://git.yutakobayashi.com/api/packages/yuta/npm/` and publishes `@yuta/bird`. - Verify: - `npm view @yuta/bird version --registry=https://git.yutakobayashi.com/api/packages/yuta/npm/` - `npm exec --yes --registry=https://git.yutakobayashi.com/api/packages/yuta/npm/ @yuta/bird@ -- --help` 5) Git tag & Gitea release - `git tag v && git push origin v` - Create a Gitea release from the tag. Include changelog notes and attach optional binary (see below). ## Optional: attach compiled binary If you want a single-file binary for Homebrew/Gitea release assets: - Build: `pnpm run binary` (uses Bun to produce `./bird`). - Upload `bird` to the Gitea release and use it for the Homebrew tarball. ## Homebrew tap update (steipete/homebrew-tap) 1) Package the binary - From repo root: `tar -czf bird-macos-universal-v.tar.gz bird` - Compute SHA: `shasum -a 256 bird-macos-universal-v.tar.gz` 2) Update formula in tap repo - File: `homebrew-tap/bird.rb` (create if absent). Model it after `poltergeist.rb`. - Fields to update: - `url "https://git.yutakobayashi.com/yuta/bird/releases/download/v/bird-macos-universal-v.tar.gz"` - `sha256 ""` - `version ""` - Install block: `bin.install "bird"` - `test do`: minimal `assert_match "", shell_output("#{bin}/bird --version")` 3) Push tap changes - `git add bird.rb && git commit -m "bird 0.1.0" && git push` ## Release order suggestion 1) Merge to `main` and tag. 2) Publish npmjs. 3) Let Gitea Actions publish the package to Gitea Packages. 4) Build binary, upload to Gitea release. 5) Update Homebrew tap with new URL/SHA. ## Notes - Scoped npm name (`@yuta/bird`) requires `--access public` on first publish. - Gitea npm registry auth follows Gitea's package registry format: `npm config set @yuta:registry=https://git.yutakobayashi.com/api/packages/yuta/npm/`. - Homebrew formula assumes macOS universal binary; adjust URL/name if you ship per-arch. - Config defaults (JSON5) and twitter safe relay setup are documented in `README.md` — keep that in sync for each release.