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

latest releases: v2.2.2, v2.2.1, v2.2.0...
one month ago

Added

  • CI: full GitHub Actions CI pipeline (typecheck, build:release, compatibility validations and decky submission checks)
  • Tests: Python pytest support alongside Vitest; pnpm run test:all helper to run both suites
  • Public plugin API: window.__DECK_SHELVES_API__ for external plugins to register shelf sources (versioned API)
  • First-run UX: FirstRun banner and templates (Favorites, Recently Played, Installed) to bootstrap new users
  • Shelf templates: Preset templates for common shelf types (most-played, recently added, awaiting-update, played-in-last-7-days)
  • Shelf refresh emitter: global ShelfRefreshEmitter to centralize refresh events and reduce per-shelf polling
  • Suspend/Resume hooks: SteamOS suspend/resume handling to pause timers and revalidate state on resume
  • UnifiDeck surfacing: UnifiDeck-managed non-Steam apps are surfaced as sources/tabs in the editor
  • Release automation: GitHub Actions release workflow for tag-triggered releases
  • Diagnostics: SteamOS version detection added to startup diagnostics
  • Atomic settings writes and settings.json.bak backup in the Python backend

Changed

  • Screenshot automation: i18n-only language switching prior to captures; CDP reachability checks; deferred deletion of screenshots until targets verified
  • Tests: moved TypeScript tests from src/__tests__ to src/test; CI updated to install and run Python pytest alongside Vitest
  • Polling → event-driven refresh: shelves now subscribe to a global emitter and use a single fallback poll (30s) instead of individual short timers
  • Increase tab refresh TTL and home fallback intervals to reduce churn (tabs 30s, homePatch fallback 10s)
  • Selector strategy: use ordered candidate selectors (aria-labels, stable substrings) instead of brittle obfuscated classes

Fixed

  • scripts/build/validate-screenshots.mjs waits for an i18n marker before validating PNGs to ensure English UI is applied
  • Host/URL normalization for CDP tooling to prefer HTTP/ws endpoints when TLS is not available
  • resetSettings() now uses a timeout wrapper to avoid blocking the UI when backend is unresponsive
  • Fixed focusRestore interval leak by clearing previous poll in cleanup
  • TabMaster import error handling improved with explicit loading/error state in the QAM
  • Diagnostic logging for shelves with zero resolved apps surfaced in production diagnostics
  • Increased homePatch schedule fallback from 2s to 10s to reduce unnecessary CPU use
  • Added nav-tree fallback for gamepad focus when internal APIs are unavailable

Don't miss a new Deck-Shelves release

NewReleases is sending notifications on new releases.