- Release workflow:
.github/workflows/publish.yml. - npm Trusted Publisher should be configured for owner
kitlangton, repositoryghui, workflowpublish.yml, environmentnpm. - Add a changeset for every user-facing change with
bun run changeset. - Check pending changesets with
bun run changeset:status. - Apply pending changesets with
bun run changeset:version; this bumpspackage.jsonand updatesCHANGELOG.mdwhen release notes exist. - Run
bun run format:check,bun run typecheck,bun run lint,bun run test, andbun run package:smokebefore committing the version bump. - Commit and push the version bump and consumed changesets to
main. - Create a GitHub release named and tagged
v<package.json version>. - Publishing to npm happens from GitHub Actions via trusted publishing; do not use an
NPM_TOKEN. - The workflow verifies the release tag matches
package.json, builds standalone binaries, runsnpm publish, uploads release assets, and dispatcheskitlangton/homebrew-tap. - Homebrew tap automation uses the
HOMEBREW_TAP_TOKENActions secret onkitlangton/ghuito dispatchkitlangton/homebrew-tap. HOMEBREW_TAP_TOKENshould be a fine-grained PAT owned bykitlangton, scoped only tokitlangton/homebrew-tap, with repositoryContents: Read and write.- After releases, verify both the publish workflow and the tap dispatch workflow pass.
- Format check:
bun run format:check. - Typecheck:
bun run typecheck. - Lint:
bun run lint. - Test:
bun run test. - Package smoke:
bun run package:smoke. - Create changeset:
bun run changeset. - Check changesets:
bun run changeset:status. - Apply changesets:
bun run changeset:version. - Create release:
gh release create vX.Y.Z --target main --title "vX.Y.Z" --notes "...". - Check publish run:
gh run list --workflow publish.yml --limit 5. - Check npm version:
npm view @kitlangton/ghui version. - Check tap workflow:
gh run list --repo kitlangton/homebrew-tap --workflow update-ghui.yml --limit 5. - Check Homebrew formula:
brew info kitlangton/tap/ghui. - Test Homebrew install:
brew reinstall kitlangton/tap/ghui && /opt/homebrew/opt/ghui/bin/ghui --version.
- Before committing or pushing code changes, run
bun run format:check,bun run typecheck,bun run lint, andbun run test. - Before release commits, also run
bun run package:smoke. - Before release commits, also run
bun run build:standalone. - If formatting fails, run
bunx oxfmt src/ test/ dev/or format only the touched files, then rerunbun run format:check. - CI enforces formatting with
bun run format:check; do not rely on manual review to catch formatting drift.
- Modal dividers must connect to the side borders with junction characters (
├/┤). When adding a horizontal divider inside a modal body, thread the divider's row index throughModalFrame'sjunctionRowsso the side bars render├/┤at that row instead of│. Inline<Divider>s without a corresponding junction row look detached and are wrong.
Larger features and redesigns are captured in markdown under plans/ before work starts. Each plan has Why / What / API mapping / Open questions / Status. When taking on something non-trivial, check plans/ first; when sketching a future-direction idea, write a plan there rather than only mentioning it in chat or commits. See plans/README.md for the format and index.
- Add a conversation panel focus/expand flow for reading and navigating longer PR conversations.
- Consider click-drag support in diffs to select a comment range.
- See
plans/for tracked feature plans (e.g. queued PR reviews).