cf659fa7 Updated email snapshots for juice 11 dropping dead CSS
no ref
juice 9 left every rule it had already inlined, and every rule that matched
nothing at all, in the residual style block. juice 11 emits only what it cannot
inline. The email snapshots recorded the old behaviour, so six of them failed on
rules that never applied to anything.
Nine selectors go from the style block of the emails that never contained the
cards they style - kg-nft-link, kg-twitter-link, the three kg-cta-* link rules,
post-title-link, post-title-link-left, view-online-link and kg-audio-link. None
of those classes appears on any element in the snapshots that lost them, so this
is dead weight rather than styling: 1,165 bytes of it in every email, which is
1,165 bytes further from Gmail's clipping threshold.
Nothing about what renders changes, and the diff shows it: no deletion touches a
tag, an inline style attribute, an href or a class, and the only content that did
not exist before is seven content-length headers, each smaller than before. The
rules juice genuinely cannot inline are untouched - :hover, :active and both
media queries survive byte-identically, checked directly against juice 9. Where
one of these selectors does match an element, the inline style juice writes is
byte-identical between the two versions, `!important` and duplicated
client-fallback declarations included.
Verified against MySQL 8.0.46, the version CI runs: the integration lane is green
(463 passed) and the e2e lane green but for two members.test.js snapshots about
member attribution, which pass in isolation, passed in an earlier full-lane run,
and belong to a file this branch does not touch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWgjERCX2GuTpX9rLXHBPR 18c05503 Updated email snapshots for juice 11 dropping dead CSS
no ref
juice 9 left every rule it had already inlined, and every rule that matched
nothing at all, in the residual style block. juice 11 emits only what it cannot
inline. The email snapshots recorded the old behaviour, so six of them failed on
rules that never applied to anything.
Nine selectors go from the style block of the emails that never contained the
cards they style - kg-nft-link, kg-twitter-link, the three kg-cta-* link rules,
post-title-link, post-title-link-left, view-online-link and kg-audio-link. None
of those classes appears on any element in the snapshots that lost them, so this
is dead weight rather than styling: 1,165 bytes of it in every email, which is
1,165 bytes further from Gmail's clipping threshold.
Nothing about what renders changes, and the diff shows it: no deletion touches a
tag, an inline style attribute, an href or a class, and the only content that did
not exist before is seven content-length headers, each smaller than before. The
rules juice genuinely cannot inline are untouched - :hover, :active and both
media queries survive byte-identically, checked directly against juice 9. Where
one of these selectors does match an element, the inline style juice writes is
byte-identical between the two versions, `!important` and duplicated
client-fallback declarations included.
Verified against MySQL 8.0.46, the version CI runs: the integration lane is green
(463 passed) and the e2e lane green but for two members.test.js snapshots about
member attribution, which pass in isolation, passed in an earlier full-lane run,
and belong to a file this branch does not touch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWgjERCX2GuTpX9rLXHBPR dbb229a9 Updated email snapshots for juice 11 dropping dead CSS
no ref
juice 9 left every rule it had already inlined, and every rule that matched
nothing at all, in the residual style block. juice 11 emits only what it cannot
inline. The email snapshots recorded the old behaviour, so six of them failed on
rules that never applied to anything.
Nine selectors go from the style block of the emails that never contained the
cards they style - kg-nft-link, kg-twitter-link, the three kg-cta-* link rules,
post-title-link, post-title-link-left, view-online-link and kg-audio-link. None
of those classes appears on any element in the snapshots that lost them, so this
is dead weight rather than styling: 1,165 bytes of it in every email, which is
1,165 bytes further from Gmail's clipping threshold.
Nothing about what renders changes, and the diff shows it: no deletion touches a
tag, an inline style attribute, an href or a class, and the only content that did
not exist before is seven content-length headers, each smaller than before. The
rules juice genuinely cannot inline are untouched - :hover, :active and both
media queries survive byte-identically, checked directly against juice 9. Where
one of these selectors does match an element, the inline style juice writes is
byte-identical between the two versions, `!important` and duplicated
client-fallback declarations included.
Verified against MySQL 8.0.46, the version CI runs: the integration lane is green
(463 passed) and the e2e lane green but for two members.test.js snapshots about
member attribution, which pass in isolation, passed in an earlier full-lane run,
and belong to a file this branch does not touch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWgjERCX2GuTpX9rLXHBPR 8cbcc170 Restored the lockfile hashes my sandbox dropped
no ref
Installing juice and cheerio re-resolved three entries that have nothing to do
with either, because this sandbox reaches npm but gets a 403 for
codeload.github.com and unofficial-builds.nodejs.org. pnpm did what it should
on an unreachable host and fell back, so the damage was quiet and in the
lockfile rather than in an error.
google-caja-bower and keymaster went from codeload tarballs to git+https
clones. Both still pin the same commit, but the tarball URL and its sha512 go
away in that form, which is the binding pnpm's supply-chain pass checks on
every install - the specs are a branch and a bare repo URL, so that hash is
what pins the bytes rather than the ref. node lost its two linux-musl variants
outright, which would leave Alpine with no runtime to resolve.
Restored all three from the pre-change lockfile, so they are byte-identical to
what was there before. Everything still differing is cheerio, juice, their
dropped transitives or the patch: a diff of the packages and snapshots sections
reports 16 removals, 3 additions and no in-place modifications, and the
importers section differs in exactly the three specifier lines this branch
means to change. `pnpm install --frozen-lockfile` re-verifies all 4375 entries
against the supply-chain policies and passes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VWgjERCX2GuTpX9rLXHBPR