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.
- Host: GitHub
- URL: https://github.com/decryptable/octonext
- Owner: decryptable
- License: mit
- Created: 2026-06-03T12:32:54.000Z (20 days ago)
- Default Branch: main
- Last Pushed: 2026-06-04T00:37:47.000Z (20 days ago)
- Last Synced: 2026-06-04T02:12:08.202Z (20 days ago)
- Topics: chrome, chrome-extension, chrome-extensions, developer-tools, explorer, firefox, firefox-addon, firefox-extension, git, github
- Language: TypeScript
- Homepage:
- Size: 738 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
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.**
[](https://github.com/decryptable/octonext/actions/workflows/ci.yml)
[](https://github.com/decryptable/octonext/releases)
[](./src/manifest.config.ts)
[](./tsconfig.json)
[](https://bun.sh)
[](#privacy)
[](#themes)
[](#features)
[](#)
[](#)
[](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.
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:
## License
[MIT](./LICENSE) © [decryptable](https://github.com/decryptable)