Changelog

All notable changes to Charlotte, documented by release.

v0.4.0

added

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.

added

charlotte:tools meta-tool — Runtime tool group management. List, enable, and disable tool groups mid-session without restarting.

added

Profile benchmark suite — Four tests measuring tool definition overhead across full, browse, and core profiles.

added

charlotte:drag — Drag an element to another element using mouse primitives. Closes GAP-01.

added

Landmark IDs — Landmarks now have stable hash-based IDs (rgn-xxxx) for tool referencing.

added

charlotte:console — Retrieve console messages with level filtering and buffer clearing. Closes GAP-21.

added

charlotte:requests — Retrieve network request history with URL, resource type, and status filters. Closes GAP-22.

added

Modifier key clicks — charlotte:click now accepts ctrl, shift, alt, meta modifiers for all click types.

fixed

Pseudo-element content duplication — extractFullContent() no longer emits duplicate text from CSS ::before/::after pseudo-elements.

changed

Default startup profile is now browse (22 tools) instead of loading all 40 tools. Use --profile=full for the previous behavior.

changed

PageManager now captures all console messages and network responses (not just errors). Ring buffers capped at 1000 entries.

changed

Static server binds to 127.0.0.1 instead of 0.0.0.0. Directory traversal prevention via allowedWorkspaceRoot.

v0.3.0

added

charlotte:dialog — Accept or dismiss JavaScript dialogs (alert, confirm, prompt, beforeunload). Closes GAP-03.

added

Dialog-aware action racing — Clicks that trigger dialogs return immediately instead of hanging for 30s.

added

dialog_auto_dismiss configuration — Auto-handle dialogs via charlotte:configure. Options: none, accept_alerts, accept_all, dismiss_all.

added

Dialog-blocking stub responses — Minimal stub representation when a dialog is blocking, so agents always know a dialog needs handling.

changed

PageManager now accepts CharlotteConfig in its constructor for dialog auto-dismiss configuration.

v0.2.0

changed

Compact response format — Responses are 50-99% smaller. Charlotte's navigate returns 336 chars for Hacker News vs Playwright MCP's 61,230.

changed

Interactive summary for minimal detail — Element counts by landmark region instead of full element lists. Wikipedia dropped from 711K to 7.7K chars.

changed

Default state stripping — Interactive elements omit redundant defaults (enabled: true, visible: true, focused: false).

changed

Navigation defaults to minimal detail. Pass detail: "summary" or "full" for more context.

removed

Removed unused alerts field from page representation.

v0.1.3

added

Benchmark suite for comparing Charlotte against Playwright MCP across real websites.

v0.1.2

changed

Added mcpName field for MCP registry publishing.

v0.1.1

added

get_cookies — Retrieve cookies for the active page with optional URL filtering.

added

clear_cookies — Clear cookies with optional name filtering.

fixed

Session integration tests now use HTTP URLs for cookie operations.

v0.1.0

added

Initial release. All six implementation phases complete: navigation, observation, interaction, session, development, and utility tools.

added

Renderer pipeline: accessibility tree + layout geometry + interactive element extraction.

added

Hash-based element IDs stable across re-renders.

added

Snapshot store with ring buffer and structural diffing.

added

222 tests across 19 test files (unit + integration).