All notable changes to this project are documented here. The format follows Keep a Changelog, and the project aims to follow semantic versioning once it reaches a release.
Unreleased
0.1.0 - 2026-06-24
Added
- REST core (
GhEx.REST):get/post/patch/put/deletereturning{:ok, body, meta}/{:error, reason}, andstream/3forLink-header auto-pagination. - GraphQL core (
GhEx.GraphQL):query/3with variable passing and 200-with-errors normalization intoGhEx.Error, andstream/4forpageInfocursor pagination. - Client and request plumbing:
GhEx.new/1,GhEx.Client,GhEx.Request, with the required GitHub headers and bearer auth injected on every call. - Auth (
GhEx.Auth):{:token, t}and{:app, issuer, pem}credential forms. - GitHub App auth:
GhEx.JWT.mint/3(OTP-native RS256, no JOSE dependency) andGhEx.App.installation_token/3/installation_client/3for one-shot installation access tokens. - Transparent installation-token caching:
GhEx.App.installation/3returns a client that mints, caches, and refreshes its token through aGhEx.TokenCache.GhEx.TokenCache.ETSis the default supervised cache (single-flight minting); the behaviour lets you plug in a clustered backend. - Metadata and errors:
GhEx.REST.Meta,GhEx.GraphQL.Meta,GhEx.RateLimit,GhEx.Pagination, and the normalizedGhEx.Error. - Convenience resources:
GhEx.IssuesandGhEx.PullRequests, thin wrappers overGhEx.RESTfor the common Issues and Pull Requests paths. - Opt-in GitHub-aware rate-limit retry:
GhEx.RateLimit.retry/2, aReq-compatible policy that backs off on secondary rate limits (a403withretry-afterorx-ratelimit-remaining: 0).