Skip to content

ASSella v2.6.2

Pre-release
Pre-release

Choose a tag to compare

@niwia niwia released this 28 Aug 17:01
· 343 commits to beta since this release

This release overhauls image loading with a 2-tier hybrid cache, adds a much faster live-search experience, introduces a first-launch onboarding guide for ACCELA→ASSella upgraders, adds live SLSsteam binary verification, and improves depot selection reliability, DLC safety, and crash resilience.

New Features

  • 2-Tier Hybrid Image Cache — ImageFetcher now uses a RAM + disk caching strategy:

    • RAM cache hit → image displays instantly with no disk/network access.
    • Disk cache hit → image loads into RAM and displays.
    • Cache miss → downloaded via QNetworkAccessManager.
    • Live search results are cached in RAM only (no disk writes) until the user downloads/installs, at which point the image is promoted from RAM to permanent disk cache.
    • Library/installed images are written to both disk (image_cache/) and RAM directly.
  • Live search in Fetch Manifest — FetchManifestDialog now searches as you type: a 400ms single-shot debounce timer fires after each keystroke (ignoring numeric-only input and anything under 3 characters), running the same search/filter function used by the Search button in a background thread. The existing Enter/Search-button flow is unchanged.

  • Smarter game search (morrenus_api.py) — search_games() now uses a 3-tier strategy:

    1. Numeric input hits /search?q={id}&appid=true for an instant, free exact AppID match. If it returns 0 matches, falls through to name search (handles cases like "007" or "1984").
    2. Text input (or numeric that fell through) hits /search?q={name}&limit=50 — fast, free, and pre-ranked.
    3. Falls back to the old paginated /library path only if /search errors out completely.
  • Training Wheels Protocol (Beta) & transition onboarding — A new non-intrusive first-launch dialog (TrainingWheelsDialog) eases the transition for users upgrading from legacy ACCELA installs or setting up ASSella for the first time, including a dynamic "Fix (N issues)" button tied to upstream GitHub state. Accessible anytime via Settings → ASSella tab.

Screenshot_20260828_214536
  • Live SLSsteam binary verification — Background SHA-256 hash checking (check_slssteam_binary_is_latest) compares your local SLSsteam.so against extracted release binaries from GitHub (SLSsteam-Any-release.7z).

  • Pre-repair confirmation dialog — AssfixerConfirmDialog now shows a warning and compatibility safety popup before any config resync, displaying live binary status (Up to Date / Outdated / Not Installed / Check Failed) and noting that template updates target the latest upstream SLSsteam.

Screenshot_20260828_214449

Bug Fixes

  • Denuvo/ProtonDB badge stacking — Fixed the badges vertically overlapping; Denuvo is now placed cleanly to the left of ProtonDB on the bottom-right row (e.g. [Denuvo Cracked] [PLATINUM]).
  • SLS YAML config editor conflicting with ASSfixer — Fixed the config editor leaving behind empty spaces that ASSfixer's check would then flag and "fix" every time.
  • ASSfixer inaccurate missing-key warnings — Replaced silent local template fallbacks with strict live GitHub template fetching (online=True), eliminating false positives.

Improvements

  • Consistent hero badge styling — Rating badges now share the same sleek, minimal styling across all dialogs.
  • Smart Depot Selection & Update All reliability:
    • Depot choices are now cached per-game and automatically reused during "Update All" without blocking the queue.
    • New depot detection compares incoming Steam manifest depot sets against cached choices, only prompting when genuinely new or previously unseen depots appear.
    • DLC guard automatically disables Goldberg Emulator and Steamless toggles when installing or managing DLC-only packages, preventing corrupted DLC directories.
    • LanCache autodetection is now always enabled for DepotDownloader operations, automatically routing chunk downloads through local LanCache servers when present — the manual toggle has been removed from Settings.
  • Hardcoded path cleanup — Removed legacy developer-machine paths from template fallbacks; path resolution is now standardized across the utility.
  • Thread safety & crash resilience:
    • Added global stderr interception and uncaught exception hooks (_StderrTee, sys.excepthook, threading.excepthook) to capture native Python and PySide crashes into session log files.
    • Replaced cross-thread Q_ARG(object, fn) calls with type-safe pyqtSignal dispatchers (_main_thread_callable), preventing silent UI worker thread deadlocks and missing dialogs during batch updates.
    • Added structured logging for config validation timings, GitHub API requests, and background task lifecycles.
    • Logs will no longer contain the personal info/api keys of the users