Files
greasyboii/CHANGELOG.md
T
2026-09-02 11:01:20 +01:00

5.6 KiB

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)