Skip to content

ZGameLib (0.9.0 - Stable)

Choose a tag to compare

@TheHolyOneZ TheHolyOneZ released this 19 Mar 23:57
· 12 commits to main since this release
d0d58fa

[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_path and install_dir
  • Database migration — new not_installed column (INTEGER, default 0) added to games table via schema migration
  • Settings key — include_uninstalled_steam (default false) 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 (default false), pagination_page_size (default 24, 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_dir for 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_game now fetches install_dir from 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_time now checks whether the foreground window belongs to any process in the game directory, not just the originally spawned PID
  • ToolHelp process enumeration — replaced all tasklist subprocess calls with CreateToolhelp32Snapshot + 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_dir for 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 ActivePids alongside 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.log with rotation at 1 MB (keeps last 3 files)

Changed

  • Version bumped to 0.9.0