Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pnpm typecheck && pnpm lint && pnpm format:check && pnpm test -- --run
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.1.0] - 2026-05-09

### Added

- `ghitgud gh` passthrough command — proxy any args to the gh CLI
- `notifications list` with `--all`, `--participating`, `--repo`, `--limit`
- `notifications read <id>`
- `notifications done <id>`
- `activity` — composite view of assigned issues, review requests, mentions
- `mentions` — search for recent @mentions
- `client.put` method in API layer

## [2.0.0] - 2025-05-09

### Added
Expand Down
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,15 @@ ghitgud config get repo
## Commands

```
ghitgud gh <args> Pass through to the gh CLI
ghitgud notifications list List notifications
ghitgud notifications list -a Include read notifications
ghitgud notifications list -p Only participating
ghitgud notifications list -r owner/repo Filter by repository
ghitgud notifications read <id> Mark a notification as read
ghitgud notifications done <id> Mark a notification as done
ghitgud activity Assigned issues, review requests, mentions
ghitgud mentions Recent @mentions of you
ghitgud ping Check if the CLI is working
ghitgud labels list List all labels for a repository
ghitgud labels pull Pull labels from a repository to local config
Expand Down
40 changes: 10 additions & 30 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,7 @@
# Ghitgud Roadmap — Superset Features gh CLI Doesn't Have

> Compiled from deep research of the `cli/cli` repository, community extensions, and top user requests.
> Current ghitgud version: **2.0.0** (labels + config + templates)

---

## Architecture Principle — `ghitgud gh` Passthrough

Ghitgud provides a `ghitgud gh` subcommand that transparently passes all arguments through to the underlying `gh` CLI. This means:

- `ghitgud gh pr create` calls `gh pr create`
- `ghitgud gh repo clone airscripts/ghitgud` calls `gh repo clone airscripts/ghitgud`
- Users who want ghitgud's superpowers keep `ghitgud` in their muscle memory
- GitHub's official CLI stays the engine; ghitgud is the supercharger
- No ambiguity — ghitgud native commands and gh passthrough are cleanly separated

**Implementation:** A `gh` subcommand registered in Commander that shells out to `gh` with all trailing args, preserving stdin/stdout/stderr and exit codes.

---

## v2.1.0 — Notifications & Activity Triage

**Why gh doesn't have it:** Issue #659 open since March 2020. No native `gh notification` commands exist. Users rely on browser or third-party extensions like `gh-notify`.

**Commands:**
- `ghitgud notifications list --unread --participating --repo <name>`
- `ghitgud notifications mark-read <id>`
- `ghitgud notifications mark-done <id>`
- `ghitgud activity` — assigned issues, review requests, mentions across all repos
- `ghitgud mentions` — find all @mentions of you

**Value:** Daily driver feature. Most developers check GitHub notifications multiple times per day. Doing it from the terminal without context switching is a genuine superpower.
> Current ghitgud version: **2.1.0** (labels + config + templates + notifications + activity + mentions + gh passthrough)

---

Expand All @@ -39,6 +10,7 @@ Ghitgud provides a `ghitgud gh` subcommand that transparently passes all argumen
**Why gh doesn't have it:** Issues #380 (cleanup, Feb 2020) and #2189 (pr push, Sep 2020) are among the most upvoted open issues. Extension `gh-poi` and `gh-stack` fill partial gaps but no official solution exists.

**Commands:**

- `ghitgud pr cleanup` — delete merged branches locally and remotely, fast-forward base branch, handle squash/rebase safely
- `ghitgud pr push` — push changes back to a contributor's fork after `gh pr checkout`
- `ghitgud pr stack` — manage stacked PRs (create/update dependent chains)
Expand All @@ -53,6 +25,7 @@ Ghitgud provides a `ghitgud gh` subcommand that transparently passes all argumen
**Why gh doesn't have it:** Issue #326 is the #1 most requested feature (open since Feb 2020). Users with work + personal accounts currently use shell scripts, env vars, or separate config files.

**Commands:**

- `ghitgud profile switch <name>` — switch active account instantly
- `ghitgud profile list` — show all configured profiles
- `ghitgud profile add <name> --token <token>` — add new profile
Expand All @@ -69,6 +42,7 @@ Ghitgud provides a `ghitgud gh` subcommand that transparently passes all argumen
**Why gh doesn't have it:** `gh` operates on single repos only. No bulk operations across organizations or repo lists. Enterprise users write custom scripts.

**Commands:**

- `ghitgud repos audit` — find repos missing LICENSE, CODEOWNERS, README, SECURITY.md
- `ghitgud repos apply-ruleset` — apply branch protection/ruleset across multiple repos
- `ghitgud repos sync-labels` — push label templates across a whole org
Expand All @@ -84,6 +58,7 @@ Ghitgud provides a `ghitgud gh` subcommand that transparently passes all argumen
**Why gh doesn't have it:** Issue #9125 (cache download, May 2024) and no workflow validation/dry-run support. Debugging CI failures requires browser navigation and guesswork.

**Commands:**

- `ghitgud workflow validate` — lint workflow YAML against GitHub's schema before pushing
- `ghitgud workflow dry-run` — preview job matrix, runner selection, execution path
- `ghitgud cache download <key>` — download Actions cache artifact for local debugging
Expand All @@ -99,6 +74,7 @@ Ghitgud provides a `ghitgud gh` subcommand that transparently passes all argumen
**Why gh doesn't have it:** Issue #359 (fine-grained review, Feb 2020) — `gh pr review` only supports approve/request-changes/comment. No line-specific comments, no thread management.

**Commands:**

- `ghitgud review comment --file <path> --line <num> --body <text> --pr <num>`
- `ghitgud review threads <pr>` — list all review threads with resolution status
- `ghitgud review resolve <thread-id>` — mark a thread as resolved
Expand All @@ -114,6 +90,7 @@ Ghitgud provides a `ghitgud gh` subcommand that transparently passes all argumen
**Why gh doesn't have it:** `gh` outputs flat text only. Extension `gh-dash` (very popular) proves massive demand for a rich terminal UI, but it's external and limited.

**Commands:**

- `ghitgud tui` — launch full-screen terminal UI
- Browse PRs/issues with keyboard navigation (vim bindings)
- View diffs with syntax highlighting in-terminal
Expand All @@ -130,6 +107,7 @@ Ghitgud provides a `ghitgud gh` subcommand that transparently passes all argumen
**Why gh doesn't have it:** `gh project` commands are basic and new. No milestone commands exist. Sub-task support (issue #10298) was only added to the API in 2025 and has no CLI support.

**Commands:**

- `ghitgud milestone create --title <name> --due-date <date>`
- `ghitgud milestone list --status open|closed`
- `ghitgud milestone close <name>`
Expand All @@ -147,6 +125,7 @@ Ghitgud provides a `ghitgud gh` subcommand that transparently passes all argumen
**Why gh doesn't have it:** `gh release create --generate-notes` exists but has no conventional commit support, no auto-versioning, no changelog templates. Teams write custom release scripts.

**Commands:**

- `ghitgud release changelog` — generate changelog from conventional commits since last tag
- `ghitgud release bump` — auto-detect next semver from commit types (feat → minor, fix → patch, BREAKING → major)
- `ghitgud release verify` — check attestation, signatures, and artifact integrity
Expand All @@ -162,6 +141,7 @@ Ghitgud provides a `ghitgud gh` subcommand that transparently passes all argumen
**Why gh doesn't have it:** Enterprise audit logs are API-only. No secret scanning management in CLI. Dependabot alerts require browser. Platform engineers need terminal access for compliance workflows.

**Commands:**

- `ghitgud audit-log` — query enterprise audit events with filters (actor, action, repo, date range)
- `ghitgud secrets scan` — scan repo history for leaked secrets (integrate with GitHub secret scanning API)
- `ghitgud secrets alerts` — list secret scanning alerts per repo
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.0
2.1.0
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@airscript/ghitgud",
"version": "2.0.0",
"version": "2.1.0",
"description": "A simple CLI to give superpowers to GitHub.",
"main": "dist/index.js",
"files": [
Expand Down Expand Up @@ -30,7 +30,8 @@
"lint": "eslint src/ tests/",
"format": "prettier --write .",
"format:check": "prettier --check .",
"clean": "rm -rf dist coverage"
"clean": "rm -rf dist coverage",
"prepare": "husky && pnpm build"
},
"repository": {
"type": "git",
Expand All @@ -49,6 +50,7 @@
"@vitest/coverage-v8": "^3.2.4",
"eslint": "10.3.0",
"eslint-config-prettier": "10.1.8",
"husky": "9.1.7",
"prettier": "3.8.3",
"typescript": "^5.8.3",
"typescript-eslint": "8.59.2",
Expand Down
Loading