tree, interactiveElements, structuredData, detectForms and scroll were
one or two sentences, and evaluate's script parameter had none. MCP
clients that drop the server instructions only see these, so state what
each returns (fields, shapes, empty cases), when to reach for it over
its neighbours, and scroll's absolute-position semantics.
Picks up effort=none sending thinking disabled to Anthropic (zenai#19)
and the reasoning max_tokens floor on every provider (zenai#18).
ErrorDetail now carries the parsed error message instead of the raw
body.
- Synthesis prompt: drop the one-word/one-phrase answer clamp (a
benchmark format applied to every budget-exhausted REPL turn) and the
no-more-tools line the request already enforces; keep the
report-don't-confabulate rule.
- Driver guidance: drop the HN/Reddit source heuristic, which also
reached every MCP client.
- Save prompt: state the comment rule once instead of repeating it in
the output-format line.
- goto: describe when it returns, what it returns, and when a url-taking
read is the better call.
A box whose content is only text had no content extent, so its scroll
offset never clamped. With an explicit width, direct text children now
wrap at it and add their lines to the content height.
An element sized by a stylesheet rule had no explicit size, so its scroll
offset never clamped. The geometry group now tracks width and height, and
getElementAxis reads them from the cascade, which already folds in the
inline style. html and body read only their inline size, without
materializing the style object. Removes the now unused
CSS.parseDimensionViewport.
rebuildIfDirty walks group_fields like the other per-group code, so a new
group needs no change there. Capacities moves out of Group since it
doesn't depend on the spec. Also updates the ownProps and compute call
sites to the (el, frame) order.
Each group owns its rule buckets, its memo and its cascade priorities, so a
rule only joins the groups it declares something in. Visibility keeps
display, visibility, opacity and pointer-events; overflow and
overscroll-behavior move to a geometry group. A visibility probe no longer
matches overflow-only rules, and its memo entry shrinks to 6 bits.
Response headers get lower cased once, upfront. Any consumer of a transfer's /
response's headers is now `mem.eql` rather than `ascii.eqlIgnoreCase`. This
fixes 1 or 2 WPT cases (e.g. XHR's `getAllResponseHeaders`), it also mergers
values in some cases (which is generally correct) - we need a follow up PR
to correctly merge in all cases.
Preloaded modules would discard errors in the hope that re-fetching the script
when it was needed, might work. This reverses that decision and stores the
error state. When a preload fails, that failure sticks.
This does mean that a transient failure doesn't get a second chance.
But it also means we don't log the failure multiple times (I noticed this when
using adblocking and seeing duplicate failures for the same endpoint). Since we
don't keep trying, it cuts down the CDP flow too.
We previously supported the legacy constructors via new Image() and new Audio()
and https://github.com/lightpanda-io/browser/pull/3620 adds support for
new Option(). In most cases, that was good enough, but it wasn't quite up to
spec, e.g. new HTMLImageElement() still worked and HtMLImageElement showed up
in window.
This PR cleans it up by giving each one a distinct constructor for their legacy
function and NOT creating the default one bridge.constructor would otherwise
create.
Builds ontop of https://github.com/lightpanda-io/browser/pull/3604 to actually
use a Sanitizer across 6 apis (some of which we didn't have at all, and some
of which were incomplete). Namely setHtml and setHTMLUnsafe for Element,
ShadowRoot and Document.