An open API service indexing awesome lists of open source software.

https://github.com/decryptable/octonext

A fast, clean code tree sidebar for GitHub with themes, file icons, search, bookmarks, PR navigation, and downloads.
https://github.com/decryptable/octonext

chrome chrome-extension chrome-extensions developer-tools explorer firefox firefox-addon firefox-extension git github

Last synced: 8 days ago
JSON representation

A fast, clean code tree sidebar for GitHub with themes, file icons, search, bookmarks, PR navigation, and downloads.

Awesome Lists containing this project

README

          

OctoNext — a file-tree sidebar for GitHub


A **file-tree sidebar for GitHub**. Browse any repo without page reloads.
Manifest V3, TypeScript, [Bun](https://bun.sh) — runs in your browser, **no
backend and no telemetry.**


[![CI](https://img.shields.io/github/actions/workflow/status/decryptable/octonext/ci.yml?branch=main&style=flat-square&label=CI)](https://github.com/decryptable/octonext/actions/workflows/ci.yml)
[![Version](https://img.shields.io/github/v/release/decryptable/octonext?style=flat-square&color=2da44e&label=version)](https://github.com/decryptable/octonext/releases)
[![Manifest V3](https://img.shields.io/badge/manifest-v3-54aeff?style=flat-square)](./src/manifest.config.ts)
[![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178c6?style=flat-square)](./tsconfig.json)
[![Bun](https://img.shields.io/badge/Bun-%E2%89%A51.2-f0883e?style=flat-square)](https://bun.sh)
[![No telemetry](https://img.shields.io/badge/telemetry-none-8b949e?style=flat-square)](#privacy)


[![Themes](https://img.shields.io/badge/themes-22-a371f7?style=flat-square)](#themes)
[![Icon packs](https://img.shields.io/badge/icon%20packs-Material%20%C2%B7%20Vira-a371f7?style=flat-square)](#features)
[![Fonts](https://img.shields.io/badge/fonts-8-a371f7?style=flat-square)](#)
[![Max file](https://img.shields.io/badge/max%20file-130%20lines-30363d?style=flat-square)](#)
[![Tests](https://img.shields.io/badge/unit%20tests-37%20passing-2da44e?style=flat-square)](https://github.com/decryptable/octonext/actions/workflows/ci.yml)


[Install](#install-from-source) ·
[Features](#features) ·
[Themes](#themes) ·
[Architecture](./ARCHITECTURE.md) ·
[Contributing](./CONTRIBUTING.md) ·
[Support](#support)

---

## Why OctoNext

GitHub reloads the whole page every time you open a folder. OctoNext puts a
collapsible file tree next to the page instead, loading folders on demand from
the GitHub REST API. Navigate, search, download, and review PRs in one tab.

You only need to sign in for private repos: paste a personal access token on the
options page. It is checked against GitHub, then stored in `chrome.storage` and
sent nowhere else.

## Project pulse

Stars over time and commit activity, not a wall of count badges.


Star history line chart



Commit activity graph


Features


| Area | What you get |
| --- | --- |
| **File tree** | Collapsible sidebar on `github.com` repo pages, lazy-loaded folders, expand all / collapse all, keyboard navigation, custom scrollbars |
| **Icons** | Two full file-icon packs — Material Icon Theme and Vira — plus a minimal pack |
| **Themes** | 22 themes including 5 animated ones — see [Themes](#themes) — with **live preview** in settings |
| **Fonts** | 8 bundled coding fonts or system stacks, with live preview and adjustable size |
| **Search** | Instant fuzzy file filtering with match highlighting |
| **Pull requests** | PR panel with stats summary, searchable + paginated changed files, and review comments — all without opening the diff page |
| **Download** | Checkbox selection; a single file downloads directly, multiple files or folders become a path-preserving ZIP |
| **Sizes** | Total repo size in the header, plus per-folder and per-file sizes |
| **Bookmarks** | Save repositories locally and jump back any time |
| **Layout** | Dock left or right, resize, pin open, drag the toggle to any height |
| **Enterprise** | GitHub Enterprise via per-domain opt-in (right-click the toolbar icon) |

Pull request panel


Everything comes from the API, so you read a PR without leaving the sidebar:

- **Summary header** — open / merged / closed / draft state, title, author,
`base ← head` branches, and totals for changed files, additions, deletions,
commits, and review comments.
- **Searchable changed files** — type to filter with live match highlighting;
results are cached in memory so filtering never re-fetches.
- **Pagination** — large diffs page through in fixed chunks instead of one
endless scroll, with an `X–Y of N` indicator.
- **Labels and reviewers** — surfaced as chips right in the sidebar.
- **Jump to anything** — click a file to scroll straight to its diff, or a
comment to open it in context.

Install (from source)


```bash
bun install
bun run build # outputs the unpacked extension to dist/
```

- **Chrome / Edge** — open `chrome://extensions`, enable Developer mode, click
**Load unpacked**, and select `dist/`.
- **Firefox** — run `bun run package` and load
`release/octonext-firefox-vX.Y.Z.zip` via `about:debugging` → This Firefox →
Load Temporary Add-on.

Packaging for the stores


```bash
bun run package
```

Produces store-ready and self-distribution artifacts in `release/`:

| Artifact | Target |
| --- | --- |
| `octonext-chrome-vX.Y.Z.zip` | Chrome Web Store (MV3, service worker) |
| `octonext-chrome-vX.Y.Z.crx` | Signed CRX3 for direct Chrome install |
| `octonext-firefox-vX.Y.Z.zip` | Firefox Add-ons upload |
| `octonext-firefox-vX.Y.Z.xpi` | Installable Firefox package |

The CRX is signed with a key in `keys/octonext.pem`, generated on first run and
kept out of version control. Keep it safe to preserve a stable extension ID.

Development


```bash
bun run dev # rebuild on change into dist/ (fast incremental)
bun run typecheck # strict TypeScript checks
bun run test # unit tests for the core logic
bun run lint:structure # every file <=130 lines, no comments, kebab-case
bun run format # Prettier
```

Structure rules, enforced in CI: **no source file over 130 lines**, no comments
in `src`, kebab-case filenames. See `scripts/check/rules.ts`.

## Themes

22 themes, switched live from the options page. The last five are animated —
motion on folder toggles, clicks, ripples, and hovers.

Full theme list


| Static | Animated |
| --- | --- |
| Auto (system) | Pixel |
| GitHub Light / Dark / Dark Dimmed | Cute |
| One Dark | Retro CRT |
| Dracula · Nord · Monokai | Hacker |
| Solarized Light / Dark | Synthwave |
| Gruvbox Dark · Tokyo Night | |
| Monokai Pro · Ristretto · Octagon | |
| Vira Teal · Vira Ocean | |

## Privacy

No servers, no analytics, no tracking. The only requests go to the GitHub API
for the repo you are viewing. Your token, if you set one, stays in
`chrome.storage` and is sent **only** to GitHub.

Full privacy policy: **[decryptable.github.io/octonext](https://decryptable.github.io/octonext/)**

## Tech stack

- **Bun** — package manager, bundler, test runner, and asset pipeline
- **TypeScript** (strict) — all source, no UI framework
- **material-icon-theme** + **Vira** — two bundled VS Code file-icon packs
- **@fortawesome/\*** — UI icons
- **webextension-polyfill** — cross-browser `browser.*` APIs

See [`ARCHITECTURE.md`](./ARCHITECTURE.md) for the source map and data flow, and
[`CONTRIBUTING.md`](./CONTRIBUTING.md) to get involved.

## Support

Free, and staying free. If it saves you time, you can tip:


Donate via Saweria

## License

[MIT](./LICENSE) © [decryptable](https://github.com/decryptable)