github santojon/Deck-Shelves v1.2.4
Deck Shelves v1.2.4

7 hours ago

Changed

  • [PERF] Focus restoration MutationObserver scoped from document.body to .deck-shelves-root — fewer mutation callbacks during idle and user navigation
  • [PERF] Recents validation effect made reactive to shelves / hideRecentsSetting deps instead of polling every 5s — zero idle work when nothing changes
  • [PERF] Removed 10s fallback setInterval(applyPatches) in HomeInject — redundant with the MutationObserver + popstate/hashchange listeners already wired
  • "Show background art" toggle is now hidden when "Hide recent games" is inactive (instead of disabled) — removes dead UI state
  • "Show background art" label updated across all 16 locales to clarify it applies to the first shelf
  • QAM action buttons regrouped: Add / Import / Export on the left; Import from TabMaster on the right
  • QAM button row alignment fixed: buttons now flush with the 16 px QAM edge instead of over-indented
  • Shelf action button (⋯) right-aligned to match the TabMaster import button position
  • Card dimensions discovered from the native SteamOS shelf are now persisted to localStorage (ds-cardsize) per viewport/DPI, so cold boot reuses the last-session values instead of briefly rendering the hardcoded fallback before re-measuring — eliminates the initial card reflow. Cache is keyed by innerWidth/innerHeight/devicePixelRatio and re-measured whenever the viewport changes.
  • About page doc sections now render inside the native SteamOS DialogBody + DialogControlsSection, matching the container decky-loader itself uses for its own settings pages. This restores scrolling on every About subpage (Overview / How to / Shelves / Filters / Support) without a custom bounded-height wrapper.

Fixed

  • Focus restoration after returning from a game detail screen (B button): focus now reliably lands back on the exact card/shelf the user activated, instead of intermittently snapping to the first shelf. Root cause was a mix of (a) duplicate activation via onActivate + onOKButton + vgp_onok listener pushing multiple history entries (fixed with a 400 ms dedupe guard on card activation), (b) a hideRecents effect re-running on every shelves.length change and hijacking focus to the first shelf (now no-ops when something in the shelves root already has gpfocus), and (c) the restore loop racing Steam's native popstate handler. Restoration now syncs Steam's m_lastFocusNode at A-press time for a deterministic native landing, and the post-popstate loop retries on requestAnimationFrame for up to 800 ms — covering the 1–3 frame window where React remounts cards and the gamepad nav tree is rebuilt.
  • "Installed" filter no longer includes every UnifiDeck shortcut as installed — UnifiDeck marks all its shortcuts installed: true in the app overview; the filter now cross-references the [Unifideck] Installed collection (the same source TabMaster-based tabs use) for non-Steam apps, falling back to size_on_disk / local playtime when the collection is absent. Also extended the non-Steam detector to handle UnifiDeck's numeric app_type value.

Don't miss a new Deck-Shelves release

NewReleases is sending notifications on new releases.