All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
internal/gatepackage that centralizes merge-request orchestration logic, leavingmainas a thin wiring layer.- Structured logging via
log/slogfor all application output. context.Contextpropagation through every GitLab client method down to the HTTP requests.- 30-second default timeout on the GitLab HTTP client to avoid indefinite hangs.
- Pagination for GitLab list endpoints (award emojis), with a safety limit to guard against runaway loops.
- Nix flake (
flake.nix,flake.lock) for a reproducible development environment. Taskfile.ymlfor local automation (codegen, lint, security, test, build).- golangci-lint configuration (
.golangci.yml) withreviveandmisspell. - README project logo and refreshed badges.
- This changelog.
- Bumped Go to 1.25.11.
- Generate mocks with
go.uber.org/mockvia thego tooldirective instead of hand-written mocks; generated mocks are no longer committed. GetLatestCommitTimestampnow fetches only the most recent commit instead of paginating the entire commit history.- Migrated build and test automation from
MakefiletoTaskfile.yml. - CI now pins all GitHub Actions to commit SHAs, runs golangci-lint, and drives build/test through Taskfile.
- Upgraded GoReleaser configuration to v2 with a grouped, conventional-commit changelog.
- Replaced
panicon configuration errors withslog.Errorfollowed byos.Exit(1). - Go idiom cleanups: unexported GitLab client fields,
URLinitialism naming,anyoverinterface{}, and early-return config parsing.
- Only the first page of paginated GitLab responses was read, so approvals on merge requests with many emoji reactions could be silently missed.
- File paths are now URL-encoded in
GetFileContent, so CODEOWNERS files in subdirectories (e.g..github/CODEOWNERS) resolve correctly. - Leading slashes are stripped from CODEOWNERS patterns so absolute-style patterns (e.g.
/terraform) match the slash-less AtlantisREPO_REL_DIR.
Makefile(replaced byTaskfile.yml).GetMrCommitsfrom the public GitLab client API.
- Wired gosec and govulncheck into local automation; gosec runs in CI.