- fgj pr approve / pr reject: thin shortcuts over 'pr review --approve'
and '--request-changes'. Reject requires a body.
- fgj repo migrate: wrap SDK MigrateRepo. Supports git, github, gitlab,
gitea, gogs services; mirror mode with --mirror-interval; selective
import (wiki/labels/milestones/issues/PRs/releases/LFS); auth via
--auth-token or --auth-username/--auth-password. Defaults owner to
the authenticated user.
- fgj repo create-from-template: wrap SDK CreateRepoFromTemplate with
fine-grained --with-{content,topics,labels,webhooks,git-hooks,avatar}
flags. Template is owner/name; new repo defaults to the current user.
- Rework 'fgj actions secret create' input. New cmd/secret_input.go
resolves values from --body, --body-file (path or '-'), hidden TTY
prompt via term.ReadPassword, or piped stdin. Trims trailing
whitespace, rejects empty values. Replaces fmt.Scanln which broke on
spaces/newlines and echoed input.
- CHANGELOG: v0.4.0 Unreleased section documenting all additions,
changes, and development items.
- README: updated feature list with new commands.
12 KiB
12 KiB
Changelog
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.
[Unreleased] — 0.4.0
Added — Repository Management
fgj branch {list,rename,delete}— list branches with protection status, rename branches, delete (protected branches are refused).fgj repo delete— type-to-confirm deletion;--yesfor scripts.fgj repo search— search repositories on the current host by query, topic, or description; filter by--type,--owner,--private,--archived.fgj repo migrate— import from GitHub, GitLab, Gitea, Gogs, or a plain Git remote; supports mirror mode and selective import of wiki/labels/milestones/issues/PRs/releases/LFS.fgj repo create-from-template— scaffold a repo from a template, with fine-grained control over what to copy (content, topics, labels, webhooks, git hooks, avatar).
Added — Pull Requests
fgj pr clean <n>— delete the local branch created byfgj pr checkout. Refuses if the PR is open (use--force) or if the branch is currently checked out.fgj pr approve <n>/fgj pr reject <n>— shortcuts overpr review;rejectrequires a body.fgj pr review-comments <n>— list inline review comments across every review on a PR.fgj pr resolve <comment-id>/fgj pr unresolve <comment-id>— mark review threads (un)resolved. Requires Forgejo 8.x+ / Gitea 1.22+ server-side.
Added — Notifications & Organizations
fgj notification list [--all]/fgj notification read <id>— list unread (default) or all notifications; mark individual threads read.fgj org {list,create,delete}— list your orgs, create with visibility/description, delete with confirmation.fgj webhook {list,create,update,delete}— full CRUD on repo webhooks: gitea/slack/discord/etc. hook types, event selection, content type, secret, branch filter, auth header.
Added — Misc
fgj open [number] [--url]— launch the repo / issue / PR page in the default browser; auto-detects issue-vs-PR; prints URL on non-TTY stdout or with--url.fgj whoami— show the authenticated user and host.fgj admin user list— admin-gated user enumeration.
Changed
fgj actions secret createstdin handling reworked. Adds--body(inline) and--body-file(path or-for stdin) flags; interactive prompts now use hidden input viaterm.ReadPassword; piped stdin is read whole (priorfmt.Scanlnbroke on spaces/newlines and echoed the typed value). Empty values are rejected.- Gitea SDK bumped
v0.22.1→v0.23.2(last release compatible with Go 1.24;v0.24+requires Go 1.26).
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, leavinggo install @latestpointing at the pre-migrationv0.3.0tag. - Version string is now injected at build time via
-ldflags; the hardcoded constant incmd/root.gohas been replaced with avar version = "dev"fallback.make buildderives the version fromgit describe --tags --always --dirty. - Added
.goreleaser.yamlfor multi-platform release builds (linux/darwin/windows/freebsd × amd64/arm64/arm) with SHA256 checksums and auto-generated release notes. - Added
.gitea/workflows/release.ymlthat publishes release artifacts to the Forgejo release page on tag push. - Aligned CI Go version (
1.24) withgo.mod; previously CI ran on1.21whilego.modrequired1.24.
[0.3.1] - 2026-04-19
Fixed
go install forgejo.zerova.net/public/fgj-sid@latestnow 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@latestpinned tov0.3.0— a commit that predates the module-path migration fromcodeberg.org/romaintb/fgj.
0.3.0c - 2026-03-21
Added
Label Management
fgj label list- List repository labelsfgj label create- Create a label with color and descriptionfgj label edit- Edit label name, color, or descriptionfgj label delete- Delete a label
Milestone Management
fgj milestone list- List milestones with state filteringfgj milestone view- View milestone detailsfgj milestone create- Create a milestone with description and due datefgj milestone edit- Edit milestone title, description, due date, or statefgj milestone delete- Delete a milestone
Wiki Management
fgj wiki list- List wiki pagesfgj wiki view- View wiki page contentfgj wiki create- Create a wiki page from flag or filefgj wiki edit- Edit a wiki pagefgj wiki delete- Delete a wiki page
Issue Dependencies
fgj issue edit --add-dependency <number>- Add issue dependencyfgj 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 --publicflag 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)
- HTTP method selection (
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)
- Colorized output (
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)
- Body from flag (
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)
- Approve (
Agentic / Machine-Readable Output
--json-errorsglobal 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)
- Error codes:
0.3.0 - 2026-03-13
Added
Forgejo Actions
fgj actions run watch <run-id>- Poll a run until completionfgj actions run rerun <run-id>- Trigger a rerun of a workflow runfgj actions run cancel <run-id>- Cancel an in-progress workflow runfgj actions workflow enable <workflow>- Enable a workflowfgj 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 issuefgj issue edit --add-label/--remove-label- Add or remove labels on existing issuesfgj 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 hostfgj auth logout- Remove authentication for a host
Shell Completions and Man Pages
fgj completion [bash|zsh|fish|powershell]- Generate shell completion scriptsfgj manpages --dir <path>- Generate man pages for all commands
JSON Output
--jsonflag for all list and view commands: PRs, issues, releases, workflow runs, workflows
Fixed
- Respect
$XDG_CONFIG_HOMEfor config file location (was always using~/.config)
0.2.0 - 2026-01-09
Added
Release Management
fgj release list- List releases for a repositoryfgj release view- View details of a specific release (supports "latest" keyword)fgj release create- Create new releases with optional asset uploadsfgj release upload- Upload assets to existing releases with optional clobber supportfgj 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
installtarget for easier local installation - Added
.editorconfigfor 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
-Rflag) - 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 statefgj pr view- View detailed pull request informationfgj pr create- Create new pull requestsfgj pr merge- Merge pull requests with configurable merge methods
Issue Management
fgj issue list- List issues with state filteringfgj issue view- View detailed issue informationfgj issue create- Create new issuesfgj issue comment- Add comments to issuesfgj issue close- Close issues
Repository Operations
fgj repo view- View repository detailsfgj repo list- List user repositoriesfgj 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 metadatafgj actions run view- View detailed run information, jobs, and logs- Support for
--verbose,--log,--log-failed, and--jobflags
- Support for
fgj actions secret list- List repository secretsfgj actions secret create- Create repository secretsfgj actions secret delete- Delete repository secretsfgj actions variable list- List repository variablesfgj actions variable get- Get variable valuesfgj actions variable create- Create repository variablesfgj actions variable update- Update repository variablesfgj actions variable delete- Delete repository variables
Authentication
fgj auth login- Interactive authentication with Forgejo instancesfgj 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