feat(engine): theme-store preview thumbnails (Phase H part 2) #179
Reference in New Issue
Block a user
Delete Branch "feat/theme-store-previews"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Second Phase H bundle: the store modal now renders the preview PNGs the server has been advertising all along (
preview_urlis live on klondike.aleshym.co — the client just never fetched it; rows were text-only).How it works
preview_urlnot already cached — sameAsyncComputeTaskPool+ Tokio pattern as the catalog fetch and the avatar image (§2.4: nothing blocks the main thread).imagecrate →Imageasset →ImageNodethumbnail at the head of the row, sized by the theme's owncard_aspect(72 px tall, width follows the ratio — never stretched).MinimalPlugins(noAssets<Image>), keeping the §4.3 headless-test contract.solitaire_data: newThemeStoreClient::fetch_previewwith a 512 KB cap; previews carry no checksum (unlike archives) since they're never written to disk or imported.Tests
2 new (cached entry renders exactly one thumbnail, uncached stays text-only; card-aspect sizing). Full workspace + clippy green.
Remaining Phase H: hint ghost-motion preview (optional per the doc) and the "consider" toast history.
🤖 Generated with Claude Code
Pushed a second commit onto this PR — it now covers all of Phase H part 2:
ddee605— hint ghost-motion preview. A hint now spawns a translucent copy of the hinted card that glides to the suggested destination twice (0.7s/pass, SmoothSnap easing, tail fade), alongside the existing static highlights. Auto-disabled under reduce-motion (static highlights remain the whole story). The ghost despawns on timer, on a fresh hint, or the moment the board changes — a preview of a stale board is worse than none. 6 new tests (pure timing/alpha math + spawn/suppress/replace/stale-despawn wiring); workspace + clippy green.With this, every Phase H item from the redesign doc is implemented except the "consider" toast history, which I propose dropping.