Refined GitHub
Browser extension that simplifies the GitHub interface and adds useful features
We use GitHub a lot and notice many annoyances we'd like to fix. So here be dragons.
Our hope is that GitHub will notice and implement some of these much-needed improvements. So if you like any of these improvements, please open a discussion on GitHub feedback or contact GitHub support about doing it.
GitHub Enterprise is also supported: How to enable it.
The GITHUB and REFINED GITHUB trademarks are owned by GitHub, Inc. and used under license.
Install
If you love Refined GitHub, consider sponsoring or hiring the maintainer @fregante
Sindre’s open source work is supported by the community.
Special thanks to:
Add Single Sign-On (and more) in minutes instead of months.
exclusively on supporting early-stage COSS (commercial open source) startup founders.
environments for all your branches. As a result team members can instantly start coding with fresh dev environments
for each new task - no matter if you are building a new feature, want to fix a bug, or work on a code review.
Highlights 🔥
Makes whitespace characters visible |
Adds one-click merge conflict fixers |
---|---|
Adds reaction avatars showing who reacted to a comment |
Lets you hide every event except comments or unresolved comments in issues and PRs |
Linkifies issue/PR references and URLs in code and conversation titles |
Adds the option to wait for checks when merging a PR |
Adds a button to revert all the changes to a file in a PR |
Select notifications by type and status |
Repositories
- 🔥 Adds a build/CI status icon next to the repo’s name.
- Hides watcher counter and on smaller screens the fork counter too.
- Adds useful links to the repository navigation dropdown
- 🔥 Adds a link to the default branch on directory listings and files.
- Adds a link to swap branches in the branch compare view.
- Displays the age of the repository in the sidebar.
- In your forked repos, shows number of your open PRs to the original repo.
- Points the “Forked from user/repository” link to current folder or file in the upstream repository.
- Makes some buttons on repository lists more compact to make room for other features.
- Automatically disables projects and wikis when creating a repository.
- Makes conversation sidebars and repository sidebars sticky, if they fit the viewport.
- Adds a link to visit the user’s github.io website from its repo.
- In the workflows sidebar, shows an indicator that a workflow can be triggered manually, and its next scheduled time if relevant.
- Lets you delete your repos in a click, if they have no stars, issues, or PRs.
- Helps you find the most active forks, via https://useful-forks.github.io.
- Moves the "Security" and "Insights" to the repository navigation dropdown. Also moves the "Projects", "Actions" and "Wiki" tabs if they're empty/unused.
- Adds the profile picture to the header of public repositories.
File management
- Adds a button to download entire folders, via https://download-directory.github.io.
- Adds a button to toggle the repo file list.
- Adds a button to edit files from the repo file list.
- Ensures that the “Edit readme” button always appears (even when you have to make a fork) and works (GitHub’s link doesn’t work on git tags).
- Enables the File Finder keyboard shortcut (t) on entire repository.
- Lets you start typing your search immediately after invoking the File Finder (t), instead of having you wait for it to load first.
- Shows the associated pull requests on branches for forked repositories.
- Adds a link to preview HTML files.
Code
- Enhances the y hotkey to also copy the permalink.
- Adds a button to copy a file’s content.
- Linkifies symbolic links files.
- Shows PRs that touch the current file.
- Reduces tabs’ size to 4 spaces instead of 8.
- Adds a keyboard shortcut to deselect the current line: esc.
- Shows Markdown front matter as vertical table.
- On branch commit lists, shows the PR that touches the current branch.
Writing comments
- 🔥 Enables tab and shift tab for indentation in comment fields.
- Adds a button to insert collapsible content (via
<details>
). - 🔥 Auto-resizes comment fields to fit their content and no longer show scroll bars.
- Lets you edit any comment with one click instead of having to open a dropdown.
- Adds a shortcut to edit your last comment: ↑. (Only works in the following comment field, if it’s empty.)
- Wraps selected text when pressing one of Markdown symbols instead of replacing it:
[
`
'
"
*
~
_
- Reduces the upload bar to a small button.
- Hides unnecessary comment field tooltips and toolbar items (each one has a keyboard shortcut.)
- Adds a button to
@mention
a user in conversations. - Adds a button in the text editor to quickly insert a simplified HTML table.
- Notifies the user of unfinished comments in hidden tabs.
- Wait for the attachments to finish uploading before allowing to post a comment.
- Adds a button to delete review comments in one click when editing them.
- Disables the enter-to-submit shortcut in some commit/PR/issue title fields to avoid accidental submissions. Use ctrl enter instead.
- Reminds you you’re commenting on a draft PR by changing the submit button’s label.
Reading comments
- Embeds short gists when linked in comments on their own lines.
- Adds links to browse the repository and linked files at the time of each comment.
- Adds the real name of users by their usernames.
- Shortens URLs and repo URLs to readable references like "_user/repo/.file@
d71718d
". - 🔥 Previews hidden comments inline.
- 🔥 Highlights the most useful comment in conversations.
- Hides reaction comments ("+1", "👍", …) (except the maintainers’) but they can still be shown.
- Limits the height of tall code blocks and quotes.
- Simplifies the UI to hide comments.
- Makes the "comment" icon in issue lists link to the latest comment of the issue.
- On long conversations where GitHub hides comments under a "Load more...", alt-clicking it will load up to 200 comments at once instead of 60.
- Adds shortcuts to conversations and PR file lists: j focuses the comment/file below; k focuses the comment/file above.
Conversations
- Lets you open all visible conversations at once.
- Separates issues from PRs in the global search.
- Makes the conversation list’s filters toolbar sticky.
- Highlights conversations opened by you or the current repo’s collaborators.
- In conversation lists, aligns the labels to the left, below each title.
- 🔥 Changes the default sort order of conversations to
Recently updated
. - Adds
Everything commented by you
andEverything you subscribed to
filters in the search box dropdown. - Adds filters for conversations in your repos and commented on by you in the global conversation search.
- 🔥 Hides empty sections (or just their "empty" label) in the conversation sidebar.
- Hides
Projects
andMilestones
filters in conversation lists if they are empty. - Adds a shortcut to toggle all similar items (minimized comments, deferred diffs, etc) at once: alt click on each button or checkbox.
- Lets you toggle between is:open/is:closed/is:merged filters in searches.
- Adds a "Bugs" tab to repos, if there are any open issues with the "bug" label.
- Adds the updated time to pinned issues.
- Changes the layout of pinned issues from side-by-side to a standard list.
- Adds one-click buttons to remove labels in conversations.
- Removes duplicate information in the header of issues and PRs ("User wants to merge X commits from Y into Z")
- Dims commits and PRs by bots to reduce noise.
- Adds a shortcut to cancel editing a conversation title: esc.
- Hides the update time of conversations in lists when it matches the open/closed/merged time.
- Links the "Contributor" and "Member" labels on comments to the author’s commits on the repo.
- Adds a link to jump to the latest close event of a conversation.
Viewing pull requests
- Adds a link to the non-PR commit when visiting a PR commit.
- Adds Checks and Draft PR dropdown filters in PR lists.
- Shows color-coded review counts in PR lists.
- Shows the base branch in PR lists if it’s not the default branch.
- Hides inactive deployments in PRs.
- Adds duplicate commit navigation buttons at the bottom of the
Commits
tab page. - Bypasses the "Checks" interstitial when clicking the "Details" links on a PR Checks added by third-party services like Travis.
- Opens the Checks "details" link in a new tab.
- Adds comment indicators when comments are hidden in PR review.
- Shows which PRs have conflicts in PR lists.
- Adds diff stats on PR commits.
- Adds a line-through to the deleted branches in PRs.
- Mark/unmark multiple files as “Viewed” in the PR Files tab. Click on the first checkbox you want to mark/unmark and then
shift
-click another one; all the files between the two checkboxes will be marked/unmarked as “Viewed”. - 🔥 Shows the first Git tag a merged PR was included in or suggests creating a release if not yet released.
- Jumps to first non-viewed file in a pull request when clicking on the progress bar.
- Adds copy-pastable git commands to checkout a PR.
- Adds a link to jump to the latest changed requested comment.
- Adds a link to open the last deployment from the header of a PR.
- Always uses unified diffs on files where split diffs aren’t useful.
Editing pull requests
- 🔥 Uses the PR’s title as the default squash commit title and updates the PR’s title to match the commit title, if changed.
- Adds a button to update a PR from the base branch to ensure it builds correctly before merging the PR itself. GitHub only adds it when the base branch is "protected".
- Simplifies the PR review form: Approve or reject reviews faster with one-click review-type buttons.
- Warns you when creating a pull request from the default branch, as it’s an anti-pattern.
- Warns you when unchecking
Allow edits from maintainers
, as it’s maintainer-hostile. - Adds keyboard shortcuts to cycle through PR tabs: g ← and g →, or g 1, g 2, g 3 and g 4.
- Automatically deletes the branch right after merging a PR, if possible.
- Lets you create draft pull requests and public gists in one click.
- Clears the PR merge commit message of clutter, leaving only deduplicated co-authors.
- Adds a review button to the PR sidebar, automatically focuses the review textarea and adds a keyboard shortcut to open the review popup: v.
- Uses the first commit for a new PR’s title and description.
Commits
- Adds links to
.patch
and.diff
files in commits. - Adds links to view the raw version, the blame and the history of files in PRs and commits.
- Adds one-click buttons to change diff style and to ignore the whitespace and a keyboard shortcut to ignore the whitespace: d w.
- Widens the
Expand diff
button to be clickable across the screen. - Hides diff signs since diffs are color coded already.
- Suggests limiting commit titles to 72 characters.
- Displays the corresponding tags next to commits.
- Marks merge commits in commit lists.
- When exploring blames,
Alt
-clicking the “Reblame” buttons will extract the associated PR’s commits first, instead of treating the commit a single change. - Indicates with an icon whether files in commits and pull requests being added or removed.
- Enables toggling file diffs by clicking on their header bar.
- Preserves current branch and path when viewing all commits by an author.
- Enables toggling commit messages by clicking on the commit box.
- Linkifies the "X files changed" text on compare pages to allow jumping to the diff.
Tags and releases
- Adds a download count next to release assets.
- Adds a
Releases
tab and a keyboard shortcut: g r. - Adds a keyboard shortcut to create a new release while on the Releases page: c.
- Adds a tags dropdown/search on tag/release pages.
- 🔥 Adds a link to changes since last tag/release for each tag/release.
- Adds a link to the latest version tag on directory listings and files.
- Adds a button to convert a release to draft.
- Adds a button to view the changelog file from the releases page.
Profiles
- On profiles, it shows whether the user follows you.
- Adds a link to the user’s public gists on their profile.
- Marks private organizations on your own profile.
- Adds a keyboard shortcut to visit your own profile: g m.
- Adds a link to the user’s most starred repositories.
- Hides forks and archived repos from profiles (but they can still be shown).
- Linkifies the user location in their hovercard and profile page.
- Shows the user local time in their hovercard (based on their last commit).
- Adds a link to the issues and pulls on the user profile repository tab and global search.
Newsfeed
- 🔥 Condenses the events to take up less space and uncollapses "User starred X repos" groups.
- Hides "starred" events for your own repos on the newsfeed.
- Hides other inutile newsfeed events (commits, forks, new followers).
- Automagically expands the newsfeed when you scroll down.
Notifications
- Adds a button to open all your unread notifications at once.
- Adds a shortcut to select all visible notifications: a.
- Linkifies the header of each notification group (when grouped by repository).
- Stops redirecting to notification inbox from notification bar actions while holding Alt.
Global
- 🔥 Adds possible related pages and alternatives on 404 pages.
- Adds a keyboard shortcut to open selection in new tab when navigating via j and k: shift o.
- Automatically closes dropdown menus when they’re no longer visible.
- Renders
`text in backticks`
in issue titles, commit titles and more places. - Adds shortcuts to navigate through pages with pagination: ← and →.
- Lets you see how others are using the current Action in the Marketplace.
- Shows all of Refined GitHub’s new keyboard shortcuts in the help modal (? hotkey).
- Adds search filters in global search page: forks, private repos, own repos, authored commits.
Fixes for GitHub shortcomings
- Removes the file hover effect in the repo file browser.
- Removes unnecessary or redundant information from the repository sidebar.
- Hides the milestone sorter UI if you don’t have permission to use it.
- Linkifies branch references in "Quick PR" pages.
- Removes the autocomplete on search fields.
- Adds a menu item to embed a gist via
<iframe>
. - Preserves the current line on “View blame prior to this change” links.
- Points the "View file" on compare view pages to the branch instead of the commit, so the Edit/Delete buttons will be enabled on the "View file" page, if needed.
- Makes labels clickable on the dashboard.
- Retries downloading images that failed downloading due to GitHub limited proxying.
- Makes some dropdowns 1-click instead of unnecessarily 2-click.
- Suggests fixing links that are wrongly shortened by GitHub.
- Aligns the repository header to the repository content on wide screens.
- Linkifies the username in the edit history popup.
- Avoids creating duplicate PRs when mistakenly clicking "Create pull request" more than once.
- After you click on an ajaxed link, this lets you stop loading a page by pressing the esc key, like the browser does for regular page loads.
- Avoids re-loading the page when jumping to function definition in the current file.
- Moves the "Convert PR to Draft" button to the mergeability box and adds visual feedback to its confirm button.
- Clears duplicate queries in the header search field.
- Prevents the merge panel from automatically opening on every page load after it’s been opened once.
- Adds keyboard shortcuts to select items in command palette using ctrl n and ctrl p (macOS only).
- Enables submission via ctrl enter on every page possible.
Previously part of Refined GitHub
GitHub took inspiration from Refined GitHub and natively implemented dozens of its features, 🎉 so they've been removed from this extension. You can also see all the past features of Refined GitHub in a single list.
Customization
Most features can be disabled if they are JavaScript-based and you can override our CSS with your own in the extension options.
We're happy to receive suggestions and contributions, but be aware this is a highly opinionated project. There's a high bar for adding features. Users will always disagree with something. That being said, we're open to discussing things.