Release Notes v0.17.0¶
Release Date: 2026-08-02
This is a non-breaking, additive release. It grew out of migrating two more consumers off go-github directly onto clientv1: a CI/CD pipeline collector (branch protection, repo languages, GitHub Actions workflows/runs) and a dependency-graph/release-automation tool (rate limits, repository-type filtering, issue-comment editing).
New Features¶
Branch protection and repository languages¶
protection, err := client.GetBranchProtection(ctx, owner, repo, "main")
if protection == nil {
// branch has no protection configured
}
langs, err := client.ListLanguages(ctx, owner, repo) // map[string]int, bytes per language
GitHub Actions¶
workflows, err := client.ListWorkflows(ctx, owner, repo)
runs, err := client.ListWorkflowRuns(ctx, owner, repo, workflowID, &clientv1.ListWorkflowRunsOptions{
PerPage: 1, // latest run only
})
Unlike most List* methods, ListWorkflowRuns does not auto-paginate — a long-lived workflow can accumulate thousands of runs, so it returns a single page controlled by PerPage/Page.
Repository type filtering¶
// Only repos the user owns, not ones they collaborate on or belong to via an org
repos, err := client.ListUserReposWithOptions(ctx, user, &clientv1.ListUserReposOptions{Type: "owner"})
ListUserRepos is unchanged and now defined in terms of this with Type: "all".
Rate limits¶
import ghErrors "github.com/grokify/gogithub/errors"
limit, err := client.GetRateLimit(ctx)
// limit.Remaining, limit.Limit, limit.Reset
if _, err := client.ListOrgRepos(ctx, org); ghErrors.IsRateLimitError(err) {
// back off and retry
}
IsRateLimitError works on raw errors returned directly from any clientv1 call — it unwraps the error chain to find a go-github rate-limit error, without needing errors.Translate first.
Issue/PR comments¶
comment, err := client.EditIssueComment(ctx, owner, repo, commentID, newBody)
comments, err := client.ListIssueComments(ctx, owner, repo, number)
New Stable Types¶
BranchProtection,RequiredStatusChecks,PullRequestReviewsEnforcementWorkflow,WorkflowRunRateLimitRepository.Topics,Repository.Visibility(new fields on the existing type)
Installation¶
See CHANGELOG.md for the categorized commit list.