- Move version out of cmd/root.go hardcode into an ldflags-injected var. Makefile derives from 'git describe --tags --always --dirty'; plain 'go build' / 'go run' get 'dev'. Release builds will get the tag via goreleaser. - Add .goreleaser.yaml: multi-platform (linux/darwin/windows/freebsd × amd64/arm64/arm) builds with SHA256 checksums, tar.gz/zip archives, forgejo release publishing. No GPG/S3 yet — deferred until a key is provisioned. - Add .gitea/workflows/release.yml to run goreleaser on tag push. Uses built-in GITEA_TOKEN with override via RELEASE_TOKEN secret. - Align CI Go version with go.mod (1.24). Previously CI ran 1.21, which would have silently missed any 1.22+ feature use. - Move itchyny/gojq from indirect to direct (it's used in api.go). Drop stale x/sys v0.33.0 entry from go.sum. - Ignore dist/ and bin/ in .gitignore. - CHANGELOG: document v0.3.1 fix and Unreleased development changes.
241 lines
9.5 KiB
Markdown
241 lines
9.5 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project will be documented in this file.
|
||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||
|
||
## [Unreleased]
|
||
|
||
### Development
|
||
|
||
- Switched to standard semver tags (`v0.3.1`, `v0.4.0`, …); retired
|
||
letter-suffix scheme (`v0.3.0a`…`v0.3.0f`) which Go's module resolver
|
||
ignored, leaving `go install @latest` pointing at the pre-migration
|
||
`v0.3.0` tag.
|
||
- Version string is now injected at build time via `-ldflags`; the
|
||
hardcoded constant in `cmd/root.go` has been replaced with a
|
||
`var version = "dev"` fallback. `make build` derives the version from
|
||
`git describe --tags --always --dirty`.
|
||
- Added `.goreleaser.yaml` for multi-platform release builds
|
||
(linux/darwin/windows/freebsd × amd64/arm64/arm) with SHA256
|
||
checksums and auto-generated release notes.
|
||
- Added `.gitea/workflows/release.yml` that publishes release artifacts
|
||
to the Forgejo release page on tag push.
|
||
- Aligned CI Go version (`1.24`) with `go.mod`; previously CI ran on
|
||
`1.21` while `go.mod` required `1.24`.
|
||
|
||
## [0.3.1] - 2026-04-19
|
||
|
||
### Fixed
|
||
|
||
- `go install forgejo.zerova.net/public/fgj-sid@latest` now resolves
|
||
correctly. Previous releases used letter-suffix tags (`v0.3.0a`–`f`)
|
||
which are not valid Go module versions and were ignored by the
|
||
module resolver, leaving `@latest` pinned to `v0.3.0` — a commit
|
||
that predates the module-path migration from `codeberg.org/romaintb/fgj`.
|
||
|
||
## [0.3.0c] - 2026-03-21
|
||
|
||
### Added
|
||
|
||
#### Label Management
|
||
- `fgj label list` - List repository labels
|
||
- `fgj label create` - Create a label with color and description
|
||
- `fgj label edit` - Edit label name, color, or description
|
||
- `fgj label delete` - Delete a label
|
||
|
||
#### Milestone Management
|
||
- `fgj milestone list` - List milestones with state filtering
|
||
- `fgj milestone view` - View milestone details
|
||
- `fgj milestone create` - Create a milestone with description and due date
|
||
- `fgj milestone edit` - Edit milestone title, description, due date, or state
|
||
- `fgj milestone delete` - Delete a milestone
|
||
|
||
#### Wiki Management
|
||
- `fgj wiki list` - List wiki pages
|
||
- `fgj wiki view` - View wiki page content
|
||
- `fgj wiki create` - Create a wiki page from flag or file
|
||
- `fgj wiki edit` - Edit a wiki page
|
||
- `fgj wiki delete` - Delete a wiki page
|
||
|
||
#### Issue Dependencies
|
||
- `fgj issue edit --add-dependency <number>` - Add issue dependency
|
||
- `fgj issue edit --remove-dependency <number>` - Remove issue dependency
|
||
|
||
## [0.3.0b] - 2026-03-21
|
||
|
||
### Added
|
||
|
||
#### Repository Management
|
||
- `fgj repo edit` - Edit repository settings (visibility, description, homepage, default branch)
|
||
|
||
### Fixed
|
||
- `fgj repo create --public` flag was defined but never read; now properly wired up
|
||
|
||
## [0.3.0a] - 2026-03-21
|
||
|
||
### Added
|
||
|
||
#### Raw API Access
|
||
- `fgj api <endpoint>` - Make authenticated REST API requests to any Forgejo/Gitea endpoint
|
||
- HTTP method selection (`--method`/`-X`), auto-switches to POST when fields are provided
|
||
- JSON field assembly (`--field`/`-f`) with type inference (bool, int, float, null, string)
|
||
- Raw string fields (`--raw-field`/`-F`)
|
||
- Request body from file or stdin (`--input`)
|
||
- Custom headers (`--header`/`-H`)
|
||
- Path interpolation (`{owner}`, `{repo}`) from git context
|
||
- Response header display (`--include`/`-i`)
|
||
|
||
#### Pull Request Management
|
||
- `fgj pr diff <number>` - View the diff for a pull request
|
||
- Colorized output (`--color auto/always/never`)
|
||
- Changed file names only (`--name-only`)
|
||
- Diffstat summary (`--stat`)
|
||
- `fgj pr comment <number>` - Add a comment to a pull request
|
||
- Body from flag (`--body`/`-b`) or file (`--body-file`, `-` for stdin)
|
||
- JSON output (`--json`)
|
||
- `fgj pr review <number>` - Submit a review on a pull request
|
||
- Approve (`--approve`/`-a`), request changes (`--request-changes`/`-r`), or comment (`--comment`/`-c`)
|
||
- Body from flag or file
|
||
- JSON output (`--json`)
|
||
|
||
#### Agentic / Machine-Readable Output
|
||
- `--json-errors` global flag for structured JSON error output on stderr
|
||
- Error codes: `auth_required`, `not_found`, `api_error`, `invalid_input`, `git_detection_failed`, `network_error`
|
||
- HTTP status code and detail included when available
|
||
- Automatic mapping of API errors (401/403 → `auth_required`, 404 → `not_found`)
|
||
|
||
## [0.3.0] - 2026-03-13
|
||
|
||
### Added
|
||
|
||
#### Forgejo Actions
|
||
- `fgj actions run watch <run-id>` - Poll a run until completion
|
||
- `fgj actions run rerun <run-id>` - Trigger a rerun of a workflow run
|
||
- `fgj actions run cancel <run-id>` - Cancel an in-progress workflow run
|
||
- `fgj actions workflow enable <workflow>` - Enable a workflow
|
||
- `fgj actions workflow disable <workflow>` - Disable a workflow
|
||
|
||
#### Repository Management
|
||
- `fgj repo create <name>` - Create a new repository with full option set: `--private`/`--public`, `--description`, `--add-readme`, `--gitignore`, `--license`, `--homepage`, `--clone`, `--team`
|
||
|
||
#### Issue Management
|
||
- `fgj issue create -l <label>` - Assign labels when creating an issue
|
||
- `fgj issue edit --add-label` / `--remove-label` - Add or remove labels on existing issues
|
||
- `fgj issue close -c <comment>` - Close an issue with an optional comment
|
||
|
||
#### Workflow Management
|
||
- `fgj actions workflow list/view/run` - List, view, and trigger workflows
|
||
|
||
#### Auth Helpers
|
||
- `fgj auth token` - Print the stored token for the current host
|
||
- `fgj auth logout` - Remove authentication for a host
|
||
|
||
#### Shell Completions and Man Pages
|
||
- `fgj completion [bash|zsh|fish|powershell]` - Generate shell completion scripts
|
||
- `fgj manpages --dir <path>` - Generate man pages for all commands
|
||
|
||
#### JSON Output
|
||
- `--json` flag for all list and view commands: PRs, issues, releases, workflow runs, workflows
|
||
|
||
### Fixed
|
||
- Respect `$XDG_CONFIG_HOME` for config file location (was always using `~/.config`)
|
||
|
||
## [0.2.0] - 2026-01-09
|
||
|
||
### Added
|
||
|
||
#### Release Management
|
||
- `fgj release list` - List releases for a repository
|
||
- `fgj release view` - View details of a specific release (supports "latest" keyword)
|
||
- `fgj release create` - Create new releases with optional asset uploads
|
||
- `fgj release upload` - Upload assets to existing releases with optional clobber support
|
||
- `fgj release delete` - Delete releases (preserves Git tags)
|
||
|
||
#### Issue Management
|
||
- `fgj issue edit` - Edit existing issues with support for updating title, body, and labels
|
||
|
||
#### Pull Request Management
|
||
- `fgj pr create --assignee` - Assign users when creating pull requests
|
||
|
||
#### Repository Detection
|
||
- Automatic hostname detection from git remote URLs
|
||
- Improved multi-instance support with auto-detection from git context
|
||
|
||
### Improved
|
||
- Enhanced documentation with AUR and Homebrew installation instructions
|
||
- Added functional tests for release management and issue editing
|
||
- Added Makefile `install` target for easier local installation
|
||
- Added `.editorconfig` for consistent code formatting
|
||
|
||
### Development
|
||
- CI: Added nightly builds for continuous testing
|
||
- Expanded functional test coverage for new features
|
||
|
||
## [0.1.0] - 2025-12-16
|
||
|
||
### Added
|
||
|
||
#### Core Features
|
||
- Initial release of fgj - Forgejo CLI tool
|
||
- Multi-instance support for any Forgejo/Gitea instance
|
||
- Automatic repository detection from git context (optional `-R` flag)
|
||
- Secure authentication with personal access tokens
|
||
- Configuration management via `~/.config/fgj/config.yaml`
|
||
|
||
#### Pull Request Management
|
||
- `fgj pr list` - List pull requests with filtering by state
|
||
- `fgj pr view` - View detailed pull request information
|
||
- `fgj pr create` - Create new pull requests
|
||
- `fgj pr merge` - Merge pull requests with configurable merge methods
|
||
|
||
#### Issue Management
|
||
- `fgj issue list` - List issues with state filtering
|
||
- `fgj issue view` - View detailed issue information
|
||
- `fgj issue create` - Create new issues
|
||
- `fgj issue comment` - Add comments to issues
|
||
- `fgj issue close` - Close issues
|
||
|
||
#### Repository Operations
|
||
- `fgj repo view` - View repository details
|
||
- `fgj repo list` - List user repositories
|
||
- `fgj repo clone` - Clone repositories with protocol selection (HTTPS/SSH)
|
||
- `fgj repo fork` - Fork repositories
|
||
|
||
#### Forgejo Actions Support
|
||
- `fgj actions run list` - List workflow runs with status and metadata
|
||
- `fgj actions run view` - View detailed run information, jobs, and logs
|
||
- Support for `--verbose`, `--log`, `--log-failed`, and `--job` flags
|
||
- `fgj actions secret list` - List repository secrets
|
||
- `fgj actions secret create` - Create repository secrets
|
||
- `fgj actions secret delete` - Delete repository secrets
|
||
- `fgj actions variable list` - List repository variables
|
||
- `fgj actions variable get` - Get variable values
|
||
- `fgj actions variable create` - Create repository variables
|
||
- `fgj actions variable update` - Update repository variables
|
||
- `fgj actions variable delete` - Delete repository variables
|
||
|
||
#### Authentication
|
||
- `fgj auth login` - Interactive authentication with Forgejo instances
|
||
- `fgj auth status` - Check authentication status
|
||
- Environment variable support (`FGJ_HOST`, `FGJ_TOKEN`)
|
||
|
||
#### Development
|
||
- Comprehensive unit test suite
|
||
- Functional end-to-end tests
|
||
- CI/CD pipeline with automated testing
|
||
- Code quality checks and linting
|
||
|
||
### Technical Details
|
||
- Built with Go 1.23+
|
||
- Uses Gitea SDK for API interactions
|
||
- Cobra framework for CLI structure
|
||
- Viper for configuration management
|
||
|
||
[0.3.0c]: https://forgejo.zerova.net/public/fgj-sid/releases/tag/v0.3.0c
|
||
[0.3.0b]: https://forgejo.zerova.net/public/fgj-sid/releases/tag/v0.3.0b
|
||
[0.3.0a]: https://forgejo.zerova.net/public/fgj-sid/releases/tag/v0.3.0a
|
||
[0.3.0]: https://codeberg.org/romaintb/fgj/releases/tag/v0.3.0
|
||
[0.2.0]: https://codeberg.org/romaintb/fgj/releases/tag/v0.2.0
|
||
[0.1.0]: https://codeberg.org/romaintb/fgj/releases/tag/v0.1.0
|