steipete/RepoBar
65.2
Adequate · 1 October 2026
45k
lines of production code
Swift
primary language
2
measurements over time
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.