Merge Library and Status into a unified Games tab
This commit is contained in:
+8
-60
@@ -1,70 +1,18 @@
|
||||
# Changelog
|
||||
|
||||
## [1.2.0] — 2026-06-06
|
||||
## [1.0.0] — 2026-10-13
|
||||
|
||||
### Features
|
||||
|
||||
- Background threading — library refresh, update checks and downloads now run off the GUI thread, so the app no longer freezes during network or disk I/O
|
||||
- Parallel product-info fetching — up to 16 concurrent requests dramatically speed up library refresh and update checks (previously one request per game, sequentially)
|
||||
- Download progress — per-file byte progress bar with live transfer speed, plus a Cancel button to abort an in-progress download
|
||||
|
||||
### Improvements
|
||||
|
||||
- "Scan Existing Installers" now matches sanitized folder names and marks detected games as managed, so they appear checked in the Library tab
|
||||
- In-session caching of product info and owned game IDs in the GOG API client, cleared at the start of each manual refresh
|
||||
- Atomic writes for `config.json`, metadata and auth tokens — a crash mid-write can no longer corrupt them
|
||||
- `User-Agent` header now reports the real application version
|
||||
- File logging to `~/.config/gogupdater/gogupdater.log` (2 MB rotation) plus verbose diagnostics and logging of uncaught exceptions raised inside Qt slots
|
||||
- Unified **Games** tab — the former Library and Status tabs are merged into a single view: tick a game to manage it and see its current/latest version, update status and bonus progress in the same list. A single "Refresh && Check" fetches the library and computes status in one pass; per-game settings and version history are reachable from the right-click menu. Owned-but-unmanaged games are shown on demand via "Show all owned games".
|
||||
|
||||
### Fixes
|
||||
|
||||
- Background workers were garbage-collected before running, so "Refresh Library" and "Check for Updates" did nothing — workers are now kept alive until their thread finishes
|
||||
- Download resume no longer corrupts files when the server ignores the HTTP `Range` request (falls back to a full re-download)
|
||||
- Fixed games getting **permanently stuck on "update available"** after GOG renamed them. Installer folders were derived from the game's (changeable) title, so a rename sent new downloads to a new folder while metadata still pointed at the old one — verification then wiped the newer version on every check. Game records now pin a stable `folder`, and verify/prune/version-history look across every folder a game may occupy.
|
||||
- Added a **"Repair Metadata"** button (Settings) that re-syncs tracked games with the folders actually on disk — fixes existing split/stuck records (merging versions spread across renamed folders) without moving any files.
|
||||
- Fixed a **crash (SIGSEGV)** during parallel library/update fetching caused by sharing one HTTP session across threads; each thread now uses its own session, with token refresh serialized.
|
||||
- Removed a leaked-semaphore warning on shutdown by dropping loguru's multiprocessing-backed queued logging (logging remains thread-safe).
|
||||
|
||||
### Tests
|
||||
### Build
|
||||
|
||||
- Added unit tests for folder-name sanitization, version comparison, prune strategies, atomic writes and the threading helpers; rewrote the stale constants test to match the current module
|
||||
|
||||
## [1.1.0] — 2026-05-13
|
||||
|
||||
### Features
|
||||
|
||||
- Dedicated Pruning tab — global keep-count setting with four strategies: latest N only, latest N + oldest, latest N + one per year, latest N + one per year + oldest
|
||||
- Per-game pruning overrides — exclude individual games from global pruning or set a custom keep count, configurable via the existing game settings dialog
|
||||
- Prune confirmation dialog shows a per-platform preview (Windows and Linux pruned independently — no cross-platform version comparison)
|
||||
|
||||
### Changes
|
||||
|
||||
- Pruning controls removed from Status tab and moved to the new Pruning tab
|
||||
- Fixed bug in `prune_old_versions()`: installer list was reassigned inside the loop and `latest_version` was not updated after pruning
|
||||
|
||||
## [1.0.1] — 2026-05-12
|
||||
|
||||
### Improvements
|
||||
|
||||
- Version decision cache — ambiguous version comparisons are stored in `config.json`; the dialog is shown only once per version pair, answer is reused on subsequent checks
|
||||
- Library → Status propagation — after "Refresh Library", the Status tab is automatically populated for both platforms without additional API calls; product data fetched during library refresh is reused directly
|
||||
- Download logic refactored into `_run_download_for_platform()` shared helper
|
||||
|
||||
## [1.0.0] — 2026-04-09
|
||||
|
||||
### Features
|
||||
|
||||
- GOG OAuth2 authentication — browser-based login, paste authorization code
|
||||
- Game library browser with checkboxes for management, DLCs as sub-items
|
||||
- Windows / Linux platform switcher in Library and Status tabs (games shown only for platforms where installers exist)
|
||||
- Per-language installer management — each language tracked independently, version comparison per language
|
||||
- Language selection tab — choose which languages to download globally
|
||||
- English-only mode — single toggle to skip language subfolders entirely
|
||||
- Bonus content support — soundtracks, wallpapers, manuals etc. stored in `GameName/Bonus/`
|
||||
- Per-game settings override — double-click any game in Library to configure languages, english-only and bonus per game
|
||||
- Folder name sanitization — strips ®, ™, replaces `:` with ` - `, collapses spaces
|
||||
- Version comparison — numeric dot-separated comparison with GOG suffix stripping; ambiguous versions ask user via dialog
|
||||
- Status tab — per-language version display, color-coded status (up to date, update available, not downloaded, unversioned)
|
||||
- Download with resume support (HTTP Range), real filename extracted from CDN URL
|
||||
- Prune old versions — keep N most recent, configurable per platform
|
||||
- Metadata integrity check — stale entries (manually deleted files) cleaned automatically on each check
|
||||
- Scan existing installers — detect already-downloaded files from correct folder structure and import into metadata
|
||||
- Version history dialog — double-click game in Status tab to see all downloaded versions with delete options
|
||||
- DLC installers stored in parent game's folder, not separate folders
|
||||
- Windows-only games do not download bonus content to Linux path and vice versa
|
||||
- Migrated project tooling from Poetry to **uv** (`uv.lock`, `uv_build` backend); VS Code configured to use uv as the environment and package manager.
|
||||
|
||||
Reference in New Issue
Block a user