Skip to content

Latest commit

 

History

History
198 lines (155 loc) · 8.89 KB

File metadata and controls

198 lines (155 loc) · 8.89 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

0.7.1 - 2026-02-13

Fixed

  • Simplified saveTo parameter description in screenshot tools to remove opinionated usage instructions that were influencing AI assistant behavior

0.7.0 - 2026-02-13

Added

  • saveTo parameter for screenshot tools: New optional parameter on screenshot_page and screenshot_by_uid that saves the screenshot to a local file instead of returning base64 image data in the MCP response
    • Solves context window bloat in CLI-based MCP clients (e.g. Claude Code) where large base64 screenshots fill up the context quickly
    • When saveTo is provided, returns a lightweight text response with the file path and size
    • Automatically creates parent directories if they don't exist
    • Follows the same pattern as Chrome DevTools MCP's filePath parameter

Changed

  • Screenshot response format: Without saveTo, screenshots are now returned as native MCP image content ({ type: "image" }) instead of raw base64 text. GUI clients (Claude Desktop, Cursor) render these natively.
  • Removed buildScreenshotResponse with its token-limit truncation — no longer needed since screenshots are either saved to file or returned as proper image content
  • Extended McpToolResponse type to support both text and image content items

0.6.1 - 2026-02-04

Added

  • Enhanced Vue/Livewire/Alpine.js support: New snapshot options for modern JavaScript frameworks
    • includeAll parameter: Include all visible elements without relevance filtering
    • selector parameter: Scope snapshot to specific DOM subtree using CSS selector
    • Fixes #36 - DOM filtering problem with Vue and Livewire applications
  • Test fixtures: Added new HTML fixtures for testing visibility edge cases (visibility.html, selector.html)

Changed

  • Improved element relevance detection:
    • Fixed text content checking to use direct text only (excluding descendants)
    • Added check for interactive descendants to include wrapper elements
    • Implemented "bubble-up" pattern in tree walker to preserve nested interactive elements
    • Elements with v-*, wire:*, x-* attributes and custom components are now properly captured with includeAll=true

Fixed

  • Visibility checking now considers ancestor elements: Elements inside hidden parents (e.g., display:none, visibility:hidden) are now correctly excluded from snapshots, even in includeAll mode
  • Opacity parsing improved: Fixed opacity check to properly handle various numeric formats (0, 0.0, 0.00) by parsing as float instead of string comparison
  • CSS selector error handling: Invalid CSS selectors now return clear error messages ("Invalid selector syntax") instead of generic "Unknown error"
  • Interactive elements deeply nested in non-relevant wrapper divs are now correctly captured
  • Container elements with large descendant text content no longer incorrectly filtered out
  • Custom HTML elements (Vue/Livewire components) are now visible in snapshots with includeAll=true

[0.6.0] - 2025-12-01

Released on npm, see GitHub releases for details.

0.5.3 - 2025-01-30

Added

  • Windows-specific integration test runner (scripts/run-integration-tests-windows.mjs)
    • Runs integration tests directly via Node.js to avoid vitest fork issues on Windows
    • See #33 for details
  • Documentation for Windows integration tests in docs/ci-and-release.md
  • Branch protection enabled on main branch

Changed

  • .claude/ directory added to .gitignore

0.5.2 - 2025-01-22

Added

  • New test helper functions for improved integration test stability:
    • waitForElementInSnapshot() - actively waits for elements to appear in DOM snapshots
    • waitForPageLoad() - ensures page is fully loaded before proceeding
  • 14 new comprehensive unit tests for parseHeaders() function covering edge cases:
    • Numeric values (direct & BiDi format)
    • Arrays with null/undefined items
    • Nested objects with deep value extraction
    • Circular reference handling
    • Mixed arrays with primitives and objects
    • Boolean values and bytes format
  • Global test cleanup system to prevent zombie Firefox processes
  • Signal handlers (SIGINT, SIGTERM) for graceful Firefox cleanup on test interruption
  • New npm script test:unit for running unit tests without Firefox dependencies

Fixed

  • Critical: Zombie Firefox processes no longer left running after test failures
    • Added automatic cleanup in tests/setup.ts after all tests complete
    • Added process signal handlers to ensure cleanup on Ctrl+C and crashes
    • Prevents port conflicts and resource leaks
  • Integration test flakiness caused by race conditions:
    • Form interaction test (hover functionality)
    • Tab snapshot isolation test
    • Network monitoring tests
    • Console capture tests
    • All snapshot tests (7 total)
  • Test parallelization conflicts by enforcing sequential execution

Changed

  • Integration tests now run sequentially instead of in parallel to avoid Firefox port conflicts
  • Vitest configuration updated with fileParallelism: false and singleFork: true
  • All integration tests refactored to use new helper functions for stability
  • Test success rate improved from 95% (with intermittent failures) to 100% consistent success

CI/CD

  • Added Firefox installation step to GitHub Actions CI workflow
  • Added unit tests to PR check workflow for faster feedback
  • Updated PR checks to include build verification
  • Integration tests now run reliably in CI environment

Test Coverage

  • Total tests: 275 (250 unit + 25 integration)
  • All tests now pass consistently (100% success rate across multiple runs)
  • Enhanced coverage for BiDi header parsing edge cases

0.5.1 - 2025-01-21

Fixed

  • Network headers now display actual values instead of [object Object]
    • BiDi protocol returns headers as { type: "string", value: "..." } objects

0.5.0 - 2025-01-21

Fixed

  • acceptInsecureCerts CLI parameter now properly propagates to Firefox

Changed

  • Centralized UID error handling across input/screenshot/snapshot tools

Removed

  • Dead code: estimateTokens, safeguardResponse, DEFAULT_HEADLESS
  • Unused types: FirefoxConfig, PageInfo
  • Unused utilities: isExecutable, fileExists

0.4.0 - 2025-11-26

Added

  • Token limit safeguards to prevent context overflow in AI assistant responses
  • Firefox connection health check with user-friendly error messages for AI assistants
  • Navigate to localhost development server support

Fixed

  • CI workflow: build step now runs before tests to ensure snapshot bundle is available
  • Firefox DevTools connection error handling with improved diagnostics
  • Snapshot bundle path resolution for npx execution

Changed

  • Improved error messages to be more helpful for AI assistants

0.3.0 - 2025-11-25

Added

  • Integration tests for console, form, network, and snapshot workflows
  • Comprehensive test coverage for core functionality

Fixed

  • Main module detection for npx compatibility
  • MCP connection timeout issues

0.2.5 - 2025-11-24

Fixed

  • Moved geckodriver to dependencies to fix connection timeout when running via npx

0.2.3 - 2025-11-24

Fixed

  • Normalize module path check for cross-platform compatibility
  • Added missing selenium-webdriver dependency

0.2.0 - 2025-11-23

Added

  • Initial public release
  • Firefox DevTools automation via WebDriver BiDi
  • MCP server implementation with tools for:
    • Page navigation and snapshot
    • Console message capture
    • Network request monitoring
    • Screenshot capture
    • Form interaction (click, fill, hover)
    • Tab management
    • Script execution
  • UID-based element referencing system
  • Headless mode support