-
feat: rich-editor fill, box centers, screenshot downscale, disabled+docs (#41-#45)
released this
2026-06-17 08:49:38 +00:00 | 11 commits to main since this releaseDogfooding backlog from this session's embedded-form/editor work.
#41 fill on rich editors: detect CodeMirror 5 / Monaco / ProseMirror /
contenteditable and set via their own API or execCommand('insertText') so
beforeinput/input fire (a raw .value/textContent write no-op'd juejin's
CodeMirror and skipped React composers). Response echoes theengineused.
fill <sel> --file <path>/--stdinset large multiline text without
shell-escaping.get valuenow reads CodeMirror/Monaco/contenteditable too.#42 screenshot --max-width/--max-height/--scale, plus a default 2000px
longest-edge cap (AGENT_BROWSER_SCREENSHOT_MAX_EDGE; 0 disables) so retina
full-page shots fit an agent's image reader and --scale 0.5 makes screenshot
px line up with click px. Annotated shots are never downscaled.#43
box @ref(already a top-level alias ofget box) now also returns
centerX/centerY/inViewport in CSS px — feed straight intoclick x ywhen a
ref-click no-ops (e.g. a button in a cross-origin iframe).#44 no code change needed — disabled elements already list as
button "Save" [disabled, ref=eN]; the reporter's missing button was
DOM-gated on validity. Added a skill note:find textcan't reach into a
cross-origin iframe — target those by snapshot @ref.#45 core skill now distinguishes screenshot-to-locate (discouraged) from
screenshot-to-capture a reusable image asset viascreenshot [--clip] <file>
(encouraged), so agents stop over-reading the prohibition.#40 (group-scoped relay) stays deferred — needs an ab-connect extension change.
Verified live: fill --file round-trips multiline+CJK+backticks; contenteditable
engine=contenteditable + get value reads it back; box gives centerX/centerY/
inViewport; screenshot of retina example.com → 2000px; disabled button shows
[disabled]. 856 tests pass.Downloads