GitHub Notification Batch Clearer
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
This script adds a powerful batch management toolbar to GitHub notifications pages. Instead of clicking the "Done" button on each notification individually, you can select multiple notifications at once and clear them all with a single click. The toolbar includes a "Select All" checkbox that selects all visible notifications on the current page (including those loaded via infinite scroll). A "Clear Selected" button marks all selected notifications as "Done" by clicking the native GitHub "Done" button for each notification. You can filter notifications by type—Issues, Pull Requests, Releases, Commits, or Discussions—and then select all notifications of that type. A progress indicator shows the status of the clearing process. The toolbar persists across page navigation and updates dynamically as new notifications load.
WHERE IT RUNS
The script runs on GitHub notifications pages, including the main notifications page (github.com/notifications) and repository-specific notifications pages (github.com/*/*/notifications). It supports both desktop and mobile views.
HOW TO USE
After installation, the settings panel appears on the left side of the screen with the gear emoji (⚙️). Open the panel to configure the script:
- The "Enable batch clearer" toggle enables or disables the toolbar.
- Toggle "Default select all on page load" to automatically select all notifications when you open the notifications page.
A toolbar appears at the top of the notifications list with the following controls:
- "Select All" checkbox: selects or deselects all visible notifications.
- "Selected: N" counter: shows how many notifications are currently selected.
- "Clear Selected" button: marks all selected notifications as Done.
- "Deselect All" button: clears all selections.
- Filter dropdown: shows only notifications of a specific type.
- "Select Type" button: selects all notifications of the currently filtered type.
The progress indicator shows "Ready," "Clearing N notifications...", or "Cleared N notifications" during the process.
TECHNICAL SECTION — REAL MECHANISM
The script detects notifications pages by checking the URL for /notifications. It finds notification items using selectors like .notification-list-item, .notification-item, .js-notification-item, and .Box-row. Each notification's checkbox is found using input[type="checkbox"], .js-notification-checkbox, or .notification-checkbox. The "Done" button is found using button[aria-label*="Done"], .js-done-button, or .done-button. The "Select All" checkbox toggles the checked state of all notification checkboxes, dispatching "change" events to trigger React's event system. The "Clear Selected" button collects all checked notifications and iterates through them, clicking each notification's "Done" button. To avoid rate limiting, the script processes notifications in batches. The filter functionality hides notification items by setting style.display = 'none' based on the notification type, which is determined by scanning the item's text content for keywords like "pull request," "issue," "release," etc. The "Select Type" feature selects all notifications of the filtered type. The progress indicator is updated using textContent. A MutationObserver watches for DOM changes to detect new notifications loading via infinite scroll and updates the selection state.
THE PANEL
The settings panel is built with BotGentz's BGPanel component. It is draggable via its header, allowing you to reposition it anywhere on the screen. The panel snaps to the left edge by default but can be moved freely. Click the gear emoji to collapse the panel into a small bubble, and click the bubble to expand it again. The panel remembers its position per page session. Press the Escape key to quickly close or minimize the panel. The panel includes a status flash bar that provides visual feedback when settings are changed or actions are performed. All settings save automatically via GM_setValue.
PLEASE NOTE
This script requires the free BotGentz browser extension to run. It does not function as a standalone Chrome extension and does not use chrome.* APIs. GitHub frequently updates its notifications page structure, which may affect the selectors used to find notifications, checkboxes, and Done buttons. If the script stops working, please check for updates. The script simulates clicking "Done" buttons—this is the same action as manually clicking each notification's Done button. Clearing a large number of notifications may take a few seconds, and the script spaces out clicks to avoid triggering rate limiting. The script stores only your preferences via GM_setValue. No data is sent externally—all data is stored locally in your browser. The script never reads or writes password fields, hidden inputs, or file inputs. All DOM operations use safe methods (style properties, textContent, appendChild) and never use innerHTML.