This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

PR Focus Documentation

PR Focus is a macOS app designed to make it easy for you to stay on top of PRs that are important to your work.

If you work in multiple repositories, and want a single place to keep track of PR progress, PR Focus may be a good tool for you.

Find out more about how it works, how to get started, or how to get help.

1 - Overview

Watch important PRs across repositories - and ignore the rest.

Get an overview of pull requests across repositories you watch, or dive deep into the details of a specific repository or pull request.

PR Focus gives you a snapshot of PRs in flight so you don’t miss any important work that needs your attention. Impress your colleagues by always knowing about the latest status of oustanding work, and eliminate the time-wasting of having to click around multiple repositories to check on work that matters to you.

What is PR Focus?

PR Focus is a macOS app that lets you keep track of important pull requests across repositories. You specify repositories you want to watch, and PR Focus pulls down open pull requests in those repositories. New pull requests go into your Inbox, where you can decide whether you want to watch or ignore them.

Separate sections of the dashboard let you keep track of pull requests where:

  • You’re a reviewer on the PR
  • You’re assigned to the PR
  • You are the person who made the PR

You can see a view that rolls up all your PRs across your watched repositories, or drill into a specific repository for more fine-grained information.

PR Focus includes logic to automatically remove archived or inactive PRs from your views, letting you focus only on the PRs that matter to you.

Why do I want it?

PR Focus is a tool for watching PRs across repositories.

  • What is it good for? PR Focus was written by a technical writer who needs to keep track of engineering pull requests across multiple upstream repositories, and colleagues’ pull requests across multiple documentation repositories. You might find it useful if you are a contributor to or maintainer of more than one repository.

  • What is it not good for? PR Focus is about watching repositories, not making contributions to them. You cannot make PRs or reply to PRs from PR Focus, although the app contains many links to relevant destinations on GitHub to enable you to easily engage directly via GitHub.

  • What is it not yet good for? PR Focus is currently in an early private beta on TestFlight. The current development focus is on stability, UI and UX fixes to get to a public beta TestFlight, and eventually a release. Future roadmap will be driven by any early adopters.

Overview on YouTube

2 - Get Started

What do you need to know to get started with PR Focus?

Prerequisites

  • PR Focus is an English-language macOS app. The minimum macOS version required to use PR Focus is 13.3.
  • PR Focus is currently available as a private alpha through TestFlight. You must install TestFlight from the App Store to use it.
  • PR Focus currently only supports repositories hosted on GitHub. You cannot use PR Focus to watch repositories hosted on GitLab, Bitbucket, or any other git repository hosting - provider. PR Focus is not compatible with self-hosted enterprise GitHub installations.
  • PR Focus requires a GitHub access token to make API calls. The access token must have the appropriate permissions for the repositories you want to watch. Details below.

Installation

PR Focus is currently available as a private alpha through TestFlight.

If you have been invited to the private TestFlight group, you should get an email from Apple. Follow the instructions in the email to accept the invite and begin testing PR Focus.

Setup

The first time you start PR Focus, you’ll be asked to provide some setup details. You must:

  • Provide a GitHub Access Token
  • Add your first repository

Generate a GitHub Access Token

PR Focus requires a GitHub access token with permissions to access the repositories you want to watch.

For details about how to generate a GitHub access token, refer to the GitHub Authentication documentation page Manage Personal Access Tokens.

GitHub provides two types of access tokens:

  • A fine-grained access token (currently in beta) which provides more precise control over what the bearer can access
  • A classic access token with less precise control over what the bearer can access

The required permissions for PR Focus to fetch pull request data vary depending on which type of access token you create.

For more details about the required permissions for each type of access token, refer to GitHub API Key

You can update your access token later from the PR Focus menu with the Manage API Key option.

Add a Repository

After you provide a valid API access token, PR Focus guides you to add your first repository. Provide the GitHub URL for a repository you want to watch, similar to https://github.com/dacharyc/prfocus-website

When you are adding your first repository, you can optionally configure settings for that repository. For more information, refer to Customize Repository Settings below. If you just want to get started, you can skip this step.

After you add the initial repository, PR Focus automatically fetches open pull requests for that repository. You’ll go to the main dashboard, and should start seeing PRs appear in your Inbox, My PRs, and Assigned PRs or Reviewing PRs respectively. You can specify whether to Watch or Ignore the PRs that come in. For more information, refer to Incoming PRs.

Customize Repository Settings (Optional)

You can optionally configure repository-specific settings for this repository. These settings include:

  • How you interact with the repository. This affects the view of that repository’s dashboard, and your main dashboard.
    • You can specify that you’ll never be a reviewer, assignee, or contributor to the repository. PR Focus considers this a “watch-only” view. When you check this checkbox, PR Focus does not show the My PRs, Assigned PRs, or Reviewing PRs columns for that repository. You’ll only see an Inbox and your Watched PRs for that repository.
    • If you may be a contributor, assignee, or reviewer in that repository, check the appropriate checkbox(es). These checkboxes toggle the visibility of the My PRs, Assigned PRs and Reviewing PRs columns respectively.
    • When you check that you may be an assignee or a reviewer in a repository, the Assigned PRs or Reviewing PRs column also appears in your main dashboard.
    • The global default is that you may be a contributor and a reviewer.
  • How often to fetch pull requests for the repository.
    • The global default is hourly.
  • The number of days to wait until archiving a pull request after it has been closed or merged.
    • The global default is 10 days.
    • If your work starts after an upstream repository has merged a PR, you may want it to remain in your repository dashboard for several days or weeks before it moves to archived.
    • If your work is done when a PR is closed or merged, you may want it to be archived right away.
  • The number of days to wait before moving a pull request without updates to “inactive”.
    • The global default is 30 days.
    • You may want a PR in a specific repository to move to inactive sooner.
    • If a repository has a longer review cycle, you may want to delay the time until inactive.

You can always update these settings later in Repo Settings. For more information about customizing repository setings, refer to Repository Settings.

You can update your global default settings later in Global Settings. For more information, refer to Global Settings.

What’s Next

After you add your first repository, you may want to add more repositories for PR Focus to watch. For more information about adding repositories, refer to Add a Repository.

You may also want to change the label color or provide a custom name for a repository. For more information about customizing the way the repository appears in PR Focus, refer to Repository Settings.

You may want to customize your global default settings. If you do not customize the settings for a repository, PR Focus uses the global default settings to determine:

  • What columns to display
  • How often to fetch pull requests
  • How long to wait before archiving a PR or setting it to “Inactive”

For more information about global default settings, refer to Settings.

3 - Repositories

Watch Repositories on GitHub for PRs

Repositories are the bucket by which PR Focus groups pull requests.

As a user of PR Focus, you can add one or more repositories that you want to watch. When you Fetch PRs, PR Focus makes API calls to GitHub to get open PRs for all of the repositories you’re watching, as well as updating existing PRs that PR Focus has previously ingested.

You can view pull requests in a specific repository, or view an All Repositories dashboard that aggregates all the PRs across all the repositories you’re watching.

You can customize the way PR Focus displays repository details, including:

  • Customizing the repository name or changing the repository label color that displays in the PR Summary view
  • Customizing the columns that display in the repository dashboard when you view a specific repository

You can also customize how often PR Focus fetches updates for the repository, or how long PR Focus waits before setting a pull request to “Inactive” or “Archived.”

You can delete a repository from PR Focus, which also deletes all pull requests for the repository.

3.1 - Add Repositories

Add repositories to watch for new and updated PRs.

You can add a repository to PR Focus using the Add Repositories option in the Repositories menu.

Screenshot showing the “Add Repositories” menu option

This opens a window where you can add one or many repositories.

Add One Repository

By default, when you open the Add Repositories window, you see the option to add a single repository.

Enter a GitHub URL for the repository you want to add, similar to https://github.com/dacharyc/prfocus-website.

You can also select a color for the repository pill to help visually distinguish the repository in a list.

Screenshot showing the “Add one” option in the “Add Repository” pane, with a text field to enter a URL, a picker to select a color and a save buttons

Press the Add Repository button to add the repo to the list of repositories you’re watching.

The repository appears in the sidebar. PR Focus enqueues a job to automatically fetch the open pull requests in the repository from GitHub. Once any running jobs are complete, PR Focus gets the open PRs for the new repository.

If you view Manage Repositories option in the Repositories menu, you’ll see the repository in your list of watched repositories. From here, you can click a link to view the repository in GitHub.

Screenshot showing the Manage Repositories window with links to view repositories on GitHub, and buttons to update settings or delete the repositories

Add Many Repositories

If you want to quickly onboard a team to PR Focus, you can create a list of repository URLs to add to the app.

When you open the Add Repositories window, you’ll see the option to Add many.

Screenshot showing the Add Repo sheet, with Add Many selected and a text box to enter many repository URLs

When you select this option, you can enter a list of repository URLs separated by newlines. PR Focus parses this list and adds all of the repositories to the app.

When adding many repositories, you cannot customize the color of the labels. PR Focus starts at the top of the color list and assigns a different color to each repository in the list. If you enter more repositories than colors, PR Focus starts assigning label colors again at the beginning of the list.

You can manually customize these labels later if you configure repository settings.

What’s Next

3.2 - View a Repository

View the Repository Dashboard to see only PRs for that repository or change repo settings.

When you select a repository in the sidebar, this opens the Repository Dashboard. From here, you can:

  • Manage incoming PRs
  • View any PR in GitHub
  • View the details of a specific PR in PR Focus
  • Manage details about the repository, or stop watching it

Or if you want to view a rollup of all the PRs you’re watching in one view, you can select the All Repositories view, which displays all the pull requests from the individual repository dashboards in an aggregate view.

The Repository Dashboard

The Repository Dashboard breaks down into different lists of pull requests. By default, you see:

  • Inbox: a list of Incoming PRs
  • Watched PRs: a list of PRs you’ve chosen to watch
  • My PRs: a list of your PRs in the repository
  • Reviewing PRs: a list of PRs where you’re a reviewer

Optionally, if your workflow involves assigning PRs, you can check the setting in the Settings or in the repository’s Update Settings to Show Assigned PRs. This adds a fifth list of PRs that are assigned to you.

Screenshot showing the Repository Dashboard

PR Summary

A summary view gives you information about each PR in the repository, including:

  • The PR’s title
  • The PR number
  • The repository where the PR exists
  • Whether a PR has merge conflicts
  • Whether a PR is open, closed, or merged
  • Whether there are any checks for the PR, and if those checks have passed or failed
  • The number of commits in the PR
  • The number of comments on the PR
  • The number of reviews the PR has gotten

You can click into a PR summary to see the full details of the pull request.

The background color of the PR summary changes when the PR has new updates since you last viewed the details. PR Focus uses your macOS settings for Light or Dark mode.

In Light mode, a PR summary with a bright white background has updates you haven’t seen. One that is gray does not have any new updates since you last viewed it.

Screenshot of a PR Summary with new updates in Light mode - the background is bright white

In Dark mode, a PR summary with a gray background has updates you haven’t seen. One that is dark black does not have any new updaets since you last viewed it.

Screenshot of a PR Summary with new updates in Dark mode - the background is gray instead of dark black

PR Summary Context Menu

You can right-click on a PR summary to open a context menu. This menu lets you quickly perform common actions without clicking into the pull request details.

The available options change depending on the context in which you open the menu. For example, if a PR is closed or merged, one of the options in the context menu is “Archive PR.” If the pull request is open, this option is not available.

You can always select “Open in GitHub” to immediately interact with the PR on GitHub. Or you can click into the pull request details to view the details without leaving PR Focus.

Screenshot showing the PR Summary context menu, with options to watch or ignore a PR, or open it in GitHub

Conflicts

A PR’s “Conflicts” icon can indicate one of three states:

  • A green check: A PR has no merge conflicts.
  • A gray check: GitHub hasn’t finished calculating whether a PR has merge conflicts.
  • A red X: A PR has merge conflicts.

Status

A PR’s “Status” can be one of four states:

  • Open: Indicated by a green pull request icon: A green git PR open icon
  • Draft: Indicated by a grey pull request draft icon: A green git PR open icon
  • Merged: Indicated by a purple merged icon: A purple git merged icon
  • Closed without merging: Indicated by a red pull request closed icon: A red git PR closed without merging icon

Checks

A PR’s “Checks” include jobs that run on a PR before merging, such as linters, test suites, or other CI jobs. The status of these jobs is indicated as one of three states in the PR summary:

  • A green check: A PR has at least one check, and it has passed all checks.
  • A red X: A PR has at least one check, and it has failed at least one check.
  • An “N/A”: A PR has no checks, or the status of checks is unknown.

When you click into a PR’s details, you can see the status of individual checks.

Inbox

When a new PR is opened in a repository you’re watching, PR Focus checks for a few things:

  • Are you the PR author? If so, the PR goes to My PRs.
  • Are you an assignee? If so, the PR goes to Assigned PRs
  • Are you a reviewer or requested reiewer? If so, the PR goes to Reviewing PRs

If none of those things applies, the pull request appears in the Inbox. From here, you can view the PR’s details and decide whether to Watch or Ignore a PR. If you later become a reviewer or an assigned contributor, the PR moves to one of those columns whether or not you Watch or Ignore it.

For more information about processing incoming PRs, refer to Incoming PRs.

PRs Opened and Closed Between Fetches

It is possible for a PR to be opened and never appear in PR Focus. In PR Focus v0.2.x, the app only pulls down new PRs if they are open. If a new PR is opened and closed again in between the times PR Focus fetches the pull requests from the repository - for example, while you are on vacation - PR Focus does not ever see the PR.

A future update for PR Focus will fetch PRs that are opened and then closed again between fetches.

Watched PRs

When you choose to Watch an incoming PR, it moves into the Watched PRs list for the repository and in the All Repositories rollup view.

You can stop watching a PR at any time by either:

  • Clicking into the PR Details and pressing the Stop Watching button.
  • Right-clicking on the PR Summary and selecting Stop Watching from the context menu.

If the PR is still open, it goes back to your Inbox. If the PR is no longer open, it disappears from all dashboards.

You can also choose to Ignore a pull request that you’re currently watching. If you select this option, PR Focus stops watching the PR and moves it to the Ignored PRs dashboard.

Choosing to Watch or Ignore a PR does not move a pull request out of the My PRs, Assigned PRs or Reviewing PRs columns.

My PRs

When the GitHub user who created the PR is the same as the GitHub user in the PR Focus Global Settings, the app considers you the PR author and automatically moves the PR into My PRs. PR Focus does not provide a way to manually designate a PR as “mine.”

Choosing to Watch or Ignore a PR does not move the pull request out of the My PRs column. The only way to move a pull request you’ve made is waiting for it to become inactive and move to the Inactive PRs dashboard, or waiting for it to close and move to the Archived PRs dashboard.

Reviewing PRs

When the GitHub user in the PR Focus Global Settings is the same as a GitHub user in the requestedReviewers array in the GitHub Pull Request API, PR Focus moves the PR into the Reviewing PRs list.

When you review a PR, GitHub automatically adds you to the requestedReviewers array. Someone else, such as the PR author, can also add you as a requestedReviewer by requesting a review from you.

If you do not use this workflow, you can hide the Reviewing PRs list from your dashboards by un-checking the Show Reviewing PRs checkbox in the Global Settings or Repository Settings.

Reviewing PRs is enabled by default.

Note: PR Focus does not have support for requestedTeams because it does not have information about teams. If your organization uses requested teams, PR Focus will not add the PR to your Reviewing PRs list until you actually review the PR. If this is a feature that is important to you, please file a feature request or leave a comment or an emoji reaction if this feature request already exists.

Assigned PRs

When the GitHub user in the PR Focus Global Settings is the same as a GitHub user in the assignee field or the assignees array in the GitHub Pull Request API, PR Focus moves the PR into the Assigned PRs list.

If you do not use this workflow, you can hide the Assigned PRs list from your dashboards by un-checking the Show Assigned PRs checkbox in the Global Settings or Repository Settings.

Assigned PRs is disabled by default.

Sort PRs in the Repository Dashboard

You can sort pull request lists in the repository dashboard by a number of options. By default, all lists in the repository dashboards are sorted by updated date. Recently updated PRs always appear at the top of the lists.

You can change the sort order of Watched PRs, Assigned PRs, Reviewing PRs, or My PRs with one of these sort options:

  • Review count: Sort in descending order by the number of reviews
  • Comment count: Sort in descending order by the number of comments
  • Commit count: Sort in descending order by the number of commits
  • State: Group PRs together by state; Closed, Open, or Merged
  • Broken: Show PRs with failing status checks and/or merge conflicts at the top of the list
  • Updated date: Sort in descending order by updated date
  • Closed date: Sort in descending order by closed date. Only closed PRs have a closed date.
  • Merged date: Sort in descending order by merged date. Only merged PRs have a merged date.

You can individually change the sort order for each column. PR Focus does not preserve the sort order you select and always defaults to showing PRs in descending order by updated date.

Screenshot showing the opened “Sort by” menu with the available sort options

PR Movement Between Lists and Dashboards

Pull requests may move automatically between lists and dashboards depending on things like whether you are a reviewer or assignee, or whether the PR has been inactive or closed for a period of time. You can manually change the status of PRs by watching or ignoring them, or by archiving a PR that is closed or merged.

Manually Move PRs Between Lists and Dashboards

When you Watch or Ignore a PR in your Inbox, the PR moves to the Watched PRs list or the Ignored PRs dashboard.

You can manually change the status of a watched or ignored PR at any point by either:

  • Clicking into the PR Details and pressing the appropriate button.
  • Right-clicking on a PR Summary and selecting the appropriate option from the context menu.

You can also right click on the PR Summary of a closed or merged PR and select the Archive PR option to immediately move it to the Archived PRs dashboard.

Automatic Movement Between Lists and Dashboards

PRs may also move between lists automatically in the Repository Dashboard and Inactive/Archived dashboards when:

  • You become a reviewer or an assignee on a pull request. When this occurs, the PR moves into one of those respective columns.
  • A PR has been inactive for longer than the Days until inactive setting. When this occurs, the PR moves into the Inactive PRs dashboard.
  • A PR has been closed or merged for longer than the Days until archive setting. When this occurs, the PR moves into the Archived PRs dashboard.

You can customize these settings on a per-repository basis, or by changing the Global Settings from their default values. For more information, refer to:

View PR Details

At any time, you can click into a PR Summary in a list or dashboard to view the PR details. When you are viewing the PR details, you can press the buttons to Watch or Ignore a PR. For more information, refer to View PR Details.

Fetch New and Updated PRs in the Repository

While PR Focus is open, it automatically fetches and updates PRs in the repositories. You can configure the interval at which PR Focus fetches and updates PRs in two ways:

The default interval for fetching and updating PRs is every hour.

If you configure repositories to fetch different intervals, you may see some repos not included in a “fetch PRs” job run in the logs. For example, you may have a few repositories fetching updates several times per hour, but the rest on an hourly cadence. When each of these jobs run, you’ll only see the repositories with that fetches interval appear in the logs for that job.

Manually Fetch PRs

Optionally, you can manually press the Fetch PRs button at the upper right hand of the PR Focus window. This lets you get updates from GitHub for all of the repositories you watch any time when there isn’t already a job running.

Screenshot showing “Fetch PRs” button in the toolbar

When a job is running, an animation appears in the PR Focus toolbar and replaces the Fetch PRs button. The button returns when the job is complete.

Screenshot showing the animation in the toolbar that replaces the “Fetch PRs” button

What Does Fetching PRs Do?

When you press the Fetch PRs button, this kicks off a few jobs:

  • It fetches a list of open pull requests in all of the repositories you’re watching
  • It fetches updates from the repository for “open” PRs that PR Focus knows about:
    • If the PR has previously been added and is still open in PR Focus but closed in the remote repository, PR Focus fetches updates from the remote repository, and updates the status.
    • If the PR is merged or closed in PR Focus and not listed as “open” on the remote repository, PR Focus does not fetch updates for it.
    • While fetching updates, PR Focus looks for any new commits, comments, reviews, or status checks, adds them to the PR details, and increments the PR summary counts.
    • If PR updates include adding you as an assignee or requestedReviewer, PR Focus moves the PR to the appropriate list in your dashboard.

3.3 - Repository Settings

Update repository metadata in PR Focus, or stop watching the repository.

To update the settings for repositories you’re watching, or to delete repositories from PR Focus, select the Manage Repositories option in the Repositories menu.

Screenshot showing the Manage Repositories menu option

When you select this option, you open the Manage Repositories window. This window provides:

  • A list of all the repositories you’re watching
  • Links to navigate directly to the repositories in GitHub
  • Buttons to update the settings for each repository
  • Buttons to delete repositories from PR Focus

Screenshot showing the Manage Repositories window with links to view repositories on GitHub, and buttons to update settings or delete the repositories

When you press the Update Settings option, you open the repository settings window for that repository.

Screenshot showing the “Repository Details” view with metadata and customization options

Repository Metadata

Above the divider, you see Repository Details. These pieces of metadata are derived from the URL you provide when you Add a Repository.

The GitHub URL contains the owner and repository name, which PR Focus extracts to the relevant pieces of metadata. If you ever forget what a repository is, or need a quick way to get to the repository, you can click the Repository URL to go to the repository in a web browser.

The repository name from this URL is displayed as the Repo Name in the PR Focus sidebar, and on the repository label in the PR Summary.

Customize Repository Appearance

You can customize these repository details:

  • Provide a custom, human-friendly name for the repository, which replaces the default Repo Name in the PR Focus sidebar and on the repository label in the PR Summary
  • Select a repository label color to make it easier to distinguish the repository that a PR belongs to when viewing the All Repositories dashboard

In the example below, the realm-kotlin repository name has been replaced by the custom Realm Kotlin name, and a specific color has been chosen for the repository label.

Screenshot showing a PR Summary

You can customize the repository appearance independent of customizing repository settings. Pressing the Update Apperance button only changes the repository’s custom name and label color; it does not affect the repository settings below the divider.

Customize Repository Settings

In this view, you can also customize the settings for a repository. Settings you customize here override the Global Default settings for these options. The settings you can customize include:

  • Which columns to show in the repo dashboard.
    • If you’ll never be a reviewer, assignee, or contributor to the repository, you can select the “Watch-only view” setting. This removes the My PRs, Reviewing PRs, and Assigned PRs columns when viewing that repository. When you toggle this setting, the rest of the options disappear.
    • If you may be a reviewer, assignee, or contributor to the repository, you can check which columns apply to your role in that repository. PR Focus shows the corresponding columns in the Repository Dashboard, and in the All Repositories dashboard.
  • How many days to wait before setting a PR to “inactive.” When a PR becomes inactive, it moves out of the repository dashboards to the Inactive PRs dashboard. This helps avoid cluttering your repository dashboards with pull requests that may be blocked.
  • How many days to wait after a PR has been closed before setting it to “archived.” When a PR has been closed or merged for the designated number of days, it moves to the Archived PRs dashboard.
  • How often to fetch PRs for the repository. For some repositories, you may only need to see updates daily, and more frequent updates would be a distraction. For other repositories, you may want to see updates whenever you look at PR Focus, so you may want it to update as often as several times per hour. The default fetch interval is one hour.

When you press the Save Repo Settings button, PR Focus saves all of the values in the “Customize Repository Settings” section of the view as custom repository settings. These settings apply only to this repository, and override the global default settings for this repo.

If you would instead like to customize the global default settings, refer to Settings

GitHub Fetch Frequency

The GitHub API rate-limits API access tokens to 5,000 calls per hour.

PR Focus makes a call to fetch the list of open PRs in a repository, and then makes indvidiual calls to get the details of each pull request it needs to update.

If you are watching many repositories, or if the repositories you watch have many open PRs, the fetch job can be quite lengthy and can consume hundreds of API calls per run. For this reason, we recommend not fetching PR updates too often. The default fetch interval is hourly. The most frequent fetch interval that PR Focus provides for its automated jobs is “several times per hour.” You can manually fetch updates at any time by pressing the Fetch PRs button, but if the rate limit has been exceeded, you won’t see any updates to your pull requests in PR Focus.

Note: Currently, PR Focus has minimal handling for exceeding the rate limit. If you don’t see updates to PRs you expect, check the PR Focus Logs to see if there are any error messages related to exceeding the rate limit. You may want to stagger the fetch interval across repositories if you encounter issues with the GitHub rate limit.

3.4 - Delete a Repository

Delete a repository and all of its PRs from PR Focus.

You can delete a repository from PR Focus the Manage Repositories option in the Repositories menu.

Screenshot showing the Manage Repositories menu option

This opens the Manage Repositories window.

Find the row for the repository you want to delete, and press the Delete repo button. This deletes the repository and all of its pull requests from PR Focus.

Screenshot showing the Manage Repositories window with an arrow pointing to the circled “Delete Repo” button for the ‘dacharyc/GitHubGraphQLAPITester’ repo.

4 - Pull Requests

You can watch and ignore PRs to move them in PR Focus. PRs automatically move based on rules in the PR Focus design.

New PRs that are opened in repositories you watch become Incoming PRs in PR Focus.

PRs where you are an assignee, a reviewer, or the PR author automatically move into relevant columns in the Repository Dashboard.

You can manually move PRs by watching and ignoring them.

After time intervals you can configure, PRs automatically become inactive or archived.

You can view all the PR details for repositories you care about in one place, or get links to review relevant information about a PR in GitHub.

4.1 - Incoming PRs

Find out about new PRs in a repository, and decide whether to watch or ignore them.

When you start PR Focus, when you add a repository, or at intervals you can configure while the app is open, PR Focus retrieves a list of open pull requests for the repositories you watch. You can also manually fetch PRs at any time.

If a PR already exists in PR Focus matching the PR number, PR Focus retrieves the most up-to-date version of the PR from GitHub and updates the details in PR Focus. If an open PR does not match a PR number that PR Focus already knows about, it creates a new PR.

Assigned, Reviewer, or My PR

If you are an assignee, a reviewer, or if the PR was made by you, the incoming PR goes directly into one of those columns, bypassing your Inbox. For more details about how PR Focus determines these states, refer to View a Repository.

Inbox

When the PR was made by somebody other than you, and you’re not an assignee or a reviewer, the PR goes to your Inbox. You’ll see a PR Summary giving you information about the PR, and you can click into it to view more details.

Screenshot showing a PR Summary

The list of PR Summaries in your Inbox let you quickly scan a list of new PRs and decide whether they require action from you or you can safely ignore them. You can view PRs in your Inbox on a per-repository basis, or see a list of all incoming PRs in the All Repositories view.

Watch or Ignore PRs

You can watch or ignore a PR in one of two ways:

  • If you can tell from the PR Summary whether you want to watch or ignore the PR, right-click on the PR Summary and select Watch PR or Ignore PR from the context menu.
  • Click into the PR Summary to view the PR Details and decide whether you want to watch or ignore the PR. Press the Watch or Ignore button.

You can also select the “Open in GitHub” option if you want to view details about the PR that are not available in PR Focus, such as looking at the PR diff.

Watch or Ignore a PR from the PR Summary

Screenshot showing the Watch and Ignore options in a right-click context menu from the PR Summary

Watch or Ignore a PR from the PR Detail View

Screenshot showing the Watch and Ignore buttons at the top of a PR Detail view

When to Watch or Ignore PRs

You might want to watch a PR if:

  • You’re dependent on the work being merged
  • You need to follow the status of the work for reporting reasons
  • You may need to review the PR in the future
  • Purely for personal interest because you’re curious about the feature

You might want to ignore a PR if:

  • The work is internal to the originating team and you don’t need to know the outcome
  • You haven’t interacted with the PR and don’t care about its progress

When you watch a PR, it goes into your Watched PRs list, both in the Repository Dashboard and in the All Repositories Dashboard.

When you ignore a PR, it goes into the Ignored PRs Dashboard.

Watch or Ignore Cannot Override Assigned, Reviewing, or My PR

When you are assigned to a PR, you are a PR reviewer, or the PR was made by you, Watch or Ignore has no effect. Watching such a PR does not move it into your Watched PRs list, and ignoring such a PR does not move it to the Ignored PRs dashboard.

This is an intentional design decision so you don’t miss important work that requires your attention. If you have a use case for changing this functionality, please send me an email or file a feature request.

If you Watch or Ignore an incoming PR, and later you become a reviewer or an assignee, it moves from your Watched PRs list or your Ignored PRs dashboard to the respective column.

Changing Watch or Ignore Status

Watch and Ignore are mutually exclusive options. If you have previously watched a PR, and then press the Ignore button, PR Focus stops watching the PR and moves it into the Ignored PRs dashboard. If you have previously ignored a PR, and then press the Watch button, PR Focus stops ignoring it and moves it from the Ignored PRs dashboard back to the Watched PRs list.

If you choose to Stop Watching or Stop Ignoring a PR, and the PR is open, it goes back to your Inbox, or to your Inactive PRs dashboard. If the PR is closed, it goes back to your Inbox or Archived PRs dashboard.

You can change the watch or ignore status in the same ways you can set it - from right-clicking on a PR Summary or while viewing the PR Details.

4.2 - View PR Details

View all the important details about any PR you’re watching, in one place.

When you’re viewing a Repository Dashboard or the All Repositories Dashboard, you can click into a PR Summary to get a detailed view of the pull request.

Screenshot showing a PR Summary

The PR Details view contains:

  • The PR title, number, description, and date last updated
  • A link to view the PR on the GitHub website
  • A label telling you which repository a PR belongs to, which is useful if you’ve clicked into it from the All Repositories view
  • Buttons to Watch or Ignore the PR
  • A list of commits in the PR, with links to view each commit on GitHub
  • A list of status checks for the PR, with links to view each status check on GitHub
  • A list of reviews on the PR, with links to view each review on GitHub
  • A list of comments on the PR, with links to view each comment on GitHub
  • A “New” label for any item that has been added to PR Focus since you last viewed the PR details

Screenshot showing the PR Details view

Commits

Each commit in the list of commits contains:

  • The GitHub user who made the commit (if the commit contains this information)
  • The date and time of the commit
  • A link to view the commit on GitHub
  • The commit message
  • A “New” label if you have not viewed PR details since this commit was added to PR Focus

The list of commits displays in chronological reverse order, with the most recent commit at the top of the list.

Status Checks

Status Checks in PR Focus refer to a list of jobs or statuses associated with a PR. These may be GitHub workflow runs, CI jobs, or other required checks that repository rules enforce on a PR.

Each status check in the list of status checks contains:

  • Information about whether the status check passed or failed
    • A green checkmark for passing checks
    • A red X mark for failing checks
  • The name of the status check
  • An icon, if one is associated with the status check
  • A link to view it on GitHub
  • A “New” label if you have not viewed PR details since this status check was added to PR Focus

PR Focus displays the status checks for the branch head commit sha at the time of the last fetch job. This information may not match the current state of status checks if:

  • A more recent status check or workflow run has occurred since PR Focus last fetched the status checks
  • The status check or workflow run was still running in GitHub when PR Focus checked for updates, and PR Focus does not have the status of the completed job

Missing Status Checks

Status checks or workflow runs come from GitHub in many different structures. PR Focus is still fine-tuning the best way to get the relevant status checks for the branch head. If you are missing status checks that you expect to see, please let me know these details (if the repo is public and you are able to share):

  • The repo owner and name
  • The PR number
  • What checks you see in PR Focus
  • The checks you expect to see that are missing from PR Focus

Feel free to file an issue, send me an email, or contact me directly with these details. Thank you!

Reviews

Each review in the list of reviews contains:

  • The review status, which is one of:
    • Approved: The reviewer has approved the PR. Indicated by a green review approved icon A green review approved icon
    • Changes Requested: The reviewer has requested changes on the PR. Indicated by a red request changes icon A red request changes icon
    • Commented: The reviewer has commented without approving or requesting changes. Indicated by a yellow commented icon A yellow commented icon
  • The GitHub user who left the review
  • The date and time of the review
  • A link to view the review on GitHub
  • A review message, if one was left with the review.
  • A “New” label if you have not viewed PR details since this review was added to PR Focus

The list of reviews displays in chronological reverse order, with the most recent review at the top of the list.

Comments

Each comment in the list of comments contains:

  • The GitHub user who left the comment
  • The date and time of the comment
  • A link to view the comment on GitHub
  • The comment text
  • A “New” label if you have not viewed PR details since this comment was added to PR Focus

The list of comments displays in chronological reverse order, with the most recent comment at the top of the list.

Note: In PR Focus v0.2.0, I added a module to parse GitHub-flavored Markdown to nicely formatted text in the PR Detail view. I have seen some impact to performance when scrolling comment lists since adding this module. If you have performance issues when scrolling, the UI should un-freeze again after a short delay. Please let me know if you run into this issue so I can troubleshoot and potentially re-evaluate using this module.

4.3 - Ignored PRs

Ignoring a PR gets it out of your way. You can get it back at any time.

When you view PR Details, you see a button that lets you ignore the PR.

Screenshot showing the Watch and Ignore buttons at the top of a PR Detail view

When you press the Ignore button, the pull request goes into the Ignored PRs Dashboard.

This dashboard is a list of PRs that you’ve ignored.

Screenshot showing the Ignored PRs Dashboard with a list of full-width PR Summary rows

You can access the Ignored PRs Dashboard by pressing the Ignored PRs button in the PR Focus sidebar.

Stop Ignoring a PR

At any time, you can stop ignoring a PR.

To stop ignoring a PR:

  1. Go into your Ignored PRs Dashboard.
  2. Find the PR you want to stop ignoring.
  3. Click into the PR Summary to open the PR Details view.
  4. Press the Stop Ignoring button.

This moves the PR out of your Ignored PRs Dashboard and into the Inbox.

If you want an ignored PR to move directly to your Watched PRs list, press the Watch button instead of the Stop Ignoring button. This automatically stops ignoring the PR and moves it directly to your Watched PRs list.

PR Not Moving to Ignored PRs

If you try to ignore a PR where you are an assignee, a reviewer, or where the PR is yours, it does not move into the Ignored PRs Dashboard. It stays in the relevant column in the Repository Dashboard and All Repositories Dashboard.

This is an intentional design decision to prevent you from missing important work that requires your attention.

PR Comes Back from Ignored PRs

If you have previously ignored a PR, but you later become an assignee or reviewer, the PR moves out of the Ignored PRs Dashboard and into the relevant column in the Repository Dashboard and All Repositories Dashboard.

This is an intentional design decision to prevent you from missing important work that requires your attention.

4.4 - Inactive PRs

Stale PRs become inactive after a time interval you set. They move back into your dashboard when updates occur.

Sometimes, a PR sits for a long time without progress. This may be because:

  • A PR is blocked while waiting for external dependencies
  • A PR is waiting for other contributors
  • For business reasons, work on the PR is paused
  • Many other reasons

In these cases, you may still care about the eventual outcome of the PR, but it becomes clutter sitting around in your regular repository dashboards while no activity is occurring. You may not want to Stop Watching or Ignore a PR, but may want to get it out of your way.

This is the case that Inactive PRs solves.

Inactive PRs Dashboard

After some interval, a PR that hasn’t had updates moves to the Inactive PRs Dashboard. This dashboard is a list of PRs that have become inactive.

Screenshot showing the Inactive PRs Dashboard with a list of full-width PR Summary rows

You can click into the PR Summary for an inactive PR to view the PR Details.

A PR becoming inactive is one of two ways in which a PR can move out of:

  • My PRs
  • Assigned PRs
  • Reviewing PRs

The only other way a PR can move out of these columns is when it becomes archived, or if you are no longer an assignee or a reviewer.

You can configure the Days until inactive setting from:

Unless you have customized either the global or the repository setting for days until inactive, the default value for this setting is 30 days.

Moving a PR Out of Inactive PRs

There is no way to manually move a PR out of the Inactive PRs dashboard and back into your Repository Dashboard and All Repositories Dashboard.

When a PR receives updates again, it moves out of the Inactive PRs dashboard and back into your Repository Dashboard and All Repositories Dashboard.

If you change the value of the Days until inactive setting to a longer time interval, PR Focus recalculates whether PRs should be inactive and moves any PRs that no longer meet this setting. In this case, PR Focus moves inactive PRs back into your Repository Dashboard and All Repositories Dashboard.

4.5 - Archived PRs

When a PR is closed, it becomes archived after a time interval you set. You can still view archived PRs.

Some workflows call for you to be able to view PRs after they have been closed or merged. You may still want to see those PRs in your Repository Dashboard or All Repositories Dashboard for a period of time after the PR status has become closed or merged.

PR Focus is optimized for this case. PRs do not disappear from your repository views immediately when they get closed. Instead, they remain in your repository views for a number of days until they are archived. The default value for this setting is 10 days, but you can configure the number of days until a PR is archived.

Archived PRs Dashboard

After some interval, a PR that has been closed or merged moves to the Archived PRs Dashboard. This dashboard is a list of PRs that have become archived.

Screenshot showing the Archived PRs Dashboard with a list of full-width PR Summary rows

You can click into the PR Summary for an archived PR to view the PR Details.

A PR becoming archived is one of two ways in which a PR can move out of:

  • My PRs
  • Assigned PRs
  • Reviewing PRs

The only other way a PR can move out of these columns is when it becomes inactive, or if you are no longer an assignee or a reviewer.

Watched PRs also become archived, which automatically moves them from your Watched PRs list to the Archived PRs dashboard.

Configure the Archive Interval

You can configure the Days until archive setting from:

Unless you have customized either the global or the repository setting for days until inactive, the default value for this setting is 10 days.

Immediately Archive a PR

You don’t have to wait until a PR moves to archived automatically. You can immediately archive a closed or merged PR. Right click on a closed or merged PR summary in a repository dashboard, and you’ll see the Archive PR option. This option is not available for open PRs.

Screenshot showing the “Archived PR” selection in the context menu of a PR Summary rows

Un-Archiving a PR

There is no way to manually move a PR out of the Archived PRs dashboard and back into your Repository Dashboard and All Repositories Dashboard.

Deleting Archived PRs

PR Focus v0.5 provides the ability to delete archived PRs. When you’re viewing the Archived PRs dashboard, you can press the Delete PRs button to delete all PRs that are archived.

This button is disabled when a background job is running. If you’re unable to press the Delete PRs button, wait for background jobs to finish and try again.

Screenshot showing the “Delete PRs” button in the Archived PRs dashboard

5 - Settings

Configure PR Focus Settings

PR Focus has a few global settings you can configure from the Settings menu option in the PR Focus menu.

Screenshot showing the “Settings” menu option in the PR Focus menu

Selecting this option opens a window where you can customize global default settings for PR Focus for:

  • Checkboxes to show Reviewing or Assignee columns
  • An option to select how often to fetch updates from GitHub
  • Options to customize how long to wait before moving PRs from the Repository Dashboard to the Inactive or Archived dashboards

Screenshot showing configurable settings in Global Settings

Customize Lists in Dashboard Views

You can customize the lists displayed in your Repository Dashboard and All Repositories Dashboard. Check or uncheck the Show Assigned PRs or Show Reviewing PRs checkboxes to show or hide those lists in your dashboards.

This is a global setting that defaults to showing the Reviewing PRs list and hiding the Assigned PRs list.

You can override these global settings on a per-repository basis. For example, if you watch many repositories in which you are a reviewer, but only one in which you may be an assignee, you may want to leave the global Assigned PRs setting unchecked, and specify it only for the repository where you need this information.

For more information about customizing settings for a repository, refer to Repository Settings.

Days until inactive/archive

The Days Until Inactive and Days Until Archive settings are used to determine the time interval for when PR Focus should move PRs into the Inactive PRs or Archived PRs dashboards.

The global settings default to 30 days until inactive and 10 days until archive.

You can override these global settings on a per-repository basis. For example, if you watch many repositories in which you want to archive PRs right away, but one repository in which you want to leave closed or merged PRs in your dashboard view for a period of time, you can set the global days until archive setting to a low value, and customize the repo where you want it to have a longer value.

For more information about customizing settings for a repository, refer to Repository Settings.

6 - GitHub API Key

Configure the GitHub API Key

PR Focus uses a GitHub API key to make calls to GitHub. You can view and update the GitHub API key from the Manage API Key menu option in the PR Focus menu.

Screenshot showing the “Settings” menu option in the PR Focus menu

Selecting this option opens a window where you can view details about your GitHub API Key, or update it.

Screenshot showing the Manage API Key window

When your API key expires, PR Focus can no longer fetch updates. PR Focus warns you when the API key is close to expiring or if it has expired. You can view the expiration date of the current API key anytime from this window.

API Key

You can change the API key that PR Focus uses to make API calls to GitHub.

Press the Edit API Key button to provide a new API access token.

For details about generating a GitHub access token, refer to the GitHub Authentication documentation page Manage Personal Access Tokens.

GitHub provides two types of access tokens:

  • A fine-grained access token (currently in beta) which provides more precise control over what the bearer can access
  • A classic access token with less precise control over what the bearer can access

The required permissions for PR Focus to fetch pull request data vary depending on which type of access token you create. If you are not seeing pull requests after adding a repository to PR Focus, verify that your API access token has the appropriate permissions for the repository.

Fine-Grained Access Token Permissions

GitHub’s fine-grained access token provides the most precise control over what a user can access. As a result, PR Focus needs a number of permissions to get all the data it needs. PR Focus requires:

Repository permissions

  • Actions: Read-only
  • Commit statuses: Read-only
  • Contents: Read-only
  • Deployments: Read-only
  • Issues: Read-only
  • Metadata: Read-only
  • Pull-Requests: Read-only
  • Workflows: Read and write (PR Focus does not need write permission, but GitHub does not provide read-only access for Workflows, so Read and write is the only option)

Account permissions

  • Profile: Read and write (PR Focus does not need write permission, but GitHub does not provide read-only access for the user Profile, so Read and write is the only option)

Classic Access Token Permissions

If you’re using a Classic access token, it must have the following permissions:

  • repo read permissions for any repository you want to watch in PR Focus.
  • user read permissions to get your username and avatar for use in the app.

Authorize for SSO

If your organization uses SAML single sign-on (SSO), you must configure SSO for your personal access token after you create it. For more details, refer to the GitHub Authentication documentation page Authorizing a personal access token for use with SAML single sign-on.

How does PR Focus store and transmit the access token?

When you enter the access token, PR Focus saves it securely to your macOS Apple Keychain. PR Focus does not store your access token directly in the app code or otherwise transmit it except to make API calls to GitHub. If you ever want to remove your access token from Keychain, you can find it in the Keychain Access app.

Note that if you remove your access token from Keychain, PR Focus can no longer make API calls to GitHub. This means PR Focus will no longer be able to fetch PR updates or new PRs.

Why does PR Focus need user read permissions?

When you provide an access token during setup, if your access token has the appropriate permissions, PR Focus uses it to create a User Profile in the app for you. It reads your GitHub username and avatar and displays it in this window. PR Focus uses this information to determine whether a PR was made by you, and whether you are a reviewer or assigned to a PR.

If your access token doesn’t have the appropriate permissions, PR Focus can’t fetch your user profile and can’t proceed with the initial user setup.

PR Focus does not currently support having multiple GitHub user profiles. If this is something you need, please file a feature request.

7 - Get Help

Reach out directly, report feedback via TestFlight, file an Issue on GitHub, or send a support email.

Need help with PR Focus?

Currently, the app is in private alpha on TestFlight.

When slots open for the closed beta, PR Focus will announce the availability of beta test spots on its Mastodon account.

You can use one of these methods to get help:

  • Report feedback via TestFlight (you can attach screenshots)
  • Reach out to the developer directly (you can send screenshots)
  • File an Issue on the PR Focus website GitHub repository (you can attach screenshots, but the repository is public)
  • Send a support email (you can’t attach screenshots)

Note: I’m so excited you’re interested in PR Focus, but I’m just one person and developing this app is not my day job. I will do my best to get back to you quickly, but can’t make any guarantees about response times. Thank you for your patience, and for helping me make PR Focus more awesome!

PR Focus Help Menu

The PR Focus Help menu has several options to make it easier to get help. While PR Focus is running, select the Help menu to:

  • View the PR Focus documentation site (that’s the site you’re looking at now!)
  • File an issue on the PR Focus website’s GitHub repository
  • Request a feature on the PR Focus website’s GitHub repository

Screenshot showing File -> New -> New PR Focus Logs Window

TestFlight

To submit feedback through TestFlight:

  1. Open the TestFlight app on your Mac.
  2. Select PR Focus list in the sidebar.
  3. Click the Send Beta Feedback button in the main listing.
  4. In the dialog box, add your comments.
  5. You can also add a screenshot by clicking the Attach Screenshot button or dragging and dropping the screenshot in the feedback text field.
  6. Click the Submit button.

Reach me directly

Currently, PR Focus is in a private beta with people I know personally. Use a method you know to reach me personally.

GitHub

The PR Focus macOS app repository is private. You can file a GitHub issue on the PR Focus website for suggestions or improvements for the documentation, or for the PR Focus app. When filing an issue, please label your issue with PR Focus App or PR Focus Website for a faster response.

Send an Email

If you prefer not to provide details publicly in a GitHub issue, you can send me a support email.

7.1 - View Logs

View PR Focus logs for helpful details.

PR Focus keeps logs of events in the app while the app is running. These logs disappear when you close the app.

The logs contain information about activity in the app, and can be a helpful resource for debugging unexpected behaviors while the app is in beta. When you encounter something unexpected, please check the logs for any relevant error messages.

I’m doing ongoing work to add more log messages and make them clearer. Please let me know if you think something should have appeared in the logs but wasn’t there, or if something appeared in an unexpected or unhelpful way in the logs.

Open the Log View

To view the logs, go to the Logs menu, and select View Logs.

Screenshot showing Logs -> View Logs menu option

This opens the log view, which is a chronological list of activities in PR Focus:

Screenshot showing the PR Focus logs view with a list of log activities and timestamps

The logs can help you identify when the automated fetch isn’t running at the time you expect, what PRs PR Focus is seeing in a repository, and other helpful debugging information.

Sort and Clear Logs

You can sort the log by ascending or descending view. Press the up arrow or down arrow to sort the logs by ascending or descending order.

To clear log entries, press the Clear Log button. This removes all log entries.

If you leave PR Focus running overnight, PR Focus automatically trims logs more than a day old.