Updates and install.sh try the GitHub mirror, then git.kebcloud.no, each with a short timeout, and download from the first server with the release, checked against its checksums.txt. The releases config option (and LAZYSECRETS_RELEASES for install.sh) lists other servers. The release workflow copies each release to GitHub when GH_RELEASE_TOKEN is set. The status pane's issues link points to GitHub. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2.7 KiB
Development
go run ./cmd/lazysecrets
go run ./cmd/lazysecrets --demo # built-in sample data, no Azure needed
go test ./...
go test ./internal/ui/app -run TestGolden -update # after intentional UI changes
A stripped binary is about 21 MB instead of 30 MB:
go build -trimpath -ldflags "-s -w" -o lazysecrets ./cmd/lazysecrets
Development builds show dev-<commit> as their version (-dirty with
uncommitted changes); go install …@v0.2.0 shows the tag, releases the
version they were built for.
Pull requests
Pull requests into main are squash-merged, so each is one commit titled
like the PR. The title is a conventional commit
subject, checked by pr-title.yml:
| Type | For | In the changelog |
|---|---|---|
feat |
a new feature | Added |
perf |
faster or smaller, same behaviour | Changed |
fix |
a bug fix | Fixed |
refactor, docs, test, ci, chore, build, style, revert |
everything users don't need to hear about | no |
feat!: marks a breaking change, feat(scope): names a part. Brackets
and a missing space work too: [feat] x, [feat]: x and feat:x all
become feat: x in the changelog. [skip changelog] in the description
leaves a pull request out.
CI (ci.yml) runs gofmt, vet, staticcheck, the tests and a build for each
platform on pull requests into main. main is protected: a pull request
merges only when it's up to date with main (Gitea's "Update branch"
button, or a rebase, then CI again), so what lands on main is exactly
what its pull request tested, and CI doesn't run again there.
Releasing
Merge as many pull requests as you like, then release main:
scripts/release.sh --dry-run v0.2.0 # the notes the release would have
scripts/release.sh v0.2.0 # CHANGELOG.md, commit, tag, push
It refuses unless you're on a clean main that matches origin/main.
git-cliff (cliff.toml) writes CHANGELOG.md
from the pull request titles. The tag runs the release workflow
(.gitea/workflows/release.yml): it tests, then
GoReleaser (.goreleaser.yaml) builds the
archives and publishes a Gitea release with them and the release's
changelog section. Then scripts/github-release.mjs copies that release,
notes and files, to the GitHub mirror, with the GH_RELEASE_TOKEN
secret (a fine-grained token that can write the mirror's contents);
without the secret it skips that. goreleaser release --snapshot --clean builds the same archives locally, into dist/, without
publishing.
A suffix (v0.2.0-rc.1) makes a pre-release, which leaves CHANGELOG.md
alone.