Replace the GitHub home page feed with a list of your own repositories

By

Replace the signed-in GitHub home feed with three lists of your repositories, a search box, and pinned favorites in Repo Foyer.

You open github.com to get to a repository. The home page shows a feed of other people’s work. You want that page to be a list of your own repositories, the ones you open, with a search box ready for a name.

Repo Foyer replaces the signed-in home page with three short lists and that search box. A developer’s introduction to GitHub is the tour of repositories, issues and pull requests. It leaves the home page as GitHub ships it. This is only the home page.

What you need

Repo Foyer is a Chrome extension. It isn’t on the Chrome Web Store, so you load the folder yourself.

After purchasing it, download the zip from your Polar receipt. Unzip it and move the folder somewhere it can stay, such as Documents. Chrome runs the extension from that folder.

You also need a token so the extension can read your repositories from the GitHub API. Use a classic token with the repo scope, or the output of gh auth token if you use the GitHub CLI. GitHub’s personal access tokens page is where a classic token gets created. The scope this extension asks for is repo.

The token stays in Chrome’s extension storage. The extension sends it only to api.github.com. Visits stay in the browser too. There are no accounts and no analytics.

Sign in to GitHub before you look. Logged out, you get the normal page.

Load the extension and paste the token

  1. Open chrome://extensions and turn on Developer mode in the top right corner.
  2. Click Load unpacked and pick the folder you kept.
  3. Click the Repo Foyer icon in the extensions menu and paste the token in the settings.

If you’ve never loaded an extension from a folder, Load and reload the unpacked extension is the walkthrough of what Chrome does with it.

If you use the GitHub CLI, this prints a token you can paste:

gh auth token

That output is a credential. It belongs in the extension settings, not in a note and not in a screenshot.

Open the home page

Go to github.com while you’re signed in. The feed is gone. GitHub’s header stays where it was. The list uses GitHub’s own colors, so it follows the light or dark theme you already have.

Three lists replace the feed:

  • Most used is the 10 repositories you work on the most right now.
  • Recently created is your 10 newest repositories, forks left out.
  • Getting traction is the repositories that picked up the most stars in the last 7 days.

Each one is a single line: the name, a Private label when the repository is private, and when it was pushed or created, or how many stars it got. Hover the line for the description.

Getting traction only looks at public repositories you or your organizations own, and it skips forks. The total star count isn’t the ranking, which is why an old repository with a lot of stars can be absent. The week I first built this, Work Tracebook had 57 new stars, Skill Cabinet had 55 and Note Repo had 45. A roadmap from 2018 with 527 stars, and none that week, stayed off the list. Those figures are from that week.

Pin one repository and search for the rest

Most used stops at 10. To keep a repository at the top of that list, hover it and click the ☆. The star is stored in the extension. It is not a GitHub star, so the repository’s public star count doesn’t change.

The search box at the top is focused when the page loads. It covers accessible repositories, not only the ten in each list. Type a few letters of the name or description. The arrow keys move the selection, Enter opens the repository, Cmd+Enter (Ctrl+Enter on Windows and Linux) opens it in a new tab, and Escape clears the search.

What replaces the GitHub home feedA signed-in visit to the GitHub home page hides the feed and shows three repository lists from a cache. The cache refreshes in the background when it is older than five minutes. A logged-out visit keeps GitHub's normal page.NoYesYesNoOpen github.comSigned in?Normal GitHub pageHide the feedShow three listsfrom cacheCache older than 5minutes?Refresh in thebackgroundKeep the lists onscreen

You should now land on your repositories, with one of them pinned and the rest a few letters away.

How Most used picks the 10

Each repository gets a score from three things: your commits on each repository’s default branch in the last 90 days, how often you opened it in this browser, and how recently it was pushed.

Visits and pushes count less as they get older. Two visits to the same repository less than 30 minutes apart count once, so an hour spent clicking around inside one repo is a single visit.

Commits are counted in each repository’s own history, for every repository pushed in the last 90 days. On my account, GitHub’s contribution graph counted 260 commits in public repositories and folded 2,436 contributions in private repositories into one number, with no repository names. Most of my work is in private repositories, so that graph can’t rank them. The per-repository history can.

The home page draws the lists from a cache, which is why they show up immediately. A service worker refreshes that cache in the background when it’s older than 5 minutes. GitHub often changes the address without a full reload. The extension watches the address and puts the lists back when you return to the home page.

Turn it off

To get GitHub’s normal home page back, disable Repo Foyer at chrome://extensions and reload the GitHub tab. The token stays valid after that, so revoke it in GitHub’s token settings if you’re done with the extension. Clear visit history in the settings deletes the visits the extension saved.

If something looks wrong

If the feed is still there, check that you’re signed in. Logged out, the extension leaves GitHub’s page alone. Then check that Repo Foyer is enabled at chrome://extensions and reload the tab.

If private repositories are missing, the token needs the repo scope. Paste a classic token with that scope, or a new gh auth token line, into the extension settings. Do the same when a token expires or is revoked.

If your own private repositories show up but an organization’s don’t, and that organization uses SAML SSO, the classic token needs SSO authorization for it. Signing in to github.com doesn’t authorize the token.

If the lists are a few minutes behind a push you just made, the cache hasn’t refreshed yet. The background refresh runs once the cache is older than 5 minutes, or click Refresh at the bottom of the lists.

If Chrome reports the extension as broken after the folder moved, move it back or use Load unpacked on the new location. Chrome is running the files in the folder you selected.

An unpacked extension doesn’t update itself. When a new release comes out, copy its files over the old ones in that same folder, then click the reload arrow on the Repo Foyer card in chrome://extensions. Keeping the same folder keeps the token and the stars you saved in the extension.

Get Repo Foyer

Find the GitHub repository you need with ranked lists, pinned favorites and keyboard search. A Chrome extension with full MIT source included.

See Repo Foyer → · Read the docs · $20 including tax, with full source code.

More tutorials for my apps →

Want me to talk about your product? You can sponsor this site.