Skip to content

Release Notes v0.15.0

Release Date: 2026-08-01

This is a breaking change release that completes the version-isolation architecture. All public APIs now use clientv1.Client and stable gogithub.* types instead of exposing go-github types directly. This ensures consumers are insulated from go-github major version changes.

Breaking Changes

Before (v0.14.0):

import "github.com/google/go-github/v88/github"

ghClient, _ := github.NewClient()
c := search.NewClient(ghClient)
result, _, _ := c.SearchIssues(ctx, qry, &github.SearchOptions{})

After (v0.15.0):

import "github.com/grokify/gogithub/clientv1"

client, _ := clientv1.NewClient(ctx, token)
c := search.NewClient(client)
result, _ := c.SearchIssues(ctx, qry, &clientv1.SearchOptions{})

  • search.NewClient() now accepts clientv1.Client instead of *github.Client
  • SearchIssues() and SearchOpenPullRequests() now accept *clientv1.SearchOptions instead of *github.SearchOptions
  • Issues type is now []*gogithub.Issue instead of []*github.Issue

Package: repo

Before (v0.14.0):

import "github.com/google/go-github/v88/github"

batch, _ := repo.NewBatch(ctx, ghClient, owner, repo, branch, message)

After (v0.15.0):

import "github.com/grokify/gogithub/clientv1"

client, _ := clientv1.NewClient(ctx, token)
batch, _ := repo.NewBatch(ctx, client, owner, repo, branch, message)

  • repo.NewBatch() now accepts clientv1.Client instead of *github.Client

Package: sarif

Before (v0.14.0):

import "github.com/google/go-github/v88/github"

result, _ := sarif.Upload(ctx, ghClient, owner, repo, data, opts)
status, _ := sarif.GetUploadStatus(ctx, ghClient, owner, repo, sarifID)

After (v0.15.0):

import "github.com/grokify/gogithub/clientv1"

client, _ := clientv1.NewClient(ctx, token)
result, _ := sarif.Upload(ctx, client, owner, repo, data, opts)
status, _ := sarif.GetUploadStatus(ctx, client, owner, repo, sarifID)

  • All sarif functions now accept clientv1.Client instead of *github.Client

Deprecated Packages

The following packages retain go-github types but are deprecated:

  • auth.NewGitHubClient() - Use clientv1.NewClient() instead
  • auth.GetAuthenticatedUser() - Use client.GetAuthenticatedUser() instead
  • auth.GetUser() - Use client.GetUser() instead
  • config.Config.NewClient() - Use config.Config.NewClientV1() instead
  • config.Config.MustNewClient() - Use config.Config.MustNewClientV1() instead

New Features

clientv1 Enhancements

  • GitHub Enterprise support: New NewClientWithOptions() function supports custom BaseURL and UploadURL
  • 60+ API methods: Comprehensive coverage for repositories, content, git data, pull requests, issues, commits, releases, checks, search, and more
  • File content writes: CreateFile, UpdateFile, DeleteFile, and GetFileContentWithSHA cover the Contents API
  • Git Data API for atomic commits: GetTree and CreateBlob join the existing CreateTree/CreateCommit so callers can build multi-file atomic commits (blobs → tree → commit → ref update) entirely through clientv1
  • Issue CRUD: GetIssue, ListIssues, CreateIssue, UpdateIssue
  • Code search: SearchCode alongside the existing SearchIssues
  • Stable types: All methods return gogithub.* types that won't change with go-github updates

config Package

  • New Config.NewClientV1() and Config.MustNewClientV1() methods return clientv1.Client

Type Additions

New stable types and fields in the gogithub package:

  • Issue.RepositoryURL, Issue.Comments, and Issue.IsPullRequest fields (the latter lets callers filter pull requests out of issue listings without a go-github type)
  • PullRequest.Labels, PullRequest.Additions, PullRequest.Deletions, and PullRequest.Commits fields
  • Commit.Tree field (the commit's root tree SHA, needed to resolve a base tree for atomic commits)
  • TreeNode, CreateFileResult, DeleteFileResult, CodeSearchResult, and CodeResult types

Dependency Updates

  • github.com/google/go-github upgraded from v88 to v89

Migration Guide

  1. Replace client creation:

    // Old
    gh, _ := auth.NewGitHubClient(ctx, token)
    // or
    gh, _ := github.NewClient(github.WithAuthToken(token))
    
    // New
    client, _ := clientv1.NewClient(ctx, token)
    

  2. Update function calls:

  3. Replace *github.Client parameters with clientv1.Client
  4. Replace *github.SearchOptions with *clientv1.SearchOptions
  5. Replace *github.Issue with *gogithub.Issue

  6. Import changes:

    // Remove
    "github.com/google/go-github/v88/github"
    
    // Add
    "github.com/grokify/gogithub"
    "github.com/grokify/gogithub/clientv1"
    

  7. For advanced use cases requiring direct go-github access:

    raw := client.Raw().(*github.Client)
    // Use raw client for unsupported operations
    

Installation

go get github.com/grokify/gogithub@v0.15.0

See CHANGELOG.md for the categorized commit list.