All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Filter rule count badges not recomputed after mark-as-read, mark-repo-as-read, mark-all-as-read, or desktop notification click
- Sync now uses GitHub gist
updated_atas the authoritative timestamp, avoiding missed remote changes on devices with skewed clocks - Sync no longer flags false conflicts when filter rule field order differs (
{keywords, repos}vs{repos, keywords}) or when only the timestamp changed without rule edits - Replace
createContextualFragmentandinnerHTMLwithDOMParserto satisfy AMO security linter
- Notification filter rules — hide notifications by repo and/or keyword
- Browse filtered notifications inline via "· N filtered" badge
- Sync filter rules across browsers via private GitHub Gist
- Refine popup hover and keyboard focus feedback across links, buttons, repository headers, and notification actions
- Merge the settings avatar and username into a single accessible profile link while keeping avatar and text hover feedback independent
- Add "go to latest comment" button for notifications (prefetched and cached)
- Add priority dot for high-priority notification reasons
- Sum PR review comments into comment count
- Shrink settings panel to content height by removing forced flex fill
- Remove hover cards feature, keep native title tooltips
- Update settings icon in assets
- Split repo header links into separate actions for better usability
- Add main open target option for notifications
- Preserve focus after marking notifications as read
- Unify focus states and fix hidden tab targets
- Refine action button visibility and avatar ring styles
- Unify all popup links to open at end of tab strip, matching notification click behavior
- Notification detail cache not refreshed when a notification is updated, showing stale state/author info
- Replace blocking
alert()with inline hint text for notification permission feedback in settings - Build script no longer wipes
dist/firefox-devdirectory
- Switch linter and formatter from ESLint/Prettier to oxlint/oxfmt
- Extract shared utilities and constants for better code organization
- Remove dead code and tighten default values
- Notification count in the repository header not decrementing when a single notification is marked as read
- Countdown timer display jumping on alarm reset (was showing remaining time from the previous alarm cycle)
- Device Flow OAuth polling could exceed
expires_intimeout after repeatedslow_downresponses from GitHub - Theme / popup width changes not applied when browser storage write fails
- Replace all
innerHTMLassignments with safe DOM API construction (createElement, textContent, replaceChildren, createContextualFragment) to satisfy Firefox AMO linter requirements - Add
getIconSVGElement()utility usingcreateContextualFragmentfor safe SVG injection without innerHTML - Add
data_collection_permissionsto Firefox manifest as required by AMO
- Race condition where a 60-second auto-refresh could restore notifications already dismissed via mark-as-read, mark-all-as-read, mark-repo-as-read, or desktop notification click
- In-progress detail fetches now abort if a user action invalidates their snapshot, preventing stale data from being written back to storage
- Badge "+" indicator now only updates when a fetch actually commits to storage
- Unified stagger animation for all mark-as-read flows
- Eliminated redundant GET_STATE round-trip after mark-repo-as-read
- Mark-as-read animation reworked to use overlay approach, fixing dark band artifact in scroll containers
- Reduced right-side jump when adjusting popup width
- CSS variables standardized across device-flow and popup styles
- DOM removal now deferred until API confirms success for all mark-as-read flows
- Stagger timeouts properly tracked and cancellable on rollback
- Notification cache cleared on mark-all-as-read to prevent stale data
- 🔔 Real-time unread count badge and desktop notifications
- 📋 Issues, PRs, Releases, and all notification types with rich details
- ✅ Mark as read per notification, per repository, or all at once
- 🔐 OAuth Device Flow or Personal Access Token authentication
- ✨ Clean, minimal UI — feature-rich without the clutter
- 🎨 Light / Dark / System theme with adjustable popup width