1. 31 Aug, 2025 20 commits
    • Stefy Spora's avatar
      Fix MetaMask detection and improve error handling · 0faffd28
      Stefy Spora authored
      - Fix unsafe window.web3.currentProvider access causing TypeError
      - Add proper null checks for window.web3.currentProvider access
      - Improve MetaMask detection timing with retry mechanism
      - Add MutationObserver to watch for MetaMask injection
      - Enhance error handling and logging for MetaMask detection
      - Confirm MetaMask detection correctly checks active tab's window object
      - Remove backup files from repository
      0faffd28
    • Stefy Spora's avatar
      Fix user tag parsing to use user.id instead of tag id · e799d616
      Stefy Spora authored
      - Update user tag parsing in content.js to extract user IDs from userTag.user.id
      - Update user tag parsing in background.js to extract user IDs from userTag.user.id
      - Handle user tag objects with structure: {id, isApproved, user: {id, nickname, ...}}
      - Extract user IDs from the nested user object instead of the tag id
      - Apply fix to all parsing locations: pictures, videos, direct attributes, root level
      - Maintain backward compatibility with existing user_tags_ids format
      - Add proper null checking for user object existence
      - Test updated user tag parsing logic
      e799d616
    • Stefy Spora's avatar
      Update story-data parsing to use rawCaption field and handle tag objects · da3bc000
      Stefy Spora authored
      - Update getCurrentMediaData function in content.js to use rawCaption instead of caption
      - Update tag parsing to handle tag objects with id, name, slug, path, approved properties
      - Extract tag names and IDs from tag objects properly
      - Update background.js with same parsing logic for consistency
      - Handle both picture and video tag objects correctly
      - Add fallback logic for different tag formats
      - Maintain backward compatibility with existing tag formats
      - Update all extraction points: pictures, videos, direct attributes, and root level data
      - Test parsing logic with new tag object structure
      da3bc000
    • Stefy Spora's avatar
      Fix story-data retrieval by fetching raw HTML from GET request · d1311178
      Stefy Spora authored
      - Update getCurrentMediaData function in content.js to fetch raw HTML from current page URL
      - Parse story-data script tag from raw HTML response instead of relying on DOM
      - Update background.js executePrivacyUpdateFromContext to use same approach
      - Handle cases where story-data script is removed by JavaScript after page load
      - Add proper error handling and fallback to default values
      - Maintain existing functionality while fixing story-data retrieval issue
      - Update bulk processing functions to use new story-data retrieval method
      d1311178
    • Stefy Spora's avatar
      Add video context menu support · 8eea4178
      Stefy Spora authored
      - Add 'video' to context menu contexts array in background.js
      - Update all context menu items to work on video elements:
        * Privaxy
        * Run on All Media
        * Set to Friends Only
        * Set to All Fetlifers
      - Update README.md to document video context menu support
      - Users can now right-click directly on video elements to access privacy options
      8eea4178
    • Stefy Spora's avatar
      Add FetLife contact information · af912bd8
      Stefy Spora authored
      - Add FetLife profile link https://fetlife.com/spora to popup footer
      - Update copyright headers in all source files with contact information
      - Add FetLife contact to README.md author section
      - Update CHANGELOG.md project information with FetLife contact
      - Maintain consistent contact information across all documentation
      af912bd8
    • Stefy Spora's avatar
      Improve story-data parsing to extract from attributes · 48578dba
      Stefy Spora authored
      - Update getCurrentMediaData to parse script tag with id 'story-data'
      - Extract data from attributes.pictures for pictures:
        * title, caption, description, tags_names as tags, user_tags_ids as userTags
      - Extract data from attributes.videos for videos:
        * title, description, tags_names as tags, user_tags_ids as userTags (no caption)
      - Add fallback to direct attributes and root level data
      - Update both content.js and background.js injected functions
      - Preserve existing tags and user tags when updating privacy
      - Use parsed data in XHR payloads instead of empty defaults
      48578dba
    • Stefy Spora's avatar
      Fix chrome.scripting.executeScript function calls · ec4a0433
      Stefy Spora authored
      - Remove arrow function wrapper from executeScript calls
      - Pass function directly instead of calling it
      - Fix all three context menu handlers (privaxy, set-friends-only, set-all-fetlifers)
      - Fix bulk processing function call
      - Ensure proper function injection for script execution
      ec4a0433
    • Stefy Spora's avatar
      Fix executePrivacyUpdateFromContext function definition for proper script injection · eed91b63
      Stefy Spora authored
      - Restructure function to return immediately invoked async function expression (IIFE)
      - Fix function scope issues that prevented proper injection into page context
      - Ensure all helper functions are properly scoped within the injected function
      - Fix bulk processing function with same structure
      - Add proper error handling for script execution failures
      eed91b63
    • Stefy Spora's avatar
      Fix context menu consistency and null reference errors · b718d691
      Stefy Spora authored
      - Make all context menu items available in all contexts (page, image, link)
      - Fix null reference error by adding proper result validation in all context menu handlers
      - Update error messages to be more helpful and consistent
      - Ensure consistent context menu behavior across all right-click scenarios
      - Update documentation to reflect unified context menu experience
      b718d691
    • Stefy Spora's avatar
      Update context menu to work over both images and links · 97c751d3
      Stefy Spora authored
      - Change context menu contexts from ['image'] to ['image', 'link']
      - Context menu items now appear when right-clicking over images OR links
      - Enhanced user experience with dual context support
      - Updated README.md to reflect new image/link context menu behavior
      - Updated CHANGELOG.md with dual context functionality details
      - Maintains all existing functionality while expanding interaction options
      97c751d3
    • Stefy Spora's avatar
      Update CHANGELOG.md to document image-based context menu functionality · 4712d830
      Stefy Spora authored
      - Document the new image-based context menu behavior
      - Add details about enhanced user experience with direct image interaction
      - Update version 1.0.3 changelog with context menu improvements
      4712d830
    • Stefy Spora's avatar
      Update context menu to appear when right-clicking over images · 115659f8
      Stefy Spora authored
      - Change context menu contexts from 'page' to 'image' for privacy options
      - Context menu items now appear when right-clicking directly over images
      - Maintain URL validation to ensure actions work on appropriate FetLife pages
      - Update README.md to reflect the new image-based context menu behavior
      - Improve user experience by making context menu appear on specific images
      - Keep existing functionality for page-wide context menu items
      115659f8
    • Stefy Spora's avatar
      Fix context menu URL patterns and add URL validation · 61a97673
      Stefy Spora authored
      - Change context menu URL patterns from specific video/picture patterns to general FetLife pattern
      - Add URL validation in click handlers to ensure actions only work on video/picture pages
      - Support both direct URLs (/videos/ID, /pictures/ID) and username-based URLs (/{username}/videos/ID)
      - Add user-friendly error messages when not on appropriate pages
      - Maintain backward compatibility with existing functionality
      - Improve user experience with clear feedback for incorrect page usage
      61a97673
    • Stefy Spora's avatar
      Fix CSP violation by removing inline onclick event handler · 569b4dcb
      Stefy Spora authored
      - Remove inline onclick='window.open(...)' from PayPal button in popup.html
      - Add proper event listener in popup.js using addEventListener
      - Fix Content Security Policy violation that was blocking inline event handlers
      - Maintain same functionality while complying with Chrome extension CSP requirements
      - Use 'self' CSP policy which only allows scripts from the extension itself
      569b4dcb
    • Stefy Spora's avatar
      Add contextual menu items for direct privacy settings on video/picture pages · d7b7bd18
      Stefy Spora authored
      - Add two new context menu items that appear only on video/picture pages:
        - 👥 Set to Friends Only - sets privacy to friends_only
        - 🌐 Set to All Fetlifers - sets privacy to all_fetlifers
      - Context menu items only appear on FetLife video and picture URLs
      - Support both direct URLs (/videos/ID, /pictures/ID) and username URLs (/{username}/videos/ID)
      - Update context menu click handlers to process privacy settings directly
      - Add notifications for successful privacy changes
      - Update README.md with new Method 5 for direct privacy setting via context menu
      - Update CHANGELOG.md to document the new context menu functionality
      - Maintain consistent user experience with popup-based privacy controls
      d7b7bd18
    • Stefy Spora's avatar
      Add privacy level dropdown menu for flexible privacy settings · 0cd0e345
      Stefy Spora authored
      - Add dropdown menu to select between 'Friends Only' and 'All Fetlifers' privacy levels
      - Update XHR payloads to use selected privacy level for both pictures and videos
      - Pictures: 'only_friends' vs 'public' based on selection
      - Videos: true vs false for only_friends based on selection
      - Update popup.js to pass privacy level to content script functions
      - Update background.js context menu functions to use privacy level
      - Update content.js executePrivacyUpdate function to accept privacy level parameter
      - Update README.md with privacy level selection instructions
      - Add version 1.0.3 to CHANGELOG.md documenting the new feature
      - Maintain backward compatibility with default 'friends_only' setting
      0cd0e345
    • Stefy Spora's avatar
      Update documentation for PayPal donation feature · 25b6b4cb
      Stefy Spora authored
      - Add PayPal donation information to README.md donations section
      - Update Support the Project section with PayPal details
      - Add new version 1.0.2 to CHANGELOG.md with PayPal donation feature
      - Update project information section in CHANGELOG with PayPal donation address
      - Document the new PayPal donation button functionality
      - Maintain consistent documentation format and style
      25b6b4cb
    • Stefy Spora's avatar
      Add PayPal donation button to info@nexlab.net · ca1bb2d1
      Stefy Spora authored
      - Add PayPal donation button with blue PayPal branding colors
      - Button opens PayPal donation page for info@nexlab.net
      - Positioned alongside MetaMask and Bitcoin donation options
      - Provides additional donation method for users without crypto wallets
      - Maintains consistent styling with other donation buttons
      ca1bb2d1
    • Stefy Spora's avatar
      Hide MetaMask donation button when no compatible wallet is detected · 80f9de83
      Stefy Spora authored
      - Hide donation button by default in popup.html
      - Show 'Checking for Web3 wallet...' message initially
      - Check wallet availability on popup load
      - Only show donation button when MetaMask/wallet is detected
      - Display helpful message when no wallet is found
      - Handle detection errors gracefully
      - Improve user experience by not showing unavailable options
      80f9de83
  2. 30 Aug, 2025 9 commits
    • Stefy Spora's avatar
      Fix content script connection issues with comprehensive fallback system · 75594e4b
      Stefy Spora authored
      - Add robust error handling for content script communication failures
      - Implement automatic content script injection when not available
      - Add executeScript fallback when message passing fails
      - Update manifest.json to use http/https patterns instead of <all_urls>
      - Add comprehensive debugging logs to troubleshoot connection issues
      - Ensure MetaMask detection works on all websites with multiple fallback methods
      - Handle cases where content scripts can't run (chrome:// pages, etc.)
      75594e4b
    • Stefy Spora's avatar
      Fix MetaMask detection in extension popup · 95a82b5f
      Stefy Spora authored
      - Create dedicated metamask-detector.js content script that runs on all websites
      - Update manifest.json to include MetaMask detector for all URLs
      - Modify popup.js to communicate with MetaMask detector via message passing
      - Remove direct window.ethereum access from popup context (not available)
      - Web3 donations now work properly by using content script on active tab
      - MetaMask detection should now work correctly on any website
      95a82b5f
    • Stefy Spora's avatar
      Fix MetaMask detection in popup context · 4918646d
      Stefy Spora authored
      - Remove FetLife page requirement for Web3 donations
      - Remove call to non-existent checkMetaMaskDirect() function
      - Simplify Web3 donation event listener to work directly in popup context
      - Fix conflicting event listeners that were causing MetaMask detection failure
      - Web3 donations now work on any website, not just FetLife pages
      4918646d
    • Stefy Spora's avatar
      Fix Web3 donation independence and improve documentation · 17f26d23
      Stefy Spora authored
      - Fixed Web3 donation to work on any website, not just FetLife pages
      - Improved MetaMask detection in popup context
      - Enhanced error handling for Web3 transactions
      - Updated README with Web3 donation independence details
      - Updated CHANGELOG with version 1.0.1 changes
      - Moved Web3 donation logic to popup context for better reliability
      17f26d23
    • Stefy Spora's avatar
      Add direct MetaMask detection in popup · 5e3cb489
      Stefy Spora authored
      - Added direct injection method to check for MetaMask availability
      - Improved Web3 provider detection with multiple fallback approaches
      - Enhanced error handling with clearer user feedback
      5e3cb489
    • Stefy Spora's avatar
      Enhance Web3 provider detection · 1f5d875b
      Stefy Spora authored
      - Added more robust MetaMask detection with multiple fallback methods
      - Added debugging information for provider detection
      - Improved error messages with clearer instructions
      - Enhanced frame access detection for Web3 providers
      1f5d875b
    • Stefy Spora's avatar
      Fix MetaMask detection issue · 389913c4
      Stefy Spora authored
      - Moved Web3 donation functionality to content script where window.ethereum is accessible
      - Updated popup to communicate with content script via messages
      - Fixed 'MetaMask not detected' error when extension was properly installed
      389913c4
    • Stefy Spora's avatar
      Add Web3/MetaMask donation functionality · 6f77a0e3
      Stefy Spora authored
      - Added MetaMask donation button to popup interface
      - Integrated Web3 functionality for one-click ETH donations
      - Added Ethereum address: 0xdA6dAb526515b5cb556d20269207D43fcc760E51
      - Updated documentation with Web3 donation options
      - Enhanced popup UI with both Bitcoin and Ethereum donation methods
      6f77a0e3
    • Stefy Spora's avatar
      Initial release v1.0.0 - FetLife Privacy Helper Chrome Extension · 1d8b8552
      Stefy Spora authored
      - XHR-based privacy automation for FetLife videos and pictures
      - Single and bulk processing capabilities with pagination support
      - Context menu integration and popup interface
      - Support for both direct and username-based URLs
      - GPLv3 licensed open source project by sexhack.me
      1d8b8552