Repository navigation
ASSella v2.6.2
Pre-releaseThis 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 —
FetchManifestDialognow 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:- Numeric input hits
/search?q={id}&appid=truefor an instant, free exact AppID match. If it returns 0 matches, falls through to name search (handles cases like "007" or "1984"). - Text input (or numeric that fell through) hits
/search?q={name}&limit=50— fast, free, and pre-ranked. - Falls back to the old paginated
/librarypath only if/searcherrors out completely.
- Numeric input hits
-
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.
-
Live SLSsteam binary verification — Background SHA-256 hash checking (
check_slssteam_binary_is_latest) compares your localSLSsteam.soagainst extracted release binaries from GitHub (SLSsteam-Any-release.7z). -
Pre-repair confirmation dialog —
AssfixerConfirmDialognow 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.
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-safepyqtSignaldispatchers (_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
- Added global stderr interception and uncaught exception hooks (