Skip to content

About

Native macOS menu-bar monitor for personal GitHub pull request workflows

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

PR Babysitter

PR Babysitter is a native macOS menu-bar app for keeping a personal GitHub pull-request queue under control. It provides a quiet menu-bar summary for quick checks and a three-column dashboard for reading PR descriptions, activity, review threads, checks, and comments.

The app talks to GitHub exclusively through your existing GitHub CLI login. It never requests, prints, copies, or stores a GitHub token.

What it does

  • Separates authored PRs from direct and team review requests.
  • Highlights conflicts, failing checks, requested changes, and unseen updates.
  • Refreshes every three minutes and after the Mac wakes.
  • Prioritizes comments, resolved threads, and merges in the Activity feed.
  • Collapses CI activity into a summary instead of listing every individual job.
  • Renders GitHub-flavored Markdown, tables, code, links, and GitHub-hosted visual evidence.
  • Shows review comments with Git-style diff hunks and old/new line-number gutters.
  • Supports replying to code-review threads and resolving or reopening them.
  • Keeps acknowledgement fingerprints locally without persisting PR titles, descriptions, comments, or activity.

Status icons

Each PR row uses a familiar pull-request glyph:

  • Branching arrow: open pull request.
  • Branch/Y glyph: draft pull request.
  • Red dot: merge conflict, failed checks, or requested changes.
  • Green dot: checks passed with no known blocker.
  • No dot: draft, pending or missing checks, or an unknown status.

The text beneath the PR gives the specific state, such as Merge conflict, Checks passing, or Approved.

How it works

  1. PR Babysitter finds gh at /opt/homebrew/bin/gh or /usr/local/bin/gh.
  2. It launches that exact executable with Process; it never invokes a shell and never reads gh auth token.
  3. GraphQL requests are passed to gh api graphql over standard input.
  4. A shared @MainActor observable model prepares the authored, requested, attention, activity, and detail views.
  5. Optional external CI links are decoded lossily. A malformed check URL is ignored and falls back to the PR URL rather than dropping the dashboard.
  6. Only acknowledgement fingerprints are written to UserDefaults. Activity and GitHub content remain in memory.

PR Babysitter is read-only except for explicit actions on code-review threads:

  • Post reply
  • Reply & Resolve
  • Resolve
  • Reopen

General PR comments, reviews, merges, and code changes are not writable from the app.

Requirements

  • macOS 15 or newer
  • Xcode 16 or newer
  • XcodeGen
  • GitHub CLI authenticated to github.com
  • GitHub access to the organization queried by the app

Install the command-line dependencies with Homebrew:

brew install gh xcodegen
gh auth login
gh auth status --active

Build

Generate the Xcode project:

xcodegen generate

Build the Debug app into isolated DerivedData:

xcodebuild build \
  -project PRBabysitter.xcodeproj \
  -scheme PRBabysitter \
  -configuration Debug \
  -destination 'platform=macOS' \
  -derivedDataPath .build/AppDerivedData

Launch the exact bundle:

open ".build/AppDerivedData/Build/Products/Debug/PR Babysitter.app"

Test

xcodebuild test \
  -project PRBabysitter.xcodeproj \
  -scheme PRBabysitter \
  -destination 'platform=macOS' \
  -derivedDataPath .build/DerivedData \
  CODE_SIGNING_ALLOWED=NO

Configuration

The P0 build currently scopes its GitHub searches to the ppl-ai organization. To use another organization, update the search qualifiers in PRBabysitter/Services/GitHubCLIClient.swift.

The app bundle identifier is com.gunnargray.PRBabysitter.

Project structure

PRBabysitter/
├── App/          App and scene setup
├── Models/       GitHub and Activity models
├── Services/     Direct gh process runner and GraphQL client
├── State/        Shared app model and local acknowledgements
└── Views/        Menu, dashboard, detail, Markdown, and shared components

The Xcode project is generated from project.yml.

Distribution

PR Babysitter is intentionally an unsandboxed personal development build because it launches the locally installed gh executable. It is not currently configured for App Store distribution.

About

Native macOS menu-bar monitor for personal GitHub pull request workflows

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages