You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: PRIVACY.md
+15-13Lines changed: 15 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
1
# Privacy Policy for GitHub Devwatch
2
2
3
-
**Last Updated: November 17, 2025**
3
+
**Last Updated: March 8, 2026**
4
4
5
5
## Overview
6
6
7
-
GitHub Devwatch is a Chrome browser extension that helps you monitor activity on GitHub repositories. This privacy policy explains how the extension handles your data.
7
+
GitHub Devwatch is a Chrome extension for monitoring activity on GitHub repositories. This policy explains what the extension stores, when it makes network requests, and what is not collected.
8
8
9
9
## Data Collection and Usage
10
10
@@ -13,9 +13,10 @@ GitHub Devwatch is a Chrome browser extension that helps you monitor activity on
13
13
GitHub Devwatch collects and stores the following data **locally on your device only**:
14
14
15
15
1.**GitHub Personal Access Token**
16
-
- Encrypted with AES-GCM encryption and stored securely on your device
16
+
- Stored by the extension in Chrome storage
17
+
- Current builds encrypt the token before writing it to local storage and keep a decrypted session copy while the extension is running
17
18
- Used only to authenticate with GitHub's API
18
-
-Never transmitted to any third-party servers
19
+
-Not sent to third-party services operated by this project
19
20
- Never shared with anyone
20
21
21
22
2.**Repository Watch List**
@@ -31,7 +32,7 @@ GitHub Devwatch collects and stores the following data **locally on your device
31
32
4.**Activity Data**
32
33
- Recent activity from your watched repositories (up to 2000 items)
33
34
- Cached locally for offline viewing
34
-
-Automatically cleaned up when storage limits are approached
35
+
-Trimmed automatically when the activity limit is reached or cleanup rules apply
35
36
36
37
### What We DON'T Collect
37
38
@@ -52,9 +53,9 @@ All data collected is used exclusively to provide the extension's functionality:
52
53
53
54
## Data Storage
54
55
55
-
- All data is stored locally on your device using Chrome's storage APIs
56
-
- Chrome encrypts sensitive data (like your GitHub token) at rest
56
+
- The extension uses Chrome storage APIs for settings, cached activity, and token handling
57
57
- Settings and repository lists can optionally sync across your Chrome browsers if you use Chrome Sync
58
+
- Token handling uses local and session storage rather than Chrome sync
58
59
- You can clear all data at any time by uninstalling the extension or using Chrome's "Clear extension data" feature
59
60
60
61
## Third-Party Services
@@ -107,13 +108,14 @@ You have complete control over your data:
107
108
108
109
## Security
109
110
110
-
We take security seriously:
111
+
Current builds include several concrete safeguards:
111
112
112
113
- All API requests use HTTPS
113
-
- GitHub tokens are encrypted using AES-GCM encryption
114
-
- Input is sanitized to prevent XSS attacks
115
-
- Only GitHub URLs are allowed (no external redirects)
Copy file name to clipboardExpand all lines: README.md
+22-26Lines changed: 22 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# GitHub Devwatch for Chrome
2
2
3
-
Track GitHub activity across multiple repos. Get notifications for new PRs, issues, and releases without constantly refreshing.
3
+
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.
4
4
5
5
[](https://chromewebstore.google.com/detail/github-devwatch/dbgjgcaphfcfgppicmbiafcgcabikjch)
@@ -95,23 +93,20 @@ Here's what using the extension looks like day-to-day:
95
93
96
94
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.
97
95
98
-
## Accessibility
99
-
100
-
Full WCAG 2.1 Level A compliance with keyboard navigation, screen reader support, and ARIA landmarks.
96
+
## Accessibility Notes
101
97
102
-
**Keyboard Shortcuts**: R (refresh), S (search), A (archive), Escape (close), Arrow keys (navigate tabs)
98
+
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.
103
99
104
-
Tested with NVDA/JAWS screen readers and axe-core. [Report accessibility issues](https://github.com/jonmartin721/devwatch-github/issues).
100
+
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](https://github.com/jonmartin721/devwatch-github/issues).
105
101
106
-
## Privacy & Security
102
+
## Privacy & Security Notes
107
103
108
-
Your GitHub token is encrypted and stays on your machine. The extension only communicates with GitHub's API - no analytics, no tracking, no third-party services.
104
+
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, and the current build encrypts the GitHub token before persisting it locally while keeping a decrypted session copy available at runtime.
109
105
110
-
-**Encrypted Storage** - Tokens use AES-GCM encryption in Chrome's secure storage
111
-
-**Local Only** - All data stays on your machine, never sent to third parties
112
-
-**GitHub API Only** - No external servers or analytics services
113
-
-**Minimal Permissions** - Token used exclusively for fetching repository activity
114
-
-**Open Source** - Review the entire codebase, raise issues, or submit fixes
106
+
-**Direct network access** - Requests go to `api.github.com`, plus `registry.npmjs.org` only when you use package-name lookup
107
+
-**Scoped browser permissions** - The manifest asks for `storage`, `alarms`, and `notifications`
108
+
-**Defensive client code** - The codebase includes URL validation, content security policy rules, and sanitization tests
109
+
-**No formal audit claim** - These measures improve the local handling of data, but they are not a substitute for securing the browser profile and GitHub account you use with the extension
115
110
116
111
## Data Storage
117
112
@@ -164,9 +159,16 @@ The extension defaults to checking every 15 minutes. You can change this to 5, 3
164
159
165
160
### Running Tests
166
161
```bash
162
+
npm run lint
163
+
npm run typecheck
167
164
npm test
165
+
npm run build
168
166
```
169
167
168
+
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.
169
+
170
+
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.
171
+
170
172
### Local Development
171
173
1. Clone the repository
172
174
2. Run `npm install` for dependencies
@@ -192,7 +194,7 @@ Contributions welcome! Submit issues or pull requests. See [CONTRIBUTING.md](CON
192
194
193
195
## Roadmap
194
196
195
-
This is a side project for me, so I work on it when time allows - but I'd love to see contributions! Here are some features I'm considering:
197
+
This is an actively maintained side project. Some features under consideration:
196
198
-**Comment notifications** - Track new comments on issues and PRs
197
199
-**Mention tracking** - Get notified when you're mentioned
198
200
-**Multiple GitHub accounts** - Switch between different accounts
@@ -216,11 +218,5 @@ Copyright (c) 2025 Jonathan Martin
216
218
---
217
219
218
220
<divalign="center">
219
-
220
-
[⭐ Star this repo](https://github.com/jonmartin721/devwatch-github) if you find it useful!
Copy file name to clipboardExpand all lines: tests/README.md
+10-6Lines changed: 10 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,8 @@
1
1
# Test Suite
2
2
3
-
This directory contains the test suite for the GitHub DevWatch Chrome extension.
3
+
This directory contains the test suite for the GitHub Devwatch Chrome extension.
4
+
5
+
Most tests here are unit-level or DOM-focused integration tests running under Jest with jsdom and mocked Chrome APIs. They are useful for regression coverage, but they do not replace manual testing in a loaded extension or a full browser-level end-to-end pass.
4
6
5
7
## Running Tests
6
8
@@ -43,12 +45,14 @@ Tests are organized by feature and component:
43
45
### Utility Tests
44
46
-`utils.test.js` - Utility functions
45
47
46
-
## Coverage Goals
48
+
## Coverage Thresholds
49
+
50
+
Jest enforces the following global minimum coverage thresholds:
51
+
-**Lines**: 47%
52
+
-**Branches**: 46%
53
+
-**Functions**: 44%
47
54
48
-
The project maintains minimum coverage thresholds:
49
-
-**Lines**: 35%
50
-
-**Branches**: 34%
51
-
-**Functions**: 30%
55
+
Current thresholds are defined in `jest.config.js`. They are guardrails for CI, not a statement that every extension path is covered.
52
56
53
57
Current coverage can be viewed by running `npm test -- --coverage`.
0 commit comments