fix(web): preserve deck thumbnail layout fidelity - #7095
Conversation
|
🧪 This PR has changes that need a manual QA pass before merge — please hold off self-merging for now; we'll loop QA in once it's merge-ready (and design/product have signed off, where applicable). |
PerishCode
left a comment
There was a problem hiding this comment.
The viewport-matching fallback has one standards-level detection gap that leaves valid responsive decks on the divergent shadow-root path. Please extend the classifier and its fixture matrix before merge.
🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.
PerishCode
left a comment
There was a problem hiding this comment.
The responsive-thumbnail fallback still misses a standards-valid class of viewport queries, so the fidelity fix is incomplete for those decks. Please extend the classifier and its fixture matrix before merge.
🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.
PerishCode
left a comment
There was a problem hiding this comment.
@lefarcen I reviewed the complete changed ranges for the deck thumbnail fidelity fix. The update preserves authored flex/grid display, routes viewport-dependent media queries through an iframe sized to the live preview, fixes function-valued readiness state, and adds focused coverage including Media Queries Level 4 range forms. The prior classifier blocker is resolved on this head, and the implementation is coherent with the surrounding viewer sizing flow. Nice work tightening both the visual behavior and the regression matrix.
🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.|
Successfully created backport PR for |













































Why
While reproducing a prerelease file-preview white screen, we found that deck thumbnails could visibly disagree with the active slide: authored flex layouts were flattened, and responsive decks could take a different media-query branch in the rail than in the main preview. This made the thumbnail column look partially unstyled and made slide navigation unreliable as a visual overview.
The root causes were:
display: block, replacing authored flex/grid layout;What users will see
HTML/PPT-style decks now keep their authored slide layout in the thumbnail rail. Responsive decks render fallback thumbnails at the live preview viewport, so typography, wrapping, and breakpoint-dependent layout match the selected slide. The fallback loading cover also disappears after the thumbnail loads.
Surface area
apps/webodsubcommand or flag, newtools-dev/tools-packflag, or newOD_*env var/api/*endpoint, new SSE event, or changed shape inpackages/contractsskills/,design-systems/,design-templates/, orcraft/, or change to the skills protocolpackage.jsonScreenshots
Before: the thumbnail renderer forced authored flex slides to block layout, producing compressed/misaligned content compared with the main preview.
After: manually verified in Chrome with both the reported
hps-true-blueprintdeck and a responsive 9-slide deck. The thumbnail and main preview use the same flex/grid layout and the same responsive viewport dimensions across resize and slide navigation.Bug fix verification
apps/web/tests/components/deck-slide-thumbnail.test.tsxapps/web/tests/components/deck-thumbnail-rail.test.tsxapps/web/tests/runtime/deck-thumbnail-parser.test.tsValidation
pnpm --filter @open-design/web exec vitest run tests/components/deck-slide-thumbnail.test.tsx tests/components/deck-thumbnail-rail.test.tsx tests/runtime/deck-thumbnail-parser.test.ts tests/components/FileViewer.test.tsx(330 passed after syncing currentmain)pnpm --filter @open-design/web typecheckpnpm typecheckpnpm guard