Skip to content

Repository files navigation

Repo Colors logo

Repo Colors

Repo Colors is a Chrome extension that gives pinned repositories on GitHub accessible palettes based on their primary programming language.

Install Repo Colors from the Chrome Web Store

Features

  • Language-inspired gradients for pinned repositories and gists
  • Reliable updates after GitHub soft navigation and dynamic page changes
  • More than 50 recognized GitHub Linguist language names and aliases
  • Automatic WCAG AA text-color selection for every built-in or custom palette
  • Options to disable coloring, remove visual effects, or keep GitHub's native contrast
  • Per-language primary-color overrides synchronized by Chrome
  • Support for light, dark, dark-dimmed, increased-contrast, and reduced-motion preferences
  • No analytics, remote code, advertisements, or application server

Screenshots

GitHub theme Preview
Dark default Repo Colors on GitHub dark default
Dark dimmed Repo Colors on GitHub dark dimmed
Light default Repo Colors on GitHub light default

Settings

Open the extension popup to enable or disable coloring, toggle hover effects, or preserve GitHub's native surfaces with language-colored borders. Select Customize palettes to set a primary color for any recognized language; Repo Colors chooses an accessible foreground automatically.

Settings use Chrome's synchronized extension storage. See the complete privacy policy.

Install from source

  1. Download or clone this repository.
  2. Run npm ci, npx playwright install chromium, and npm run package.
  3. Open chrome://extensions.
  4. Enable Developer mode.
  5. Extract Repo-Colors.zip, select Load unpacked, and choose the extracted directory.

The ZIP is rooted at manifest.json and contains only runtime files.

Development

Requires Node.js 20.19 or newer.

Command Purpose
npm test Run DOM, language, contrast, and manifest tests
npm run test:browser Exercise GitHub navigation plus popup/options UI in Chromium
npx playwright install chromium Install Chromium once for browser tests
npm run lint Check extension and tooling JavaScript
npm run audit Check development dependencies for high-severity advisories
npm run check Run linting, tests, and the dependency audit
npm run package Validate and create a deterministic Repo-Colors.zip

Architecture

data/languages.js     Shared language aliases and palette definitions
shared/settings.js    Validated Chrome storage settings
foreground.js         GitHub DOM integration and navigation observer
html/                 Popup and options interfaces
styles/               Card styling, contrast, and motion behavior
tests/                DOM fixtures and release regression checks
scripts/package.mjs   Reproducible Chrome Web Store package

The runtime remains framework-free and dependency-free. Development dependencies are used only for tests, linting, and packaging.

Permissions

Repo Colors requests only:

  • storage to save extension settings and palette overrides
  • Content-script access to https://github.com/* so it can style repository cards

It does not request tab history, broad host access, or background execution.

Supported languages

Built-in palettes cover JavaScript, Vue, Java, TypeScript, Python, Go, HTML, C++, C#, CSS, SCSS/Sass, Jupyter Notebook, Vim Script, TeX, Swift, Svelte, Kotlin, Dart, Gherkin, Objective-C, R, PowerShell, Shell, Cuda, Lua, PHP, Ruby, CoffeeScript, Rust, Dockerfile, AutoHotkey, Zig, Haskell, Elixir, Scala, Perl, Julia, Clojure, Erlang, Nim, Assembly, MATLAB, Groovy, HCL, TSQL, Emacs Lisp, OCaml, Jsonnet, Rebol, C, PureBasic, Makefile, Visual Basic .NET, D, and Common Lisp. Unknown languages receive a neutral accessible palette.

Release and contribution

Every pull request runs the same validation and packaging workflow used for releases. See the changelog for release history. Bug reports—especially GitHub layout changes—are welcome in GitHub Issues.

Licensed under the MIT License.

Made with 🦔 by @TheRoro.

Releases

Contributors

Languages