133 lines
5.6 KiB
Markdown
133 lines
5.6 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to GreasyBoii will be documented in this file.
|
|
|
|
## [2.0.0] - 2026-09-02 (Chrome and Firefox)
|
|
|
|
### Added
|
|
- Visual element picker for the rule editor's Element Selector field
|
|
- Advanced rule actions: auto-click (once or repeating), find & replace text,
|
|
SPA re-apply (MutationObserver-based re-checking of a rule's match condition)
|
|
- Tools tab: bulk media downloader, link harvester (bulk-open/export), page data
|
|
scraper (CSV/JSON export)
|
|
- Rule import/export as JSON
|
|
- One-click "Dark Mode This Site" rule generator
|
|
- Master enable/disable kill-switch (`Ctrl+Shift+G`) with a toolbar badge
|
|
- New extension icon (shared design, rasterized separately per browser)
|
|
|
|
### Changed
|
|
- Both `manifest.json` files now request the `downloads` permission (used only by the
|
|
bulk media downloader) and declare a `commands` shortcut for the kill-switch
|
|
- `package-all.sh` no longer hardcodes a version or zips inline; it now delegates to
|
|
`package-chrome-release.sh` and `package-firefox-release.sh`, which each read their
|
|
version from their own `manifest.json`
|
|
- `firefox/manifest.json` now declares `browser_specific_settings.gecko` (an `id` plus
|
|
`data_collection_permissions: { required: ["none"] }`) — AMO started rejecting
|
|
submissions without the latter in November 2025; GreasyBoii collects no data, so
|
|
`"none"` is accurate
|
|
|
|
### Fixed
|
|
- `popup.js`'s three list-rendering functions (`renderRules`, `renderReplacementRows`,
|
|
`renderLinkResults`) built their HTML by string-concatenating a template literal into
|
|
`.innerHTML` — flagged by AMO's linter, and a real bug, not just a lint nit: the
|
|
`escapeHtml()` helper they leaned on only escapes for text-node context, not for the
|
|
HTML-attribute context it was actually used in (`value="${escapeHtml(...)}"`,
|
|
`title="${escapeHtml(...)}"`), so a value containing `"` could break out of the
|
|
attribute; a rule's `matchType` also rendered unescaped if it wasn't one of the three
|
|
expected values, reachable via a crafted Import Rules JSON file. Rewrote all three to
|
|
build DOM nodes directly (`createElement`/`textContent`/property assignment, plus
|
|
`createElementNS` for the two static SVG icons) instead of ever parsing a string as
|
|
markup — removes the injection surface entirely rather than just escaping harder, and
|
|
the now-unused `escapeHtml()` helper is deleted.
|
|
|
|
### Notes
|
|
- Landed Firefox-first (element picker relayed through `storage.local`+`background.js`
|
|
since the popup closes before a page click, and JS rules injected via
|
|
`wrappedJSObject`/script-tag). Chrome reaches full feature parity in this same
|
|
release; its content script keeps routing JS injection through the background
|
|
service worker's `chrome.scripting.executeScript` (MAIN world) instead, since that
|
|
CSP-bypass mechanism was already Chrome's approach pre-2.0 — see CLAUDE.md.
|
|
|
|
## [1.0.2] - 2024-10-16
|
|
|
|
### Fixed
|
|
- **CRITICAL: CSP Violation** - Fixed Content Security Policy blocking external Bootstrap CDN
|
|
- **Modal initialization** - Now works correctly with local Bootstrap files
|
|
- Extension now fully functional in Chrome Manifest V3
|
|
|
|
### Changed
|
|
- **Renamed to GreasyBoii** - Extension renamed from "Greasemonkey" to "GreasyBoii"
|
|
- **Local Bootstrap** - Downloaded Bootstrap 5.3.2 files locally (227KB CSS + 79KB JS)
|
|
- Updated all console messages to show "GreasyBoii" branding
|
|
- Updated all UI text to reflect new name
|
|
|
|
### Added
|
|
- bootstrap.min.css (227KB) - Local Bootstrap CSS
|
|
- bootstrap.bundle.min.js (79KB) - Local Bootstrap JS with Popper
|
|
|
|
## [1.0.1] - 2024-10-16
|
|
|
|
### Fixed
|
|
- **Add Rule button not working** - Fixed Bootstrap modal initialization timing issue
|
|
- Added fallback initialization for Bootstrap Modal to handle CDN load timing
|
|
- Improved error handling and logging in popup.js
|
|
- Added null checks for DOM elements to prevent errors
|
|
- Added console logging for debugging button clicks
|
|
|
|
### Changed
|
|
- Enhanced `setupEventListeners()` with better error detection
|
|
- Improved `openRuleModal()` with fallback modal initialization
|
|
- Added `initializeExtension()` wrapper function for proper initialization order
|
|
|
|
### Added
|
|
- TROUBLESHOOTING.md - Comprehensive troubleshooting guide
|
|
- Console logging for debugging initialization issues
|
|
- Better error messages when elements are not found
|
|
|
|
## [1.0.0] - 2024-10-16
|
|
|
|
### Fixed
|
|
- **Add Rule button not working** - Fixed Bootstrap modal initialization timing issue
|
|
- Added fallback initialization for Bootstrap Modal to handle CDN load timing
|
|
- Improved error handling and logging in popup.js
|
|
- Added null checks for DOM elements to prevent errors
|
|
- Added console logging for debugging button clicks
|
|
|
|
### Changed
|
|
- Enhanced `setupEventListeners()` with better error detection
|
|
- Improved `openRuleModal()` with fallback modal initialization
|
|
- Added `initializeExtension()` wrapper function for proper initialization order
|
|
|
|
### Added
|
|
- TROUBLESHOOTING.md - Comprehensive troubleshooting guide
|
|
- Console logging for debugging initialization issues
|
|
- Better error messages when elements are not found
|
|
|
|
## [1.0.0] - 2024-10-16
|
|
|
|
### Added
|
|
- Initial release
|
|
- Chrome extension (Manifest V3)
|
|
- Firefox extension (Manifest V2)
|
|
- URL pattern matching
|
|
- CSS selector (element) matching
|
|
- Combined URL + element matching
|
|
- JavaScript execution
|
|
- CSS injection
|
|
- Bootstrap 5 dark theme UI
|
|
- Add/edit/delete rules
|
|
- Enable/disable toggles
|
|
- Persistent synced storage
|
|
- Complete documentation suite
|
|
- Example rules library
|
|
- Interactive test page
|
|
- Build instructions
|
|
|
|
### Features
|
|
- Flexible matching system (URL, Element, Both)
|
|
- Modern Bootstrap dark UI
|
|
- Full CRUD operations for rules
|
|
- Form validation
|
|
- Error handling
|
|
- Cross-browser support (Chrome, Firefox, Edge, Opera)
|