- Lazy-loading semantics: an @font-face never matched by rendered text
stays "unloaded" forever - the readiness poll now waits only on faces
in "loading" state, ending the instant fetches settle (removes ~3s of
dead deadline per viewport on affected pages); unreferenced faces log
per-face informationally instead of warning
- Asset gate counts a failure only for real HTTP >= 400 or a failed
fetch whose target file is genuinely absent from the export - aborted
srcset-candidate image fetches with valid files on disk are excused,
matching the existing streaming-media treatment
458 tests pass (11 new), typecheck clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- A grid-cols-N recipe plan may only override the authored template when
computed tracks are near-equal - asymmetric sidebar templates
(260px 1fr) keep their authored geometry
- Source-intent named tokens (max-w-md etc.) re-emit only when their
Tailwind-4 value matches the captured computed px; mismatches (older
token scales) emit the captured value instead
- Per-axis source-variant selection keeps the highest-min-width active
variant instead of last-in-class-order, matching real Tailwind cascade
(lg:grid-cols-3 no longer loses to a later md:grid-cols-2 at desktop) -
latent since the initial commit
- New non-blocking textHiddenInClone metric in the dom gate: counts
capture-visible text that renders hidden in the clone, so silent
disappearances surface in reports
435 tests pass (10 new), typecheck clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Walker serializes the composed (flattened) tree: open shadow roots walk
as host children with <slot> replaced by its assigned light nodes (or
fallback), so custom-element content (product cards, web components) is
captured instead of arriving childless
- In-flow visibility:hidden nodes with a nonzero border box survive the
prune as sized invisible placeholders - ghost spacers carry load-bearing
geometry
- When pruning drops leading in-flow children of a horizontally-translated
track, the baked translateX is re-anchored by their aggregate margin-box
width (settled carousel tracks return to origin instead of pushing real
content off-screen); animation-owned transforms unaffected
- Circular-shrink slide guard counts block-level fill children as
width-deriving regardless of wAuto (block auto-width IS fill), pinning
library-sized slide widths uniformly
- javascript: hrefs emit as "#" and the link gate normalizes both sides
382 tests pass (18 new), typecheck clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>