# Changelog All notable changes to this project will be documented in this file. ## [1.15.0] - 2026-10-04 ### Added - **Game catalog views**: Choose cards or a compact list. RenderPilot remembers your preferred view. - **Unreal Engine audio libraries**: Compatible Ogg/Vorbis libraries can now be updated and restored to their original versions. - **Leftover cleanup**: After a game is uninstalled, review and remove files and supported settings left by RenderPilot, grouped by game. Cleanup also removes empty leftover folders while preserving modified or unrecognized files. ### Changed - **Simpler file-change confirmation**: Safety warnings and executable-change details now appear in one confirmation. Update All asks once for the whole batch. You can disable the general warning; detected anti-cheat warnings still require confirmation. - **Smaller windows**: The app now supports windows as small as 860 × 600, with compact Game Details controls and scrollable tabs. - **Clearer interface**: Improved warning and success-message contrast in light and dark themes, with consistent, keyboard-friendly selection controls across the catalog, Libraries, and settings. ### Fixed - **Removed games in the catalog**: Games uninstalled outside RenderPilot now disappear after a rescan, including manually added games and folders containing only RenderPilot files. - **Add-on and library status**: Fixed incorrect installation status and available actions after game files were removed or the game was reinstalled. - **RenoDX removal**: You can now remove an inactive RenoDX installation that would otherwise block reinstallation. ### Compatibility - **Local catalog update**: The catalog is automatically backed up and upgraded on first launch. Returning to an earlier RenderPilot version requires restoring the catalog backup made before this upgrade. ## [1.14.1] - 2026-09-27 ### Fixed - **NVIDIA game settings**: Fixed an error that blocked changes when an existing NVIDIA profile listed the game's executable by filename rather than full path. Settings can now be changed or restored for these profiles, while RenderPilot still checks that it is acting on the intended profile. ## [1.14.0] - 2026-09-26 ### Added - **NVIDIA game profiles**: The NVIDIA tab now shows which profile is in use. You can create a profile if the selected executable has none. Moving and deleting are available only for profiles created by RenderPilot and require confirmation. - **Local diagnostics**: Installed builds now save diagnostic logs to help investigate errors, while portable builds record more app activity. ### Changed - **Safer NVIDIA settings**: Before another change, RenderPilot checks whether that setting still has the value it last applied. If it was changed outside the app, the new operation stops with a conflict instead of silently overwriting the newer value. Interrupted changes can be recovered. - **GitHub downloads**: If GitHub CLI is already signed in, or `GH_TOKEN` or `GITHUB_TOKEN` is already set, RenderPilot can use that access for update checks and downloads from GitHub. It does not ask for or save a token and retries without it if GitHub rejects the request. - **Clearer add-on status**: Unverified compatibility is labeled consistently, and RenoDX's shared engine profiles have shorter badges with full guidance in a tooltip. - **Consistent controls and layout**: Check and refresh buttons now show progress consistently without shifting their labels. Long executable names stay within the selector, with full file names and relative paths available in a tooltip. ### Fixed - **RenoDX catalog compatibility**: A new game-specific setting no longer causes RenderPilot to reject the entire RenoDX catalog. Other games remain available; only a game that needs a setting this version cannot apply is blocked, with an explanation. - **RenoDX DLSS-Fix availability**: DLSS-Fix options appear without waiting for an online update check and remain visible while updates are checked. - **Opening an already running app**: Launching the installed version again now shows and focuses its existing window instead of opening a second one. ### Compatibility - **Local catalog update**: On first launch, RenderPilot backs up and upgrades the catalog without changing NVIDIA settings already applied in the driver. Previously saved Restore original values for individual games do not carry over. Reset to driver default remains available, and the next change saves a new original value. Returning to an earlier RenderPilot version requires restoring the catalog backup. ## [1.13.1] - 2026-09-22 ### Added - **Automatic RenoDX configuration**: RenderPilot now applies reviewed per-game RenoDX settings during installation and updates, including required processing and resource-upgrade options. These settings no longer require Advanced mode or manual setup. When RenoDX is updated or removed, unrelated settings and user changes are preserved. ### Changed - **Clearer RenoDX guidance**: Removed generic or redundant notices about UE4 `Engine.ini` use, automatic setup, Advanced mode, and restarts. Native HDR and manual `Engine.ini` directions now appear only for games with a reviewed requirement. Required in-game settings are shown once in a compact format, while alert styling is reserved for actual warnings. ### Fixed - **RenoDX DLSS-Fix updates**: The update action is now shown only when a newer DLSS-Fix is available. Locally changed files are also checked correctly instead of being mistakenly reported as current. - **RenoDX resource upgrades**: Fixed a misspelled resource-upgrade option that could prevent a required game profile setting from being applied. ### Security - **Safer Windows file operations**: Improved validation of protected temporary workspaces used while changing game files. RenderPilot now refuses to use a workspace when its Windows access permissions are malformed or unsafe. ## [1.13.0] - 2026-09-21 ### Added - **Managed Unreal Engine configuration**: Supported RenoDX and Luma profiles can now apply their required `Engine.ini` settings from Game Details. RenderPilot detects first-launch, conflict, repair, and interrupted-operation states, preserves unrelated content, and removes only the settings it owns during updates or removal. - **Richer RenoDX and Luma guidance**: Updated catalogs can provide game-specific compatibility notes, in-game and add-on settings, launch arguments, warnings, external-tool links, and copyable manual setup instructions. RenoDX catalog guidance is available in every supported interface language. - **Deeper Unreal Engine detection**: RenderPilot now uses multiple independent signals from game executables and packaged project data to identify Unreal projects and versions more reliably, including games that rely on a shared engine profile instead of an exact catalog entry. ### Changed - **More accurate executable selection**: Reworked Windows executable discovery to filter out launchers, installers, crash reporters, servers, editors, and other helper tools while preferring the actual game binary. - **Automatic RenoDX processing mode**: For supported profiles, installation and updates now set the required `[renodx] Set_Path` value in `ReShade.ini`. When RenoDX is removed, RenderPilot restores the previous value when safe, while leaving externally edited or ambiguous configurations untouched. - **Maintenance updates**: Refreshed application dependencies and simplified the internal dependency set. ### Fixed - **OptiScaler compatibility refreshes**: Compatibility guidance can now update without requiring an application release. Successful checks no longer trigger needless repeated downloads, and older remote data cannot replace a newer cached catalog. ### Compatibility - **Automatic catalog migration**: The local catalog is backed up and upgraded to schema v20 on first launch so RenoDX configuration baselines and recoverable `Engine.ini` changes can be tracked. Returning to an earlier RenderPilot version requires restoring the pre-upgrade backup. ## [1.12.3] - 2026-09-15 ### Added - **Brazilian Portuguese localization**: Added full Brazilian Portuguese (`pt-BR`) language support across the desktop interface, settings, OptiScaler controls, and add-on guidance. ### Fixed - **Split Ogg/Vorbis library swaps**: Fixed swaps for games whose Ogg/Vorbis DLLs are stored in different directories. Compatible replacements are now available for manual selection and can be safely applied and rolled back when RenderPilot can fully verify the library relationship; ambiguous layouts remain unchanged. ## [1.12.2] - 2026-09-14 ### Fixed - **OptiScaler availability**: Fixed OptiScaler being hidden for games with a detected DLSS, FSR, or XeSS input or a compatibility-catalog entry. Catalog-listed games now show their recorded compatibility status even when no supported input is detected; uncataloged games with a supported input are shown with unknown compatibility. ## [1.12.1] - 2026-09-14 ### Fixed - **OptiScaler availability**: Fixed OptiScaler not appearing in compatible games that are not yet listed in the catalog. When a supported input is detected, installation no longer asks for an unnecessary compatibility confirmation. ## [1.12.0] - 2026-09-13 ### Added - **OptiScaler support**: Added OptiScaler management to Game Details, including installation, configuration, updates, repair, removal, relocation when a different executable is selected, and Update All integration. - **Guided OptiScaler setup**: Added game-specific compatibility guidance, component recommendations, launch arguments, and warnings for recognized games and detected supported inputs. - **OptiScaler CLI commands**: Added status, uninstall, and update-check commands for individual games and all managed installations. - **Xbox app and Microsoft Store discovery**: Added automatic discovery of registered game installations from the Xbox app and Microsoft Store, including reliable selection of their launch executables. - **Split Ogg/Vorbis layouts**: Added detection and safe management of games whose Ogg/Vorbis runtime files are distributed across related directories. Ambiguous layouts remain unchanged. ### Changed - **Safer add-on operations**: Improved coordination between OptiScaler, RenoDX, and Luma Framework, including conflict detection and recovery from interrupted operations. - **Clearer add-on experience**: Improved add-on status, guidance, progress feedback, and launch instructions. OptiScaler is available in all eight supported interface languages, with refined Luma guidance across locales. ### Compatibility - **Automatic catalog migration**: RenderPilot backs up and upgrades the local catalog on first launch to support OptiScaler and safer coordination between add-ons. Returning to an earlier RenderPilot version requires restoring the pre-upgrade backup. ## [1.11.1] - 2026-09-04 ### Fixed - **RenoDX download stability**: Switched add-on downloads from GitHub Pages hosting (`renodx.com`) to GitHub Releases storage to improve connection reliability and avoid timeouts observed on Pages IP ranges. ## [1.11.0] - 2026-09-04 ### Added - **Vendor-suffixed audio runtime layouts (Xiph)**: Added detection and swapping support for games using engine- or compiler-suffixed Ogg/Vorbis audio libraries (such as Chrome Engine games). RenderPilot automatically resolves required runtime DLL aliases from game executables and creates matching replacements during swaps. ### Changed - **Filesystem dependency reduction**: Replaced external file timestamp libraries with native standard-library handling, reducing external dependency overhead. ### Fixed - **RenoDX add-on downloads**: Updated the download source to the official `renodx.com` domain, resolving connection timeouts and failed installations following the upstream domain migration. ## [1.10.3] - 2026-09-02 ### Changed - **Scan and verification performance**: Optimized file detection and hashing routines, improving background library scans and catalog startup responsiveness. - **Dependency updates**: Refreshed underlying application libraries and runtime dependencies for improved stability and security. ### Fixed - **Shared Vulkan layer path detection**: Fixed an issue where extended Windows path formats (`\\?\`) could fail validation in the Vulkan layer registry. - **Game directory scanning exclusions**: Prevented redundant scans of hidden dot-folders and non-runtime development files packaged in engine plugins (such as Unreal Engine DLSS and Streamline tools). - **Streamline trigger label contrast**: Fixed text color on Streamline action triggers for improved contrast and readability. ## [1.10.2] - 2026-08-25 ### Security - **Verified release builds**: Official release binaries and portable packages now include signed build provenance through GitHub Artifact Attestations. Downloaded assets can be independently verified against the official RenderPilot repository using the GitHub CLI (`gh attestation verify`). ### Fixed - **Portable interface reloads**: Fixed an issue where refreshing the portable application window could cause startup to fail. Redundant initialization requests are now safely ignored. ## [1.10.1] - 2026-08-24 ### Added - **Localized NVIDIA driver settings**: Added translations for the Ray Reconstruction "Preset F (Transformer Gen 2)" option across all seven supported languages. ### Fixed - **Component version selector labels**: Fixed an issue where debug DLL versions in Game Details dropdowns could display a duplicate `(Debug)` tag (such as `v3.7.10 (Debug) (Debug)`). ## [1.10.0] - 2026-08-23 ### Added - **Complete update history**: Update notes now include changes from every skipped release instead of showing only the newest version. - **Localized Luma guidance for more games**: Added translated setup guidance for Destroy All Humans!, No More Heroes 3, RAD, Solar Ash, and SpongeBob SquarePants: The Cosmic Shake. ### Changed - **Safer game-file changes**: Game Details now presents one clear multiplayer and anti-cheat notice for file-changing features. RenderPilot refreshes this safety assessment before supported installs, updates, channel changes, and library swaps, and stops if the game state changes before files are modified. - **Accessibility and keyboard navigation**: Improved keyboard operation, focus handling, screen-reader announcements, layout reflow at high zoom and in smaller windows, high-contrast presentation, and reduced-motion behavior across navigation, dialogs, filters, launcher ordering, Libraries, and Settings. - **Recoverable RenoDX Vulkan changes**: RenoDX now changes shared Vulkan layer files and registration through one recoverable operation, so supported interrupted changes can be restored safely without losing track of the games that use the layer. ## [1.9.5] - 2026-08-18 ### Fixed - **NVIDIA settings readiness after DLL swap**: Swapping or rolling back DLSS DLLs immediately updates driver setting context and keeps dependent NVIDIA settings enabled without requiring a manual rescan or page reload. ## [1.9.4] - 2026-08-18 ### Fixed - **Portable update loop**: Fixed an issue where portable builds could repeatedly download an update from the beginning after completion instead of applying it. ### Compatibility - **Manual update from portable 1.9.3 or earlier**: Portable copies running 1.9.3 or earlier require a manual update. Fully close RenderPilot and extract the complete 1.9.4 package into the existing portable folder, replacing files when prompted. Existing user data and settings are preserved. ## [1.9.3] - 2026-08-18 ### Added - **DLSS-Fix recovery and status**: RenderPilot now tracks the RenoDX DLSS Frame Generation companion fix with an explicit lifecycle. If an operation is interrupted, the game card displays a clear recovery warning with dedicated actions to repair or complete the recovery. ### Changed - **Safer NVIDIA driver settings**: Adjusting driver settings that depend on DLSS DLLs now verifies that the game has completed an initial scan. If the catalog scan has not yet completed, DLL-dependent overrides are blocked with a prompt to scan. - **Accurate DLL presence**: DLSS files whose version cannot be determined remain registered as present with an unknown version, instead of being treated as missing. - **Windows scan performance**: Re-scanning unchanged games on Windows checks NTFS file identity and change journals, re-verifying DLLs without reading file contents from disk. ### Fixed - **Crash-safe DLSS-Fix operations**: Companion file installations, updates, and removals use transactional manifests, preventing orphaned or corrupt files if the process exits unexpectedly. - **Clean add-on removal**: Uninstalling RenoDX cleanly removes or restores DLSS-Fix companion files without affecting untouched ReShade settings. ### Compatibility - **Game catalog rescan after update**: Schema v17 deprecates legacy global scan caches in favor of isolated file observations. Existing games require a fresh scan after updating to verify their DLL state and re-enable dependent NVIDIA settings. ### Changed (Refactoring & Maintenance) - **Local library verification**: A single SQL query now loads all cached component observations regardless of artifact count. ## [1.9.2] - 2026-08-15 ### Fixed - **Portable update progress**: The download indicator now advances throughout a portable update instead of appearing frozen until RenderPilot restarts. ### Compatibility - **Manual update from portable 1.9.1**: Portable 1.9.1 requires a manual update. Fully close RenderPilot and extract the complete 1.9.2 package into the existing portable folder, replacing files when prompted. Do not delete the folder first. ## [1.9.1] - 2026-08-14 ### Added - **Portable backend diagnostics**: Portable builds now keep bounded diagnostic logs under `data/logs/portable` for supervisor startup, updates and recovery, application commands, and background work. Logs are separated by process role and session, rotate automatically, and use fixed error categories instead of storing raw paths or internal error messages. If diagnostics cannot be written, the original operation continues normally. ### Changed - **Portable startup, updates, and recovery**: Reworked the portable runtime so the shipped application, active generation, and preserved data are authenticated as one session before normal startup continues. Catalog upgrades are created from a verified snapshot and committed before the data is opened for regular use, while interrupted activation, update, or recovery work can be retried without discarding user data. ### Fixed - **Portable shutdown**: Closing the portable application now finishes cleanly instead of showing an error after exit. - **Game filters on smaller windows**: The filter dialog now stays within the available viewport. Filter sections scroll independently while the title and action buttons remain accessible. ### Compatibility - **One-time portable package upgrade**: Portable copies running 1.9.0 must be fully closed and updated with the complete portable package for this release. Keep the existing data and recovery folders. The 1.9.0 in-app updater cannot perform this transition. ### Changed (Refactoring & Maintenance) - **Desktop data tables**: Migrated the shared Libraries and Operations table foundation to TanStack Table v9 while preserving sorting, column visibility, virtualized rows, reactive updates, and stable table state. - **Quality tooling and dependencies**: Updated Rust and frontend dependencies and regenerated both lockfiles. Rust CI now runs tests with cargo-nextest, with broader regression coverage for dialog lifecycles and data-table behavior. ## [1.9.0] - 2026-08-12 ### Added - **Ogg and Vorbis support**: RenderPilot can now detect and update compatible Ogg and Vorbis libraries while preserving existing layouts and leaving uncertain installations unchanged. ### Changed - **Windows launch authorization**: Official Windows builds now request administrator permission before launch. If permission is declined, RenderPilot does not start or change files. - **Portable application updates**: Portable builds can now download and apply signed updates without reinstalling. Updates are verified before activation, keep user data with the portable folder, and recover safely after an interrupted attempt. Installer builds continue to use the standard Windows installer. - **Safer library updates**: Automatic update selection is now more consistent across single-file and multi-file libraries, including coordinated Streamline releases. - **Stronger package validation**: RenderPilot distinguishes compatible library releases more reliably and verifies every file before applying a change. - **Clearer errors and recovery guidance**: Desktop errors now use consistent localized messages and suggested actions without exposing internal diagnostic details. - **Languages and translations**: System and manually selected languages are restored more reliably. Simplified and Traditional Chinese are now separate options, with more consistent Luma and NVIDIA translations. - **Interface details**: Durations follow the selected locale, and game monograms handle international names more accurately. - **WebView2 requirement**: RenderPilot now requires Microsoft Edge WebView2 Runtime 136 or newer and checks it before opening the interface. - **Documentation and downloads**: The project now has a product-focused README, separate user and developer guides, and a stable installer asset prepared for direct downloads. ### Compatibility - **Portable updates from earlier 1.x versions**: Close RenderPilot and replace the portable executable once with the 1.9.0 version. Keep the adjacent `data` folder unchanged; its data is migrated on first launch. - **Local data upgrade**: The first launch upgrades existing RenderPilot 1.x data automatically and creates a verified backup. Earlier RenderPilot versions cannot reuse the upgraded database without restoring that backup. ## [1.8.2] - 2026-07-30 ### Fixed - **Menus and dialogs**: Closing a selector or dialog now reliably restores scrolling and clicks, preventing the interface from remaining unresponsive after it is dismissed. ## [1.8.1] - 2026-07-30 ### Fixed - **Select controls**: Opening a selector no longer blocks the surrounding interface while its list is visible. ## [1.8.0] - 2026-07-30 ### Added - **Guided game installation**: RenderPilot now inspects a selected folder before adding it, recommends the correct installation root, and asks for an executable when one cannot be chosen safely. Existing manual entries can be corrected without silently discarding managed state, with excluded data preserved in a recovery bundle. - **Safer D3D12 previews**: Preview D3D12 Agility SDK swaps now verify Windows Developer Mode before modifying a game. If action is required, RenderPilot explains the issue and provides direct links to the relevant Windows setting and documentation. - **CLI add-game workflow**: `add-game ` replaces the former `scan-folder` command and exposes executable selection, root review, and root-correction controls. ### Changed - **Games catalog performance**: Games load and refresh faster, especially in large collections. Updating favorites, visibility, covers, or removing a game no longer reloads unrelated catalog data. - **Desktop startup and navigation**: Secondary pages and non-English languages now load only when needed, reducing initial work while keeping navigation and language changes consistent. - **Locale-aware presentation**: Dates, times, relative durations, byte sizes, numbers, lists, and updater progress now use shared locale-aware formatters with strict timestamp parsing at application boundaries. - **Installation tracking**: RenderPilot now identifies installation roots more reliably. During an upgrade, only verified duplicate entries are consolidated; ambiguous or conflicting state is left untouched. ## [1.7.2] - 2026-07-27 ### Added - **Preview library releases**: Preview versions are now available in Libraries and compatible replacement selectors. They remain manual choices and are never included in automatic updates. - **Local library releases**: Downloaded versions remain visible and manageable if they are no longer available in the active catalog. ### Changed - **Library versions**: RenderPilot now preserves complete package versions, making preview and stable releases easier to identify and manage reliably. - **Executable selection**: Unavailable executable selectors now remain visible with a clear explanation. Candidate grouping and switching back to automatic detection are also clearer. ### Fixed - **App updates**: Failed update downloads are retried automatically, with reliable progress reporting and cancellation. ## [1.7.1] - 2026-07-26 ### Fixed - **D3D12 executable detection**: Games such as Cyberpunk 2077 and Split Fiction no longer show a false repair-required state when RenderPilot has never managed their executable. The scanner now chooses the unique executable that exports `D3D12SDKVersion` and accepts a valid target export even when unrelated PE data exports live only in virtual memory. - **D3D12 recovery status**: The Game Details recovery warning shows the immutable backup path only when that backup actually exists, so a planned sidecar is never presented as recoverable data. ## [1.7.0] - 2026-07-25 ### Added - **D3D12 Agility SDK**: Detect and manage versioned `D3D12Core.dll` packages together with the selected game's `D3D12SDKVersion` export. Swap plans classify the executable action as no change, managed patch, original restore, or repair required. The first user-selected managed patch and a user-selected restore require the fresh, state-bound plan token; apply fails closed when the executable, package, or backup has changed. - **DirectX Shader Compiler**: Discover and replace DXC runtimes from the versioned library catalog, including complete `dxcompiler.dll`/`dxil.dll` packages and games that ship only the standalone compiler. Package identity, architecture, and installed-pair coverage are validated before a candidate is offered. - **OpenVR**: Detect package-backed OpenVR loaders and safely move between compatible releases with PE architecture, export-surface, source-integrity, and rollback validation. - **Library legal documents**: View package license and notice documents directly from the Libraries page. Legal metadata is validated as part of the catalog and remains available across page navigation. - **Operation preflights**: The CLI and desktop API now expose typed swap and rollback previews. `plan-swap` returns blockers, warnings, affected files, the D3D12 executable action, and any required confirmation token; `plan-rollback` provides the corresponding read-only rollback preview. ### Changed - **Runtime catalog**: Replaced runtime-specific package handling with a versioned, package-aware catalog model shared by DXC, OpenVR, D3D12 Agility SDK, Streamline, FSR, and existing single-file libraries. Candidate identity now follows the exact files written by each transition instead of relying on display versions alone. - **D3D12 workflows**: Game Details separates ordinary candidates from executable-changing actions, shows the current managed executable state, requests confirmation for a first managed patch or restore when required, and propagates the state-bound token through both single and bulk updates. - **Bulk updates**: Update-all planning, confirmation, cancellation, and progress now use one testable workflow, while unrelated component failures remain isolated. - **Libraries experience**: Page state and package data survive navigation, action feedback stays aligned with the initiating control, tooltips forward their trigger properties correctly, and download progress is more compact. ### Fixed - **Disk reconciliation**: Catalog, add-on, and rollback state are reconciled against current files before mutation, preventing stale observations from being treated as valid managed state. - **App updates**: Stabilized the update dialog lifecycle and action state so download/install feedback remains consistent while the app prepares to exit. ### Changed (Refactoring & Maintenance) - **Rollback and recovery**: Original component and D3D12 executable identities are immutable once captured; only the verified expected-active identity advances. SQLite schema v11/v12 migrations preserve existing data, and interrupted apply/rollback operations recover through the durable journal and immutable sidecars. - **Typed boundaries**: Consolidated action, status, swap-plan, rollback-plan, and operation-metadata DTOs across orchestration, CLI, API, Tauri, and TypeScript. Confirmation tokens live only on fresh swap plans rather than executable actions. - **Graphics model**: Removed the unused standalone NVIDIA Reflex technology classification from the domain model, filters, and desktop presentation. - **Tooling and dependencies**: Pinned Rust 1.97.1, updated hashing and desktop dependencies, refreshed both lockfiles, and documented the current architecture and quality gates. ## [1.6.0] - 2026-07-20 ### Added - **Game Details → Luma Framework**: Install, update, repair, and remove Luma Framework for supported DirectX 11 games. Managed installs use the nightly ReShade host and can provide DLSS or FSR upscaling, HDR, and shader replacement according to each game's catalog profile. - **Luma guidance**: Game-specific cards show anti-cheat risk, required launch arguments, Visual C++ runtime guidance, and managed dgVoodoo2 dependencies. The complete experience is localized across all seven supported languages. - **CLI**: Inspect per-game Luma status, remove an installation, run passive or deep update checks, and audit updates across the catalog. ### Changed - **Add-ons**: Luma and RenoDX are mutually exclusive for a game and now share coordinated ReShade host policy, catalog refresh, operation locking, progress, and recovery behavior. - **Bulk updates**: Game Details coordinates library, RenoDX, and Luma updates through one exclusive action so overlapping mutations cannot run against the same game. ### Changed (Refactoring & Maintenance) - **Add-on engine**: Introduced a durable shared lifecycle for managed files, set-diff updates, repair, rollback, and recovery after interrupted mutations or lost tracking data. - **Storage**: Added the schema v10 migration for coordinated add-on files and crash-recoverable game-file mutations, including validation, additive upgrades, and a backup before destructive schema rebuilds. - **Desktop performance**: Split third-party frontend dependencies into a vendor chunk; current production JavaScript chunks stay below 500 kB. - **Documentation and tooling**: Updated the feature overview, architecture, runtime behavior, Rust/Tauri/Svelte dependencies, and internal module boundaries for Luma and the shared add-on platform. ## [1.5.2] - 2026-07-14 ### Fixed - **Libraries**: Before swapping a DLL, RenderPilot verifies that the replacement file is still present and matches what the catalog expects. If you restored game files outside the app, or a cached copy was corrupted, the swap is blocked with a clear recovery message instead of writing the wrong file. After a rescan, outdated local copies no longer appear as valid replacements. - **Streamline**: Updating Streamline now applies a matching multi-file package for the plugins already in the game, instead of updating only a single DLL. When plugins are on different versions, the UI shows a mixed state so you can bring the whole set back in sync. - **App updates**: After installing an update on Windows, the app can request administrator rights again on restart instead of staying without them. The update dialog shows a completed download and an installing step before the window closes for the installer, with clearer wording about what happens next. ## [1.5.1] - 2026-07-12 ### Fixed - **RenoDX / ReShade**: Existing ReShade installations are now classified safely. Empty, compatible hosts can be recovered or repaired; custom, incompatible, or unclear setups are left untouched. - **RenoDX / ReShade**: Improved recovery after tracked install data is lost. RenderPilot adopts only verifiable RenoDX files, preserves user ReShade configuration and logs, and never removes a reused runtime during uninstall. - **Games**: Corrected catalog filter logic to prevent programs without any supported technologies from appearing when all filters are checked. - **UI**: Improved alignment and spacing in addon views and action buttons. The "Check for updates" button now spins smoothly instead of jumping text. ## [1.5.0] - 2026-07-11 ### Added - **App updates**: RenderPilot now checks for new releases from the header and Settings. Review the release notes, download and verify an update with live progress, retry a failed attempt, and restart the app to finish installing it. - **Games**: Filter your library by available add-ons and see each supported add-on directly on the game card. ### Changed - **Refresh**: The main Refresh button now fetches the latest Libraries, RenoDX, and ReShade catalog data before it rescans your system, so newly published versions and compatibility changes do not wait for the cache to expire. ### Fixed - **Games**: Centered the scan action in an empty library. - **Settings → RenoDX**: The shared Vulkan layer now displays the ReShade host consistently. ### Changed (Refactoring & Maintenance) - **Add-ons**: Consolidated the RenoDX and ReShade install/update foundations and strengthened file replacement, database validation, catalog handling, and native operation boundaries for more reliable recovery from interrupted work. - **Tooling**: Raised the minimum Rust version to 1.97 and updated the release build action and desktop toolchain. ## [1.4.1] - 2026-07-03 ### Fixed - **Game Details → RenoDX**: Fixed installation failing outright for certain games that share a universal, engine-wide add-on instead of having their own. - **Game Details → RenoDX**: Updating no longer shows a warning written for replacing the ReShade host, or leaves behind an unnecessary backup file, when only the add-on itself has a new version. - **Game Details → RenoDX**: Uninstalling no longer restores `ReShade.ini` to its pre-install snapshot — which could silently discard any ReShade settings changed after installing RenoDX — and instead removes only the keys RenoDX itself added. - **Game Details → RenoDX**: A ReShade installation that's actually a different, compatible build (such as GShade) is now clearly recognized and left alone — RenderPilot won't offer to install, repair, or update it. ### Changed (Refactoring & Maintenance) - **RenoDX engine**: Every in-place file replacement (add-on, host, DLSS-Fix) now rolls back to its previous bytes if a later step in the same operation fails, and the custom-build recognition check now lives at a single shared resolution point instead of being re-implemented per call site. ## [1.4.0] - 2026-07-03 ### Added - **Game Details → RenoDX**: Vulkan games can now get RenoDX HDR too, through a single, system-wide ReShade Vulkan layer shared across every Vulkan title — installed once, with your explicit consent, rather than per game. A layer you already have installed yourself (or from another tool) is detected and left untouched; RenderPilot only manages the one it installs. - **Game Details → RenoDX**: Removing the add-on or applying an update now asks for confirmation first, so a misclick can't silently undo an install. - **Settings → RenoDX**: A new section for the shared Vulkan layer — see its status, switch it between stable and nightly, or install/remove it independently of any single game. ### Changed - **Game Details → RenoDX**: Clearer wording for the compatibility badge ("Works" / "In progress" / "Unverified") and the freshness indicator, and a redesigned channel switch control. ### Changed (Refactoring & Maintenance) - **RenoDX engine**: Replaced the single install/update service with one focused module per operation (install, uninstall, channel switch, update, availability, status), built on a shared anti-cheat detection database and split host/compatibility/install-risk policy rules. - **Storage**: Added a persistence layer for the shared Vulkan layer's install/detection state, so it survives restarts the same way per-game installs already do. ## [1.3.0] - 2026-06-28 ### Added - **Game Details → RenoDX**: One-click HDR for supported games through the RenoDX ReShade add-on. RenderPilot detects the game, installs the add-on (and an add-on-enabled ReShade host — stable or nightly — when one is missing), and can fully reverse the change. Before installing, each game shows a confidence badge (verified / experimental / untested) and an anti-cheat risk note, so online titles are flagged up front. Add-ons are fetched live from upstream, so you always get the latest build. - **Updates**: A per-game update check with a freshness indicator and the add-on's publish date, so you can tell when a newer build exists and refresh it in place. The ReShade host is updated alongside the add-on, and you can switch it between stable and nightly at any time. A host that already supports add-ons is reused untouched — including one you installed yourself — and is only replaced (reversibly) when it lacks the add-on support RenoDX needs. - **External add-ons**: For games whose add-on is distributed off-GitHub, the card links to the source and lets you install the downloaded file directly — via file picker or drag-and-drop — while RenderPilot still performs the real install and tracks it for clean removal. - **DLSS Frame Generation fix**: An optional companion fix that stops ReShade from drawing over generated frames, resolving flicker when DLSS Frame Generation is active. - **Localization**: The RenoDX experience is fully translated across all seven supported languages. - **Game Details → executable selector**: A per-game control to choose which executable RenderPilot targets — shared by the NVIDIA driver profile and RenoDX — with smart auto-detection (launcher metadata plus the binary's imported graphics APIs) and a one-click manual override for the rare miss. The "install your own add-on file" path now works for any DirectX game, not only off-GitHub titles. ### Changed (Refactoring & Maintenance) - **Add-on framework**: Added a tool-agnostic install/update engine — atomic install, strict ordered rollback, and upstream-source tracking — with RenoDX as its first consumer, so future add-ons reuse the same mechanics. - **Internal structure**: Extracted shared HTTP/CDN/filesystem infrastructure into reusable modules, restructured executable (PE) parsing into a dedicated module, and reshaped installed-add-on storage around a single tracked-sources record. - **Tooling**: Consolidated desktop linting on a single ESLint configuration (removing a redundant second linter) and enforced consistent block braces across the UI. ## [1.2.0] - 2026-06-20 ### Added - **Settings → NVIDIA**: Global DLSS driver settings (Super Resolution, Frame Generation, Ray Reconstruction) written to NVIDIA's base driver profile, so they apply to every game without a per-game override. Reverting a global setting clears it back to the driver default. - **Game Details**: "Update all to latest" toolbar action that upgrades every graphics component — NVIDIA, AMD, Intel, and the NVIDIA Streamline bundle — to its newest version in a single pass, with one aggregate progress bar and per-component failure isolation. Streamline plugins upgrade together so the bundle never lands on mixed versions. Shows an "up to date" hint when there is nothing to update. - **Libraries**: "Download latest" toolbar action that fetches the newest stable build of every not-yet-downloaded library, with an aggregate progress bar and a single summary toast (done / partial / nothing to do). - **Libraries**: The Streamline tab shows the DLL file name beneath the version for multi-DLL groups, so otherwise-identical `sl_*.dll` rows are distinguishable. ### Fixed - **Streamline**: The version selector keeps the correct version after a bulk swap, instead of going blank or showing the previous version until the app was restarted. ### Changed - **Settings**: Reworked the settings page UX — tabs gain icons and remember the active tab, the theme picker becomes a System/Light/Dark segmented control, the SteamGridDB API-key field appears only when its source is enabled (with show/hide, save-on-Enter, and a "get a key" link), and NVIDIA cards gain loading skeletons, an empty state, and error alerts. - **Bulk actions**: Unified the Libraries and Game Details bulk-action buttons (consistent style, icon, and labels) and moved notification toasts to bottom-center so they no longer cover the selects and buttons beneath them. - **UI**: Consistent layout spacing and scrolling across the Libraries and Settings pages. ### Changed (Refactoring & Maintenance) - **Internal structure**: Split several large modules into focused submodules — SQLite schema, the filesystem detector, catalog cards, and catalog execute. - **Libraries**: Converged the UI on shared primitives (bulk-download button, batch progress bar, concurrency pool). - **Dependencies**: Updated Rust and frontend dependencies and CI actions to their latest versions. ## [1.1.0] - 2026-06-12 ### Added - **Libraries**: Parallel library downloads with type-safe, throttled download progress. - Downloads of different libraries run concurrently, each with a live progress bar on the control that started it (`LibraryActionsCell`, `ComponentVersionRow`, `StreamlineComponentCard`). - Prevents IPC flooding to the frontend by throttling Tauri event emissions to 100ms. - Mitigates OOM vulnerabilities with strict archive size validation (`MAX_ARCHIVE_SIZE` of 500 MiB) and accurate `Vec` preallocation. - **Libraries**: Switched downloads to zstd archives hosted on Cloudflare R2 for faster, more reliable distribution. - **UI**: Added a new deterministic `Progress` component. ### Fixed - **Updater**: Granted the `dialog:allow-ask` capability so the update confirmation prompt can be shown. In 1.0.0 the update check failed with an error as soon as an update was available, so automatic updates never worked — 1.0.0 users must install this release manually. - **Operation Journal**: Prevented panics by providing a fallback timestamp during operation execution. - **Manifest**: Enabled `reqwest` gzip decompression for manifest fetch to handle compressed server responses gracefully. - **UI**: Clipped document overflow so that native Windows scrollbars cannot appear over the application styling. - **Components**: Stabilized the visual replacement candidate order (version-descending). - **FSR**: Correctly respects entry-point lineage in mixed FSR directories to avoid file clashes. ### Changed (Refactoring & Maintenance) - **Error Handling**: Improved error propagation boundaries and significantly reduced allocations during processing. - **Tooling**: Enforced Rust ownership and memory lints workspace-wide for better long-term code quality. - **Docs**: Updated `README.md` to perfectly align with current architecture, features, and technology stack. Fixed all `rustdoc` warnings. ## [1.0.0] - 2026-06-08 ### Added - **Initial release**: Introduced the local-first Windows desktop application and CLI for discovering installed games, inspecting their rendering libraries, and applying reversible library swaps with an SQLite-backed operation journal. - **Game and library discovery**: Added automatic Steam, Epic, GOG, EA App, and Ubisoft Connect discovery, manual-folder scans, a downloadable library catalog, game covers, favorites, hidden games, search, filters, and launcher grouping. - **Rendering technologies**: Added management for NVIDIA DLSS and Streamline, AMD FSR including coordinated FSR 3.1-to-4 transitions, Intel XeSS, and Microsoft DirectStorage, with artifact validation, backups, rollback, and interrupted-operation recovery. - **NVIDIA integration**: Added per-game DLSS driver settings through NVAPI and the system-wide DLSS indicator toggle, with elevation support where required. - **Desktop experience**: Added light, dark, and system themes, seven interface languages, Windows installers, portable mode, and the initial signed-update/release pipeline.