# Changelog — vcs-github
All notable changes to the `vcs-github` crate are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this crate adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
This crate is versioned and published independently of the other workspace
crates; tag releases as `vcs-github-v<version>`.
## [Unreleased]
### Added
-
### Changed
-
### Fixed
-
## [0.1.0] - 2026-06-01
### Added
- `GitHubApi` trait + `GitHub` client with typed commands deserializing
`gh … --json` into structs: `pr_list`/`pr_view` (`PullRequest`), `issue_list`
(`Issue`), `repo_view` (`Repo`), `auth_status`, and raw `api`. Adds
`serde`/`serde_json`.
- **Mockable by design:** consumers code against `GitHubApi`; `GitHub::with_runner`
injects a fake process runner, and the `mock` feature generates `MockGitHubApi`
(via `mockall`).
- `pr_create` and raw `run`/`run_raw` on `GitHubApi`.
- `PullRequest` gained `base_ref_name` and `url`; `Repo` now has `owner`, `url`,
`is_private`, and `default_branch`.
- `GitHub::default_timeout` kills any command exceeding the deadline.
### Changed
- The API is now the `GitHub` client + `GitHubApi` trait — the original free
functions are gone. Commands launch `gh` inside an OS job (Windows Job Object /
Linux cgroup v2) via `processkit`, killed on close.
- **Now async (tokio):** every `GitHubApi` method is `async`; errors are the typed
`processkit::Error` (JSON parse failures become `Error::Parse`).
Adds `async-trait`.
- Built on the external **`processkit`** crate (the `CliClient` core, the
`cli_client!` macro, the `ProcessRunner` seam, and the structured `Error`) —
replacing the prototype internal `vcs-process` crate. `run_raw` now returns
`processkit::ProcessResult<String>`.
- `PullRequest`/`Issue`/`Repo` are now `#[non_exhaustive]` — future fields won't
be breaking changes.
- Optional `tracing` feature (forwards to `processkit/tracing`): a `debug` event
per `gh` command.
### Fixed
- `auth_status` no longer reports "not authenticated" when `gh auth status` times
out — a timeout surfaces as `processkit::Error::Timeout` (via `CliClient::code`,
backed by processkit 0.3's first-class timeout error).
[Unreleased]: https://github.com/ZelAnton/vcs-toolkit-rs/compare/vcs-github-v0.1.0...HEAD
[0.1.0]: https://github.com/ZelAnton/vcs-toolkit-rs/releases/tag/vcs-github-v0.1.0