Changelog
All notable changes to Charlotte, documented by release.
v0.4.0
Tiered tool visibility — Startup profiles control which tools load into the agent's context. Six profiles: core (7), browse (22), interact (27), develop (30), audit (13), full (40). Granular group selection via --tools.
charlotte:tools meta-tool — Runtime tool group management. List, enable, and disable tool groups mid-session without restarting.
Profile benchmark suite — Four tests measuring tool definition overhead across full, browse, and core profiles.
charlotte:drag — Drag an element to another element using mouse primitives. Closes GAP-01.
Landmark IDs — Landmarks now have stable hash-based IDs (rgn-xxxx) for tool referencing.
charlotte:console — Retrieve console messages with level filtering and buffer clearing. Closes GAP-21.
charlotte:requests — Retrieve network request history with URL, resource type, and status filters. Closes GAP-22.
Modifier key clicks — charlotte:click now accepts ctrl, shift, alt, meta modifiers for all click types.
Pseudo-element content duplication — extractFullContent() no longer emits duplicate text from CSS ::before/::after pseudo-elements.
Default startup profile is now browse (22 tools) instead of loading all 40 tools. Use --profile=full for the previous behavior.
PageManager now captures all console messages and network responses (not just errors). Ring buffers capped at 1000 entries.
Static server binds to 127.0.0.1 instead of 0.0.0.0. Directory traversal prevention via allowedWorkspaceRoot.
v0.3.0
charlotte:dialog — Accept or dismiss JavaScript dialogs (alert, confirm, prompt, beforeunload). Closes GAP-03.
Dialog-aware action racing — Clicks that trigger dialogs return immediately instead of hanging for 30s.
dialog_auto_dismiss configuration — Auto-handle dialogs via charlotte:configure. Options: none, accept_alerts, accept_all, dismiss_all.
Dialog-blocking stub responses — Minimal stub representation when a dialog is blocking, so agents always know a dialog needs handling.
PageManager now accepts CharlotteConfig in its constructor for dialog auto-dismiss configuration.
v0.2.0
Compact response format — Responses are 50-99% smaller. Charlotte's navigate returns 336 chars for Hacker News vs Playwright MCP's 61,230.
Interactive summary for minimal detail — Element counts by landmark region instead of full element lists. Wikipedia dropped from 711K to 7.7K chars.
Default state stripping — Interactive elements omit redundant defaults (enabled: true, visible: true, focused: false).
Navigation defaults to minimal detail. Pass detail: "summary" or "full" for more context.
Removed unused alerts field from page representation.
v0.1.3
Benchmark suite for comparing Charlotte against Playwright MCP across real websites.
v0.1.2
Added mcpName field for MCP registry publishing.
v0.1.1
get_cookies — Retrieve cookies for the active page with optional URL filtering.
clear_cookies — Clear cookies with optional name filtering.
Session integration tests now use HTTP URLs for cookie operations.
v0.1.0
Initial release. All six implementation phases complete: navigation, observation, interaction, session, development, and utility tools.
Renderer pipeline: accessibility tree + layout geometry + interactive element extraction.
Hash-based element IDs stable across re-renders.
Snapshot store with ring buffer and structural diffing.
222 tests across 19 test files (unit + integration).