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.
0.7.1 - 2026-02-13
- Simplified
saveToparameter description in screenshot tools to remove opinionated usage instructions that were influencing AI assistant behavior
0.7.0 - 2026-02-13
saveToparameter for screenshot tools: New optional parameter onscreenshot_pageandscreenshot_by_uidthat 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
saveTois 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
filePathparameter
- Screenshot response format: Without
saveTo, screenshots are now returned as native MCPimagecontent ({ type: "image" }) instead of raw base64 text. GUI clients (Claude Desktop, Cursor) render these natively. - Removed
buildScreenshotResponsewith its token-limit truncation — no longer needed since screenshots are either saved to file or returned as proper image content - Extended
McpToolResponsetype to support bothtextandimagecontent items
0.6.1 - 2026-02-04
- Enhanced Vue/Livewire/Alpine.js support: New snapshot options for modern JavaScript frameworks
includeAllparameter: Include all visible elements without relevance filteringselectorparameter: 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)
- 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 withincludeAll=true
- Visibility checking now considers ancestor elements: Elements inside hidden parents (e.g.,
display:none,visibility:hidden) are now correctly excluded from snapshots, even inincludeAllmode - 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
Released on npm, see GitHub releases for details.
0.5.3 - 2025-01-30
- 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
mainbranch
.claude/directory added to.gitignore
0.5.2 - 2025-01-22
- New test helper functions for improved integration test stability:
waitForElementInSnapshot()- actively waits for elements to appear in DOM snapshotswaitForPageLoad()- 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:unitfor running unit tests without Firefox dependencies
- Critical: Zombie Firefox processes no longer left running after test failures
- Added automatic cleanup in
tests/setup.tsafter all tests complete - Added process signal handlers to ensure cleanup on Ctrl+C and crashes
- Prevents port conflicts and resource leaks
- Added automatic cleanup in
- 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
- Integration tests now run sequentially instead of in parallel to avoid Firefox port conflicts
- Vitest configuration updated with
fileParallelism: falseandsingleFork: 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
- 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
- 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
- Network headers now display actual values instead of
[object Object]- BiDi protocol returns headers as
{ type: "string", value: "..." }objects
- BiDi protocol returns headers as
0.5.0 - 2025-01-21
acceptInsecureCertsCLI parameter now properly propagates to Firefox
- Centralized UID error handling across input/screenshot/snapshot tools
- Dead code:
estimateTokens,safeguardResponse,DEFAULT_HEADLESS - Unused types:
FirefoxConfig,PageInfo - Unused utilities:
isExecutable,fileExists
0.4.0 - 2025-11-26
- 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
- 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
- Improved error messages to be more helpful for AI assistants
0.3.0 - 2025-11-25
- Integration tests for console, form, network, and snapshot workflows
- Comprehensive test coverage for core functionality
- Main module detection for npx compatibility
- MCP connection timeout issues
0.2.5 - 2025-11-24
- Moved geckodriver to dependencies to fix connection timeout when running via npx
0.2.3 - 2025-11-24
- Normalize module path check for cross-platform compatibility
- Added missing selenium-webdriver dependency
0.2.0 - 2025-11-23
- 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