Skip to content

Commit 7118d73

Browse files
committed
Refactor snooze functionality: remove expired snooze rendering and cleanup logic; adjust auto-refresh interval to 5 minutes
1 parent adf3610 commit 7118d73

3 files changed

Lines changed: 167 additions & 161 deletions

File tree

README.md

Lines changed: 163 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,151 +1,222 @@
11
# GitHub Devwatch for Chrome
22

3-
A Chrome extension that helps developers stay on top of GitHub activity across multiple repositories.
3+
<div align="center">
44

5-
## Features
5+
**Stay on top of GitHub activity across all your repositories**
66

7-
- **Multi-repo monitoring** - Watch unlimited repositories for new activity
8-
- **Smart notifications** - Get browser notifications for new PRs, issues, and releases
9-
- **Activity filtering** - Filter by repository and activity type (PRs, issues, releases)
10-
- **Configurable intervals** - Check for updates every 5, 15, 30, or 60 minutes
11-
- **Badge counts** - See unread activity count directly on the extension icon
12-
- **Secure token storage** - Your GitHub token is stored securely using Chrome's storage API
7+
[![Chrome Web Store](https://img.shields.io/badge/Chrome-Web_Store-green?logo=google-chrome)](https://chrome.google.com/webstore)
8+
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
139

14-
## Installation
10+
![Demo GIF](screenshots/demo.gif)
1511

16-
### From Source
12+
*Keep track of PRs, issues, and releases without constantly refreshing GitHub pages*
13+
14+
</div>
15+
16+
## ✨ Key Features
17+
18+
- **🔔 Smart Notifications** - Get browser notifications for new PRs, issues, and releases
19+
- **📊 Multi-Repo Monitoring** - Watch up to 50 repositories from a single interface
20+
- **⚡ Real-time Updates** - Configurable check intervals (5, 15, 30, or 60 minutes)
21+
- **🎯 Activity Filtering** - Filter by repository and activity type with search
22+
- **🏷️ Badge Counts** - See unread activity count directly on the extension icon
23+
- **🔒 Secure & Private** - Token stored securely, no third-party data sharing
24+
25+
## 📸 Screenshots
26+
27+
### Extension Interface
28+
<table>
29+
<tr>
30+
<td width="50%">
31+
<img src="screenshots/popup-interface.png" alt="Popup interface showing GitHub activity feed">
32+
<br><em>Popup interface with activity feed and filtering</em>
33+
</td>
34+
<td width="50%">
35+
<img src="screenshots/settings-page.png" alt="Settings page for configuring repositories">
36+
<br><em>Settings page with repository management</em>
37+
</td>
38+
</tr>
39+
<tr>
40+
<td width="50%">
41+
<img src="screenshots/browser-notification.png" alt="Browser notification example">
42+
<br><em>Real-time browser notifications</em>
43+
</td>
44+
<td width="50%">
45+
<img src="screenshots/badge-count.png" alt="Extension badge count">
46+
<br><em>Badge showing unread activity count</em>
47+
</td>
48+
</tr>
49+
</table>
50+
51+
## 🚀 Installation
52+
53+
### From Chrome Web Store (Recommended)
54+
55+
1. Visit the Chrome Web Store (coming soon)
56+
2. Click "Add to Chrome"
57+
3. Grant permissions when prompted
58+
4. Configure your GitHub token and repositories
59+
60+
### Manual Installation (For Development)
1761

1862
1. Clone this repository
1963
```bash
2064
git clone https://github.com/jonmartin721/devwatch-github.git
2165
cd devwatch-github
2266
```
2367

24-
2. Generate extension icons:
25-
- If you have ImageMagick: `cd icons && bash create_simple_icons.sh`
26-
- Icons are required for the extension to load properly
27-
28-
3. Load the extension in Chrome:
68+
2. Load the extension in Chrome:
2969
- Open Chrome and go to `chrome://extensions/`
3070
- Enable "Developer mode" (toggle in top right)
3171
- Click "Load unpacked"
3272
- Select the extension directory
3373

34-
## Setup
74+
## ⚙️ Quick Setup
75+
76+
### 1. Create a GitHub Personal Access Token
77+
- The extension will help you create one with the correct permissions. Click "Create a token with recommended permissions" under the token entry field to do this much more quickly.
3578

36-
1. **Create a GitHub Personal Access Token**
37-
- Go to https://github.com/settings/tokens/new
38-
- Give it a descriptive name (e.g., "GitHub Devwatch Extension")
39-
- Select scopes:
40-
- `repo` (for private repositories)
41-
- OR `public_repo` (for public repositories only)
42-
- Click "Generate token" and copy it
79+
- Go to [GitHub Settings > Tokens](https://github.com/settings/tokens/new)
80+
- Give it a descriptive name (e.g., "GitHub Devwatch Extension")
81+
- Select scopes:
82+
- `repo` (for private repositories)
83+
- OR `public_repo` (for public repositories only)
84+
- Click "Generate token" and copy it
4385

44-
2. **Configure the extension**
45-
- Click the extension icon and open Settings
46-
- Paste your GitHub token
47-
- Add repositories to watch (format: `owner/repo`)
48-
- Choose which activity types to monitor
49-
- Set your preferred check interval
50-
- Click "Save Settings"
86+
### 2. Configure the Extension
87+
- Click the extension icon and open **Settings**
88+
- Paste your GitHub token
89+
- Add repositories to watch (format: `owner/repo`)
90+
- Choose activity types to monitor (PRs, Issues, Releases)
91+
- Set your preferred check interval (5, 15, 30, or 60 minutes)
92+
- Click **Save Settings**
5193

52-
3. **Start receiving notifications**
53-
- The extension will now check for activity at your chosen interval
54-
- Click the extension icon to view recent activity
55-
- Click any activity item to open it in GitHub
94+
### 3. Start Monitoring
95+
- The extension automatically checks for activity at your chosen interval
96+
- Click the extension icon to view recent activity
97+
- Click any activity item to open it directly in GitHub
98+
- Badge count shows unread activity
5699

57-
## Usage
100+
## 🎯 How to Use
58101

59102
### Popup Interface
60-
- **All/PRs/Issues/Releases tabs** - Filter activity by type
61-
- **Refresh button** - Manually check for new activity
62-
- **Search** - Filter activities by keyword
63-
- **Archive** - View previously read activities
64-
- **Activity items** - Click to open in GitHub
103+
- **Tabs**: Filter between All/PRs/Issues/Releases
104+
- **Search**: Filter activities by keyword
105+
- **Refresh**: Manually check for new activity
106+
- **Archive**: View previously read activities
107+
- **Activity Items**: Click to open in GitHub
65108

66109
### Settings Page
67-
- **GitHub Token** - Your personal access token
68-
- **Watched Repositories** - Add/remove repositories, import from GitHub
69-
- **Activity Filters** - Choose what to monitor
70-
- **Check Interval** - How often to check for updates
71-
- **Notifications** - Toggle browser notifications
72-
- **Theme** - Choose dark, light, or system theme
73-
- **Backup/Restore** - Export and import your settings
110+
- **GitHub Token**: Secure storage of your personal access token
111+
- **Watched Repositories**: Add/remove repositories, import from GitHub
112+
- **Activity Filters**: Choose what types of activity to monitor
113+
- **Check Interval**: Configure how often to check for updates
114+
- **Notifications**: Toggle browser notifications on/off
115+
- **Theme**: Choose dark, light, or system theme
116+
- **Backup/Restore**: Export and import your settings
117+
118+
## 🔒 Privacy & Security
74119

75-
## Privacy & Security
120+
Your privacy and security are top priorities:
76121

77-
- Your GitHub token is stored locally using Chrome's sync storage
78-
- The extension only communicates with GitHub's official API
79-
- No data is sent to third-party servers
80-
- Token is only used to fetch repository activity
122+
- **Local Storage Only** - Your GitHub token is stored locally using Chrome's encrypted sync storage
123+
- **API-Only Communication** - The extension only communicates with GitHub's official API
124+
- **No Third Parties** - No data is sent to external servers or analytics services
125+
- **Minimal Permissions** - Token is used exclusively for fetching repository activity
126+
- **Open Source** - Full transparency - you can review the entire codebase
81127

82-
## Rate Limiting
128+
## 📊 Rate Limiting
83129

84-
GitHub's API has rate limits (5,000 requests/hour for authenticated users). This extension is designed to stay well within these limits:
85-
- Default check interval: 15 minutes
86-
- Each check typically uses 1-3 API requests per repository
130+
GitHub's API has generous rate limits that this extension respects:
87131

88-
If you're watching many repositories with frequent checks, be mindful of GitHub's rate limits.
132+
- **5,000 requests/hour** for authenticated users (compared to 60 for unauthenticated)
133+
- **Default interval**: 15 minutes (well within rate limits)
134+
- **Efficient checking**: Each repo typically uses 1-3 API requests per check
135+
- **Smart batching**: Groups requests to minimize API usage
89136

90-
## Development
137+
You can safely monitor dozens of repositories without approaching GitHub's limits.
138+
139+
## 🛠️ Development
91140

92141
### Project Structure
93142
```
94143
/devwatch-github
95-
/icons # Extension icons
96-
/popup # Popup interface
97-
popup.html
98-
popup.js
99-
popup.css
100-
/options # Settings page
101-
options.html
102-
options.js
103-
/shared # Shared utilities
104-
background.js # Service worker
105-
manifest.json # Extension manifest
144+
/icons # Extension icons in various sizes
145+
/popup # Popup interface files
146+
popup.html # Main popup HTML
147+
popup.js # Popup logic and interactions
148+
popup.css # Popup styling
149+
/options # Settings page files
150+
options.html # Settings interface
151+
options.js # Settings management
152+
/shared # Shared utilities and helpers
153+
background.js # Service worker for background tasks
154+
manifest.json # Extension manifest (Manifest V3)
106155
```
107156

108-
### Technologies
109-
- Vanilla JavaScript (no frameworks)
110-
- Chrome Extension Manifest V3
111-
- GitHub REST API
112-
- Chrome Storage, Notifications, and Alarms APIs
157+
### Technologies Used
158+
- **Vanilla JavaScript** - No frameworks, pure JS for maximum compatibility
159+
- **Chrome Extension Manifest V3** - Latest extension standards
160+
- **GitHub REST API** - Direct integration with GitHub's API
161+
- **Chrome APIs** - Storage, Notifications, and Alarms for core functionality
113162

114-
### Testing
163+
### Running Tests
115164
```bash
116165
npm test
117166
```
118167

119-
## Contributing
168+
### Local Development
169+
1. Clone the repository
170+
2. Run `npm install` for dependencies
171+
3. Load as unpacked extension in Chrome
172+
4. Make changes and reload the extension from `chrome://extensions/`
173+
174+
## 🤝 Contributing
120175

121176
Contributions are welcome! Please feel free to submit issues or pull requests. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
122177

123-
## Documentation
178+
### How to Contribute
179+
- **Bug Reports**: Use GitHub Issues with clear reproduction steps
180+
- **Feature Requests**: Open an issue describing the feature and use case
181+
- **Pull Requests**: Fork, branch, and submit with clear commit messages
182+
- **Code Style**: Follow existing patterns and use ESLint configuration
124183

125-
- [Privacy Policy](PRIVACY.md) - How we handle your data
126-
- [Changelog](CHANGELOG.md) - Version history and release notes
127-
- [License](LICENSE) - MIT License
184+
## 📚 Documentation
128185

129-
## Roadmap
186+
- [**Privacy Policy**](PRIVACY.md) - How we handle your data
187+
- [**Changelog**](CHANGELOG.md) - Version history and release notes
188+
- [**License**](LICENSE) - MIT License
189+
- [**Contributing Guidelines**](CONTRIBUTING.md) - How to contribute
190+
191+
## 🗺️ Roadmap
130192

131193
Future features being considered:
132-
- Comment notifications
133-
- Mention tracking
134-
- Multiple GitHub account support
135-
- Custom notification filters
136-
- Internationalization (i18n) support
194+
- **Comment notifications** - Track new comments on issues and PRs
195+
- **Mention tracking** - Get notified when you're mentioned
196+
- **Multiple GitHub accounts** - Switch between different accounts
197+
- **Custom notification filters** - Advanced filtering rules
198+
- **Internationalization** - Support for multiple languages
199+
- **Dashboard view** - Full-page dashboard for all activity
200+
- **Integration with other platforms** - GitLab, Bitbucket support
137201

138-
## License
202+
## 📄 License
139203

140204
MIT License - see [LICENSE](LICENSE) file for details.
141205

142206
Copyright (c) 2024 Jonathan Martin
143207

144-
## Acknowledgments
208+
## 🙋‍♂️ Support
209+
210+
- **Report issues**: [GitHub Issues](https://github.com/jonmartin721/devwatch-github/issues)
211+
- **Feature requests**: [GitHub Discussions](https://github.com/jonmartin721/devwatch-github/discussions)
212+
- **View source**: [GitHub Repository](https://github.com/jonmartin721/devwatch-github)
213+
214+
---
215+
216+
<div align="center">
145217

146-
Built with Chrome Extension Manifest V3 and GitHub's REST API.
218+
**Built with ❤️ for developers who want to stay productive**
147219

148-
## Support
220+
[⭐ Star this repo](https://github.com/jonmartin721/devwatch-github) if it helps you stay on top of your GitHub activity!
149221

150-
- Report issues: [GitHub Issues](https://github.com/jonmartin721/devwatch-github/issues)
151-
- View source: [GitHub Repository](https://github.com/jonmartin721/devwatch-github)
222+
</div>

options/options.css

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,15 +1510,6 @@ body.dark-mode select:focus-visible {
15101510
outline-offset: 2px;
15111511
}
15121512

1513-
.snooze-expired {
1514-
opacity: 0.6;
1515-
font-style: italic;
1516-
}
1517-
1518-
.snooze-expired .snoozed-repo-name {
1519-
color: var(--text-secondary);
1520-
text-decoration: line-through;
1521-
}
15221513

15231514
.snooze-expiry-warning {
15241515
color: #f0ad4e;

0 commit comments

Comments
 (0)