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.2.0 - 2025-07-17
pen updatesubcommand — self-update from the latest GitHub release without reinstallingpen initwizard — interactive setup wizard powered by charmbracelet/huh to configure Chrome path and project root--statelessflag — disablesMcp-Session-Idtracking for stateless HTTP transport deploymentspen_navigatetool — navigate the active browser tab to any URL or trigger browser actions- Gate 9: HTTP Transport security — validates HTTP transport session headers and enforces stateless-mode constraints
- Installation scripts —
install.sh(macOS/Linux) andinstall.ps1(Windows) for one-line installs - Pen-docs site — full SvelteKit documentation site covering architecture, CDP integration, tool development, security, and more
- Typo correction — unknown subcommands now suggest the closest valid command via Levenshtein distance
- Environment detection now identifies VS Code, Cursor, Windsurf, and other IDE environments from process tree inspection
- Edge browser path detection fixed for Windows; Cursor config location updated
- Concurrent console-log entry appending now uses proper locking (fixes data race in tests)
pen-docsadded as a tracked submodule / separate build target
- Wrangler (Cloudflare Workers) configuration — docs site moved to Vercel static adapter
0.1.0 - 2025-06-01
- Initial release of PEN (Performance Engineering Node) — a Model Context Protocol server for browser performance analysis
- 30 MCP tools across 9 categories: memory, CPU, network, coverage, audit, source, console, lighthouse, utility, status
- CDP (Chrome DevTools Protocol) client with auto-reconnect and multiplexed event listeners
- Streamable HTTP and stdio MCP transports
- Rate limiting, path-traversal protection, eval gating, and URL scheme validation (security Gates 1–8)
--cdp-url,--transport,--addr,--allow-eval,--auto-launch,--project-root,--log-levelflags- Structured JSON output with lipgloss-styled terminal formatting