fix(ui): cache marketplace images and stabilize gallery and calendar layouts - #2980
Merged
bobleer merged 4 commits intoSep 11, 2026
Merged
Conversation
…d-calendar-polish # Conflicts: # docs/interactive-capabilities/technical/tauri-command-map.json # src/crates/contracts/product-domains/src/generated/remote-surface-registry.json # src/web-ui/src/infrastructure/api/generated/remoteSurface.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Marketplace visits now restore the last public catalog immediately and reuse a persistent image cache across desktop restarts. Catalog refreshes discover new content-hashed image URLs; a new hash or resolution downloads once, while a cached unchanged image needs no image request. Cards remain mounted during refresh, and reordered cards move through a short, interruptible transition that respects reduced-motion and keyboard interaction.
This PR also includes the preceding calendar fix as a separate commit: calendar cells can shrink after the sidebar/window changes size without overlapping.
Type and Areas
Type: Bug fix / UI/UX
Areas: Desktop/Tauri, integration services, Web UI, product operation registry
Motivation / Impact
Reopening either marketplace previously exposed image loading and abrupt catalog reordering. The shared cache stores only public, content-addressed marketplace WebP images, with bounded disk and memory usage. Public catalog snapshots preserve initial ordering, remain visible on refresh errors, and isolate MiniApp catalogs by device. Small catalog requests still run to discover updates; cached image hits perform no network request.
Verification
pnpm run check:web— passed (types, Appearance contracts, theme color and visual governance).pnpm run lint:web— passed (one pre-existing warning intiptapMarkdown.ts).pnpm run motion:audit— completed; reviewed the new reorder/reveal motion and reduced-motion behavior.cargo test --locked -p openbitfun-services-integrations --no-default-features --features miniapp-market --lib market_image::tests— 5 passed, including reuse by a new cache instance with the server offline.cargo check --locked -p openbitfun-desktop— passed.cargo test --locked -p openbitfun-product-domains --no-default-features remote_surface— 19 passed.cargo test --locked -p openbitfun-desktop --lib remote_workspace_policy— 9 passed.pnpm run capabilities:check,pnpm run check:core-boundaries, andgit diff --check— passed. After upstream synchronization, regenerated registries and reran capability, boundary and remote-surface checks successfully.Reviewer Notes
Image IO lives in integration services and is exposed by a small controller-local desktop adapter. The cache accepts only configured marketplace origins, hashed image paths and supported variants, sends no credentials, and follows no redirects. Existing public image URLs remain the fallback for hosts without the optional cache command.
Remote validation is limited to device-scoped catalog and controller-local routing contracts. Remote workspace, remote control, Peer Device Mode and Detached Dispatch were not exercised end to end. No native visual-fidelity claim is made from DOM tests. Existing user records are unchanged; absent, invalid or unsupported cache records fall back to normal loading.
Checklist