From 0df51b482288edba19626c0c0fdcbd9de6c2d20a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Mon, 12 Oct 2026 21:04:37 +0200 Subject: [PATCH 1/3] fix(web): put on-screen text in the snapshot tree instead of losing it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The web capture asked agent-browser for `--compact`, and that flag removes a ref-less element TOGETHER WITH the text under it: on one page the role census goes ListMarker 200 -> 0 and status 1 -> 0, so a `status` region that just announced something never reaches the projection at all. Measured on the page this fix was developed against: `wait text "Hello Zed"` times out on text the user can read off the screen, and `find text`/`get text` cannot answer for it either. The flag's pruning is owned here instead, by a projection that can tell an empty container from the text inside it. What survives the projection is now decided per line. Text the backend issued no ref for becomes a node carrying that text on `value`, in the ref-less shape the layer above already models (see `SnapshotRefMinting`). A string rides on `value` rather than `label` because the backend spells a control's visible string twice — as the control's name and as its own text line — and a second `label` claiming it would refuse every `label="Name"` read as ambiguous. Suppression of a text line is a structural relation read off the tree, not a page-global denylist: a line is a duplicate when it renders inside a `