Skip to content

Commit 78fedf3

Browse files
committed
Polish docs and project metadata
1 parent 5c15f2d commit 78fedf3

10 files changed

Lines changed: 70 additions & 58 deletions

File tree

.gitignore

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,22 @@ scripts/get-refresh-token.js
1414
scripts/package-extension.sh
1515

1616
# Local dev notes
17-
CLAUDE.md
1817
notes.md
1918
todo.txt
2019
ROADMAP.md
2120

21+
# AI assistant instruction files
22+
AGENTS.md
23+
CLAUDE.md
24+
GEMINI.md
25+
QWEN.md
26+
AIDER.md
27+
CURSOR.md
28+
COPILOT.md
29+
CODEIUM.md
30+
WINDSURF.md
31+
CONTINUE.md
32+
2233
# AI assistant directories
2334
.claude/
2435
.cursor/

.husky/pre-commit

100755100644
File mode changed.

.husky/pre-push

100755100644
File mode changed.

PRIVACY.md

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Privacy Policy for GitHub Devwatch
22

3-
**Last Updated: November 17, 2025**
3+
**Last Updated: March 8, 2026**
44

55
## Overview
66

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.
88

99
## Data Collection and Usage
1010

@@ -13,9 +13,10 @@ GitHub Devwatch is a Chrome browser extension that helps you monitor activity on
1313
GitHub Devwatch collects and stores the following data **locally on your device only**:
1414

1515
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
1718
- 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
1920
- Never shared with anyone
2021

2122
2. **Repository Watch List**
@@ -31,7 +32,7 @@ GitHub Devwatch collects and stores the following data **locally on your device
3132
4. **Activity Data**
3233
- Recent activity from your watched repositories (up to 2000 items)
3334
- 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
3536

3637
### What We DON'T Collect
3738

@@ -52,9 +53,9 @@ All data collected is used exclusively to provide the extension's functionality:
5253

5354
## Data Storage
5455

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
5757
- 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
5859
- You can clear all data at any time by uninstalling the extension or using Chrome's "Clear extension data" feature
5960

6061
## Third-Party Services
@@ -107,13 +108,14 @@ You have complete control over your data:
107108

108109
## Security
109110

110-
We take security seriously:
111+
Current builds include several concrete safeguards:
111112

112113
- 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)
116-
- Content Security Policy prevents malicious script injection
114+
- The token is encrypted before it is persisted locally
115+
- The codebase includes input sanitization and GitHub URL validation checks
116+
- Extension pages use a Content Security Policy
117+
118+
These measures reduce risk in normal use, but they should not be read as a formal security certification or third-party audit.
117119

118120
## Changes to This Policy
119121

@@ -130,7 +132,7 @@ This extension is not directed at children under 13. We do not knowingly collect
130132
If you have questions about this privacy policy or the extension:
131133

132134
- Open an issue on GitHub: https://github.com/jonmartin721/devwatch-github/issues
133-
- Developer: Jonathan Martinez
135+
- Developer: Jonathan Martin
134136

135137
## Open Source
136138

README.md

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# GitHub Devwatch for Chrome
22

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.
44

55
[![Chrome Web Store](https://img.shields.io/badge/Chrome-Web_Store-green?logo=google-chrome)](https://chromewebstore.google.com/detail/github-devwatch/dbgjgcaphfcfgppicmbiafcgcabikjch)
66
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
@@ -9,13 +9,13 @@ Track GitHub activity across multiple repos. Get notifications for new PRs, issu
99

1010
## Key Features
1111

12-
- **Guided Setup** - 2-minute wizard walks you through token creation and repo selection
12+
- **Guided Setup** - Built-in setup flow for token creation and repository selection
1313
- **Browser Notifications** - Get notified about new PRs, issues, and releases
1414
- **Multi-Repo Monitoring** - Watch up to 50 repositories from one interface
1515
- **Configurable Updates** - Check every 5, 15, 30, or 60 minutes
1616
- **Activity Filtering** - Search and filter by repo and activity type
1717
- **Badge Counts** - Unread count on the extension icon
18-
- **Secure & Private** - Your token stays local, zero third-party data sharing
18+
- **Direct API Access** - Talks to GitHub directly, with optional npm registry lookups only when you use package-name import
1919

2020
<div align="center">
2121
<img src="screenshots/full-tagline.png" alt="GitHub Devwatch - Track your repositories" width="800">
@@ -52,13 +52,11 @@ cd devwatch-github
5252

5353
### First-Time Setup
5454

55-
An interactive wizard guides you through:
55+
The built-in setup flow walks you through:
5656
1. Create a GitHub token
5757
2. Add repositories to watch
5858
3. Choose activity types (PRs, Issues, Releases)
5959

60-
Takes about 2 minutes. No configuration knowledge needed.
61-
6260
<div align="center">
6361
<img src="screenshots/onboarding-welcome.png" alt="Interactive setup wizard welcome screen" width="500">
6462
</div>
@@ -95,23 +93,20 @@ Here's what using the extension looks like day-to-day:
9593

9694
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.
9795

98-
## Accessibility
99-
100-
Full WCAG 2.1 Level A compliance with keyboard navigation, screen reader support, and ARIA landmarks.
96+
## Accessibility Notes
10197

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.
10399

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).
105101

106-
## Privacy & Security
102+
## Privacy & Security Notes
107103

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.
109105

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
115110

116111
## Data Storage
117112

@@ -164,9 +159,16 @@ The extension defaults to checking every 15 minutes. You can change this to 5, 3
164159

165160
### Running Tests
166161
```bash
162+
npm run lint
163+
npm run typecheck
167164
npm test
165+
npm run build
168166
```
169167

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+
170172
### Local Development
171173
1. Clone the repository
172174
2. Run `npm install` for dependencies
@@ -192,7 +194,7 @@ Contributions welcome! Submit issues or pull requests. See [CONTRIBUTING.md](CON
192194

193195
## Roadmap
194196

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:
196198
- **Comment notifications** - Track new comments on issues and PRs
197199
- **Mention tracking** - Get notified when you're mentioned
198200
- **Multiple GitHub accounts** - Switch between different accounts
@@ -216,11 +218,5 @@ Copyright (c) 2025 Jonathan Martin
216218
---
217219

218220
<div align="center">
219-
220-
[⭐ Star this repo](https://github.com/jonmartin721/devwatch-github) if you find it useful!
221-
222-
<br><br>
223-
224-
<img src="screenshots/logo-tagline.png" alt="GitHub Devwatch - Track changes fast" width="300">
225-
221+
<img src="screenshots/logo-tagline.png" alt="GitHub Devwatch logo" width="300">
226222
</div>

SECURITY.md

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,22 @@ These are better suited for regular issues:
2828
- UI/UX problems
2929
- Performance issues
3030

31-
## Security Measures
31+
## Current Security Posture
3232

33-
The extension implements several security practices:
33+
The extension includes several concrete protections, but this project has not been through a formal external security audit.
3434

3535
### Token Storage
36-
- GitHub tokens are encrypted using AES-GCM with 256-bit keys
37-
- Stored in Chrome's secure storage API
36+
- GitHub tokens are encrypted before they are written to local extension storage
37+
- A decrypted copy may be cached in session storage while the extension is running
3838
- Never transmitted to third-party servers
39-
- Session caching for performance without compromising security
4039

4140
### Content Security Policy
42-
- Strict CSP prevents unauthorized script execution
43-
- Only allows connections to GitHub API and npm registry
41+
- Extension pages use a CSP that limits script sources and network destinations
42+
- The current policy allows connections to the GitHub API and npm registry
4443
- No inline scripts or eval()
4544

4645
### Input Validation
47-
- All user inputs are sanitized
46+
- The codebase includes sanitization for rendered content
4847
- URLs are validated before opening
4948
- Repository names are validated against GitHub's format
5049

@@ -55,7 +54,7 @@ The extension implements several security practices:
5554

5655
## Supported Versions
5756

58-
Currently supporting version 1.0.0. Security updates will be released as patch versions (e.g., 1.0.1).
57+
Security fixes are targeted at the current `1.0.x` release line.
5958

6059
## Disclosure Policy
6160

manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"manifest_version": 3,
33
"name": "GitHub Devwatch",
44
"version": "1.0.2",
5-
"description": "Monitor pull requests, issues, and releases across multiple GitHub repositories. Get notifications and never miss activity.",
6-
"author": "Jonathan Martinez",
5+
"description": "Monitor pull requests, issues, and releases across GitHub repositories with notifications and a local activity feed.",
6+
"author": "Jonathan Martin",
77
"permissions": [
88
"storage",
99
"alarms",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "github-devwatch-chrome",
33
"version": "1.0.2",
4-
"description": "Chrome extension for GitHub Devwatch",
4+
"description": "Chrome extension for monitoring GitHub repository activity",
55
"type": "module",
66
"scripts": {
77
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",

scripts/build.js

100755100644
File mode changed.

tests/README.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Test Suite
22

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.
46

57
## Running Tests
68

@@ -43,12 +45,14 @@ Tests are organized by feature and component:
4345
### Utility Tests
4446
- `utils.test.js` - Utility functions
4547

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%
4754

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.
5256

5357
Current coverage can be viewed by running `npm test -- --coverage`.
5458

0 commit comments

Comments
 (0)