Skip to content
CAI
Software that uses CAICheck a score

steipete/RepoBar

65.2

Adequate · 1 October 2026

45k

lines of production code

Swift

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

RepoBar is a macOS menu-bar utility and iOS companion application that provides a unified interface for monitoring GitHub repositories and local Git projects. It aggregates real-time data on issues, pull requests, releases, and CI/CD status, while also exposing local repository states and changelogs directly from the system menu. The system supports multi-account authentication and offers a command-line interface for managing accounts, archives, and cache, alongside an iOS app for on-the-go access and URL sharing.

Features

Add GitHub pull request and release notification detection

This change introduces the core logic for detecting and tracking GitHub notifications for pull requests and repository releases. It adds new detectors that compare current repository states against persisted snapshots to identify new pull requests, review requests, comments, new releases, and stable release promotions. The implementation includes snapshot storage via UserDefaults to maintain state between checks and respects user settings to enable or disable specific notification types.

Sources/RepoBarCore/Notifications · high confidence

Add iOS app configuration and orientation support

The iOS app now includes an Info.plist file that defines the bundle identifier, display name, and URL schemes for authentication callbacks. It also explicitly declares supported interface orientations for both iPhone (portrait and landscape) and iPad (all orientations), ensuring the app displays correctly across device types.

RepoBariOS/Resources · high confidence

Add iOS share extension and smoke-test script

Users can now share text or URLs from other iOS apps directly into RepoBar via a new Share Extension, which processes the input and opens the app using a custom 'repobar://' deep link. Additionally, a new shell script has been added to automate smoke testing of the iOS app in the simulator, including building, launching, and capturing a screenshot.

RepoBariOS/Scripts, RepoBariOS/ShareExtension · high confidence

Added docs-list helper script

A new executable shell script named 'bin/docs-list' has been added to the repository. This script serves as a wrapper to invoke the underlying Node.js implementation located at 'Scripts/docs-list.mjs', allowing users to list documentation resources directly from the command line.

bin · high confidence

CLI rewritten to use Commander with new account, archive, and cache management commands

The \repobarcli\ command-line interface has been rebuilt using the Commander framework, introducing a new command structure and several new capabilities. Users can now manage multiple GitHub accounts with \accounts list\, \accounts use\, and \accounts remove\ commands, supporting both full account IDs and \username@host\ shorthands. New \archives-\*\ commands (\list\, \status\, \validate\, \update\) allow users to manage local GitHub archive sources for offline or cached data access. Additionally, \cache-status\ and \cache-clear\ commands provide visibility into and control over the persistent API response cache, while \rate-limits\ displays current GitHub API rate-limit status. The CLI also includes a \changelog\ command to parse and summarize project changelogs, and \reference-translate\ to convert GitHub references. Legacy command aliases (e.g., \list\ → \repos\, \pr\ → \pulls\) are preserved via a normalizer for backward compatibility.

Sources/repobarcli · high confidence

Initial iOS app configuration and build setup

The RepoBariOS project is now configured with a deployment target of iOS 26.0 and Swift 6.2, integrating the shared RepoBar core and Kingfisher (v8.6.0) dependencies. The app supports universal links for repobar.app via associated-domains entitlements and includes a share extension for web URL sharing. Authentication is set up using the webcredentials entitlement and a custom URL scheme (repobar), with keychain access scoped to a shared group for data synchronization.

RepoBariOS · high confidence

Initial iOS app project structure and build configuration

The RepoBariOS Xcode project has been established, providing the build configuration for the iOS application. This includes the main app target with its source files (such as views, models, and app session management), a dedicated share extension for handling system share actions, and a test bundle. The project is configured to link against the shared RepoBarCore framework and the Kingfisher image-loading library, ensuring the iOS client can access shared logic and assets.

RepoBariOS/RepoBariOS.xcodeproj · high confidence

Initial release of RepoBar 0.9.1 with Turkish localization

This update introduces the initial release of RepoBar (version 0.9.1, build 31) for macOS, establishing the core application bundle and English user interface strings. It also adds a new Turkish localization for the menu bar interface, making the app accessible to Turkish-speaking users.

Sources/RepoBar/Resources · high confidence

Initial repository scaffolding and release configuration

This change establishes the foundational project structure for RepoBar, introducing the initial version 0.10.0 (build 34) and configuring the macOS release pipeline via \.mac-release.env\. It adds essential development tooling configurations, including \.swiftformat\ and \.swiftlint.yml\ for code style enforcement, \apollo-codegen.json\ for GraphQL type generation, and \pnpm-workspace.yaml\ for dependency management. The commit also provides comprehensive project documentation in \AGENTS.md\, \VISION.md\, and \README.md\, alongside the MIT \LICENSE\ and \RepoBar.entitlements\ for security permissions. Finally, it updates \.gitignore\ to exclude build artifacts and local environment files.

(repo-wide) · high confidence

Introduce comprehensive data models for GitHub Actions, activity, and repository details

This change adds a suite of new data models in the core library to support richer repository views and GitHub Actions integration. Users will see enhanced repository menus with detailed activity feeds, CI/CD usage statistics, and GitHub reference previews. The new models include ActionsUsageInfo and ActionsOrgSnapshot for tracking Actions billing, runners, and cache usage; ActivityEventType and ActivityMetadata to categorize and display recent repository events; and GitHubReferenceMatch to provide inline previews for issues, pull requests, and commits. Additionally, the Repository model is expanded with fields for activity events, traffic stats, heatmaps, and cache states, while RepoRecentItems provides structured summaries for issues, pull requests, releases, and workflow runs.

Sources/RepoBarCore/Models · high confidence

Introduce iOS app models for repository details and cards

Added \RepoDetailModel\ and \RepositoryCardModel\ to the iOS app's model layer. \RepoDetailModel\ handles loading and displaying repository metadata (pull requests, issues, releases, etc.) with specific error handling for disabled features like discussions, while \RepositoryCardModel\ structures the data required for repository list cards, including CI status, traffic stats, and activity summaries.

RepoBariOS/Sources/Models · high confidence

Introduce iOS app views and UI components

This change adds the complete set of SwiftUI views for the iOS application, including the main navigation structure (RootView with Repos, Activity, Status, and Settings tabs), the login screen with GitHub branding, and the core repository management interface (RepoListView, RepoDetailView, RepoFilesView). It also introduces specific UI components such as the Activity feed with icons and avatars, a contribution heatmap visualization, and an add-repository search sheet, establishing the visual layer for the iOS client.

RepoBariOS/Sources/Views · high confidence

Introduce iOS app with authentication, data refresh, and logging

The iOS application now includes core app lifecycle management via AppModel, which handles GitHub OAuth authentication, automatic token refreshing, and periodic data synchronization (repositories, activity, commits, and heatmaps). User settings are persisted and applied to API hosts, while integrated swift-log provides configurable verbosity and file logging. The app initializes AppIntents support and bootstraps the user session upon launch.

RepoBariOS/Sources · high confidence

Introduce iOS support utilities and UI styling

This change adds the initial iOS support layer, introducing a new AppLimits configuration for defining quotas and preview limits across various app features. It includes a GlassStyles component that provides a new visual aesthetic with glassmorphism effects for backgrounds and cards, adapting to light and dark modes. Additionally, it adds several support utilities: IncomingReferenceURL for handling deep links, OwnerFilterParser for managing comma-separated owner filters, and display extensions for GitHubReferenceMatch, RefreshInterval, and RepositorySortKey to provide user-facing labels and status indicators.

RepoBariOS/Sources/Support · high confidence

Introduce local Git project discovery and sync capabilities

This change adds the core backend services for managing local Git repositories, including automatic discovery of repo roots, branch and worktree inspection, and smart synchronization (fetch, pull, push) with conflict detection. It introduces a sandbox-aware Git executable locator that selects the correct binary based on entitlements, and provides detailed status reporting for each repository, including dirty file counts, ahead/behind metrics, and sync state indicators.

Sources/RepoBarCore/LocalProjects · high confidence

Introduce multi-account support with account-scoped authentication

RepoBar now supports managing multiple GitHub identities simultaneously. The new Account model allows users to sign in to different hosts (including GitHub Enterprise) and maintain separate OAuth tokens, Personal Access Tokens, and client credentials for each identity. Authentication flows use PKCE for secure OAuth logins, and token storage is scoped per account to prevent credential collisions. The system also includes a loopback server for handling OAuth callbacks and a refresher that coalesces concurrent token refresh requests to ensure stable sessions across accounts.

Sources/RepoBarCore/Auth · high confidence

Introduce new GitHub API client and decoding layer

The repository now uses a new \GitHubClient\ and associated helper files (\GitHubClient+Helpers\, \GitHubDecoding\, \GitHubErrors\, \GitHubModels\, \GitHubPagination\, \GitHubRateLimitPolicy\, \GitHubRecentDecoders\, \GitHubReleasePicker\, \GitHubRequestRunner\, \GitHubRestAPI+Actions\, \GitHubRestAPI+PullRequests\, \GitHubRestAPI+ReferenceLookup\) to handle GitHub REST and GraphQL interactions. This change adds structured decoding for recent pull requests, issues, releases, workflow runs, discussions, tags, branches, commits, and contributors, along with improved rate-limit handling, ETag caching, and reference lookup capabilities.

Sources/RepoBarCore/API · high confidence

Introduce repository display and changelog content models

This change adds the \RepositoryDisplayModel\ and \ChangelogContent\ data structures to the \Sources/RepoBar/Models\ directory. \RepositoryDisplayModel\ serves as the primary view model for repository items, aggregating statistics (issues, PRs, stars, forks), CI status, traffic data, and activity heatmaps, while also supporting a distinct initialization path for local-only repositories via \LocalRepoStatus\. \ChangelogContent\ provides a structured representation for changelog entries, distinguishing between local and remote (GitHub) sources and handling markdown content and truncation state.

Sources/RepoBar/Models · high confidence

Introduces configurable app appearance and centralized menu limits

Users can now configure the app's visual theme (light, dark, or system) via the new \AppColorScheme\ support, which maps to macOS appearance settings. Additionally, the application enforces specific limits on menu items and data retrieval—such as capping 'more' menus at 20 entries and global activity previews at 20 items—via the new \AppLimits\ configuration, ensuring consistent performance and UI behavior across the menu bar.

Sources/RepoBar/Support · high confidence

Introduces core support libraries for GitHub archives, reference parsing, and rate-limit management

This update adds a suite of new support modules to the core library that enable local GitHub archive import and reading, context-aware GitHub reference translation, and robust rate-limit handling. Users benefit from the ability to import and query local GitHub data snapshots via the new archive importer and reader, while the reference translator improves the accuracy of issue and PR links by resolving bare numbers against local repository context. Additionally, the new backoff tracker and ETag cache help manage GitHub API rate limits more effectively, reducing the likelihood of request failures during high-volume operations.

Sources/RepoBarCore/Support · high confidence

Introduces iOS OAuth authentication with PKCE and token management

Adds the OAuthCoordinator component for the iOS app, enabling users to authenticate via GitHub OAuth using the Authorization Code flow with PKCE. This implementation handles the web authentication session, securely exchanges authorization codes for access and refresh tokens, and manages token storage and automatic refresh, ensuring a secure and persistent login experience on iOS.

RepoBariOS/Sources/Auth · high confidence

Multi-account support and customizable menu settings

The application now supports multiple GitHub accounts, allowing users to manage distinct authentication sessions and filter repository lists per account via the new \AccountScopedRepositoryLists\ and \UserSettings\ structures. Additionally, users can now customize the menu bar layout and repository submenus through the new \MenuCustomization\ settings, enabling them to reorder, hide, or show specific items such as rate limits, issue navigators, and repository cards.

Sources/RepoBarCore/Settings · high confidence

Multi-account support with legacy migration and scoped authentication

The application now supports managing multiple GitHub accounts simultaneously. Existing single-account logins are automatically migrated to the new multi-account model during startup, preserving Personal Access Tokens and OAuth credentials. Users can add, switch between, and remove accounts, with authentication tokens and API clients scoped to each specific account to prevent cross-account data leakage. The login flow now explicitly supports both OAuth (via the default GitHub App) and Personal Access Tokens, and the active account state is persisted and restored across app restarts.

Sources/RepoBar · high confidence

New build, signing, and developer tooling scripts

The repository now includes a comprehensive set of build and developer utility scripts. This adds automated code signing for the macOS app and CLI (handling entitlements, nested binaries, and Sparkle components), notarization via Apple's notarytool, and a dedicated script to generate app icons. Developer workflows are enhanced with scripts for Swift Package Manager sanitization, code coverage enforcement, and Apollo GraphQL schema management. Additionally, new TypeScript CLI helpers (ghql, ghrest) are provided for debugging GitHub API interactions, alongside utilities for generating documentation indexes and release notes.

Scripts · high confidence

New menu submenus for GitHub Actions, Changelog, and Issue Navigator

The menu now includes dedicated submenus for GitHub Actions & Runners status, Changelog previews, and an Issue Navigator. The Actions submenu displays runner fleet status, concurrent job usage with a rate-limit progress bar, and queue details. The Changelog submenu renders markdown content with a custom block parser for headings, lists, code blocks, and blockquotes. The Issue Navigator provides a split-view interface with a sidebar for filtering and a detail pane that preloads and caches WKWebViews for reference previews, supporting back navigation and scope selection.

Sources/RepoBar/Views · high confidence

New modular settings interface with multi-account and local project support

The settings UI has been restructured into distinct tabs (General, Display, Advanced, Debug, Notifications, and Accounts) to organize configuration options. Users can now manage multiple GitHub accounts, switching between OAuth and Personal Access Token authentication, and view detailed API rate-limit usage. The Advanced tab introduces local project scanning with configurable depth, auto-sync, and terminal integration, while the Display tab allows customization of menu bar layout and visibility of specific items.

Sources/RepoBar/Settings · high confidence

New status bar menus for activity, changelogs, and GitHub references

The menu bar now includes dedicated sections for recent global activity (commits and events with type-specific icons), per-repository changelogs (parsed from local or remote markdown with caching), and GitHub references detected in the clipboard (with an inline WebKit preview and an Issue Navigator window). Local Git operations (branch switching, worktrees, sync, rebase, reset) are also exposed in the status bar menus, and a rate-limit meter icon displays remaining REST and GraphQL API quotas.

Sources/RepoBar/StatusBar · high confidence

Support for multi-account authentication with Personal Access Tokens

The authentication system now supports multiple GitHub accounts simultaneously, allowing users to switch between different identities. A new Personal Access Token (PAT) login method has been added as an alternative to OAuth, enabling authentication for SAML SSO organizations. The new AccountManager coordinates per-account clients and token stores, while OAuth flows continue to use browser-based login with PKCE and refresh tokens.

Sources/RepoBar/Auth · high confidence

Behavioural changes

App registered as a menu-bar utility with custom URL scheme

The application is now configured to run as a background menu-bar utility (LSUIElement) that prohibits multiple instances. Additionally, a custom URL scheme (repobar://) has been registered, allowing other applications to launch or interact with the app via this protocol.

Resources · high confidence

Default signing and build configuration for RepoBar

A new Shared.xcconfig file establishes default build settings for the RepoBar project, including the bundle identifier com.steipete.repobar, automatic code signing, Swift 6.0, and strict concurrency checking. The configuration also conditionally includes Local.xcconfig to allow for local overrides.

Config · high confidence

Redesigned About settings page with update diagnostics

The About settings view has been rebuilt to display detailed build information, including the version, build timestamp, and Git commit hash. It now features a dedicated link row component for navigation to GitHub, the website, the issue tracker, and email support. Additionally, users can manage automatic update preferences via Sparkle and access a new 'Copy Update Diagnostics' button to assist with troubleshooting.

Sources/RepoBar/Settings/About · high confidence

Updated GraphQL schema and added repository snapshot query

The GraphQL layer now includes a new \RepoSnapshot.graphql\ query that retrieves repository details including the latest release information (name, tag, dates, URL, draft/prerelease status) and counts for open issues and pull requests. Additionally, the \schema.graphqls\ and \schema.json\ files have been updated to reflect the current GitHub GraphQL API schema, incorporating recent changes such as deprecations for suggested topics and classic projects, and new mutations for managing enterprise and repository migrations.

GraphQL · high confidence

Test coverage

Added comprehensive test coverage for the repobar CLI; Added test coverage for iOS URL parsing and repository helpers; Expanded test coverage for account management, repository filtering, and GitHub Actions.

Dependencies

Initialize Swift and Node.js dependency manifests

The project now declares its external dependencies using Swift Package Manager and pnpm. The Swift package configuration targets macOS 15 and iOS 26, linking libraries such as Apollo, GRDB, Kingfisher, Sparkle, and Commander. The Node.js configuration pins the pnpm package manager and specifies Node.js 22.13.0 as the runtime, with development tools including tsx, zod, and esbuild 0.28.2.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 65 → 65 (+0.6)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 80 → 79 (-1.2)
  • Architecture 98 → 89 (-9.4)
  • Maturity 65 → 65 (+0.2)
  • Readiness 52 → 55 (+2.8)
  • Security 88 → 93 (+4.8)
  • Domain Modelling 86 → 86 (+0.0)
  • Performance 78 (new)

Resolved (17)

  • Change-coupling hub: StatusBarMenuManager.swift → GitHubReferenceBrowserMenuItemView.swift, StatusBarMenuBuilder+RepoSubmenus.swift, AppLimits.swift, MenuRepoFilters.swift (Sources/RepoBar/StatusBar/StatusBarMenuManager.swift)
  • Duplicated block (11 lines × 2) (Sources/RepoBarCore/API/GraphQLClient.swift)
  • Duplicated block (5 lines × 2) (Sources/RepoBarCore/API/GraphQLClient.swift)
  • Duplicated block (6 lines × 3) (Sources/RepoBar/App/AppState+IssueNavigation.swift)
  • Duplicated block (7 lines × 2) (Sources/RepoBarCore/API/GraphQLClient.swift)
  • Duplicated block (7 lines × 2) (Sources/RepoBarCore/API/GraphQLClient.swift)
  • Hotspot: Sources/RepoBar/App/AppState.swift (Sources/RepoBar/App/AppState.swift)
  • Hotspot: Sources/RepoBar/StatusBar/RepoSubmenuBuilder.swift (Sources/RepoBar/StatusBar/RepoSubmenuBuilder.swift)
  • Hotspot: Sources/RepoBar/StatusBar/StatusBarMenuBuilder.swift (Sources/RepoBar/StatusBar/StatusBarMenuBuilder.swift)
  • Hotspot: Sources/RepoBar/Views/IssueNavigatorModel.swift (Sources/RepoBar/Views/IssueNavigatorModel.swift)
  • Hotspot: Sources/RepoBarCore/API/GitHubModels.swift (Sources/RepoBarCore/API/GitHubModels.swift)
  • Hotspot: Sources/RepoBarCore/API/GitHubRequestRunner.swift (Sources/RepoBarCore/API/GitHubRequestRunner.swift)
  • Hotspot: Sources/RepoBarCore/Auth/TokenStore.swift (Sources/RepoBarCore/Auth/TokenStore.swift)
  • Hotspot: Sources/RepoBarCore/Support/GitHubReferenceTranslator.swift (Sources/RepoBarCore/Support/GitHubReferenceTranslator.swift)
  • Hotspot: Sources/repobarcli/RecentListCommands.swift (Sources/repobarcli/RecentListCommands.swift)
  • Near-duplicate member pair (21 shared lines) (Sources/RepoBarCore/Auth/OAuthLoginFlow.swift)
  • Near-duplicate member pair (30 shared lines) (Sources/RepoBarCore/API/GraphQLClient.swift)

New (103)

  • AboutSettingsView.body (cognitive 17) (Sources/RepoBar/Settings/About/AboutSettingsView.swift)
  • AccountSettingsView.body (cognitive 52) (Sources/RepoBar/Settings/AccountSettingsView.swift)
  • AccountSettingsView.body (cyclomatic 26) (Sources/RepoBar/Settings/AccountSettingsView.swift)
  • Ambiguous cache clearing operations. 'clearCache' and 'clearRepoDetailCache' suggest different scopes of caching. It is unclear if 'clearCache' is a global clear that includes 'repoDetailCache', or if they are distinct caches. This leads to potential redundancy or confusion about which method to call to clear specific data.
  • CLIOutput.swift.tableLines (cognitive 39) (Sources/repobarcli/CLIOutput.swift)
  • CLIOutput.swift.tableLines (cyclomatic 22) (Sources/repobarcli/CLIOutput.swift)
  • Change coupling: StatusBarMenuBuilder.swift ↔ RepoRecentItems.swift (Sources/RepoBar/StatusBar/StatusBarMenuBuilder.swift)
  • Change-coupling hub: StatusBarMenuManager.swift → GitHubReferenceBrowserMenuItemView.swift, StatusBarMenuBuilder+RepoSubmenus.swift, AppLimits.swift, MenuRepoFilters.swift, RepoRecentItems.swift (Sources/RepoBar/StatusBar/StatusBarMenuManager.swift)
  • Coverage not measured — Swift suite
  • Duplicated block (10 lines × 2) (Sources/RepoBar/Views/ActionsLimitsMenuViews.swift)
  • Duplicated block (10 lines × 2) (Sources/RepoBar/Views/ReleaseAssetMenuItemView.swift)
  • Duplicated block (10 lines × 2) (Sources/RepoBarCore/Settings/MenuCustomization.swift)
  • Duplicated block (10 lines × 2) (Sources/repobarcli/RecentListsOutput.swift)
  • Duplicated block (10 lines × 2) (Sources/repobarcli/RecentListsOutput.swift)
  • Duplicated block (10 lines × 2) (Sources/repobarcli/RecentListsOutput.swift)
  • Duplicated block (10 lines × 4) (RepoBariOS/Sources/Support/RepositorySortKey+Label.swift)
  • Duplicated block (10–11 lines × 2) (Sources/RepoBar/Support/TerminalApp.swift)
  • Duplicated block (11 lines × 2) (RepoBariOS/Sources/Views/HeatmapAxisLabelsView.swift)
  • Duplicated block (11 lines × 2) (Sources/repobarcli/LocalActionsSupport.swift)
  • Duplicated block (11 lines × 3) (Sources/RepoBar/Views/DiscussionMenuItemView.swift)
  • …and 83 more

Changes since last survey

  • 16 commits — 9 feature/other, 7 fixes

By area

  • (root) — 10 commits
  • Sources/RepoBarCore — 3 commits
  • Scripts/sign-and-notarize.sh — 1 commit
  • Sources/RepoBar — 1 commit
  • Tests/RepoBarTests — 1 commit

Notable commits

  • fix: Fix GitHub quota tracking and stack menu bar counts for 0.9.2
  • fix: fix: preserve observed usage over synthetic full quota reports
  • fix: fix: propagate app packaging verification failures (#136)
  • fix: fix: refresh repository submenu heatmap colors
  • fix: fix: resolve notarization verification tools explicitly
  • fix: fix: ship 0.9.3 quota accuracy improvements (#135)
  • fix: fix: support debug packaging with macOS Bash (#134)
  • change: build(deps): refresh Swift packages and pnpm tooling (#137)
  • change: build(deps): refresh image and terminal rendering dependencies
  • change: build(deps): update pnpm and prepare RepoBar 0.10.0 (#143)
  • change: chore: deslop cooldown tracking (#138)
  • change: chore: open 0.9.3 unreleased
  • change: chore: open 0.9.4 unreleased
  • change: docs: update appcast for 0.9.2
  • change: docs: update appcast for 0.9.3
  • change: feat: add configurable app appearance

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

steipete/RepoBar was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 25b7ca3c02576df77eb56260820831a40efb7188 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.