Chromium Manifest V3 browser extension for FOC TPMs and team members working in GitHub. It helps with things like connecting day-to-day issue and PR work to the FOC Project Board.
- Make FOC’s project board "global" (i.e., support cross-org issues and PRs) — Manage the board (add items, edit fields where the API allows) from GitHub issues and pull requests on configured repos, with a native-style sidebar and autosave for supported field types (single select, number, text, iteration).
- Global auto-expand for project panels — Optional setting so GitHub’s right-hand Project panel auto-expands for issues and PRs (works across projects, not only FOC).
- OR filter for project boards — Enter OR queries in the project board filter bar (e.g.
cycle:202605-2 biglep (-status:"🎉 Done") OR (-last-updated:1days)) to see merged results from multiple filter branches in a single view. The extension splits the query, fetches each branch separately, deduplicates, and renders the combined results through GitHub’s native UI. This is particularly useful during standups where you want to see all your active and recently completed work in a single view. Configure which boards support this in Options → OR filter for project boards (defaults to all FilOzone projects).
2026-03-29.demo-edited.-.compressed.-.1.5x.mp4
- Install from the Chrome Web Store.
- Click the FOC GH extension icon (puzzle piece → pin it) to open Options.
- Sign in with GitHub (OAuth) — or switch to Personal access token and paste a classic PAT with
project,repo,read:orgscopes (details). - Navigate to an issue or PR in a configured repo (e.g. filecoin-project/filecoin-pin) — the FOC project card appears in the right sidebar.
OAuth note: The production OAuth app must be approved in each GitHub org whose issues/PRs you work with. If you see "OAuth App access restrictions" errors, ask an org owner to approve the app or use a classic PAT instead. See OAuth org approvals.
- Check out the repo.
- Run
npm install. - Run
npm run build. - Open
chrome://extensions, enable Developer mode, Load unpacked, and choose extension/dist/ (build output from the repo root). - Create a classic PAT following PAT permissions.
- Save the PAT in the extension Options page.
(OAuth for local builds is documented in extension/README.md; it needs GitHub OAuth client values in .env.local before npm run build. Ask FilOzone maintainers if you need those credentials.)
The Fastest way steps above cover PAT + unpacked install; full developer setup (Chrome Web Store ZIP, npm run build:zip, both OAuth apps, extension IDs) lives in extension/README.md (read from the repository root, not only from extension/). That guide lists the local extension ID (stable via committed extension/manifest-id-public.b64) vs the Chrome Web Store listing ID, and links to FilOzone’s two GitHub OAuth apps (dev vs prod).
| Need | Where |
|---|---|
| Local unpacked build, stable extension ID, dev OAuth | extension/README.md — Local / unpacked and Extension IDs |
Chrome Web Store ZIP (no manifest.key), production OAuth |
extension/README.md — Chrome Web Store ZIP |
| OAuth apps, callbacks, FilOzone links | docs/github-oauth-app.md |
| Env vars, Actions secret names | .env.example |
| Manual smoke checklist (CI, zip, local) | specs/005-build-distribution-workflows/quickstart.md |
CI: .github/workflows/extension-ci.yml runs on push/PR (see extension/README.md).
- docs/canonical-test-urls.md — Canonical issue/PR URLs and expected Project panel / FOC behavior for manual regression testing (see CONTRIBUTING.md)
- docs/global-boards-picker-status.md — Global boards Projects picker is “Coming soon”; add/remove from the picker is not implemented yet
- extension/README.md — Build, FilOzone OAuth (dev vs production), PAT vs Connect GitHub, configuration
- docs/github-pat-permissions.md — PAT / OAuth scope reference
- docs/github-oauth-app.md — OAuth app registration and callback URLs
- specs/ — Feature specs and plans
