Monitor pull requests, issues, and releases across multiple GitHub repositories from a Chrome extension. It keeps a local activity feed, badge counts, and optional browser notifications without adding another hosted service to the workflow.
Best for people who follow several repos and want one local review queue instead of GitHub email noise, browser-tab sprawl, or constantly checking each repository by hand.
owner/repo, a GitHub URL, or an npm package name
GitHub Sign-In Permissions: DevWatch uses GitHub OAuth device flow and requests repo plus read:user so it can monitor private repositories and show the connected account in the UI. The current build uses one sign-in path for both public and private monitoring, so there is not a separate public-only permission mode yet.
git clone https://github.com/jonmartin721/devwatch-github.git
cd devwatch-github
npm install
chrome://extensions/The built-in setup flow walks you through:
The popup is the main day-to-day view:
Settings are split into a few practical jobs:
Here’s what using the extension looks like day-to-day:
The extension keeps up to 2000 items in your local history, so you can always check something you saw earlier. Badge count updates automatically as you read items.
The UI includes keyboard navigation, visible focus styles, semantic controls, and ARIA labeling in key flows. The test suite also includes automated axe-core checks and keyboard-focused UI tests.
That said, this project has not gone through a formal accessibility audit or documented screen reader certification. If you run into an accessibility issue, please open an issue.
The extension talks directly to GitHub’s API and does not use a separate analytics or sync backend. It stores settings and cached activity in Chrome extension storage, while the current GitHub auth session stays in Chrome session storage so it is not persisted to disk. Legacy encrypted auth data from older builds is cleared when accessed.
api.github.com for activity checks, github.com for OAuth device-flow sign-in, and registry.npmjs.org only when you use package-name lookupstorage, alarms, and notificationsThe extension stores up to 2000 activity items locally in Chrome storage. This limit ensures the extension stays performant while providing plenty of history.
You can optionally configure automatic expiry of old items:
Items are automatically removed when they exceed the 2000 item limit (keeping the most recent) or when they’re older than your configured expiry time (if enabled).
GitHub gives authenticated users 5,000 API requests per hour. Each repo check uses 1-3 requests, so even checking 50 repos every 15 minutes keeps you well under the limit.
The extension defaults to checking every 15 minutes. You can change this to 5, 30, or 60 minutes in settings. The default 50-repo limit is there to keep rate usage predictable, but Advanced settings also let you enable unlimited repositories if you want to trade more flexibility for more rate-limit risk.
/devwatch-github
/icons # Extension icons in various sizes
/popup # Popup interface
/controllers # Popup business logic
/views # Popup view components
popup.html
popup.js
popup.css
/options # Settings page
/controllers # Settings business logic
/views # Settings view components
options.html
options.js
/shared # Shared utilities
/api # GitHub API integration
/ui # Shared UI components
background.js # Service worker for background tasks
manifest.json # Extension manifest (Manifest V3)
npm run lint
npm run typecheck
npm test
npm run build
The automated checks cover shared logic, UI behavior, and a range of mocked extension flows. They do not replace manual testing in Chrome for permissions, service worker lifecycle behavior, or end-to-end interactions against live GitHub data.
Jest enforces minimum global coverage thresholds of 47% lines, 46% branches, and 44% functions. That is a floor for the suite, not a claim of exhaustive coverage.
npm install for dependencieschrome://extensions/Contributions welcome! Submit issues or pull requests. See CONTRIBUTING.md for guidelines.
This is an actively maintained side project. Some features under consideration:
If any of these sound useful, open an issue or submit a PR!
MIT License - see LICENSE file for details.
Copyright (c) 2025 Jonathan Martin