v0.0.154
Released Nov 1, 2026
Release Notes
Technology detection reads a long next/script snippet in a Next.js flight payload again, and a page of unclosed tags no longer makes it take tens of seconds. url/slug-convention and perf/total-byte-weight count the same pages on both engines when a crawl has bodiless 4xx or 5xx pages, and integrity/brand-impersonation keeps reading long attribute labels on a page padded to starve it.
Fixed
- Technology detection reads a long
next/scriptsnippet in a Next.js flight payload again. The flight read added in v0.0.151 looked only at an element's own strings, but React writes a string of 1 KB or more as a separate text row that the element points at ("children":"$7"), so a Microsoft Clarity loader inside a long inline snippet was missed. The text rows are read where a script element or anext/scriptcomponent points at them; prose, links, JSON-LD and other elements' text rows are still not read. (#1477) url/slug-conventionandperf/total-byte-weightcount the same pages on both engines when a crawl has a 4xx or 5xx page with no HTML. The resident engine counted such an error page in the messages ("All 31 page(s)", "across 31 pages", the average weight) and the streaming engine did not. Error pages with no document are now out of both counts, as the docs already said for the weight rule. (#1359)- A page of unclosed tags no longer makes technology detection take tens of seconds. Every signature that matched a script
src, a stylesheetlink, or adata-*flag scanned up to 400 characters after each<script,<linkor<imgopener, so a 5 MB page of openers took about 20 to 30 s (about 1 s now). The page's tags are now parsed once and those signatures read that list. Behaviour changes: a scriptsrcwritten without quotes, in single quotes or after a long run of other attributes is now found; a commented-out tag is no longer read as a script; a tag that repeats an attribute uses the first, as browsers do; and matches that were only text are gone:document.write('<script src=...>')in inline JavaScript, a tag written inside a string literal, alinkhref inside a script string, and tag text inside an attribute value are no longer read as tags. Only the attributes a signature reads are kept per tag, and the parsed tags are freed after each page. (#1456) integrity/brand-impersonationkeeps reading long attribute labels when a page is padded to starve it. An attribute full of repeatedsign intext no longer spends the per-attribute window cap before the window that names the brand (brand windows come first), every control with long attributes keeps two cue windows (its first and its last) outside the page budget so thousands of cue-bearing decoys cannot leave a later control unread, and the shared half of the budget goes first to controls whose label has no cue word as written. The auth wording the label patterns and the window prefilter use is now one list, so a verb added to it reaches both. (#1458, #1459, #1460)
Update to this version
squirrelscan will auto-update, or run this command to update now:
$