3.4 KiB
3.4 KiB
status, created, owner
| status | created | owner |
|---|---|---|
| draft | 2026-05-14 | tbd |
Homebrew Core Submission
Why
Kandev is currently installable via brew install kdlbs/kandev/kandev from the kdlbs/homebrew-kandev tap. The tap formula downloads pre-built release tarballs, which works for end users but is rejected by homebrew/homebrew-core policy. Landing in homebrew-core means:
brew install kandev(no tap required) — lower friction discovery.- Bottles are built and signed by Homebrew's CI, eliminating per-platform GH-release tarballs as the install path.
- Automated version bumps via
brew bump-formula-proncelivecheckis wired up.
What
- Author a homebrew-core-compliant
Formula/kandev.rbthat builds entirely from source — native Gokandevlauncher/backend binary (cgo + sqlite viamattn/go-sqlite3), agentctl helper binaries, and the Vite web bundle embedded into the Go binary. - Source comes from the GitHub-generated tag archive (
https://github.com/kdlbs/kandev/archive/refs/tags/vX.Y.Z.tar.gz); per-release sha256 is captured at submission/bump time. - Build deps:
go => :build,pnpm => :build. Runtime dep: none for Node;uses_from_macos "sqlite"(cgo sqlite3 link) ships with macOS and is only installed via Homebrew on Linux. - Install layout:
libexec/binplus a singlebin/kandevwrapper produced bywrite_env_script, settingKANDEV_BUNDLE_DIR=<libexec>andKANDEV_VERSION=<version>. The native launcher uses these values to find helper binaries and log the installed release version. livecheck do; url :stable; regex(/^v?(\d+(?:\.\d+)+)$/i); end— Git strategy (the default forurl :stable) checks tags directly and avoids the GitHub API rate limit.- Test block: spawns
libexec/bin/kandevwith an isolatedKANDEV_HOME_DIRand randomKANDEV_SERVER_PORT, polls/api/v1/system/healthuntil the response contains"healthy"(60s timeout), then shuts the backend down. Also asserts the formulaversionappears inbin/kandev --version. - Tap (
kdlbs/homebrew-kandev) and its update script (scripts/release/update-homebrew-tap.sh) stay untouched — it remains the binary-install fast path; the homebrew-core formula is a parallel, source-built distribution.
Scenarios
- GIVEN the homebrew-core PR is merged, WHEN a macOS user runs
brew install kandev, THEN Homebrew downloads the source tarball, builds the Vite web assets, syncs them into the Go embed directory, compiles the Go binaries, installs them underCellar/kandev/X.Y.Z/{bin,libexec}, andkandev --helpprints "kandev launcher". - GIVEN a new kandev release
vX.Y.Zis tagged, WHEN Homebrew's auto-bump worker runs, THENlivecheckresolves the new tag from GitHub Releases and a bump PR is opened against the formula. - GIVEN a maintainer reviews the PR, WHEN they run
brew install --build-from-source kandevlocally, THEN the build completes without network or sandbox failures andbrew test kandevpasses.
Out of scope
- Migrating users from
kdlbs/homebrew-kandevto homebrew-core (both can coexist; users opt in by switching tap reference). - Linuxbrew bottle parity beyond what homebrew-core's CI provides by default.
- Vendoring JS dependencies via
resourceblocks — falls back here only if maintainers reject network-during-install. - Changes to
.github/workflows/release.ymlorscripts/release/update-homebrew-tap.sh. - Notability lobbying — submission goes in as-is; maintainers decide.