| applyTo | ** |
|---|---|
| excludeAgent | code-review |
Skill reference: for the semver decision guide, CD pipeline mechanics, binary targets, blog post format reference and versioned docs snapshot details read
.github/skills/release.mdfirst.
Follow these steps when cutting a new release of github-code-search.
This project follows Semantic Versioning:
| Change type | Bump | Example |
|---|---|---|
| Bug fix only (no new behaviour, no API change) | patch |
1.2.4 → 1.2.5 |
| New feature, backward-compatible | minor |
1.2.4 → 1.3.0 |
| Breaking change (CLI flag removed/renamed) | major |
1.2.4 → 2.0.0 |
bun pm version patch # or minor / majorIf the working tree is dirty (staged or unstaged changes), bun pm version will refuse. In that case bump directly in package.json, then commit the version bump as the first commit on the release branch.
Required for minor and major releases. Optional (but encouraged) for patch releases.
-
Create
docs/blog/release-v<X-Y-Z>.md— use existing posts as format reference:docs/blog/release-v1-3-0.md(minor, feature-focused)docs/blog/release-v1-4-0.md(minor, TUI/community-focused)- Front-matter:
title,description,date(ISO 8601). - Structure:
## Highlights→ one###section per major change group →## Upgradeat the bottom. - The upgrade section must include the
github-code-search upgradecommand and a link to the GitHub Releases page.
-
Update
docs/blog/index.md— prepend a row to the## v1 seriestable:| [vX.Y.Z](./release-vX-Y-Z) | One-line summary of highlights |
-
Update
CHANGELOG.md— update (or add) the matching row in the table:| [vX.Y.Z](https://fulll.github.io/github-code-search/blog/release-vX-Y-Z) | One-line summary |
Never leave a row with
_pending_inCHANGELOG.mdwhen cutting the release.
VERSION=$(jq -r .version package.json)
git checkout -b release/$VERSION
git add package.json docs/blog/release-v*.md docs/blog/index.md CHANGELOG.md
git commit -S -m "v$VERSION"All commits must be signed — use
git commit -Sorgit config --global commit.gpgsign true.
VERSION=$(jq -r .version package.json)
git tag v$VERSION
git push origin release/$VERSION --tagsThe tag push triggers cd.yaml:
- Builds self-contained binaries for all six targets.
- Creates a GitHub Release with all binaries attached.
- For major tags (
vX.0.0): triggersdocs.yml→ docs snapshot +versions.jsonupdate.
Do not create the GitHub Release manually — the CD pipeline handles it.
bun test # full suite green
bun run lint # oxlint — zero errors
bun run format:check # oxfmt — no diff
bun run knip # no unused exports
bun run build.ts # binary compiles- GitHub Release created automatically by CD pipeline (verify within ~5 min after tag push)
- Blog post live at
https://fulll.github.io/github-code-search/blog/release-vX-Y-Z -
bun run docs:buildsucceeds locally (spot-check the new blog entry)- The version badge in the hero (
VersionBadge.vue) readsversionfrompackage.jsonat build time viavite.define— no manual update needed. It auto-points to the new blog post slug (release-vX-Y-Z) derived from the version. Verify it shows the new version after deploy.
- The version badge in the hero (
-
CHANGELOG.mdhas no_pending_entries - For major releases: versioned docs snapshot available at
/github-code-search/vX/
| Changed area | Cover in the blog post |
|---|---|
src/tui.ts |
UX / interaction changes (keyboard shortcuts, new modes) |
src/render/ |
Visual changes (colours, layout, new components) |
src/aggregate.ts |
New filter or exclusion options |
src/group.ts |
Team-grouping behaviour changes |
src/output.ts |
New output formats or structural changes to existing ones |
src/api.ts |
New GitHub API features, pagination changes, scope requirements |
src/upgrade.ts |
Upgrade command improvements |
github-code-search.ts |
New CLI flags, subcommands, breaking option renames |
| Community / project files | SECURITY, CODE_OF_CONDUCT, CONTRIBUTING changes worth surfacing |