Repository navigation
ZGameLib (0.9.0 - Stable)
·
12 commits
to main
since this release
[0.9.0] — 2026-03-20
Added
Uninstalled Steam Games (F-017)
- Pull Uninstalled Steam Games — import all owned but uninstalled Steam games into the library via Steam Web API (
IPlayerService/GetOwnedGames) - "Not Installed" badge shown on game cards (top-left, next to platform badge) and in list-view rows for any uninstalled game
- Install via ZGameLib — clicking launch/play on a "Not Installed" Steam game opens Steam's install dialog (
steam://install/{appId}) instead of running the game - Scan Games dropdown in the top bar — replaces the single Scan button with a split button/dropdown: "Scan Installed Games" (existing behavior) and "Pull Uninstalled Steam Games"
- Sidebar filter — "Not Installed" section appears in the sidebar when any uninstalled games are present, with a count badge; clicking it filters the library to show only uninstalled games
- Auto-pull on startup toggle in Settings → Behavior — "Pull uninstalled Steam games on startup"; requires Steam API Key and SteamID64 to be configured
- Scanner auto-detects installs — when a Steam scan runs and finds a game previously marked as "Not Installed", it automatically marks it as installed and populates the
exe_pathandinstall_dir - Database migration — new
not_installedcolumn (INTEGER, default 0) added togamestable via schema migration - Settings key —
include_uninstalled_steam(defaultfalse) persisted in app settings
Library Pagination (F-042)
- Pagination toggle in Settings → Appearance — off by default; when enabled the library splits into pages instead of one continuous scroll
- Page size selector — choose 12, 24, 36, 48, 60, or 100 games per page; selector only visible when pagination is on
- Pagination bar — prev/next arrows with numbered page buttons; smart ellipsis condensing for large page counts (e.g.
1 … 4 5 6 … 20); current page highlighted with accent gradient; appears below the grid in all view modes (grid, list, manual sort order) - Page resets to 1 automatically when search, filters, page size, or toggle change
- New settings keys:
pagination_enabled(defaultfalse),pagination_page_size(default24, clamped 6–200)
Steam Playtime Sync (F-013)
- Steam Playtime Sync in Settings → Integrations — enter your Steam API Key and SteamID64 to sync playtime from Steam; only increases local values, never decreases
- Sync button shows updated/skipped count in a toast
Idle Detection (F-014)
- Exclude idle time from playtime toggle in Settings → Behavior (default: on) — deducts time when the game isn't in focus for 5+ consecutive minutes; brief alt-tabs are ignored
Advanced Filter Builder (F-016)
- Advanced filter section in the sidebar — under a collapsible "Advanced" toggle below the Cover Art section
- Filter rules with field/operator/value — supports platform, status, rating, playtime, tags, date_added, is_favorite, has_cover
- AND / OR logic toggle between rules
- Add Rule and Clear All buttons; each rule has a remove button
Game Tracking Overhaul (I-046)
- Directory-based process tracking — all launchers (Steam, Epic, direct exe) now watch the game's
install_dirfor any running process instead of tracking a single spawned PID; handles multi-process games that previously recorded 0 playtime - Launcher stub support — games that start via a stub launcher no longer lose their session when the stub exits; the tracker maintains a grace window between process deaths so the real game process is picked up seamlessly
- install_dir fallback —
launch_gamenow fetchesinstall_dirfrom the database; if unset, derives it from the exe's parent directory; falls back to single-PID tracking only when no directory is resolvable - Directory-based idle detection —
exclude_idle_timenow checks whether the foreground window belongs to any process in the game directory, not just the originally spawned PID - ToolHelp process enumeration — replaced all
tasklistsubprocess calls withCreateToolhelp32Snapshot+QueryFullProcessImageNameW; process scans are now ~10× faster and create no console flicker - Steam / Epic install_dir tracking — Steam and Epic launch paths use the game's stored
install_dirfor directory tracking with a 300-second startup window; falls back to exe-name scanning only when install_dir is unavailable - Parallel process tracking prevention — direct launches now register in
ActivePidsalongside Steam/Epic, preventing duplicate session threads if the user clicks play twice before the tracking thread starts
Auto Grid Columns (I-042)
- "Auto" option for grid columns in Settings → Appearance — uses
repeat(auto-fill, minmax(180px, 1fr))to fill the available space automatically
Persistent Error Log (I-045)
- Copy Logs button in Settings → About — copies the last 200 error log lines to the clipboard; errors are written to
%APPDATA%\zgamelib\logs\app.logwith rotation at 1 MB (keeps last 3 files)
Changed
- Version bumped to 0.9.0