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.
[0.6.0] - 2026-04-04
Added
- Interaction commands —
click,type,scroll,focus,navigate,selectfor agent-driven UI interaction (debug builds only) invokecommand — call Tauri IPC commands from the CLI with JSON payload supportstore-inspectcommand — inspect reactive store state (Pinia, Vue devtools, custom__DEBUG_STORES__hook)capturecommand — collect screenshot + DOM + page state + storage into a single debug evidence bundlecheckcommand — structured assertions against DOM state with pass/fail resultsprobecommand — target discovery and bridge health checkeval --fileoption — load JavaScript from a file instead of inline string--pidand--window-labelbridge options for multi-app and multi-window targetingBridgeClientmulti-window eval via optionalwindowLabelparameter- Zod schemas for interaction command results (
schemas/interact.ts) - Shared interaction utilities:
escapeSelector(),buildFindElementScript()
Changed
- Rust bridge example: added
/versionand/describeendpoints, multi-window eval support - Command count increased from 14 to 25
[0.5.1] - 2026-03-24
Added
src/util/magick.ts— ImageMagick version detection module with caching; auto-detects v6 (standaloneconvert) vs v7 (unifiedmagickbinary) at runtime (#4)
Fixed
- ImageMagick v7 compatibility — all ImageMagick invocations (
convert,import,identify,compare) now route through the version-awaremagickCommand()resolver, usingmagick <subcommand>on v7 and standalone commands on v6 resizeImage()backslash escape bug —-resizeargument was800x\>(literal backslash) instead of800x>, causing "invalid argument" errors on ImageMagick v7- Tool availability checks (
detect.ts) now recognizemagickbinary as valid ImageMagick installation, falling back toconvertfor v6
[0.5.0] - 2026-03-23
Added
- Hyprland Wayland compositor support via
HyprlandAdapterusinghyprctlfor window management andgrimfor screenshots (#3 by @gabrielpgagne) HYPRLAND_INSTANCE_SIGNATUREenvironment variable detection for automatic adapter selectioncheckHyprlandTools()for verifying Hyprland-specific tool availabilityHyprClientSchemaZod schema for validatedhyprctl clients -joutput
Changed
DisplayServertype now distinguisheswayland-sway,wayland-hyprland, and genericwaylanddetectDisplayServer()checksSWAYSOCKandHYPRLAND_INSTANCE_SIGNATUREfor compositor-specific adapterscheckWaylandTools()renamed tocheckSwayTools()for clarity
[0.4.0] - 2026-03-19
Added
rust-logscommand — monitor Rust backendtracing/logoutput and sidecar process stdout/stderr in real-time via the bridge's/logsendpointRustLogEntrytype for structured Rust log entries with timestamp, level, target, message, and source fieldsBridgeClient.fetchLogs()method for polling the/logsendpoint with 404 detection for old bridges- Severity-based level filtering (
--level warnshows warn and error, matching RustRUST_LOGconvention) --target <regex>filtering by Rust module path--source <source>filtering by origin (rust,sidecar,all, orsidecar:<name>)- Rust bridge:
LogBufferring buffer (max 1000 entries),BridgeLogLayertracing layer,spawn_sidecar_monitored()helper,POST /logsendpoint,create_log_layer()public API
Changed
start_bridge()now returns(u16, Arc<LogBuffer>)instead ofu16- Bridge example requires
tracingandtracing-subscribercrate dependencies
[0.3.0] - 2026-03-17
Added
diffcommand — compare two screenshots with pixel-level difference metrics, threshold gating, and diff image outputmutationscommand — watch DOM mutations on a CSS selector with polling, attribute tracking, and auto-cleanupsnapshotcommand — capture screenshot + DOM tree + page state + storage in a single invocationdom --text <pattern>option — find elements by text content (case-insensitive), respects--first,--count, and selector scoping
Fixed
- CSS selector escaping in mutation observer now escapes backslashes before single quotes (consistent with bridge client)
dom --textnow scopes search to the provided selector instead of always searchingdocument.bodydom --text --firstflag is now respected (was previously ignored)diff --thresholdnow throws a clear error whenidentifyfails instead of silently reporting 0%
Changed
buildSerializerScriptexported fromdom.tsfor reuse bysnapshotcommandformatEntryandMutationEntryexported frommutations.tssnapshotdeduplicates window discovery via sharedresolveWindowIdhelper
[0.2.1] - 2026-03-17
Fixed
- CLI
--versionflag now reads frompackage.jsoninstead of being hardcoded
[0.2.0] - 2026-03-17
Fixed
- Dev bridge now returns actual JS eval results instead of echoing back the expression string
- Uses Tauri command callback pattern (
__TAURI__.core.invoke) for reliable round-trip evaluation - All bridge-dependent commands (dom, eval, screenshot --selector, storage, console-monitor, ipc-monitor, page-state) now work correctly
Changed
- Bridge setup requires
uuidcrate andinvoke_handlerregistration inmain.rs - Updated integration guide and agent skill with new setup steps
[0.1.0] - 2025-03-17
Added
- Initial CLI with 11 commands:
screenshot,dom,eval,wait,info,list-windows,ipc-monitor,console-monitor,storage,page-state - Rust dev bridge with token-authenticated localhost HTTP server
- Platform support: Linux X11, Linux Wayland/Sway, macOS CoreGraphics
- Agent Skills (
.agents/skills/) andAGENTS.mdfor agent-driven discovery - DOM-targeted pixel capture using bridge + ImageMagick crop
- Auto-discovery of bridge via
/tmptoken files - All commands read-only with
--jsonstructured output