CDP Page.printToPDF → base64 decode → write to path.
Registers pdf.rs in mod.rs/action.rs/cli.rs/router.rs/output.rs.
Text output: path: {path} line per §10.3.
Errors: ARTIFACT_WRITE_FAILED, SESSION_NOT_FOUND, TAB_NOT_FOUND.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add full implementation of `browser screenshot <path>` (§10.2) including:
- Core viewport screenshot via CDP Page.captureScreenshot
- --full flag for full-page capture using Page.getLayoutMetrics
- --selector flag to clip to a specific CSS element region
- --screenshot-format (png/jpeg) with extension inference
- --screenshot-quality for JPEG compression control
- --annotate flag that overlays numbered labels on interactive elements
and returns annotations metadata (ref, number, role, name, box)
Expand RefCache to store role/name (RefEntry) so annotate can build
complete annotation metadata without re-fetching the AX tree.
Includes 11 unit tests and 12 E2E tests covering happy paths
(json/text/jpeg/full/selector/annotate) and error paths
(invalid path, session/tab not found, missing args).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove search and get subcommands (out of lifecycle scope)
- Remove daemon stop subcommand (daemon is internal, auto-managed)
- Hide daemon serve command (only used by auto-start, not user-facing)
- Remove unused uuid dependency
- Keep reqwest (used internally for CDP HTTP discovery)
Daemon auto-start is transparent: CLI connects to UDS socket on
every browser command. If daemon isn't running, auto-starts it.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>