Disc uses ChronVer (YYYY.MM.DD) for release versioning. version.txt at the repo root is the single source of truth, consumed by mod.ts at runtime and bundled into compiled binaries via --include version.txt.
primary branch and permission to create tags on github.com:systemsoft/disc.Release workflow runs on tag push).# 1. Land everything you want shipped on primary and make sure CI is green.
git checkout primary && git pull
# 2. Bump version.txt to today's date (ChronVer via justfile task).
just version
# → writes YYYY.MM.DD, e.g. 2026.04.17
# 3. Commit and tag.
VERSION=$(cat version.txt)
git commit -am "Release $VERSION"
git tag "v$VERSION"
# 4. Push commit and tag together.
git push origin primary --tags
Pushing the tag triggers .github/workflows/release.yml, which:
linux-x64, linux-arm64, darwin-arm64, and windows-x64 (UI is bundled via bun run build + disc build). The windows-x64 binary is cross-compiled on the Linux runner — deno compile --target x86_64-pc-windows-msvc plus the PG staging extract chain (unzip + xz) both run there — and ships as disc-windows-x64.exe.sha256 checksums.v$VERSION with the four binaries, a CHECKSUMS.txt file, and auto-generated release notes.
darwin-x64is not in the release matrix. Themacos-13GitHub-hosted runner hangs indefinitely on the build step, so we don’t ship a pre-built Intel-Mac binary. Platform support stays in the CLI — Intel-Mac users can build from source viadeno task build:darwin-x64, or run thedarwin-arm64binary under Rosetta. Re-introducing the matrix entry would require fixing the runner hang first.
just release runs a man step after the binary build that renders the guides in docs/ to roff man pages via pandoc (docs/cli.md → disc(1), every other guide → disc-<name>(7)). It writes them to build/man/{man1,man7} and packages them as build/disc-man.tar.gz.
Generation is local-only — pandoc must be on your PATH (
brew install pandoc,apt install pandoc). The CI release workflow does not yet build man pages, so to ship them attachbuild/disc-man.tar.gzto the GitHub release manually. Once that asset is present,install.shdownloads and installs it automatically (to/usr/local/share/manwhen writable, else~/.disc/share/manwith a MANPATH entry;--system-manforces the system location with sudo,--no-manskips it).
Users verify a downloaded binary:
shasum -a 256 disc-darwin-arm64
# Compare against CHECKSUMS.txt on the release page.
Inside the binary, disc --version reports the ChronVer string read from the embedded version.txt.
Releases can’t be unpublished — delete the GitHub release + tag and publish a follow-up with a later ChronVer date:
git tag -d "v$OLD_VERSION"
git push origin ":refs/tags/v$OLD_VERSION"
# Cut a new release with today's date.
The release workflow supports workflow_dispatch so you can rebuild a previously-tagged version without re-tagging (useful if the workflow itself changed):
GitHub → Actions → Release → Run workflow → input: v2026.04.17
Binary signing is not yet configured. Until then, the SHA-256 checksum in the release notes is the integrity anchor. macOS users wanting Gatekeeper-friendly binaries should codesign locally.