# Contributing To Githical Thanks for helping improve Githical. This project is a Go terminal UI for focused local Git workflows, so changes should keep repository mutations predictable, guarded, and easy to inspect. ## Development Setup Prerequisites: - Go 1.26.5 or a compatible newer Go toolchain. - The system `git` binary available on `PATH`. - A terminal that can run an interactive Bubble Tea application. Use these checks before opening a pull request: ```sh gofmt -w ./cmd ./internal ./docs go test ./... ./scripts/build-dist.sh ``` `scripts/build-dist.sh` is required for project builds because it refreshes the distributable files in `dist/`. A plain `go build ./...` is useful compile verification, but it is not the release build. ## Pull Requests - Keep changes scoped to a single behavior or documentation concern. - Add or update tests for behavior changes. - Prefer existing package boundaries and UI patterns. - Keep all UI colors in `internal/ui/theme.go`; do not add direct color literals or ad hoc Lip Gloss colors elsewhere. - Document new user-visible workflows in `README.md` or `docs/install.md`. ## Release Process Releases are created from `v*` tags. The GitHub release workflow runs tests, builds all platform archives with `scripts/build-dist.sh`, creates `.deb` and `.rpm` packages, smoke tests each archive on its native OS and architecture, attests the final artifacts, and publishes them to GitHub Releases. It also generates Homebrew and WinGet metadata. See `docs/publishing.md` for the free external repository and token setup used to publish that metadata.