Releases: airscripts/ghitgud
Releases · airscripts/ghitgud
2.1.0
[email protected] - 2026-05-09
Added
ghitgud ghpassthrough command — proxy any args to the gh CLInotifications listwith--all,--participating,--repo,--limitnotifications read <id>notifications done <id>activity— composite view of assigned issues, review requests, mentionsmentions— search for recent @mentionsclient.putmethod in API layer
2.0.0
[email protected] - 2025-05-09
Added
config get <key>command to retrieve stored configuration valueslabels pull --template <name>flag for pulling from built-in label templateslabels push --template <name>flag for pushing from built-in label templatescore/format.tsfor consistent JSON output to stdout and stderrcore/errors.tswithGhitgudErrorhierarchy (AuthError,ConfigError,NotFoundError,UnprocessableError)core/io.tswith generic file helpers (readJsonFile,writeJsonFile,fileExists,ensureDir)api/client.tsas a base HTTP client with auth guard, 2xx success checks, and error registry patternservices/config.tswithvalidateKeyhelper for supported config keysservices/labels.tswithupsertLabelshelper andnormalizeLabelin types- Structured JSON error output
{ success: false, error: "..." }to stderr - Consistent JSON output shape
{ success: true, ... }for all commands includingping - Global error boundary in
cli/index.tscatchingGhitgudErrorsubclasses - Self-registering command modules exported as
{ register }functions - Version read from
VERSIONfile at runtime instead of hardcoded core/constants.tscentralizing all shared constants, error messages, and config type definitions- Multi-step CI/CD with reusable workflows (verify, build, test, deploy)
- Vite-based build pipeline replacing
tsc+tsc-alias, producing a single CJS bundle with shebang @/import aliases resolved by Vite at build time andtsconfigpaths for type checking (nobaseUrl, TS 7.0-ready)typecheck,lint,clean, andprepublishOnlyscripts inpackage.jsonfiles,engines, andenv.d.tsdeclarations inpackage.jsonfor npm publishing safety.npmrcwithsave-exact=truefor deterministic dependency resolutioncoverage/in.gitignore- GitHub Actions workflows with
cache: pnpmfor faster CI runs - Test suite expanded from 1 file to 13 files covering api, cli, commands, core, and services
@vitest/coverage-v8integrated withtest:coveragescript- Tests for
cli/ascii.tsandcli/index.ts
Changed
- Restructured CLI into layered architecture:
cli/ → commands/ → services/ → api/ → core/ - Eliminated circular dependency between old
app/config.jsandapp/functions.js - Split monolithic
app/library.tsinto focusedservices/labels.tsandservices/config.ts - Replaced declarative commands dictionary with self-registering command modules
- All HTTP 2xx status codes now accepted (previously only 200)
labels prunenow awaits all delete promises instead of fire-and-forgetconsole.inforeplaced withconsole.logfor proper stdout behavior- Error registry pattern (
ERROR_MAP,ERROR_MESSAGES) local toclient.tsfor extensible status-to-error mapping handleErrorinclient.tsnow throwsGhitgudErrorfor unmapped status codes instead of bareError- Build output changed from
dist/cli/index.jsto singledist/index.jsbundle - Templates copied to
dist/templates/at build time, resolved via__dirnameat runtime - CI workflows reordered to install pnpm before setting up Node.js caching
@vitest/coverage-v8version aligned withvitest(3.2.4)templates/conventional.jsonreindented from 4 spaces to 2 spaces- GitHub Actions upgraded to Node.js 24, checkout@v6, setup-node@v6, pnpm/action-setup@v6
Fixed
labels prunefire-and-forget bug: all delete promises are now awaitedhandleErrorinclient.tsnow throwsGhitgudErrorfor unmapped status codes instead of bareError- Redundant
declare const __VERSION__removed fromcli/index.ts(already inenv.d.ts) baseUrlremoved fromtsconfig.json—pathsresolves relative to tsconfig location (TS 7.0-ready)tests/tsconfig.jsonadded for test type checking with correct@/path resolutionpackage-lock.jsonremoved (project uses pnpm exclusively)vitest.config.tsmerged intovite.config.tsusingdefineConfigfromvitest/configiomodule mocked inlabels.test.tsfor push/prune tests — no real filesystem hits- Duplicates removed from
labels.test.tstest suite
1.0.1
1.0.0
[email protected] - 2025-05-09
Added
- Base CLI with
labels,ping, andconfigcommands - GitHub label templates (base, conventional, github)