Skip to content
Achievement Watcher Next

Changelog

All notable changes to AW Next are documented here. This project adheres to Semantic Versioning.

Entries are grouped as Added, Improved, Fixed, Compatibility, Performance and Website & Docs. Releases before 3.9.0 shipped as Achievement Watcher 3.x; the product was renamed in 3.9.0 and the history is kept under one file.

On this page

3.12.1 - 2026-10-16

Improved

  • An update no longer opens a window on its own. The hourly check announces a new version with a Windows notification (a desktop notification on Linux) and the title-bar chip; clicking either opens the update window. Nothing takes the focus from a game or another app any more. Settings → Check for updates still opens the window at once.
  • Exported logs are safe to attach to a public issue (#127). Export logs (.zip) masks your Windows user name in every path and any key, token or password before writing the archive, in rotated logs too. The logs on your disk are left as they are, and the message after the export reminds you to read the files before posting them.
  • A Windows notification hidden by a full-screen game is now reported (#126). When Windows keeps a notification in Notification Center because the game is full screen or Do Not Disturb is on, the game’s Game Health panel says so and points to Priority notifications or the overlay, instead of reporting it as delivered.
  • Windows notifications appear at once and start no other program. Each one used to run a PowerShell script, which took seconds before the toast appeared and is the kind of behaviour antivirus engines flag (#126, #128). The app now posts them itself. A custom app id set in options.ini ([notification_advanced] appID) still uses the old way.

Fixed

  • Updating from 3.12.0 failed with “AW Next cannot be closed”. The installer sat in the installation folder while the previous version tried to move that folder away, so the update stopped on a retry box and AW Next stayed on the old version, closed. Setup now leaves the folder first, and an installed 3.12.0 updates normally.
  • Bitdefender blocked updates and quarantined the app (#128). The update’s signature check ran a PowerShell script, which Bitdefender’s Advanced Threat Defense treats as suspicious behaviour: it stopped the update with “no answer from PowerShell”, then quarantined AW Next, its shortcuts and the downloaded installer. The check now runs inside the app and starts no other program. It still verifies both signature layers and the pinned certificate, and is faster too.
  • The notification test reported “Unexpected response” while the test still arrived (#126). With the Websocket broadcast on, the test’s own sample reached the Settings window before the answer it was waiting for. Both test buttons, in Settings and in a game’s panel, now wait for the answer.
  • Fetch progress counters asked for the Steam account again (#125). The sign-in saved by generate_emu_config stayed with the version of the tool that made it, so a newer version, or the one matched to a game’s emulator, asked again. It is now reused by every version.
  • A save folder under the temp directory was written into every game. The save folder chosen in Settings is stamped into each Goldberg/GBE game’s configs.user.ini on every scan, so one under the Windows temp folder sent real saves somewhere that gets wiped. It is now refused, like a relative path.

Performance

  • Library scans are fast again on Windows. 3.12.0 shipped without the compiled registry reader, so every registry read started reg.exe and a full library scan took 40 to 60 seconds. The reader is back, and the build now refuses to package without it.

Website & Docs

  • A 36-second tour of the app. The README opens on an animated banner of the main features, and the website’s hero has a Watch the tour thumbnail that plays it with sound, in every language of the site. The README also counts the ten bundled presets correctly.

3.12.0 - 2026-10-15

Added

  • AW Next on Linux (beta). A native Linux build watches the games you run through Wine, Proton, Lutris, Heroic or Bottles, plus native games, from their save folders and processes. Every achievement source is read inside the game’s prefix, its registry included, and repairs such as the Uplay R2 save redirect are written there. Unlocks appear in the in-game overlay or as desktop notifications, with their sound, playtime is tracked, and the app can start with your desktop session. On Linux the interface speaks of desktop notifications, the Trash and Linux folders instead of their Windows counterparts, the Folders tab lists the folders it checks as they appear inside a prefix, and settings that only act on Windows (grouping in Action Center, HDR screenshots, sending Escape to the game, the clip sound source) are not shown. Steam from Flathub or as a Snap is followed too, gamepads drive the in-game overlay, and the overlay shortcut command keeps working across AppImage updates.
  • Steam Deck (beta, not yet checked on a real Deck). With Launch at startup on, AW Next also runs in Game Mode and draws each unlock over the game. The Decky plugin in decky/ sends unlocks to Steam’s own notifications instead, which Game Mode always shows.
  • Souvenirs on Linux. Screenshots and clips of each unlock work on Linux too, on X11 and on Wayland, where the desktop asks once to share the screen. Clips are recorded by gpu-screen-recorder with the graphics card when it is installed, or, if you choose it in Settings, by AW Next’s own software recorder, which saves WebM files and shows what it cost.
  • A Steam Original preset. A copy of the popup the current Steam client draws: its slate gradient and faint Steam mark, the square icon, and for progress the “19/50” count over a thin blue bar. A rare unlock only gets the gold rim Steam puts around the icon. The earlier Steam preset is now called Steam Modern, and a saved choice of Steam follows it.
  • RetroAchievements games found on disk. A game whose ROM RetroArch knows, from its history or a scanned playlist, now counts as installed and opens on the ROM’s folder.
  • A new installer and uninstaller. One window in AW Next’s own look replaces the Windows wizard: Install, or Options for the folder, an all-users install and the desktop shortcut. It speaks the language you picked in AW Next (your Windows language on a first install), says when AW Next is running, shows the real progress of the files and ends on a first achievement. A question such as “a file is in use, retry?” now opens in front of it instead of behind. The uninstaller asks once whether to delete your data, shows how much that frees and warns that it cannot be undone.
  • A real update window. A new version now comes with its release notes and download size, and the same window follows the download (with Cancel) or keeps it going in the background; the title-bar chip and Settings > Check for updates bring it back. The installer then shows a small card until AW Next restarts, and an update held back by a running game can be installed from the window anyway. A failed update says in plain words what happened instead of the updater’s technical message.

Improved

  • Finished games stay in the library. “Show installed games only” is now off until you turn it on, so a game you uninstalled is still listed from the emulator’s saves (GSE Saves, RUNE, CODEX and the like) with its achievements. Adding the game folders was never needed for that.
  • Keyboard and screen reader access. The Settings action buttons, Save and Cancel included, the game configuration’s Save and Cancel, the shortcut editor, the cover and icon pickers and the profile picture can be reached with Tab and pressed with Enter or Space. Dialogs take the focus and give it back when they close, the notification designer’s toggles announce their state, and the window tells assistive technology which language it is in.
  • In-game overlay settings from the keyboard. The zoom and opacity menus show a focus ring, the switches can be toggled with Tab and Space, and animations follow the system’s reduced-motion setting.
  • The trophy grade colours on a game page match the profile’s and stay readable in the light theme.

Fixed

  • A RUNE or CODEX release that has not saved anything yet now points at the folder it will write to (the one named at the top of its steam_emu.ini, or Public Documents\Steam\RUNE), so its first unlocks reach the library without adding that folder by hand.
  • The emulator fix no longer leaves an empty Goldberg SteamEmu Saves\<appid> folder behind, and with a save folder chosen on the Emulator identity card it prepares that one instead of GSE Saves.
  • TENOKE, Catherine and UniverseLAN games now show their source in the library, and a UniverseLAN game is listed from its save under Local AppData without adding its game folder.
  • The update chip in the title bar shows its icon again.
  • The per-game Achievement language menu no longer shows a second language as selected.
  • Game health no longer reports an official Steam game as missing its emulator, nor an uninstalled official game as needing attention.
  • Recent Steam games get their achievement page background again.
  • An imported Xbox game is no longer folded into a different Steam game whose name only shares a digit with it: Yakuza 0 for Windows 10 vanished into Yakuza 3 Remastered after a refresh. A listing named after its edition (Control Ultimate Edition) now joins the Steam game it is.
  • The in-game overlay shows the placeholder icon again for an achievement whose icon is missing, and “/” can be typed in its search field.
  • Setting a per-game AppID or emulator source, or editing a collection, no longer wipes the others when the file is briefly locked by an antivirus or a backup tool at that moment.
  • A watched Xbox PC game no longer announces old unlocks again after its saved state was cut short mid-write.
  • Live notifications for PS5 (kyty), Xbox 360 Recomp, XLLN and patched games no longer fail for a game installed in a folder whose name contains a percent sign.
  • ShadPS4 0.19 and later is read again: it moved the trophies to trophy and the unlocks to home\<user>\trophy, so its games showed nothing and its unlocks raised no notification. A game already seen with an older ShadPS4 is listed once. A reset relocks the new unlock file. Adding home\1000\trophy or home\1000 as a folder is accepted too, instead of being refused as holding nothing achievement related.
  • KytyPS5 games kept as .zar archives are listed with their trophies: the trophy list and the game art are read straight from the archive, which no longer needs to be unpacked.
  • Xenia set up without portable.txt is found again: its saves are in Documents\Xenia.

Performance

  • Faster installs and updates. Setup moves the 430 MB of files into place instead of copying them a second time, finds a running AW Next without a slow scan, and the uninstaller removes the installation folder in one step on several threads instead of file by file, which every later update benefits from.
  • About half the disk space for the installation. Setup compresses the installed files with the compression Windows applies to its system files: about 210 MB on disk instead of 420 MB, read back transparently, and that is the size the installer and Installed apps now show. The portable copy gets the same on its first start. The package also leaves out about 20 MB of files nothing loads.
  • A leaner data folder. Identical files in the GBE restore points and the custom-theme pictures now share one copy on disk (on one profile, 514 MB of restore points held 49 MB of distinct content), the copy of the emulator that generate_emu_config leaves beside its settings is dropped, large store banners are kept as JPEG rather than PNG wherever that loses no visible detail, and the web cache is capped at 64 MB. What older versions left behind is tidied a minute after AW Next starts.

Website & Docs

  • A new home page. It opens on an illustrated game scene, at night in the dark theme and by day in the light one, where each preset’s popup plays live. Library, Game Health, clips and stats lead the features, and the download offers the visitor’s system first with a switch to the other. The preset and theme galleries and the guides share its look.
  • The comparison guide now sets AW Next beside the other achievement trackers.
  • Buttons and filter chips on the site use the site’s typeface instead of Arial.
  • A Linux and the Steam Deck guide: installing the AppImage and its updates, GNOME and KDE under Wayland or X11, binding the overlay to a key, the keyring prompt, Steam, Proton, Lutris, Heroic, Bottles and emulators, and what is and is not yet confirmed on the Steam Deck.

3.11.3 - 2026-10-13

Added

  • Emulator identity for GBE Fork. Settings → Steam / GBE Fork (Advanced mode) has an Emulator identity card: account name, Steam ID and save folder, so no other tool is needed to set them. The fix and Repair write the name and the Steam ID into each game’s configs.user.ini while Write account name and language is on; a Steam ID with a typo is flagged as you type and never written. A chosen save folder is used by every game fixed or repaired from then on, and AW Next watches it for live notifications.
  • A compact profile banner. The arrow beside the stats button, or Settings → Appearance → Profile, folds your avatar, name and stats into one row: half the height in a narrow window and one slim row in a wide one, leaving the room to the library when AW Next is your game launcher.
  • A sound for rare unlocks and one for 100%. Settings → Notifications (Advanced mode) has Rare achievement sound and 100% completion sound under Sound, for the in-game popup and Windows notifications alike. Both start on “Same as unlocks”; “None” silences that kind of popup. A sound chosen for one game in its own panel still wins.
  • Progress popups can be silent while unlocks keep their sound. Progress sound sits beside them (Advanced mode). Set it to “None” to mute the progress popups and Windows notifications without touching the unlock sound, or pick a quieter file for them. It applies even to a game with a sound of its own, unless that game is set to no sound at all.
  • Game health guides a Nemirtingas Epic setup. A game whose folder carries the Nemirtingas Epic emulator gets an Epic emulator row. It warns when SavePath is not "appdata", the only place AW Next reads its saves; while nothing has been saved, it offers Add the Epic launch arguments, built from the emulator’s own config, for the games that only save when started with them; and it reminds you that its overlay plugin can crash some games.
  • KytyPS5 trophies. Games played on the KytyPS5 PlayStation 5 emulator are listed with their trophies, read from the game’s own trophy package, in your language when the game has it. Add the emulator folder under Settings → Folders (it is also found on its own in the usual emulator folders); the games are looked up in the game folders set in the KytyPS5 launcher. New trophies trigger a notification, the PlayStation badge and Exophase rarity follow, and Reset achievements clears a game’s trophies. A game you delete stays in the library, shown as not installed, with its trophies and art.

Improved

  • No bar under games without achievements. A game Steam lists with no achievements, such as Final Fantasy XIV, no longer carries a “No achievements” bar: its artwork takes that space, so the tile still matches its neighbours. Bar of games without achievements in Settings → Appearance → Library tiles brings it back.
  • The Theme tab is now Appearance. It holds the theme, the profile banner and the library tiles, so its name says so.
  • On/off settings are switches. Every Settings row that is simply enabled or disabled now shows a switch instead of arrows to step through, so what is off stands out at a glance. Rows that choose between two named options keep their arrows.
  • A calmer game page and Settings footer. An achievement’s date and rate are smaller and muted under its name, and in a narrow window they share one line beside the icon, so about seven achievements fit on screen instead of five. Reset achievements is an outlined red button instead of the page’s main one, and Save only stands out once something is left to save.
  • Sharper Settings controls. Values such as “Enabled” use the font’s real bold face instead of a thickened regular one that looked blurry, and the overlay shortcut sits centred in its box like the other controls, its edit and preview buttons tucked to the right.
  • French reads in one voice. The few strings that said “vous” now say “tu” like the rest of the app.
  • Text cut with “…” scrolls under the pointer. A long game title on a tile or a long value in a Settings control slides to its end and back while you hover it, so it can be read in full.
  • No more “–” for an unknown unlock rate. When no source knows how many players earned an achievement, the game page leaves the line out instead of showing “– of all players”.
  • A console game shows its own square logo. The achievement page and the notifications use the square icon a game ships, such as a PS5 game’s own, instead of a logo looked up by name, and a PlayStation game no longer has the PlayStation logo painted over its icon.
  • PlayStation trophies keep their own colour. An unlock seen by RPCS3, ShadPS4 or KytyPS5 is painted platinum, gold, silver or bronze by the trophy’s own grade, named in your language, whatever the rarity display is set to, in the popup and on the game page alike; the unlock rate only fills in its percentage.
  • More console trophies get their unlock rate. A trophy that Exophase titles a little differently from the game (“1 down” / “One Down”) is now matched on its description, when that description is specific and unique. Astro’s Playroom goes from 49 to all 51 rates.
  • The same marks beside every game’s name, on its tile and on its achievement screen: where its achievements come from, then either an info badge for an official game (Steam, GOG, Epic, Ubisoft Connect, EA, Xbox, RetroAchievements) or the Game health dot for an installed game a crack or an emulator serves. Installed console emulator games get a dot too.
  • Much less memory with EA Desktop installed. AW Next kept a full copy of EA Desktop’s log in memory for as long as it ran, once in the app and once in the background monitor: about 47 MB each for a 23 MB log. It now keeps only what it read from it.
  • A lighter check for running games. The playtime monitor first asks Windows whether any program started or stopped since its last look, and reads the process list in one call when one did: about 0.2 ms instead of 10 ms every 3 seconds on a quiet PC, half the time on a busy one.

Fixed

  • VOICES38 releases that bring their own GBE Fork are no longer “another crack”. Pragmata’s release keeps Valve’s steam_api64.dll and loads a renamed GBE build through a small loader of its own. Game health read only Valve’s file, marked the game as not tracked, and offered to install the emulator over it, which makes the game crash on launch. It now recognises that runtime, and only the achievement data is offered for repair, which is all such a release needs.
  • RUNE releases that run from a Steam folder are recognised. Newer RUNE builds (Dragon’s Dogma 2) keep Valve’s dll and run from Steam\steamclient64.dll with their steam_emu.ini beside it. Game health showed them red as an unfinished GBE setup, and a library scan wrote a GBE configuration into their folder that nothing ever reads. They are now shown as served by RUNE and left alone.
  • A game’s very first unlock is notified. When an emulator created the game’s save folder and wrote the unlock in the same instant, which is what GBE Fork does on a game’s first save, AW Next never saw it and that first achievement stayed silent. The live watcher no longer depends on how busy AW Next was while starting, and catches it.
  • A scan backs up a game’s configuration before rewriting it. With automatic repair on, a scan could change configs.user.ini and add configs.main.ini before the backup was taken, so a restore brought back the rewritten files instead of the release’s own.
  • Game health no longer says unlocks would be missed when only icons are. A complete achievement list missing some icons now reads as such, with Rewrite the achievement data to download them.
  • The profile buttons follow a language change. The stats and fold buttons kept their tooltips in the previous language until AW Next restarted.
  • A console game’s own background on its achievement page. Artwork a console emulator source keeps on disk, such as a PS5 game’s key art, never reached the page background, which stayed plain dark.
  • Official Ubisoft Connect games no longer show a Game health dot beside their “in your library” badge: there is nothing emulated to diagnose on them.
  • An achievement’s rarity line stays on one line in a narrow window. Below 1050px it kept the width of the old side column, so “59.6% of all players” wrapped beside an empty row.
  • Screen readers name more controls. The achievement sort buttons are named even when they are not the active sort, the collections button says whether its menu is open, and the Manual / Smart Find badge beside each folder is announced.
  • A game’s own notification settings apply everywhere. The sound picked in a game’s panel now also plays on its Windows notifications, where the global sound rang even for a game set to “None”. XLiveLessNess games now get their own preset, position and sound, and clicking their Windows notification opens the game.
  • Screenshot and clip souvenirs for every source. Unlocks seen by the RPCS3, ShadPS4, Xenia, recompiled Xbox 360, GOG, Ubisoft, RetroAchievements and mod watchers showed their popup but took no souvenir.
  • Steam games in the default library are tracked again. A game started from Program Files was ignored like a system tool, so it got no playtime and no “now playing” notification. A library game is now followed when it runs from a Steam library or its own install folder; a program that only shares a game’s executable name stays ignored.
  • An imported Xbox game no longer drops out of the library. One whose load timed out, or that matched a leftover cache entry by name, vanished until a later scan brought it back.
  • Nemirtingas Epic emulator games. The executable you pick is enough to track playtime and check that the game is running, an Epic exclusive with no Steam release gets its live notifications, and Game Health no longer mistakes the emulator for the Epic Games library. Achievement reset now also works for the Nemirtingas Epic and Galaxy emulators.
  • Fewer antivirus false alarms. The installer no longer starts PowerShell to check whether AW Next is running, and AW Next no longer lists the PC’s network connections each time it starts: the background monitor now closes with the app instead of being left running after a crash.
  • The background monitor no longer restarts itself every hour. Windows records when the settings file was last read about an hour after the read, and the monitor took that for a settings change: it closed and reopened every watcher, leaving unlocks unwatched for a couple of seconds each time. Only a real settings change restarts it now.

3.11.2 - 2026-10-09

Added

  • RUNE’s Ubisoft Connect emulator. Its saves under Documents\RUNE\Ubisoft Connect are listed with the Ubisoft Connect emulator source, with no folder to add, and new unlocks trigger a notification.
  • Collections. Group games into your own collections from a game’s right-click menu (Collections), then filter the library to one with the new button next to the installed-only toggle. Each collection has a name, a colour, an icon or your own image. The profile numbers follow the collection you are viewing.
  • Back up and restore your profile. Settings → Advanced → Profile backup exports your settings, library choices, presets, themes, covers, custom backgrounds, GBE restore points and playtime to one .awbackup file, and restores it after a reinstall or on a new PC. Sign-ins, caches and logs are never saved, so you sign in again to Epic, Steam, Xbox and RetroAchievements after a restore. The file is checked in full first, applied at the next start, and the files it replaces are kept; a restore that fails puts everything back.
  • Trophy mode for rarity. Settings → General → Rarity display can grade every achievement gold, silver or bronze by its global unlock rate (under 20%, under 50%, otherwise or unknown), in the game window, the overlay, the profile trophies and the notification popups, with platinum for finished games. Advanced mode can move the two bounds. The default keeps today’s rare tiers.

  • A font file and a logo in the preset designer. Pick a TTF, OTF, WOFF or WOFF2 font and a logo picture; both are checked by their contents, copied into the preset and carried by its .awpreset package. The logo sits behind the text in a corner or at a side, at a size and distance you choose. A package whose font is not really a font is now refused.

  • Customize a bundled preset. The preset designer can start from one of the nine bundled presets and layer a few changes on top - background, text colour, accent, border, glow, font and logo - without copying or editing it. A layer cannot be exported or used by the OBS source.

Improved

  • Settings are easier to scan. General and Sources are split into sections, rarely used ones (Notification tests, souvenirs, clips, theme files, folder lists) start folded, and rows that only matter while another switch is on are dimmed. Searching still finds everything, and in Simple mode it points to matches that only Advanced shows. The Presets tab is now Notification presets, the side menu captions no longer repeat the tab names, and the footer says which tabs save as you go and when Cancel has something to discard.
  • The rarity tiers are defined once (util/rarityTiers.js) instead of in several places, and the app now tells a notification preset its tier instead of each preset working it out.
  • Keyboard and screen-reader use. Every control now shows a focus ring, including the preset designer, game configuration and onboarding. The title bar buttons, the library toolbar, the sort buttons, Back, the collapsible achievement lists and Settings tabs can be reached and pressed with Tab, Enter and Space, and a hidden achievement’s description can be revealed from the keyboard. Settings and the game configuration are named dialogs: Escape closes the top one, focus moves in and returns, and Tab stays inside. Tile buttons are named after their game.
  • Readable labels on accent buttons. Save, the selected segment and Create preset pick black or white text from the theme’s accent, instead of light text that was under 2:1 in most themes.
  • Tokyo Night uses a lighter muted text colour so descriptions and captions are readable.
  • A shorter first-run guide. Six steps instead of seven: language and interface share the first one, and a “Found on this PC” report on the Games step shows the launchers and emulator folders it found and how many games they hold. Sources and the less common options are folded away, the notification test button is labelled, a last step recaps your choices with a Change button for each, and a few lines say what the overlay, collections, trophy mode, video clips and profile backup do. Tab stays inside the guide, and the interface choice works with the arrow keys.
  • Counter achievements move in the library while you play. A counter that advances without unlocking anything (a collectible picked up) kept its old value until the next scan; the game’s page now follows it, redrawn once the counter settles.

Fixed

  • Fewer antivirus reactions. Each update no longer rewrites the app’s window files in %APPDATA%, which Kaspersky’s System Watcher rolled back, and a scan no longer starts PowerShell several times in a row: the drive list is asked once, and AW Next’s own notification identity is read from its Start Menu shortcut.
  • The Steam account library stays out under Installed. With the Steam source set to Installed, Add the games you own still brought the whole account back. The account library switches now apply, and show, only under Owned.

  • The first-run guide can be skipped. The corner button refused with “choose a language” even after one was chosen. Skip setup now saves what you answered, leaves the rest as it was and starts the first scan. An unanswered interface choice stays unset, which the app treats as Advanced.
  • Updates are refused when the signature cannot be checked. If PowerShell is blocked or silent the update no longer installs unverified; the message links to the releases page. The installer is also verified again when the download ends and just before it runs, so an installer cached by an earlier launch cannot skip the check.
  • A signed release now proves every program inside it is signed. The build checks each .exe of the packaged app against the pinned certificates and that the video and HDR helpers are the repository’s own binaries, and refuses to finish otherwise.
  • The in-game overlay no longer spoils hidden achievements. A hidden achievement you have not unlocked now shows “Hidden - click to reveal” in the overlay, as in the main window. Click it, or press A on a controller, to reveal that one description. Search ignores masked descriptions.
  • The profile header keeps to two lines. On a narrow window the statistics button no longer drops to a third line on its own; it stays beside the last figure.
  • Text prompts use the app’s font. Naming a collection or a preset opened a box in a serif font.

Website & Docs

  • Every screenshot is retaken against the reorganised Settings and the new first-run guide, and the guides now show collections, trophy mode, hidden achievements in the overlay, profile backup, library stats and the preset designer’s font and logo options.
  • A new home page. The app and a live unlock popup sit side by side at the top, and a grid shows what else is in the box: library stats, trophy mode, video clips, collections, profile backup, the controller, the first-run guide and RetroAchievements. All thirteen themes are listed.
  • Search in the guides. A box above the guide list finds any section of any guide and opens it on its heading; press / to jump to it. The guides also gained a guide list, a table of contents, click-to-enlarge screenshots and a 404 page.
  • Links to the site now preview with a card that names the app, instead of a bare screenshot.
  • The controller guide has a map of the default shortcuts, the getting-started guide shows creating and filtering a collection as a short animation, and the emulator tools menu is shown as it is today.

3.11.1 - 2026-10-07

Added

  • Video clips of each unlock, like a console’s trophy video. Turn on Settings → Notification → Video clip on unlock and every achievement is saved as an MP4, with the unlock and its notification in the middle of the clip. Choose its length (10 to 30 seconds), format (H.264, HEVC or AV1), resolution, frame rate, quality, whether the sound is the game’s alone or the whole PC’s, and its folder (Videos\Achievement Watcher Next by default); the page estimates the size of a clip as you go. The recording runs only while a game does and stays on the graphics card’s video encoder, and HDR games are tone-mapped like HDR screenshots.
  • Your own background on a game’s achievement page. Right-click a game, then Cover → Choose background image… to show a picture of your choice behind its achievements. Reset background to default brings the usual artwork back.
  • Notifications for games Steam runs (#91). Owned games and games added through SteamTools, LuaTools or GreenLuma only ever showed Steam’s own pop-up. Settings → Notification → Steam client games now announces their unlocks through AW Next too, the moment Steam records them. It is off by default, since Steam already shows its own.
  • Patched and recompiled games are found on their own. A Steam copy of Dead Space 2 with MarkerPatch or of Alice: Madness Returns with MadnessPatch is picked up through Steam’s own install record, by the library and by live notifications, without adding its folder. Smart find also looks for these mods and for recompiled Xbox 360 games in your game libraries.
  • Progress popups can stay out of the way of unlocks (#106). Counter achievements raise a “+1” popup at every step, and those sat exactly where real unlocks appear. Progress position and Progress scale in Settings → Notification put them somewhere else and at another size, in every game. Progress milestones shows them only every 10, 25 or 50% of the goal. All three start on the current behaviour.

Fixed

  • EA app games fetched covers for the wrong Steam game (#105). An EA game is known by EA’s own number, which the cover lookup took for a Steam AppID, so Star Wars Battlefront II asked Steam about app 193864 instead of 1237950. EA games now find their Steam release, from the Steam library folder they are installed in or else by title, and borrow its cover and background. An EA game with no Steam release is no longer looked up on Steam under its EA number.
  • Settings refused the folder of a patched or recompiled game. Adding the folder of a MarkerPatch or MadnessPatch install, or of a recompiled game such as Gears of War 2 Hollow, was rejected as a wrong folder, so those games could never be watched. They are accepted now, and a folder picked inside such a game (GearGame, SaveData, Binaries\Win32) is kept as the game’s own folder.
  • Live MadnessPatch notifications in the installed app. The background tracker could not read the Documents folder the mod saves to, so its watcher stopped at start-up.
  • Little Nightmares III with OnlineFix’s Friend’s Pass. The unlocks go through real Steam, but the game recreates an empty OnlineFix folder at each launch, and the card then showed every achievement locked. Steam’s unlocks are read whatever else sits beside them, and an empty folder no longer takes the card over.
  • Steam games never played on this PC showed 0% (#98). With a Steam account connected, the unlocks of those games were asked from a Steam endpoint that refuses the session token, and every refusal was cached as “no achievements”, across whole libraries. They are now read from your public Steam profile, a refusal is never cached, and the empty lists cached by the old code are asked again once. Your profile’s game details must be public for this.
  • A game started from a Steam shortcut lost its unlocks. Steam hands a non-Steam shortcut a game ID of its own, which GBE Fork prefers to its steam_appid.txt, so achievements were saved under a number of the shortcut’s own. Repairs now write steam_appid.txt in the shortcut’s start folder, where Steam reads it, and Game Health points out a shortcut that lacks one.
  • Game Health stayed green on a crack that records nothing. After an hour of play with no achievement recorded, the game now needs attention, says why, and offers the supported emulator when that crack can be replaced.
  • Screenshot souvenirs failed when the Windows user name has a space (#107). Outside HDR, the screen grabber was started through a batch file in %TEMP% whose path was not quoted, so a profile such as C:\Users\AMD RYZEN 5 lost every screenshot. All of them are now taken by the app’s own capture tool, started directly.
  • Antivirus behaviour detections. Achievement screenshots no longer compile a screen-capture program into %TEMP% (the native helper takes them all now), the full-screen check before a notification no longer compiles code through PowerShell, and the update check no longer passes an encoded command. These are what Kaspersky reacted to while the app ran, and what ESET and Rising named CaptureScreen in the 3.11.0 installer.

Website & Docs

  • How to keep only AW Next’s pop-up under RetroBat without switching RetroAchievements off, what to do when a game works from AW Next but not from a Steam shortcut, the new Game Health rows, and the antivirus notes.

3.11.0 - 2026-10-02

Added

  • RetroAchievements. Settings > Sources has a RetroAchievements card: enter your username and the Web API key from retroachievements.org/settings, and the games you played on emulators join the library with their achievements, unlock dates, points and rarity. New unlocks are announced like any other: within seconds while an emulator that reports to RetroAchievements runs (RetroArch, DuckStation, PCSX2, PPSSPP, Dolphin, BizHawk, Project64 and every RA-integrated build, recognised by name or by the RetroAchievements dll beside it), within a few minutes with any other. A game played for the first time is added on its own, and a second import only fetches the games whose progress moved.
  • Forget a game. Right-click a game and choose “Forget this game…” to clear everything AW Next keeps about it: its achievement saves (backed up first, as Reset achievements does), play time, cached achievement list and icons, per-game settings, and the emulator configuration AW Next wrote into its folder. The next scan finds it again as a new game. Removing a game still only hides it.
  • An achievement language per game. Game settings > Achievement language shows one game’s achievements, and its notifications, in another language than the rest of the library.
  • A refresh button next to the settings gear rescans the library, like F5.
  • Steam unlocks move the library live. A game Steam runs, including one added through SteamTools, LuaTools or GreenLuma, now updates its card the moment Steam records the unlock instead of at the next scan.
  • Xbox 360 games recompiled for PC. ReXGlue ports and similar recompilations keep their own achievement list in an achievements folder, either in the game folder or in Documents\<game>. AW Next now reads those lists (.toml, .tsv and SaveData\Achievements.json) and treats the games like any other: the list comes from the game’s own default.xex, in every language it ships and with secret achievements kept secret, dbox.tools fills in DLC achievements and games whose executable was not found, the Xbox 360 marketplace supplies the box art, and Exophase the share of players who earned each achievement. A game that writes only a JSON list, with no title id, is recognised when every one of its achievements matches an Xbox 360 title (Gears of War 2 Hollow’s 50 match Gears of War 2 exactly) and gets the same treatment. Every unlock is notified live, even for a game that had never unlocked anything before, the play time is tracked, and “Reset achievements” works on them. The Documents folder is found on its own; a game that keeps its list, or its default.xex, in its own folder needs that folder or its library added under Settings > Folders. It follows the Xenia source switch and the notification preset chosen for the Xbox 360.
  • Set a game’s AppID by hand. Right-click a game and choose “Set AppID manually…” when its folder name matches several Steam releases and the automatic name match picked the wrong one. The choice is remembered per install folder and written to steam_appid.txt. The game health “correct the game ID file” action now asks for the AppID too, starting from AW Next’s suggestion, instead of only confirming it.
  • A switch for the automatic achievement data refresh. Settings > Advanced > “Automatic achievement data updates” stops the periodic repair of blank descriptions and the pickup of achievements a game update added, for anyone who maintains steam_cache by hand. “Recheck achievement lists” still works as a one-off check.
  • Your whole Steam library, not only the games this PC has touched. Two switches in the Steam account card list the games you own and the games shared with you through Steam Family, including ones that were never installed here. Until now the connected account was only used to decorate the games the local Steam client already knew about, so an account with hundreds of games could still show a fraction of them. Both are off by default: a large library makes the first scan much longer, since every added game has to resolve its achievements and artwork once.
  • Unlocks from your other PCs. Steam only writes a stats file for a game once it has reported one on this machine, so anything played elsewhere sat at 0% however far through it you were. With an account connected, a game with nothing to read locally is now asked about directly, which also works when your profile is private. The answer is kept for six hours so a second launch on the same day does not ask again for every game.
  • Dead Space 2 MarkerPatch and Alice: Madness Returns MadnessPatch. Add the game folder under Settings > Folders and AW Next builds the achievement list from the mod’s own text and images, reads the unlocks the mod saves, and notifies them live. Each has its own source switch, and nothing is read while the mod’s AchievementSupport is turned off.
  • A GOG achievement fix (UniverseLAN). Right-click a GOG game that ships a Galaxy dll and choose “Apply the GOG achievement fix (UniverseLAN)” to install the UniverseLAN build that matches its Galaxy SDK. The original dll is kept as a backup, existing UniverseLAN saves are never overwritten, and the unlocks it writes under %LOCALAPPDATA%\UniverseLAN are read and notified.

Improved

  • A clearer library stats panel. Wider, with the completion dial up front, an icon on every figure and a proper empty state.
  • A tidier game menu. Right-click now reads Launch, Game settings, Achievements & playtime, then the tools, with Remove, Forget and Uninstall grouped at the bottom.
  • Much smaller updates. An update now downloads only what changed since the installed version instead of the whole 127 MB installer; if that ever fails it falls back to the full download on its own.
  • The update cache no longer keeps an installer it has already installed. Up to 127 MB sat in %LOCALAPPDATA%\achievement-watcher-updater until the next release; it is removed on the first update check after the install.
  • The installer and uninstaller speak all 27 languages of the app, adding Danish, Dutch, Finnish, Greek, Indonesian, Korean, Norwegian, Swedish, Traditional Chinese and Vietnamese, and follow regional Windows languages too: French (Canada), German (Switzerland), Spanish (Mexico) and the like no longer get an English installer.
  • The installer opens faster. It no longer starts PowerShell to look for a background process that has not existed since 3.4.
  • A folder the installer cannot write to is refused on the spot, with an explanation, instead of failing halfway through with “Error opening file for writing”.
  • The uninstall page has a proper title, no longer cuts off the data folder path, and shows how much space deleting the data would free.

Fixed

  • Private Steam profiles. A private profile, or private game details, dropped the whole Steam source even though unlocks are read from the local Steam cache, which needs no public profile.
  • An explicit DLC list is valid. Game Health no longer flags configs.app.ini with unlock_all=0 and the DLC ids listed, which Capcom titles and games with dummy DLC checks need, and a repair keeps that list instead of forcing unlock_all=1.
  • Repairing a game served by OnlineFix could not be undone. The repair created a steam_settings folder the loader never reads. Diagnosis now names the loader even when such a folder exists, and “Remove AW Next’s emulator configuration” deletes a folder AW Next created.
  • Games fixed over an older crack showed an orange health dot. A leftover SteamConfig.ini was taken for the running loader, beside ColdClientLoader.ini or after the emulator fix had replaced that crack’s dll, so the game’s own saves read as a foreign copy’s (The Jackbox Party Pack Collection). The health dots also refresh in the order the tiles are shown.
  • No “no progress” warning for a game not run since its fix. A game last played before its emulator was put in place has no save yet, and Game Health no longer reports that as a fault.
  • OnlineFix, CODEX and TENOKE games no longer show as a broken Goldberg setup. The diagnosis no longer offers a repair for them, and Game Health flags a game whose only save is an old Goldberg one.
  • Stat-based achievements can unlock. The achievement repair now also writes the game’s stats, so achievements tied to a counter (collect 9 hats) are no longer stuck.
  • Java games had no play time. Games that start javaw.exe and exit their own launcher are now tracked through that Java process.
  • A game could be tracked under another game’s name when only the bundled catalogue knew its executable name; that match now needs the install folder to agree.
  • Several achievements unlocked at once in a game’s very first save now each get a notification; only the three most recent did before.
  • Ubisoft games with two product ids (a base game and its Complete Edition) now read the save of either one, and bare objective ids in a save are matched to the Steam achievement list.
  • Every launch rescanned the whole library when one game could never get a description from Steam. The saved library is now reused.
  • A failed top-owners download was retried for every game of a scan. It now waits an hour before trying again.
  • “Also delete settings, cache and saved data” did nothing when uninstalling. The choice was thrown away before it was read, so the data folder always stayed. It now deletes it, along with the playtime kept in the registry; for an all-users install it now targets your own data folder.
  • Uninstalling left traces behind: the “Start with Windows” entry, which made Windows look for a missing program at every sign-in, the achievement-watcher: link type the notification buttons use, and the update cache (up to 254 MB). An uninstall now removes all three; an update keeps them.
  • A silent uninstall with --delete-app-data deleted %APPDATA%\Achievement Watcher, the folder of the original 1.6.8 app, which may still be installed. It is no longer touched.
  • The portable version no longer reports a failed update check at every start. It now checks the release feed like the installed app and offers the release page when a new version is out.
  • Games for Windows LIVE secret achievements. XLiveLessNess games marked every ordinary achievement as secret and showed the real secret ones: the flag was read from the wrong bit.
  • Brazilian and Latin American Spanish now read the Portuguese and Spanish text of Games for Windows LIVE and Xbox 360 games instead of falling back to English.
  • Game Health on Xbox 360 games no longer flags the game identity as needing attention: an Xbox 360 title id is a valid identity, not a missing Steam AppID.
  • A game whose unlocks sit in GSE Saves no longer shows 0%. Applying the emulator fix creates a save folder under both %APPDATA%\Goldberg SteamEmu Saves and %APPDATA%\GSE Saves, and when both held a file for the same game the first one found won, whatever was in it. An abandoned, empty save therefore hid the one the game was really writing to. Whichever folder holds the unlocks is now the one that is read. Reported for Mewgenics.
  • Locked Xenia achievements now have their pictures. The profile file only holds a picture once an achievement unlocks, so every locked row had none. They are fetched from Xbox Live’s image host and cached. A row with no picture at all now shows the neutral trophy instead of a spinner that never stops.
  • The common trophy tile on the profile keeps its percentage. The “without a known rate” count used to replace it; it is now a second line under it.
  • Small text in the in-game overlay is at least 11px, for the column headers, status pills and the overlay options.
  • The account cards follow a language change. The Steam, Epic, Xbox and RetroAchievements cards in Settings kept their button and status line in the previous language, for instance after picking a language in the first-run guide.

Security

  • Updates must be signed by the project’s own certificate. The updater accepted an unsigned installer, and any certificate calling itself CN=Shirow, which anyone can create. It now refuses both and accepts only the release certificate or its offline standby, pinned by thumbprint, so a tampered release cannot install itself. The signature itself is verified too, not only the certificate it names, so a signature block copied from a genuine release onto another installer is refused. The release build refuses to finish with any other certificate.
  • adm-zip updated to 0.6.1, fixing an uncontrolled memory allocation from a declared uncompressed size (GHSA-7q85-xj36-vmfc). It now also refuses a zip entry duplicated by name at read time instead of returning both; the preset, theme and .san import readers keep reporting that case by its own name rather than a generic unreadable file.

Website & Docs

  • Sharper, more accessible site. Bold text no longer loses the dot on its i’s at 100% scaling, links in running text are underlined, the guide bar and footer meet contrast in both themes, and screen readers get a main landmark, named brand links and keyboard access to wide tables and code.
  • The guides are rewritten to be shorter and easier to follow. Each page now says what to click and what to expect, with the history and internals left to this changelog, and covers everything added since 3.10.5: the Steam account library switches, unlocks from other PCs, Xbox 360 recompilations, setting an AppID by hand, the opt-in emulator writes, smaller signed updates and a clean uninstall. The README and the home page follow.
  • The guides cover the rest of this release: RetroAchievements, the MarkerPatch and MadnessPatch mods, the GOG UniverseLAN fix, forgetting a game and a per-game achievement language. They no longer ask for a public Steam profile, which games played on this PC no longer need.

3.10.9 - 2026-09-18

Fixed

  • The duplicate-tile fix in 3.10.8 did not cover every case. A folder added directly as a watched location (rather than one found by walking a library root) was never checked against the games already known before its own subfolders were scanned, so an alternate crack-launcher subfolder inside it - the case 3.10.8 aimed at - could still surface as its own unidentified install.

3.10.8 - 2026-09-18

Fixed

  • A game with several bundled crack launchers no longer shows duplicate tiles. A folder detected as “emulator saving inside the game folder” was recorded with the wrong path separator, so it never matched the game it already belonged to. An alternate launcher folder some repacks ship alongside the main one (an Epic or Online Fix variant, for example) was then scanned as its own unidentified install and added a second and third card for the same game.

3.10.7 - 2026-09-18

Added

  • DLC ownership and the account identity are separate opt-in settings. Enabling every DLC and stamping your account name and language into each game’s configs.user.ini have nothing to do with reading achievements, and both overwrite files people curate by hand. They are now two switches of their own under Emulator setup, off by default, independent of automatic repair.

  • “Remove AW Next’s emulator configuration” in a game’s right-click menu. The writes above were never backed up, so restoring is not available to anyone already affected. This takes out only the DLC section, switches and identity keys AW Next itself wrote, keeps every value you or the repack chose, and deletes a file only when nothing else is left in it. It shows exactly what it will remove before doing anything.

  • Trophy showcase on the profile. Platinum (games at 100%), gold, silver, bronze and common counts under your name, on by default in Settings > General. Clicking them opens a new Trophies section in the library stats with the split by rarity, every platinum game, your ten rarest unlocks and a full list of every unlock, rarest first. Clicking one opens it in its game. The installed-only filter now works from the stats panel too.

  • The average completion only counts games you have started. A game you never launched and never unlocked anything in no longer drags the average down; hover the figure to see how many games it covers.

  • Progress counters for CODEX and RUNE games the Steam client never cached. When no local source knows which stat drives an achievement, AW Next now reads it from Nemirtingas’ games-infos-datas, with no Steam sign-in. “Fetch progress counters” in Game Health tries it first.

  • Epic games whose achievements Epic does not publish are listed. Some owned Epic games (Shadow and Rise of the Tomb Raider, Civilization VI) have achievements in the game but none in Epic’s store data, so they never appeared. Their list now comes from games-infos-datas, with the rarity and banner of the Steam release when its achievement ids match. Unlocks still cannot be read for them: Epic does not share them, even signed in.

Improved

  • New rarity tiers everywhere. Gold is now 5% of players or fewer, silver up to 10% and bronze up to 15%; anything more common stays unmarked. The game view badges, the in-game overlay, every notification preset and the “Rare” label on Windows toasts all use the same tiers.

  • Cleaner library tiles. The achievements and game settings buttons now appear only while you hover a tile, popping in like the play button. The list view keeps them always visible.

Fixed

  • Sign-ins no longer vanish after one bad start. If AW Next could not read its encryption key once, it replaced it, and the Epic, Steam and Xbox sign-ins and the emulator password saved under the old key could never be read again. The key is now kept and read again on the next start. The log also says why an Epic or Steam sign-in stopped working.

  • Epic games show their icon on the game page again. Epic’s very long artwork names pushed the cached icon past Windows’ path limit, and the page could not load it.

  • Epic games without achievements no longer fill the log with errors. They are noted as not listed, and Epic’s “no achievements” answer is kept for the day instead of asked again every scan.

  • A scan no longer rewrites emulator configuration in your game folders. With “Automatically fix newly detected games” disabled, an ordinary library scan still wrote configs.app.ini, configs.main.ini and configs.user.ini into every detected GBE/Goldberg game, and wrote a missing achievements.json along with them. That setting exists to say AW Next never touches game files unprompted, and it now means it: every one of those writes follows the setting and announces itself first. Reported on cs.rin.ru by CharlieX_, who found a hand-managed emulator setup replaced by a scan that was supposed to only read.

  • A backup says when it is not an original. Because the configuration was rewritten before anyone could take a backup, the backup captured AW Next’s own files and looked exactly like a pristine one. A backup now records whether the folder already carried configuration AW Next wrote, and the dialog says so.

  • A game health report no longer treats its own placeholder as proof the emulator works. Applying a GBE setup writes a locked achievement file into GSE Saves\<appid> so the game shows its list before it has ever run. The diagnosis read that file back and announced “Runtime save found: 0/46 unlocked”, which sounds like the emulator is recording and is not: the only thing that ever wrote it was AW Next. The health panel believed it too, and downgraded the one warning that points at the emulator into a calm “nothing unlocked yet”. A setup the game never loads therefore looked identical to a healthy one - exactly what happened to The Blood of Dawnwalker after the packaged-Unreal fix in 3.10.5. The seed is now marked when it is written, the report says who wrote the save, and a placeholder no longer stands in for progress.

  • The report says which emulator build is in each folder. It carried a count of Steam API files and the folders holding them, which cannot separate a fix that landed from one that went where the process never looks: a release that shipped its own emulator has a file of the same name in the same place. Each folder now reports its file’s size and date, whether it is an emulator, whether it is the build AW Next installed, whether a backup exists and whether that backup is a genuine original.

  • A missing steam_interfaces.txt is reported instead of being left in the log. The file is generated from the game’s original Steam API library, and a release that overwrote that library leaves nothing to read, so the emulator falls back to its built-in interface versions. The report now says so, and says whether reinstalling the runtime could still supply the file.

  • A packaged Unreal game is identified by the file next to the engine’s Steam library. A build of that shape keeps its steam_appid.txt in Engine\Binaries\ThirdParty\Steamworks, seven levels down and inside the one folder every scan skips as an editor/SDK directory. Such a game was therefore never discovered as an install at all: it appeared as an unidentified folder with no achievements, whatever was configured in it. The library now reads that folder’s identity, so the game arrives with its appid, its achievement list and its save folder like any other. Reported on cs.rin.ru by DaddyYNWA for Little Nightmares II Enhanced Edition.

  • A scene release’s own emulator is recognised under an Unreal build. RUNE, CODEX and their kind drop their steam_emu.ini beside the library they replaced, and the check that keeps AW Next from touching a cracked folder only ever looked at the game root. So AW offered a GBE setup to a game RUNE was already serving, and wrote a steam_settings folder that release never opens. The check now looks where the engine loads its library from, and the health panel names the emulator actually in charge instead of leaving the row out. A RUNE release that ships no ini at all is recognised too, by the steam_api64.rne it keeps the original library under, and that original is now what steam_interfaces.txt is generated from.

  • A complete emulator setup that nothing will ever read is reported as a failure. The moment that inert steam_settings existed, the release’s own Steam library counted as an emulator file because the folder was beside it - the folder AW Next had just written. The panel then reported a perfect setup, every achievement present, for a game recording nothing, which is the worst answer it can give. A Steam library is now only treated as an emulator when it actually is one, and a game served by a crack that has run and recorded nothing can be switched to the supported emulator from the panel, with that crack’s configuration renamed aside rather than deleted.

  • A repack’s edition folder is no longer mistaken for another game. A release that ships two builds side by side names one of them EnhancedEdition. Glued into one word, that name sat inside “The Witcher: Enhanced Edition” and was trusted as a match, so AW Next set Little Nightmares II up as The Witcher, DLC list included, in a folder the game never reads. A name made only of edition and packaging words now identifies nothing, and the game’s real title is tried instead. A packaged Unreal build also stops taking a settings folder at its root for its setup, and finds its appid inside the engine’s own steam_settings when the repack keeps it there.

  • Progress achievements show their count on CODEX and RUNE releases. Those emulators keep stats in a stats.ini under [UserStats], with names like kill-headshot, and write CurProgress=0 on every achievement. The stats were never read, the zero was taken for a real value, and without a steam_settings folder nothing said which stat drives which achievement. The stats are read now, and that link comes from the Steam client’s own schema when it has one, kept in AW Next’s cache so live notifications use it too. Nothing is written into the game folder. A GBE schema’s maximum is also read from max_val, where GBE puts it, and a stat that keeps counting past its goal no longer reads 14/10.

  • Game health has a “Progress counters” row for those releases. It says where the counters come from, and when nothing provides them it offers to fetch them through generate_emu_config with the saved sign-in. Steam’s public achievement list is asked first, so a game with no counter at all says so instead of offering a fetch that can only come back empty. Only the counters are kept, in AW Next’s cache. A counter that moves without an unlock now reaches the Watchdog too: it follows stats.ini and reads the achievement list beside it, so the saved state is never replaced by a list of stats.

  • Every long repair in Game health shows its progress. Fetching counters, installing or switching the emulator, the Ubisoft repair and the library re-read that follows a repair all showed a disabled button and nothing else for up to a minute.

3.10.6 - 2026-09-10

Security

  • Archive entries are written by the app, not by its zip library. adm-zip’s own extractors follow a symbolic link that already exists at the destination and write through it, which turns a planted link into an arbitrary file overwrite (CVE-2026-76845). Every published version from 0.5.9 to the current 0.6.0 is affected and there is no fixed release to move to. The one place that extracted anything - the Uplay achievement-icon cache - now resolves the destination itself, proves it stays inside the extraction folder and unlinks whatever sits there before writing, so the vulnerable code paths are no longer reached. A test fails the build if either extractor comes back into the codebase.

Fixed

  • Xbox games are no longer painted with their own page background. The blurred, tinted picture the achievement page uses behind its text was cached under the cover’s file name, in the cover’s folder. Steam and Epic publish a page background and a tile cover at two different addresses, so the two never met; Xbox publishes one picture and hands it back as both, so the tile ended up showing a blue ghost of the game - permanently, because a cover already on disk is never fetched again. Minecraft, Microsoft Solitaire Collection and Grand Theft Auto V all rendered that way. The veiled background now has a folder of its own, and the covers an older build overwrote are cleared once so they come back on the next scan.

  • Epic games use the artwork Epic publishes for them. Every cover came from matching the game’s name against SteamGridDB, so anything obscure enough to miss ended up as a blank tile reading “No artwork found” - while Epic was serving a picture for it in the very catalog response the title already came from. Those pictures are read now, at no extra request, and the whole library gets a cover instead of just the well-known half of it.

  • An Epic game that also exists on Steam borrows Steam’s own capsule. Epic publishes portraits and almost no landscapes, so the landscape grid had nothing of the right shape for games that had a perfectly good one a name lookup away: Disco Elysium, Dead by Daylight, The Callisto Protocol and 80 others in one test library. The same borrowing the Uplay and unconfigured paths already did, at no extra request; a game with no Steam release keeps Epic’s own picture.

  • A tile no longer stays blank when the only artwork is the wrong shape. The last-resort pass that accepts a portrait in a landscape grid started from the shape it had just established was missing, so it gave up before looking at anything else. Epic makes that the normal case: it publishes a portrait for effectively every game and a landscape for almost none.

  • A game you own on Steam says so. Its tile carries the Steam logo beside the ownership mark, like every other platform, instead of the blank space it had before. The mark itself is unchanged, and a genuinely owned game still shows no health dot: there is no emulator there to diagnose.

  • The Game Health panel names stores rather than internal ids. “Game identity” read “epic-official” or “Xbox PC”; it now reads “Epic Games” and “Xbox”.

  • An Unreal game now gets its emulator fix where the engine actually looks. A packaged Unreal build does not load steam_api64.dll from beside the executable: it loads one by explicit path from Engine\Binaries\ThirdParty\Steamworks, six levels down and outside the game folder entirely. Every scan stopped short of it, so a fix landed next to the executable, validated perfectly on screen, and the game kept loading an untouched DLL and recorded nothing. The engine’s own folder is now the first one the fix installs into and the first one steam_settings is looked for in, a setup is only reported as done once every target folder carries it, and a folder holding nothing but Valve’s own DLL is left alone so a legitimately installed Unreal game is untouched.

  • A game you added by hand now shows its progress. A manual entry never read an achievement save, whatever you played and whatever Steam AppID you typed in, so its card sat at 0% with every health check green. It now takes over the emulator save folders found under its AppID, reads them like any other Steam-emulator game, and shows them under “Achievement data”. Leave the AppID field empty and the title is matched against Steam the same way the achievement list already was. The save folder no longer produces a second card of its own, an in-game unlock moves the card straight away instead of waiting for the next scan, and a manual PC entry gets the emulator checks and repairs the rest of the library has.

  • Two games that ship an executable of the same name no longer steal each other’s playtime. Prince of Persia The Lost Crown and the unrelated The Lost Crown both run TheLostCrown.exe, and the file went to whichever title looked more like it, so the installed game’s sessions were counted against a game that was never on the disk, or, once both rows held the name, against nobody at all. The library now records where it found each executable, and the Watchdog settles a shared name by the folder the process actually started from; a stale row that is not in the library any more hands the file over, and the catalogue a pre-3.x install left behind in steam_cache/schema no longer outranks the app’s own index. (#61)

  • The window comes back the size you left it, however you resized it. Only a resize finished with the mouse was remembered, so a window snapped to a screen edge, resized with Win and an arrow key, or reshaped by a resolution or DPI change opened again at its old size. Every shape is saved now, including the one the window is in when it closes.

  • A Uplay R2 game’s achievement screen was almost black. The dark veil meant for a launcher’s raw key art was applied by platform rather than by artwork, so Steam’s already-darkened page background got veiled a second time. The veil now follows the artwork, and the screen shows the same background every other Steam-backed game gets. (#61)

3.10.5 - 2026-09-03

Added

  • Achievement popups can go on a stream, through an OBS browser source. Capturing the popup as a window never worked and never could: the window exists for one unlock and is gone before OBS lists it. AW Next now serves the selected preset as a page at http://127.0.0.1:8082/obs, driven by the notification feed it already broadcast; a Browser source pointed at it shows the same card, the same artwork and the same rare styling as the in-game popup, including artwork that only exists on this machine, and it draws nothing whatsoever between unlocks, so it costs no CPU while the stream runs. The card scales itself to fill whatever size the source is, so there is no size to work out and a bigger source simply renders a sharper card. Settings > Notification carries Copy link and a Preview button that opens the page with a sample unlock, the test buttons fire into the source as well in every delivery mode, and the address takes ?test=1 for positioning it plus duration, sound, a pinned scale and a per-stream preset. Help gains a Stream overlay (OBS) topic with the whole setup. (#59)

  • The forum thread is linked from the app, the website and the README. Releases are announced and discussed there as much as on the issue tracker, and until now nothing in the project pointed at it: it is now one of the links in Help, one line in the site footer, and beside the other project links in the README.

  • The library grid is yours to size. Settings > Appearance > Library tiles adds a slider for how big the cover art is and a slider for how much space sits around it, down to a grid with no gaps at all, plus an independent Show/Hide for the game name, the progress bar, the platform badge, the game health dot and the trophy button. Both sliders apply to every library view, including the two portrait ones, which used to ignore any sizing but their own. Game health keeps a home when its dot is off: it has its own entry in a tile’s right-click menu.

  • First-run setup covers every achievement source. The source step now exposes all 17 source switches available in Settings, including official stores, local emulator formats and the import cache, so a new library can be configured before its first scan.

  • A portable ZIP is built beside the Windows installer. The extracted copy carries its own marker and keeps settings, caches and logs in a data folder beside the executable, without reading or migrating the installed profile.

  • Every release can be checked against VirusTotal by its own hash. The README, the FAQ and the troubleshooting guide now show how to print an installer’s SHA-256 and open the matching report, so a download can be verified without taking the project’s word for it.

  • The project website is easier to discover and follow. Search engines receive a sitemap, robots policy and structured application data; readers get a styled changelog and an RSS release feed generated from this file.

Fixed

  • Clearing the caches no longer removes the imported Xbox games. The list of imported Xbox titles is built from the folders that hold their schemas, so wiping the cache folder did not cost a re-download: it removed those games from the library until you signed in to Xbox and ran the import again by hand. That folder is now kept, like the imported emulator dll beside it, and everything around it is still cleared.

  • Closing Settings no longer reloads the library every time. OK emptied the grid, forgot which AppIDs had failed to resolve and ran a full scan again, so changing a theme colour cost the same seconds and the same network traffic as changing a game source. The panel now compares what it opened with against what it saved, and rebuilds only when something the library’s contents depend on actually moved: the language, hidden achievements, duplicate merging, hiding 0% games, a game source, the Steam account, the watched folders or the profile name. Changing the library view from Settings now behaves like changing it from the toolbar: the tiles already on screen switch over, and only an orientation change re-requests their artwork.

  • A large emulator library no longer loses the names and achievements of most of its games. A scan asks Steam’s hosts about eight games at once, and a library of a couple of hundred saves went through what those hosts allow within seconds. Every refusal after that was read as a fact about the game - “no achievements”, “no name” - so the tile rendered as a bare AppID with an empty list, and rescanning until enough calls landed was the only way out. Requests to each host are now paced and retried when a host asks to slow down, each host at its own rate rather than all of them at the strictest one; a refusal is recorded as “not known yet” and retried on the next scan instead of being cached as an empty game; an achievement list that was successfully fetched is no longer discarded because Steam did not answer what kind of product the AppID is; and a title Steam has no record of is resolved from a source that is not on Steam’s budget, so games Steam never listed still show their name.

    Two things also stopped a rescan from helping. A lookup nothing answered was recorded as “there is no such AppID” and the game was then not looked up again for three days; and because Valve retired the app-list endpoint, any copy of that list still on disk is frozen at the day it was downloaded, so a game released after it could never be in it - and its absence was read the same way. Both now require Steam to have actually answered.

    A game is also no longer discarded whole when only its name could not be resolved. The title and the achievement list come from different hosts, so one can fail while the other succeeds, and the reporter’s logs show 589 games losing both because only the naming half had failed. What was found is now kept: the achievements show, the title falls back to the one already on record, and the next scan replaces it with the real one.

  • Games added through LumaPlay come back. Every one of them vanished from the library: the reader called two things that do not exist, threw before it read anything, and the failure was swallowed where nothing could report it. The schema is now read from the Ubisoft client’s own cache on this PC, and the third-party server that used to be asked first - and sent a copy of every schema generated here - is gone.

  • Xbox achievements carry the date they were unlocked, and their progress. Xbox answers with a date written out in full, which was being read as a number: every Xbox unlock was stored with no date at all. The counters of a “collect 100 of these” achievement were fetched and cached, then dropped before the game screen could paint their bar.

  • A save folder created after AW Next started is watched straight away. A game creates its folder the first time it runs, and only folders that already existed were being watched, so the very first achievement of a newly installed game went unnoticed until the next restart.

  • “Skip this version” is no longer undone by the next change made in Settings. The window keeps its own copy of the settings for as long as it stays open, and saving anything wrote that copy back over what the update prompt had recorded.

  • A scan with no connection no longer takes minutes. Several sources kept asking a host that had just proved unreachable, once per game, each waiting out its own timeout: the Epic, GOG, Ubisoft, Exophase and Steam lookups, the emulator tool downloads and the automatic fix list now stop asking after the first failures and answer from what is already on disk.

  • A game emulated by a GBE Fork build that ships its configuration templates unrenamed is read correctly. It was taken for a classic Goldberg setup, so its saves were looked for in the wrong folder and a working game reported having none.

  • A Ubisoft game the store itself installed is left alone by the automatic repair. The check that refuses to touch a registered Ubisoft Connect folder was applied when repairing by hand but not when repairing on its own.

  • The library no longer re-downloads what it already knows is missing. The memo that remembers an AppID Steam has nothing for depended on a Steam endpoint that has since been retired, so it was never written: every scan paid the full lookup for those games again.

  • A game with several sources keeps the progress of its counters. An achievement whose counter sat at zero was left with no value at all rather than zero, so its progress bar disappeared from the in-game overlay.

  • One unreadable folder no longer ends the whole scan. A folder that could not be read stopped every folder after it, across every emulator, with one line in the log.

  • Playtime cannot be corrupted by the clock. A session was measured against the wall clock, so an automatic time correction while playing could add a negative duration to the total and turn it into a nonsense figure.

  • Logs stop growing without bound. The size limit was only checked when the app started, so a file could grow far past it for as long as the app stayed open - which is days.

  • The executable a game is tracked by is still found once the library finishes loading. Those lookups run in the background, and the browser they use was shut down the moment the list was on screen, so the ones still running were cut off and filled the log with errors. They are now let finish, and no more than three run at a time.

Improved

  • A monitor that is only half working now says so. Its heartbeat proved the process was alive and nothing more, so a live watcher that failed to start left AW Next supervising something that reported itself healthy while tracking less than it should. Each one now reports how it went, and a failure reaches the app’s own log.

  • A live watcher can no longer lose its baseline to a crash. The file that remembers what a game had already unlocked was written in place by seven separate copies of the same code; a truncated one reads as “nothing unlocked yet” and announces every earned achievement again. It is written atomically now, from one place.

  • What AW Next hands to the program you set as an Action. That program was receiving the key that protects the saved emulator password and the Xbox sign-in on this PC, along with the rest of the environment. It now receives only what it needs.

  • Archives are checked before they are opened. Every emulator package, fix archive and tool download is now read through the same check, which refuses an entry that would write outside the folder it is being extracted into. Two of the five did no checking at all.

  • A corrupted game index repairs itself. The file that remembers what each game is was kept as-is when it could not be read, and playtime and Game Health then stayed blind to every game for good. It is now set aside and rebuilt by the next scan.

3.10.4 - 2026-09-01

Added

  • The Xbox PC and Epic sources offer the same three states as Steam. None, only the games installed on this PC, or everything the account owns - instead of an on/off switch that always meant everything. Both open as a dropdown, as the Steam row does.
  • Epic can list what your account owns. It read the local install manifests and nothing else, so a PC with no Epic game installed showed no Epic game at all. With Owned selected it lists the account library and brings each game its full achievement list, its unlock state and its rarity.
  • The game screen carries the tile’s two other marks as well. Whether the achievements are healthy and what the store says you own were readable in the library list and nowhere else, so opening a game dropped both. The same badges now sit beside its name, and read as a card does: the health mark for a game tracked through a local save, the owned mark for one the store itself reports, never the two at once.
  • The game screen says where its achievements come from. The library tile carried the source badge and the game screen carried nothing, so a game listed by an account read exactly like the local copy sitting beside it in the list.
  • The update prompt can show you what is in the version first. “A new version is available” asked you to decide without saying what changed. A View changelog button opens the release notes and brings the question back once you have read them.
  • What AW Next stores on your PC is now encrypted with a key only your Windows account can read. The emulator Steam password and the Epic and Xbox sign-in tokens were scrambled with a passphrase written in the source of a public repository, which is obfuscation, not encryption. Each install now generates its own key and keeps it under Windows DPAPI. Existing files are read and re-written in the new format on their own; nothing has to be entered again.

Fixed

  • A library served from the last scan is no longer missing every label on it. Reusing the stored library puts it on screen in a few hundred milliseconds, ahead of the interface language file the captions are read from: the cells arrived with no “Achievements” or “Last played” caption at all, and a game never launched said nothing where it should have said so. Those labels are filled in as soon as the language is there.
  • Exporting the Custom theme works again. The button called a function that no longer exists, so a Custom theme with no name given stopped on an error nobody could see instead of asking for the name.
  • A game merged from several sources stops reporting an error on every scan. Each of a game’s records is read with the reader its main record uses, and one that carries no save folder - a Ubisoft entry beside a Steam emulator save, say - was still sent to the file reader, which then reported a save folder literally named “undefined”. Nothing is read from a record that has none, and every message about a merged game now names which of its records it is about.
  • The loading bar in the footer actually moves again. It was pinned to an inline width of 0%, which overrode the rule that gives the sweeping bar its size, so a cold start showed an empty, motionless bar reading “0%” for the whole scan - the longest wait the app has. It now sweeps and names what it is doing, and only switches to a percentage once games start arriving.
  • A slow answer from GitHub no longer looks like a corrupted download. The update check read the words “checksum mismatch” out of our own release notes, which the failed request had copied into its error, then cleared the updater cache for nothing and ended on a dead end offering a manual download. A check that cannot reach GitHub now says so plainly and retries on its own.
  • A finished or failed update no longer leaves “downloading update 0%” in Settings. The two update labels only knew how to paint a download in progress, so nothing ever wiped the last line they had shown, and re-checking put it straight back instead of replacing it. They now follow every state the updater reports, including the idle one.
  • The Xbox PC import brings your library back. It answered “0 created, 0 updated, 0 failed” for everyone whose Xbox games are not installed on this PC: every request carried an unreadable version header, Xbox refused it, and the fallback answered with an empty history. Games the account has only played elsewhere now arrive with their achievements, unlock state, rarity and artwork. A game the Xbox app merely saw running is kept when the history credits it with achievements, and an import that adds nothing now says how many titles it found and how many carry no achievements at all.
  • Xbox games show their pictures. Store artwork is served over plain http, which the window refuses, so every imported tile and header would have been blank; a re-import no longer blanks a picture Xbox answered without either. Achievement art was fetched at 1920x1080 - 800 MB of pictures for one game, painted into a 64px box - and every icon of a game shared one cache file that each download overwrote. It is asked for at the size it is drawn, each icon gets its own file, and the slot follows the 16:9 shape Xbox actually draws.
  • One game is one tile, and the record kept is the useful one. A store id lines up with no Steam appid, so a game owned on an account and installed here showed up twice: the local copy at 0%, and the store entry holding the unlocks. What survives now is what serves you best - a copy the scan found installed, then a copy on this PC, then Steam, then any other listing - and the other record is merged in rather than dropped, so unlocks earned on a store and unlocks earned on an installed copy add up on the same tile.
  • A game listed by an account carries its own badge. Xbox was presented as a Steam game, and had none of the owned mark the Steam, GOG, Ubisoft, Epic and EA entries carry.
  • Epic could not reach its own services from the window. Epic answers no CORS header, so every schema and library request failed with no explanation and the source came back empty. Those requests are made from the main process now.
  • Achievement pictures are the game’s, not a padlock. Epic ships a padlock as its locked picture - the same one for every achievement of every game - so the real art is shown for both states. The veil over a game’s background was painted with opaque theme colours, which replaced the artwork with a flat blue rectangle instead of toning it down.
  • A game whose store spells its name differently keeps its cover. An edition tag, a trademark mark, a sequel numbered in roman or an accent was enough for an empty tile. The matcher stays strict - a wrong cover is worse than none - so the query gives instead, and a last pass takes an entry carrying the whole name plus words of its own only when exactly one does.
  • Game Health can now find a game it only knew by its save folder. Locating the executable also settles which folder the game is installed in, so the emulator setup, the Uplay layer and the crack loader are checked instead of skipped as “not installed”. A folder that holds a whole collection (a library root, steamapps\common, a drive root) is never taken for one game.
  • A repair no longer leaves a stale report on screen. Repairs that write files now have the library re-read before the report is painted again, so the panel tells the truth without a manual refresh. Choosing the executable re-runs the report on the spot instead of jumping to another tab.
  • The game uninstaller runs with its own window again. A silent uninstall gave no sign of progress and no way to answer a prompt, so one that stalled looked exactly like one that did nothing. An uninstaller that requires administrator is now started through Windows itself, with the UAC prompt, instead of failing outright; a dismissed prompt is treated as a decision, not an error.
  • The “Repair games” button no longer wraps onto two lines. The row beside it already says which games are repaired, so the button keeps the short verb in every language.
  • Every “Copy” button copies again. The Steam AppID, the Ubisoft product ID, the achievement data paths and the Game Health technical details all silently did nothing on the new Chromium runtime, which stopped letting the window reach the clipboard directly. The tick that follows now waits for the answer: another program can hold the clipboard open, and a button that ticks anyway teaches you to paste something that was never copied.
  • A save folder that cannot be read says why. A locked or corrupt achievement file was reported as “no achievement file found” in that folder, which sent people looking for a file that was sitting right there. The real reason is now named.
  • A failed Xbox sign-in is no longer silent about it. A session that could not be written to disk signed you out again at the next launch with nothing anywhere to explain it.

Performance

  • A scan no longer signs in to Steam to look up a game nobody asked about. Warming the app-list cache went through a full lookup of appid 753, and since Steam retired that list the lookup always missed and fell through to a Steam client sign-in and two store requests whose answer was thrown away - once per name it had to resolve, on the critical path of every scan. On a cold start that step took 9 s; it now takes under half a second.
  • A refresh no longer waits on the network for every game it already knows. A library of a hundred owned games asked Epic who was signed in, read a second copy of every schema and queried each game’s unlock state, one at a time: ninety seconds of a scan. The account is asked once, a schema is read once, and a known unlock state is served from disk and refreshed behind the scan.
  • A cover already on disk is read where it is needed. Asking the main process for each one put a round trip per tile on the thread already serving every icon, and a background that had been blurred once was blurred again on every scan.
  • A launch that changed nothing no longer rebuilds the library. Every start walked every game folder and reloaded every game, six to fifty seconds of disk and network, to arrive at the list it had shown the moment before. The app now remembers the folders and unlock files the last scan read, and when none of them has moved it serves that library straight away - the same 155 games were ready in 0.3 s instead of 6.5 s. Anything installed, removed or unlocked while the app was closed still triggers a real scan, as does a manual refresh, a new version, or a library older than six hours.
  • The window opens before the rest of the startup work. The login-item sync and the stale-monitor sweep ran first and the window queued behind them; they now run while it loads.
  • The scan’s search and download engines load only when a scan needs them. They were pulled in with the parsers at page load - about eighty files read for work a reused library never does.
  • The window is on screen more than twice as fast. The startup path had never been measured past the point where the window already existed, and four things were hiding in front of it: the updater was read in full before anything opened, so was the whole achievement parser, the sweep for leftover monitors blocked on a netstat call that can take over a second, and the window then asked for its own settings over that blocked channel. Each of them now happens when it is needed, or beside the window instead of in front of it. Measured on a cold profile, 1.5 s to 0.6 s, and the work the main process does before it can open a window went from 3 s to under 0.1 s.
  • The parser loads 104 files where it loaded 260. The hashing and XML libraries, like the search and download engines before them, are read when something actually parses a game. The zip readers behind theme and preset import went the same way.

3.10.3 - 2026-08-28

Improved

  • The antivirus alert is announced before it happens, not explained after. Automatic repair writes emulator files into game folders during a scan, so the alert that follows arrives with nothing on screen to connect it to a setting switched on days earlier. Turning the setting on now says exactly that first, and offers to allow the folder in Windows Defender before anything is written. If it was already on, the same thing is said once, the first time it is about to act, with the exclusion and the off switch beside it. A quarantine hit during an automatic repair is also reported now: only the downloaded Goldberg package used to be, so a blocked Ubisoft loader failed in silence.
  • Nothing is written, or announced, behind a hidden window. AW Next spends most of its life in the tray, where a dialog is one nobody can see and an answer that never comes. Automatic repair now waits for the window to be open before it says anything or writes anything, rather than stalling on a modal nobody can answer, or repairing games unannounced.

Website & Docs

  • The antivirus false positive is explained where people look for it. The README, the FAQ and Troubleshooting now say plainly what gets flagged and why, what triggers it, that nothing is written unless you asked, what an exclusion does and does not cover, and how to check the files yourself.

3.10.2 - 2026-08-27

Added

  • Ubisoft games that never ask for their achievements can be unblocked. The loader answers the game’s session request from an ini key it leaves empty, and several titles read that emptiness as “signed out” and stop calling the achievement API at all, so the setup looks perfect and records nothing. AW Next now offers a placeholder session, only when the loader log shows the game asked for nothing, and offers to take it back out if that did not change anything.
  • A game’s own icon is used when it is a good one. An executable carrying a real 256px icon, the picture Windows paints for it on the desktop, now provides the game’s logo ahead of anything looked up. It also works for games with no store artwork at all, which used to be exactly the ones left with an empty square.

Fixed

  • Game logos came back empty. A lint pass left a block comment open, which turned the two declarations below it into prose. Every square logo went with them: the page header, the notification card, the overlay and the test notification.
  • The Steam parser threw whenever it ran outside the window. Five lookups reached for a channel that only exists in the renderer, so from anywhere else they failed with an unreadable type error, once per game.
  • The offline achievements fix was offered on games that cannot use it. The check matched a name the loader exports rather than the setting itself, so older Ubisoft loaders, which have no such setting, were given a line that did nothing and were then blamed for it forever. The line is now taken back out on sight.
  • A repair stopped at the emulator’s door. The loader reads the achievement list once, to create its own copy, and skips it on every later launch. A repair could rewrite that list, a language change or achievements added by a game update, and the game would go on showing the old one. The copy is now brought in line, keeping every unlock.
  • Reading a save file rewrote it in memory. Both SSE parsers reversed a four-byte slice, which is a view over the same bytes, so a second parse of the same buffer read every CRC and unlock time byte-swapped.
  • Four Watchdog listeners bound to nothing. A callback parameter in watchdog.js shadowed the monitor module it shares a name with.

Improved

  • An antivirus is named as an antivirus. These loaders replace a game’s store library, which is what detection engines look for, and Windows Defender takes every copy at once. That now gets the explanation, an offer to allow the folder in Defender and a button to put the files back, instead of a file picker asking for a package you never had.
  • The health buttons say what they do. “Uplay R1/R2” named a loader generation and meant nothing to whoever was reading it; the generation stays in Technical details. The offline achievements row offers enable or disable from what is actually on disk, and reads “launch the game once” rather than judging a fix that has not run yet.
  • The loader log setting says what turning it off costs. It names the two things that stop working without it and states that the file is capped, so nobody switches it off over its size. The loader appends to that file without ever rotating it; AW Next now caps it.
  • oxlint runs on every push and after every edit. It was installed and nothing ran it. The curated rules found the two save-file and Watchdog bugs above, an uncleared timer in the hotkey recorder, and dead code across the app; every silenced rule now carries the reason it is off.

3.10.1 - 2026-08-27

Added

  • Many more Ubisoft games can be set up. Titles from before 2019 call the older Uplay R1 API and can never load an R2 loader, so Assassin’s Creed Origins, Odyssey, Unity, Rogue and Black Flag, the Far Cry and Watch Dogs entries of that era and the South Park games could not be repaired at all. AW Next now reads which generation a game asks for, ships the matching loader and watches its save folder, including games that resolve the loader at runtime. Titles whose achievement names carry no objective number - Brawlhalla, The Crew 2, ZOMBI, Champions of Anteria, Roller Champions and the Ubisoft-published indies - are matched by title against Ubisoft’s own public achievement data instead of being refused outright.
  • Games for Windows LIVE games report their achievements. A GFWL title running XLiveLessNess kept its unlocks in a profile AW Next could not read, so the whole era was invisible. Those profiles are now read, and the achievement list, its texts and its icons come out of the game’s own executable, so nothing has to be downloaded. The Watchdog watches them too and raises live notifications.
  • FINAL FANTASY VII (2013) is read. That re-release predates Steamworks achievements and keeps its 36 unlocks in an 8-byte bitfield beside its saves, found in Documents without adding the folder by hand.
  • Every theme can be edited and saved as your own. Selecting any theme - a built-in palette, one you saved, one somebody sent you - opens the editor on its colours. Save theme beside the name field keeps it: the same name updates that theme, a new one creates a second and leaves the first alone.
  • Smart Find reads your launchers. It now also offers the folder the Epic manifests, the GOG Galaxy and Ubisoft Connect registry entries and the Xbox games pointer already name, so a library called D:\Epic Games is found without scanning. Nothing is added without your approval.
  • Update progress in the title bar, with a Cancel. A chip beside the Watchdog indicator shows the download percentage, then that the update is ready, then that it is installing - and carries a Cancel while the file is downloading.

Improved

  • The list of Ubisoft games updates itself, and a game missing from it can still be paired. Ubisoft’s public catalogue and the community id list are now read and cached, the file shipped inside AW Next staying as a starting point. A game neither names is matched to its Steam release only when a single Steam game carries the same title: a spelling slip still resolves, while Assassin’s Creed is never taken for Assassin’s Creed II, nor Rainbow Six for Siege. Measured against the 274 pairings the shipped list covers: 217 found, none wrong. Failing that, the product number the game itself hands the loader is read back from the loader’s log and remembered per installation.
  • Diagnose says why a valid-looking setup records nothing. A game that never asks the emulator to unlock anything and one that asks with an objective number the schema does not carry used to look identical. The loader’s log is the only record of which it is, so it is on by default, has its own settings row, and Diagnose reads both loader generations and names the missing numbers.
  • A game served by ALI213, OnlineFix or the like is named after it, instead of “Goldberg”. That word named a shape on disk, so every emulator producing that shape was reported under it (ZOMBI was shown as GBE Fork while its own dll says ALI213). The shape still decides where saves are read from; the emulator’s name is carried alongside it and is what the reports show.
  • A game already served by another emulator is left alone. A Ubisoft game sold on Steam ships both layers, so a Uplay loader lying in the folder no longer means the Uplay layer serves its achievements: Game health used to say “achievement list missing” and offer to install a loader over a game that already worked. AW Next also stops writing Goldberg settings beside ALI213, OnlineFix, TENOKE, SmartSteamEmu and the rest, whose empty achievement list then read as a fault; a folder it left behind is taken back when everything in it is its own and holds nothing. Both refusals now name the emulator that is the reason.
  • A repair package the antivirus quarantined says so, and offers a way out. Steam emulators are flagged by most engines, and a package removed between being downloaded and being read surfaced as a temporary file name and nothing else. A window now explains what happened, states that the file is safe, names the GSE Fork repository it came from, and where Windows Defender is the one blocking, adds the exclusion and retries. The automatic repair reaches the same window instead of failing silently in a log.
  • The theme editor’s Reset puts back the theme you are editing, and a built-in can be exported once you have given it a name of your own.
  • Emulator data folders are resolved instead of assumed. RPCS3 follows vfs.yml, a portable install and RPCS3_CONFIG_DIR; ShadPS4 is recognised from the emulator, its user folder or game_data; Xenia follows storage_root / content_root. A relocated folder can be added directly, with no emulator executable near it.
  • Installing an update no longer looks like a crash. The app says it is installing in the title bar, the tray and the taskbar before it closes, and the installer runs with its own progress window instead of nothing at all.
  • The preset designer is one column with a pinned preview. The popup stays on screen while the controls scroll under it, eight fine-tuning properties moved behind the Advanced disclosure their group already had, and the jump chips are gone.
  • Compare draws all four states two by two and follows the Normal/Rare/100%/Progress switch, which previously did nothing in that view.
  • The Settings window grows with a large display instead of staying pinned at 1040x590, and the theme rows show each layer’s full explanation rather than an ellipsis.
  • The dot beside a game’s name reports its health, not whether one file is on disk: green when the achievements look healthy, amber when something is worth a look, red when they are not being tracked at all. Its tooltip names the button that opens Game health, and opening that panel corrects the dot with the full report.
  • The designer’s Create the preset row has its own room under the last group of controls, and the messages that only describe what the controls now show (“Based on Poster”, a random design) are no longer reported in the green reserved for something that was actually saved.
  • Five built-in palettes were removed - Cyberpunk, Ember, Hacker, Burgundy and Champagne - leaving thirteen. Three had barely readable text and two duplicated better palettes; anything using one falls back to Steam Blue.

Fixed

  • The update chip stops saying “Checking…” when there is nothing to install. Being already up to date is the one answer the updater follows with no further event, so the title bar sat on the checking state until the next restart.
  • The Epic request no longer carries a body on a GET. The key was passed as undefined rather than left out, which some fetch implementations refuse outright instead of ignoring.
  • A whole game no longer shows as 100% complete on its first launch. Some shipped schemas declare a minimum and a maximum of 1 on every row, so the emulator writes “1 / 1” for achievements nobody earned. The overlay now reads a maximum of 1 as plain locked/unlocked, like the list and the toast.
  • Epic fallback schemas are described, and in your language. The direct Epic request asked for English and read only the locked texts, leaving titles that ship the unlocked half with blank descriptions. It now asks in the language AW Next is set to and takes whichever half is filled.
  • The emulator data generator can no longer hang a scan. A run that reached Steam and then went silent held its whole budget; a second budget ends a run that has said nothing at all, killing the process tree rather than the launcher in front of it.
  • A connected Steam account stays connected. The access token Steam hands out lasts a day, so Settings reported the account disconnected every morning and asked for the password again. AW Next now keeps the long-lived refresh token and mints a new access token silently, with no window and no sign-in; only a refusal from Steam counts as disconnected.
  • Global rarity percentages come back. Valve’s percentage endpoint intermittently answers with an empty list, which left the toast and the game page with no rarity at all. The request is retried in the spelling that does answer before an empty reply is believed.
  • Ubisoft games whose Steam achievements are numbered 001, 002, … now record their unlocks. The Uplay loader rebuilds every key from the objective number with no leading zeros, so those setups sat at 0% forever while reporting themselves valid, in the app and in the Watchdog alike: Assassin’s Creed Origins and Odyssey, both South Park games, Starlink, Transference and Trials of the Blood Dragon. Unlocks already recorded are picked up on the next scan, and re-applying a fix that changes the keys lets the emulator rebuild its save. The convention this rests on, that the number ending a Steam achievement name is the Ubisoft objective id, was checked against Ubisoft’s own data on 409 achievements across eight titles, agreeing on all of them.
  • A repaired Ubisoft game records its unlocks, and looks tracked while doing it. The fix redirects achievements into the folder the Steam emulators use, which made AW Next read them as Steam unlocks: every key missed the achievement list and the game stayed at 0% (Assassin’s Creed Origins reported 67 saved achievements it could not place). The same confusion made Game health call a working Uplay setup “no emulator here”, and the tile’s status dot ask for a steam_api.dll a Ubisoft game never has. All three now read the loader and its config instead.
  • The folders that actually hold unlocks are watched. An ALI213 game raised no live notification, because those emulators write either Achievements.Bin or Achievements.ini and only the first was watched, and they keep unlocks inside the game’s own folder rather than under %APPDATA%. The game libraries are now searched for those configs, a folder being proposed only when its config names the game it stands in for, and the R1 loader’s save folder joined the scan. On the machine this was found on it picked up ZOMBI and eight Jackbox packs.
  • Ubisoft Connect’s achievement cache is found again. AW Next looked under one fixed %ProgramData% path while the launcher keeps the cache in its own install folder, now located through the registry with the old paths as fallbacks.
  • A repack folder named after the site it came from is identified again. A trailing domain such as ... v1.52 RexaGames.com was kept as part of the title, leaving the game with its folder name, no artwork and no store page. Folder names are also matched against the Steam spelling of a title, not only the Uplay one.
  • Ubisoft games with no Steam release appear under their own identity, with Ubisoft’s boxart, instead of a card named “null”: their missing Steam ID is recorded as empty, which the scan read as if it were an ID. Rayman 3, the four Settlers History Editions, Might & Magic VIII and IX, Prince of Persia, the Discovery Tours and 30 others were affected.
  • The launch executable is found for repacks and for Ubisoft installs. A patched copy in a Crack/NoDVD/Таблетка folder counted as a rival candidate, a bundled UbisoftConnectInstaller.exe, VC_redist.x64.exe or 7za.exe counted as a game, and an unconfirmed path from an earlier scan blocked detection from running again. The stored candidate list also survived rule changes, so a shipped fix did nothing for an already scanned folder.
  • A game sitting directly in a library folder is no longer anchored on that folder. Identified only by an emulator config, AW Next walked up one level looking for the real game root, and the check for “does this look like a game folder” answered with the first other game in the library, so every folder-based repair aimed at that game’s files (seen on ZOMBI). The same question anchored a game whose emulator sits in Binaries/Win64 on its engine folder; both now climb by folder name, and Unity’s “_Data" counts as engine internals. The game also stops appearing twice, since the crack loader's own config states the Steam ID it stands in for.
  • A Steam application or tool is no longer counted as a game. DSX, Lossless Scaling, Wallpaper Engine and SteamVR sit in the library like any game you own, so starting one recorded playtime it never earned and left AW Next believing a game was running all session. Steam’s own local catalogue is asked what an appid actually is.
  • A tall preset and the Compare view are no longer cut off: the preview now fits in height as well as width, and takes the height the design actually needs.
  • The Screen view shows the whole display. The mock screen was drawn as wide as the stage, which made it far taller than the stage can be, so its top and bottom edges - the ones the position picker exists for - were clipped away and a popup anchored top or bottom simply did not appear. The display is now sized to fit, and the stage is taken in with it - same size, no padding - rather than sitting in a band of transparency checker that framed a screen instead of showing one.
  • The blurred band at the bottom of Settings is gone. It was meant to keep a card sliver from landing mid-badge at the bottom edge; what it actually did was leave the last line of the pane out of focus for no visible reason. The band under the pinned headers at the top stays.
  • The preset designer would not scroll with the pointer over the bottom of the card, because the wheel handler claimed every row carrying its layout class.
  • Deleting a theme left it in the picker and needed a second click; the list is now read back after the folder is removed.
  • An imported theme never survived a restart - the settings validator did not know about imported themes and rewrote the choice back to Steam Blue every start.
  • Poster’s white text over a photograph is readable: the picture gives way instead of the type carrying a 1px outline.
  • Translation fixes across nineteen languages. “Simple” and “Advanced” were still the English words in seventeen locales, the first-run guide carried machine-translation errors (Italian Vicino and Japanese 近い for Close, Spanish como funciona, Simplified Chinese 轮廓 for Profile), Czech, Slovak, Ukrainian and Turkish read “playtime” as media playback, and the Smart Find explanation was stale in seventeen files. French, German, Spanish, Czech and Portuguese also each mixed two levels of formality; each file now keeps one.
  • Portuguese said conquistas in twenty-one places and proezas everywhere else; German said both Theme and Design for the same feature; Czech and Slovak said achievement in forty-five places and úspěch / úspech in the rest, including the label at the top of the window. Each now uses one term throughout, and the Polish website says presety like the Polish app rather than zestawy.
  • Four Slovak strings were written in Czech (Vzácný rather than Vzácny), one of them the wording of every rare-unlock notification.
  • The websocket broadcast listens on 127.0.0.1 again. The Settings row is labelled Websocket @localhost:8082 and the guides promised the local machine, but the listener was given no host at all, which in Node means every interface - so the feed was readable, unauthenticated, by anything on the network that Windows Firewall let through. It carries game and achievement names.
  • The installer no longer carries the repository’s own development helpers - the patch-package sources, the one-line launcher and the local agent tooling were all being packed into app.asar.
  • HDR souvenirs no longer blow out. Roll-off now happens in perceptual space and starts just below ordinary white, so the desktop and game UI pass through untouched; a real HDR capture goes from about 10% pure white to 0.1%, keeping fourteen distinguishable levels above white where it had one.

Performance

  • The first scan after a launch is as fast as the ones after it. Where a game’s schema sits on disk (a folder walk, up to three seconds per game) and which AppID a title resolves to (five to twelve seconds of the scan) were remembered in memory only and paid for again on every start. Both are now kept on disk, an oversized install can no longer hold the walk, and a manual refresh still forgets them. The progress bar sweeps while the Steam ownership call runs, and that call gives up after fifteen seconds rather than holding the library forever.
  • AW Next costs less while it sits in the tray. Hiding the window left 211 MB resident across the app, the GPU process and the network service until Windows needed the RAM badly enough to take it; those working sets are now emptied on the way into idle, once per transition and never on a timer. The overlay hotkey no longer keeps a PowerShell host alive for the whole session, and the Steam achievement-group cache keeps its 300 most recent games instead of growing all session.
  • The background library scan waits for you to stop playing. It loads the whole achievement engine into the tray process and walked every library folder mid-game every fifteen minutes, for work nobody was waiting for. It now holds while a game is running and resumes shortly after it exits, with a ceiling of about two hours so a background process mistaken for a game cannot suspend discovery silently.
  • A screenshot souvenir is written about 1.6x faster (1440p: ~570 ms against ~920). The PNG no longer carries an alpha channel a screenshot never uses, and the compression level was measured rather than left at the library default.

Website & Docs

  • The Ubisoft/Uplay settings section, its dialogs and the documentation name both loader generations instead of R2 alone, with the new logging switch translated in all 28 bundled languages. The Uplay page covers both generations, states how an achievement key is rebuilt from the objective ID, and names the loader’s own upc_r2.log / upc_r1.log beside the DLL. Save paths, key prefixes and architectures stay decisions AW Next makes from the install.
  • The home page has a Themes section that repaints a live sample in ten of the built-in palettes, and the site is now fully translated into nine languages - Italian, Polish and Japanese joining French, German, Spanish, Portuguese (Brazil), Russian and Simplified Chinese.
  • The Sources grid shows each platform’s own mark, drawn as a mask in the accent colour, instead of two-letter abbreviations.
  • Sending a preset or a theme is a form you finish, not a file you drop. The package fills in the name, description, tags and credit as soon as you choose it; only the name is required, and nothing leaves the browser until you press Publish.
  • A theme is photographed on a fixed backdrop in a rounded window, so a see-through theme no longer renders as a washed-out card. The gallery card and the Settings preview are the same picture.
  • The two gallery guides became one page, The community galleries, and “Where your data lives” was rewritten against what the app actually writes.
  • Fixed a doubled focus ring on the submission forms and a squeezed Download button in the mobile menu.
  • The changelog was rebuilt from the git history, from 3.0.0 to here, at one to three sentences per entry instead of paragraph-length ones. It is a third of its former size, 3.0.4 is no longer missing, and the categories are Added / Improved / Fixed / Compatibility / Performance / Website & Docs.
  • The nine Settings screenshots were retaken against the current app: they were still showing version 3.9.2 and predated the theme editor and the designer work.
  • The guides were checked against the running app: the Steam account connection, the ownership badges, per-game notification appearance, emulator data-folder resolution, the update chip and the theme editor’s Save were documented, and “Where your data lives” gained a What leaves this PC table.
  • The locale linter gained three rules: a word translated under one key and left in English under another, English prose in a locale that does not use the Latin alphabet, and a bundled language missing from steam.json. The guides bar drops its brand word on a phone so its five links fit.

3.10.0 - 2026-08-23

Added

  • A theme is one portable file. Settings, Theme gained Import and Export: an .awtheme carries the colours, gradients, effect settings and any background image. Import shows the app drawn with that theme before installing anything, and the file holds no stylesheet, markup or script.
  • A community theme gallery, at gallery/themes. Each entry is one .awtheme, and the picture on the card is rendered from the theme rather than sent by the submitter. It ships with Slate Mint and Paper Ink.
  • Each game can use its own notification appearance. The per-game tools panel overrides the preset, position, sound and scale independently, each defaulting to the global value, with the same test previews as the main notification settings.
  • An optional Steam account connection. Connecting shows your real library, Steam Family included, and can hide games you no longer own. Installed and Family games are never hidden, so an outage or an expired token cannot empty the library.
  • Ten more interface languages, bringing the bundled set to 28. Korean, Traditional Chinese, Dutch, Swedish, Danish, Norwegian, Finnish, Greek, Indonesian and Vietnamese, each using the vocabulary its own Steam client uses, with controller wording and Intl formats to match.
  • RPCS3 trophies now raise live notifications. The tracker watches each trophy set’s state file under the saved RPCS3 folders, with a baseline so an existing profile does not replay its whole back catalogue.
  • Steam Achievement Notifier themes can be imported. Settings, Presets reads a .san file (or an unpacked usertheme.json) and converts it into an ordinary editable preset. Nothing in the file is executed, and whatever could not be carried over is listed by name.
  • HDR screenshot souvenirs. When HDR is active on the primary display, a one-shot Windows Graphics Capture helper reads an FP16 frame and tone-maps it to a normal sRGB PNG. Automatic / Off, with every failure falling back to the standard capture.
  • Six library views: landscape cards, portrait covers, compact variants of both, a list, and a details table with achievement count, latest unlock, last session and playtime. The choice is saved and every view keeps the same cards, filters and menu.
  • The Play button on game tiles can be hidden, without leaving a gap; the right-click Launch game action stays.
  • A badge for a game confirmed bought on an official store - Steam, GOG Galaxy, Ubisoft Connect, Epic or EA - beside the existing Steam Family and “no longer in your library” badges.
  • Game Health repairs compatible Uplay R2 setups directly, with the resolved mapping, loader capabilities, architecture and exact issue codes in its technical report.
  • An unmapped Uplay R2 game can be linked to its Steam release. Automatic catalogue resolution is tried first; ranked matches and a local steam_appid.txt remain confirmation-only, and a validated manual choice is remembered.
  • Uplay R2 repair is self-contained. Its four loader DLLs ship as app resources with a recovery archive, and the private cache accepts newer user-selected DLLs after a PE architecture and capability check.
  • Settings splits Steam / GBE Fork and Ubisoft / Uplay R2 under Emulators, the Uplay view keeping package status, DLL import/restore and one confirmed repair action.
  • The preset designer gained a control filter, a jump chip per group, undo/redo over whole designs (Ctrl+Z / Ctrl+Y), renaming, background textures, icon shapes, an exit curve, a state tint, your own picture as a background, a text outline, a pulsing glow and six more starting points.
  • The achievement page shows the game’s real square logo, sourced from the community icon set or cut from the artwork the game has, instead of Steam’s 32x32 clienticon.
  • Settings, Help gained a row of links to the guides, the FAQ, troubleshooting, the issue tracker and the latest release.

Compatibility

  • More Steam-compatible layouts, read from evidence rather than guesswork. RAZOR1911’s plain-text save (%APPDATA%\.1911\<appid>\achievement) is a new source, watched live; flat EMPRESS saves under %APPDATA%\EMPRESS\remote\<appid> are found; a GBE setup that renames its save root through saves_folder_name is followed.
  • Artwork the game already has on disk is used before the network (#38), for the achievement list, the notification card and the overlay alike, so a machine that cannot reach the Steam CDN no longer shows a page of spinners.
  • Nemirtingas Epic and Galaxy saves are watched live again. Both watch entries carried a literal */*/ glob that never exists on disk, so both were silently dropped at startup.
  • A DARKSiDERS, Hoodlum or Skidrow game configured with UserDataFolder=mydocs no longer breaks its whole folder scan - that branch called a helper that was never imported.
  • Live notifications decode the same save formats the scan does: RLD!’s hex unlock time, CreamAPI’s truncated timestamps, and a locked entry whose time is the string “0”.
  • Uplay R2 INIs receive supported locale codes (fr-FR, es-MX) instead of Steam language ids.

Fixed

  • Slovak users read English achievement titles from every official source. Slovak was bundled as an interface language but missing from the language table of all five official sources and from the Watchdog’s copy of the Steam list. Every bundled language is now checked by the locale linter.
  • The Watchdog announced achievements with wording the app had abandoned. Its hand-maintained copy of the notification strings is generated from the locale files now, and the suite compares its content rather than only its keys.
  • Played time was shown in English to Simplified Chinese and Brazilian Portuguese users, because the derived language tag was not one the duration library recognised. Durations, dates, counts and percentages now come from the platform’s own Intl.
  • The rarity colour labels in the designer were upside down - bronze was “Scarce”, silver “Uncommon” - in English and in every language.
  • The preset designer’s live preview drew an empty card: one of the two script hashes its content policy pins had gone stale, so the engine was refused silently.
  • A game with no achievements, or one that is not installed, is no longer hidden. Fifteen owned games were found on every scan and then dropped; they now appear labelled “No achievements”.
  • Owned and installed Steam games no longer have to be played to appear. The source read only per-game statistics files, which exist once a game has reported statistics - 59 apps hidden on one library. Installed games and the account’s registry entries are read too, filtered against Steam’s local catalogue so DLC, demos and tools stay out.
  • Artwork stored as a schema token (“header.jpg”, a bare content hash, or a hashed store_item_assets path) is resolved through the CDN list instead of being handed to a download that cannot succeed - which is what left most Goldberg entries with a blank tile.
  • Covers no longer appear in the wrong shape: a tile waits for art of its own orientation and falls back to the other only when no source has any.
  • “Could not fetch artwork” is shown only when a source really could not be reached, and a cover that failed during a momentary outage is retried on the next pass instead of being remembered as missing for the session.
  • With no connection the library is the same as with one: Steam games no longer disappear because the profile-visibility check could not run (51 of 207 games on one offline scan), and the chosen Steam account is not reset to None when the account list cannot be fetched.
  • Steam’s product info can stop answering without failing, holding every scan worker to its 30-second deadline; it is now bounded and skipped for a few minutes once it goes quiet.
  • Uplay R2 no longer picks a 64-bit loader without evidence, official Ubisoft Connect games are no longer mistaken for emulated installs, repairs configure every runtime directory, and re-applying one asks first and keeps the previous files.
  • The library scan no longer re-seeds and re-deletes the same playtime rows forever when two games resolve to the same executable name.
  • Sixty em and en dashes across the locale files became plain hyphens, and the linter rejects new ones. Steam’s language list was missing Indonesian and had the wrong Web API code for Vietnamese.

Performance

  • The library paints its last complete local state first, then replaces changed games as the bounded fresh scan finishes.
  • Scans read each directory once and remember an install folder’s executable search until that folder changes, instead of re-walking trees that can hold tens of thousands of folders.
  • The background new-game check compares folder timestamps first and only runs a real discovery when something moved, so an idle library no longer pays a full scan every few minutes.
  • Cover downloads and decoding begin near the viewport, the game index is written once per scan rather than once per game, and controller polling starts only when a controller reports itself.
  • A cold-cache scan is much quieter: games with no SteamDB cover are not looked up again every scan, a store rate limit no longer fails the whole metadata resolution, and a scan with no connection stops after proving the Steam hosts unreachable.

Website & Docs

  • A website, not just a documentation folder. The project page opens on a home page with the download, the features, every source, the presets and the guides, in the app’s palette and with its own light and dark themes. The notification popups on it are live presets rendered from the same files.
  • A community preset gallery, at gallery. Every submission is validated by the app’s own package reader; it ships with Blueprint and Ticket. SAN themes are deliberately not listed, since they are shared privately and not licensed for redistribution.
  • The gallery takes submissions directly, shows how often a preset has been taken, and falls back to a listing published beside it when the service cannot be reached.
  • The gallery server no longer leaks a path, a stack or an internal code in an error, keeps query strings out of request logs, and hardened its admin token and its content policy.
  • The site shipped in six languages beside English; the guides moved to README.html and gained a bar linking them back to the rest of the site.

3.9.2 - 2026-08-20

Added

  • A wedged Watchdog monitor is detected. The monitor pings the app over its own IPC channel every five seconds, and the title bar shows running, starting, unresponsive or stopped - a pipe probe only ever proved the process still existed.
  • Clicking an achievement toast lands on that achievement’s row, scrolling to it and flashing it.
  • The cover picker keeps the schema’s default cover as a tile once a per-game override is set.

Fixed

  • Autoscroll on a game page is smooth again. The 3.9.1 fix charged a per-row viewport test on every frame, which cost more than the repaint it removed (60fps to ~48 on a 400-row list). The rare halos are simply paused while the list moves instead.
  • A portable release with no emulator config is discovered (#32). The save tree is the anchor now, so Steam\RUNE\<appid> is enough; a refused folder also says which kind it is and what was checked, including recognising an EA app release.
  • The Steam API check bypass no longer fires on games that do not need it. Without a SteamStub re-check to absorb the redirect it landed on the game’s real runtime load, so Steam’s own “no license” prompt won and achievements silently stopped.
  • Icon downloads during a repair or a background re-check try the same CDN mirrors as a normal fetch, instead of giving up on a raw URL that routinely 404s for a new appid.
  • RLD! saves that record an unlock through Time alone are decoded correctly, instead of every achievement reading as locked.
  • A Goldberg save no longer loses progress to its own unwritten twin folder: whichever of the two pre-created roots holds achievements.json is kept.

3.9.1 - 2026-08-18

A bug-fix release for the field reports that followed 3.9.0. The theme is the same in all of them: metadata lookups run over the network, they are allowed to fail, and nothing that fails there may decide what your library contains.

Added

  • Export every log as one zip, from Settings, Advanced, Diagnostics.
  • Custom theme layers gained an opacity control, so a background image can be dimmed rather than replaced.
  • A game whose executable needs administrator rights is retried through the Windows shell with the elevation prompt instead of failing with a bare access-denied.

Fixed

  • The library is a function of what is on disk again, not of how the network behaved during the scan (#33). A game whose metadata lookup timed out was dropped entirely; the SteamDB launch scrape that caused those timeouts now runs detached, and a game is listed from what is known locally either way.
  • A game is no longer listed by its numeric appid while its artwork resolves correctly (#34). The app-list response, the schema cache and the install folder’s own name are all asked before falling back to the id, and a nameless record is never written to the cache.
  • An update could download on every check and never install itself. The hold-back for a running game did not distinguish an update the user had just accepted, and a permanently resident Steam app is a running game forever. An explicitly requested update now installs regardless, and one genuinely held back says so.
  • A windowed game could lose its notification. The “only notify if the game is running” guard filtered on STATUS eq RUNNING, and Windows reports an ordinary console-session process as Unknown; both paths now simply ask whether the process exists.
  • Portable and repack releases that keep their save data inside the game folder are discovered (#32), and a Goldberg setup that redirects its save path into the game folder is followed rather than read as a permanent 0%.
  • Changing a setting no longer tears the achievement watchers down repeatedly. Settings autosave on every keystroke, and each write of options.ini triggered a full Watchdog restart; a burst is now folded into one.
  • Middle-button autoscroll stutter (#35), a discovered AppID that never produces a tile re-triggering a full refresh forever, and the playtime monitor not seeing a detected process’s executable path.
  • Two log lines that read like failures now read like the ordinary states they describe: GOG Galaxy not being installed, and every Steam account on the machine being private.
  • Game Health’s data repair writes to the folder its own diagnosis resolved, no longer keeps a file whose achievement names are blank, and can fill in empty descriptions.

Performance

  • The tray daemon is about 15x cheaper to leave running. Playtime tracking spawned tasklist.exe every three seconds (~440 ms of work each); the same snapshot now comes from the Win32 ToolHelp API through koffi in about 6 ms. Measured idle with no window: 7.0% of a core down to 0.4%.
  • “Choose another cover” opens in about half a second and offers up to 48 covers instead of 8. The instant sources paint it and SteamDB appends when it arrives; tiles preview SteamGridDB’s own thumbnail, so only the cover you click is fetched at full size.
  • The tray daemon releases its hidden renderer and GPU process after five idle minutes instead of holding about 320 MB, and the Watchdog loads its network, scraping and archive dependencies on first use rather than at startup.
  • A game page with several hundred achievements builds noticeably faster: rows are inserted in one pass, and per-row locale, template and icon lookups are done once for the page.
  • The launch executable is read from Steam’s own product info first, keeping the SteamDB scrape as the fallback and remembering an empty result for six hours.

3.9.0 - 2026-08-18

Achievement Watcher becomes Achievement Watcher Next (AW Next): notifications that pick their own transport, a per-game health report with guided repairs, a rebuilt preset library and designer, and a Simple interface mode. Existing installs upgrade in place - the executable, AppUserModelID, shortcuts and autostart entry are unchanged - and user data moves to %APPDATA%\Achievement Watcher Next, imported forward without modifying or deleting the old folders.

Added

  • Automatic notification delivery, and the new default: the in-game overlay when it can be seen, a Windows notification when it cannot, never both. The choice is made per notification from observable signals only, and a saved choice is never rewritten.
  • A Game Health panel for every game, from the tools button on its tile: one state (Ready, Needs attention, Not tracking), the checks behind it, and only the repairs that apply. It also reports which transport delivered its last notification, and why.
  • Reset and restore a game’s achievements across every local source in one action. Emulator saves and RPCS3’s TROPUSR.DAT are removed; ShadPS4’s TROP*.XML and Xenia’s .gpd are relocked in place. Account-held sources are reported as out of reach rather than appearing to work.
  • Every reset is backed up first, a file whose backup fails is skipped rather than cleared, and Restore an achievement backup puts a whole reset back - including AW Next’s own unlock record, so nothing arrives as a burst of notifications.
  • Simple and Advanced interface modes, chosen on their own first-run step. Simple folds a niche source away only while it is still enabled and no game came from it, so it can never hide the one control that would explain a missing game.
  • A rebuilt preset library: nine presets - AW Next, Steam, Epic Games, PlayStation, Xbox, Cover, Glass, Arcade and Slim - replacing the previous seventeen. Each has its own composition, renders a real 100% completion state, and shows the game’s name and rarity.
  • A full Preset Designer in Settings, Presets: layout, typography, background, corners, shadow and glow, motion and timing, the rare and 100% treatments, and a per-preset sound. It previews the real notification as a Card, a Compare or a mock Screen from 720p to 4K.
  • Share a preset as a single .awpreset file, carrying its style, images, fonts, designer settings, metadata and any hand-imported sound.
  • Manually added games, from the + beside library search: launchable, playtime-tracked, shown as No achievements, and able to adopt a Steam achievement list later.
  • Open folder beside the souvenir save folder, creating it first if nothing has been saved yet.

Improved

  • Per-type preset settings are gone. Rare and 100% are states a preset paints itself, so a second and third preset for them could only disagree with the first. Per-emulator overrides remain.
  • All bundled presets render through one engine, so a fix to rare tiers, the completion state or a long scrolling title lands in all of them at once.
  • The bundled preset library is 1.0 MB, down from 10.8 MB: the removed presets carried megabytes of animated GIFs and three copies of the same fonts.
  • Notifications sit closer to the screen edge, and every bundled preset is the same width, so switching preset no longer moves the popup sideways.
  • Random is an entry in the sound list rather than a switch beside it, so the list can no longer name one sound while another plays.
  • Smart Find probes only known save locations, launcher and library conventions, stable emulator data folders and shallow emulator binaries.
  • Accepted updates install through the existing NSIS package in silent upgrade mode and relaunch automatically, without a second confirmation.

Fixed

  • An overlay notification the app could not display is no longer lost in silence, and transport selection has a single owner, so a fallback can never duplicate an unlock. Ten copies of the transport rules - two already drifted apart - became one decision taken before anything is sent.
  • Notification popups reach the screen edge they were anchored to. Placement was measured against the work area, so a bottom anchor floated above the taskbar; every anchor is now measured against the whole display.
  • Apply emulator fix no longer disappears once a game has a setup - it hid itself on exactly the games that need it most, such as a repack update that wiped steam_settings.
  • A steam_appid.txt naming another game has a repair, shown with both values and confirmed rather than applied automatically.
  • Every registry read has a fallback, so a missing native module no longer empties the library. registry-js ships as a compiled add-on; without its binary, Steam accounts, Uplay, GreenLuma, playtime and the avatar all went quiet with nothing in any log. Reads now fall back to reg.exe.
  • A game Steam installed is never listed as a cracked one. Every Steam game ships steam_api64.dll and every Source game ships steam_appid.txt, so a Steam library inside a watched folder handed over its own titles. The scan now asks Steam’s own appmanifest.
  • A custom cover applies to the shape you chose it in, and shows up immediately. Portrait and landscape hold their own picture, and the stored file is named after its own contents.
  • The Light theme would not stay selected, because the settings validator carried its own copy of the built-in theme names; it also gained real depth, its surfaces having sat within a few percent of white.
  • Steam’s retired app-list endpoint is asked once, not once per game - it answers 404 now, and every appid in a scan was retrying it.
  • Restore points survive the move to the new data folder, an update that is not newer is never offered, and source badges come from one anchored table instead of loose string matching.
  • Games with no achievement set show No achievements instead of 0%, and are excluded from unlocked totals, completed-game counts and average completion.
  • Souvenir screenshots no longer overwrite each other within the same second, and a game whose title Windows refuses as a folder name no longer loses them silently.
  • Localisation: one consistent native achievement term per locale (including Succès in French, where the Preset picker had been translated as “Thème”), real ellipses and per-language quotation marks across some 460 strings, and the machine-translation errors in the first-run guide’s buttons.

Performance

Measured against the installed app’s own logs and user data, not synthetic load.

  • The library no longer reloads itself a few minutes after every launch. New-game detection compared discovery against the games on screen, which are different populations by design.
  • Each achievement folder is watched once instead of twice - seven duplicate recursive watchers on a typical install.
  • Less blocking work before the window appears: the eleven parser modules sharing parser.log no longer each re-read it and open their own stream (111-123 ms of startup work down to 21-24 ms).
  • Theme images are reused instead of duplicated - one library held 22 byte-identical copies of a 7.3 MB image - and the theme editor no longer re-renders every blurred layer on each autosave (~1469 ms per save down to 0.4 ms).

Website & Docs

  • The guides were reorganized around real tasks and published as a browsable documentation site with a light/dark toggle, the app’s own icon in the tab, and working page navigation.
  • A .awpreset package is validated whole before anything is written and refused entirely rather than part-installed: format and minimum app version, an extension allowlist, and a path gate that rejects traversal, absolute paths, drive letters and reserved names. Nothing inside is ever executed.

3.8.6 - 2026-08-13

Added

  • Keyless Steam schemas. The official GetGameAchievements endpoint works without a Web API key
    • hidden descriptions, icons and global rarity included - with an automatic fallback chain to SteamHunters, the SteamCommunity page and finally the browser scrape.
  • The Steam Web API key is gone from the app: the Settings field, the first-run step, the Diagnostics row and every keyed fetch path were removed, and legit Steam unlocks now use the public profile XML.
  • Settings, Help adapts to your setup. It shows the current overlay hotkey, controller layout and real bindings, notification mode, active theme and a live count of enabled sources, with its guides grouped into topic cards and an accent-insensitive search.
  • Clear caches in Settings, Advanced deletes the updater’s downloaded files plus the re-fetchable Steam/Ubisoft schema, icon, cover and emulator-tool caches, and reports what it cleared. Settings, saves, backups, presets, theme images and the user-seeded Uplay R2 cache are never included.
  • DLC and update achievements are tagged with their group name (for example Hearts of Stone) under the achievement title.

Fixed

  • Self-signed updates no longer depend on the certificate being trusted. The updater accepts the exact CN=Shirow publisher identity even when Windows reports an untrusted root, rejects lookalike names, and still verifies the release SHA-512 independently.
  • An update stuck on a sha512 mismatch no longer needs the cache folder deleted by hand. Differential downloads are disabled, a mismatch clears the cache and re-downloads once, and a second failure names the folder and offers the release page.
  • Custom overlay placement persists from the Windows drag event and locks every popup to the saved bounds, measured against the full display rather than the taskbar-shortened work area (#25).
  • Custom covers survive Clear caches and a refresh. New selections are copied to the durable covers folder, existing cache-backed ones are promoted before deletion, and a broken legacy SteamGridDB reference rebuilds its CDN URL from the retained hash.
  • Settings, Help is genuinely translated in all 18 bundled locales instead of leaving most of its instructions in English, with a locale test rejecting copied English prose. The remaining hard-coded strings - the avatar menu label, the update tray balloon, the diagnostic details, the overlay window title - were localized too.
  • Theme colours no longer drift between the main window, Settings, the overlay and the first paint: the duplicate Steam Blue palette was collapsed into one token block and every built-in palette exposes its Settings surface.
  • The Watchdog’s schema fallback uses the same keyless chain, no longer treats a zero-achievement game as an error, no longer stores a numeric AppID as a permanent title, and no longer caches a total outage as a verified game with zero achievements.
  • The SteamHunters fallback keeps icons and hidden status for non-English users by merging the English page and overlaying the localized one by icon hash.
  • Help, onboarding and the emulator guide no longer claim the current GBE Fork setup creates ColdClient launch helpers; the two dead hidden controls went with them.
  • The Watchdog no longer writes the complete settings object to diagnostics, which had been copying encrypted credentials and account identifiers into routine logs; older dumps are redacted in place on startup. The removed Web API key is erased from options.ini rather than surviving as an unused secret.
  • Packaging and tool invocations use explicit argument arrays instead of shell command strings, removing the Node 24 security warnings and their quoting risk.

Performance

  • SteamHunters group lookups are deferred until a game actually has achievements and cached for 30 days, so a large library no longer fires one extra request per title on every scan.

Website & Docs

  • Relative links and heading anchors across the Markdown docs gained an exact-casing regression test, preventing Windows-only false passes.
  • Troubleshooting describes the release signature accurately: no certificate installation is required.
  • Electron 43.4.0, Puppeteer Core 25.6.0 and the screenshot helper 1.15.6.

3.8.5 - 2026-08-13

Added

  • Controller support covers the main window. Control the app with a controller navigates the library, game details, settings and searches. Controller settings moved to their own tab and gained a button-layout selector (Auto/Xbox/PlayStation/Switch), configurable one-to-three-button bindings and a Focus overlay when it opens option.
  • An optional Send Escape to the game when opening with controller action, so many games pause when the overlay comes up. Off by default, and never for keyboard opens.
  • Ten more built-in themes, and the theme picker gained a dropdown beside its arrows.
  • Non-Steam games show tracked playtime and last-played date in the achievements page header, like Steam games already did.

Fixed

  • A cached Steam schema with a name but no achievement list froze a game at zero achievements forever. Such an entry is re-checked at most once a week and the check is stamped, so a game that genuinely has none is not looked up on every scan.
  • Owned Steam games could stay marked “installed” forever. Steam’s per-app registry flag goes stale after a folder is deleted outside Steam or an interrupted move; it is now cross-checked against Steam’s own library manifests. A folder merely containing a title as a substring can no longer satisfy a longer owned title either.
  • Clicking “Check for updates” mid-download corrupted the download, by re-firing the prompt and stacking a second downloadUpdate(). The check is refused while one is running, and the update status now shows live “downloading update NN%” text.
  • Notification artwork prefers the high-resolution Steam art already cached instead of the predictable CDN URLs, which 404 on titles whose assets live under hashed paths.
  • The settings and per-game modals are inset below the custom title bar and the side navigation scrolls on its own, so a short window no longer drags the modal off screen.
  • Controller fixes: the default Overlay control and Move & scroll combos no longer collide, the overlay combo is now Back + Start + LB, a duplicated button in a custom binding is no longer silently ignored, DualShock 4 stick correction applies on the XInput backend too, and 16 of 18 locales showed the in-game controller hint in English.
  • A Ubisoft metadata seed could wipe the detected executable from cfg/gameIndex.json, silently disabling playtime tracking; metadata-only seeds no longer overwrite what a scan found.
  • The Watchdog reloads its playtime index when a scan finishes, uses the synchronous regodit API for its remaining registry reads, and stops logging every unrecognised process.
  • Source-engine games could have their tracked executable auto-set to a bundled SDK tool.

Performance

  • Locating an emulator’s local schema no longer walks the whole game install on every scan. The few directories emulators actually use are probed first and the outcome - including “not here” - is remembered, dropped when a schema is written or the library is refreshed.
  • The library skips rendering off-screen tiles, frees decoded image, font and code caches when the window hides to the tray, lowers the V8 heap ceiling to 192 MB and disables Chromium’s unused video-decode path.
  • The overlay window is kept hidden and reused for five minutes, its controller polling paused while hidden, and the first scan of a session serves cached data immediately.
  • Notification artwork lookups are cached per source file, controller bindings are normalized once per settings change rather than every poll tick, and skeleton tiles animate on the GPU.

Website & Docs

  • The docs read as an ordered path: the index numbers the user guides and every page links to the next. The controller guide became the single source of truth for gamepad control.
  • Screenshots were refreshed, and the emulator guide now describes where the steam_settings repair actually lives.

3.8.4 - 2026-08-11

Added

  • RLD! and CreamAPI save roots are watched automatically, and a user-added folder carrying a GOG .info or UniverseLAN configuration keeps its dedicated watcher.

Fixed

  • “Recently played” sorting works again. The Watchdog’s async registry writer crashed under the bundled koffi runtime after storing total, so the last timestamp was never written.
  • Reloading the library no longer shows one fast-loading game alone for seconds: skeleton tiles fill the grid while games stream in, and the folder index is built once per scan.
  • The automatic emulator fix no longer applies to a folder that no longer holds a real game executable, so uninstalling a game mid-repair cannot recreate the folder.
  • The in-game notification sits 6 px from the chosen screen edge instead of 12.

3.8.3 - 2026-08-11

Fixed

  • The automatic emulator fix no longer overwrites steam_api(64).dll on a game already made to work by a crack loader that hooks it in place (OnlineFix confirmed). Doing so broke the loader’s own emulation on the next launch. The manual menu action still allows a deliberate override.
  • Steam API Check Bypass could not download or refresh its proxy DLLs: the RAR extraction ran in the renderer, whose content policy always blocked it, and now runs in the main process.
  • Hardened string sanitization flagged by CodeQL: tag stripping loops until the string stops changing, theme and preset url() values go through the backslash-safe helper everywhere, and the Exophase image-proxy host check requires an exact or subdomain match.

3.8.2 - 2026-08-11

Fixed

  • A Goldberg/GBE install whose configuration lives in a nested engine folder (Unity’s _Data/Plugins/x86_64, Unreal’s Binaries/Win64) no longer resurfaces as a second artwork-less “Unconfigured” tile, and a same-folder loader can no longer outrank the real game executable.
  • The Watchdog no longer depends on a native WQL callback that could crash on startup on some Windows systems; process tracking starts reliably and recognizes games already running.
  • Restarting the Watchdog while a game is running restores activity, overlay and Xbox polling without a synthetic launch notification.
  • Xbox PC polling cannot overlap itself or apply a delayed result after the tracked game changes, and imports retain unlocked and secret state.
  • Legacy GOG and Epic discovery tolerates absent or corrupt mapping caches and temporary outages without hiding other locally discovered games.
  • Manually unlocked achievements are applied while the library rebuilds, partial hand-edited Watchdog configuration files are completed without discarding valid sections, and a slow Windows notification-state query no longer starts its cache lifetime before its result arrives.

Improved

  • Main-window chrome, progress tracks and settings status surfaces inherit the selected theme instead of keeping fixed Steam-blue colours.
  • High-frequency schema, discovery, process and renderer lookups use scoped indexes or snapshots.

3.8.1 - 2026-08-11

Added

  • Every Settings section folds away under its own header and remembers its state; searching still looks through closed sections.
  • The preset builder can delete presets it made, reopen one for editing (Edit a preset becomes Update preset), preview a design as a real overlay popup without saving it, and set the popup width.
  • Find a community fix is offered for Ubisoft installs too and names its source (CrakFiles).
  • Uplay R2 setups can restore the snapshot taken before the last repair - every repair already saved one, nothing could read it back.
  • Downloading an update drives the taskbar progress bar, with the tray tooltip carrying the figure while there is no window.

Fixed

  • The custom preset builder could not save or preview at all on an installed build. Both wrote into the app’s own presets folder, which is packed inside app.asar - an archive, not a directory. Generated presets now live in the user data folder, where they also survive an update.
  • Log files were shredded by a second launch. They were opened truncating, before the single-instance check, so starting the app while it ran emptied the running instance’s log. Logs now append, mark each run with a session line, and rotate at 2 MB.
  • Update prompts no longer interrupt a game, and stop nagging. The check is skipped entirely while any game is running, Later silences that version for a day, Skip this version is permanent, and two checks landing together can no longer stack two dialogs.
  • Start with Windows stays on. Windows answers “not registered” whenever the registered command line and the running build drift apart - after an update that moved the executable - and Settings adopted that answer. The saved preference now wins and is re-applied.
  • Launch game and Configure executable are offered for every game, not only Ubisoft ones: both entries were built inside the Ubisoft branch of the menu.
  • A manual unlock raises the game’s percentage straight away, and clearing one takes the unlock back.
  • Hidden games are listed by name instead of a bare App ID.
  • A community fix is no longer proposed for a different game in the same franchise.
  • The theme editor’s layer controls stop sliding 130px sideways when an effect is switched off.
  • Testing an overlay notification no longer blacks out the screen with a fullscreen backdrop it never needed.
  • Every theme carries its own success, warning and danger hue, so the account cards and the profile stat pills stop being Steam-blue under every other palette.
  • Every launch writes a [diag] block to the log - versions, paths, how the app was started, language, theme and display geometry - which is the block to paste into an issue.
  • The installer shows what it is doing again; the build no longer suppresses NSIS’s default reporting.

3.8.0 - 2026-08-10

Added

  • The Sources tab has a switch for every source the scanner reads. Ubisoft Connect, GOG Galaxy, Epic Games, the Nemirtingas emulators, shadPS4 and Xenia were all on with no way to turn them off short of hand-editing options.ini (#20).
  • Priority notifications, the only way Windows 11 puts an achievement toast on screen while Do Not Disturb is on - including the automatic “playing a game” rule. Off by default; Windows asks once, and playtime and progress toasts are never marked urgent.
  • The launch panel auto-fills game executables after every scan, from Steam manifests, GOG launch tasks, Epic manifests, EA logs and Xbox configs, with a conservative confidence gate elsewhere. Ambiguous folders stay empty, and a manually configured exe is never overwritten.
  • Folder settings can rescan only the selected locations, the overlay gained a close button in its header (Escape works too), and the right-click Folders submenu was grouped.

Fixed

  • Windows full-screen and quiet-hours detection worked on no machine at all. SHQueryUserNotificationState was read through Add-Type -AssemblyName shell32, which is not an assembly: PowerShell wrote to stderr, left the state at 0 and exited 0, so both callers always answered “no”. It is now a real DllImport with its HRESULT checked (#18).
  • The Settings notification test never showed a Windows toast, and reported success anyway: it grouped by a numeric appid, which the toast library rejects, then dereferenced the null group. It also opened a fullscreen backdrop right before firing, which turns on Do Not Disturb (#18).
  • The overlay no longer opens by itself after a game exits (#19): a close request for an overlay that was not open fell through to the open path.
  • The background monitor is supervised again after a manual restart. Restarting it while a respawn was queued left the supervisor believing one was pending, silently disabling it for the session.
  • Cover art falls back correctly when a download fails. A failed fetch was reported as a success, so the fallback never ran and the tile stayed blank.
  • Covers, achievement icons and backgrounds no longer disappear when their path contains an apostrophe or parentheses - “Assassin’s Creed” or Program Files (x86) was enough.
  • Scanning Epic games no longer freezes the interface for up to 30 seconds per game, and Epic backgrounds are blurred and tinted again.
  • Per-game launch arguments keep quoted values intact, and links are only opened in a browser when they are web addresses.
  • Updates signed with the local certificate no longer fail on PCs that do not trust that root.
  • In-game popups use the real dimensions of the selected preset and scale before anchoring, and stay inside the active monitor’s work area.
  • Disabling the display of official Steam games also hides a Steam purchase that launches Ubisoft Connect, identified from generic signals rather than per-game data (#20).
  • A Ubisoft title bought on Steam resolves through the cached archive’s own spec name, replacing the per-product mapping row 3.7.0 added for Far Cry 4 (#7, #14).
  • Hiding the main window to the tray stops its renderer-side gamepad polling.
  • js-yaml was updated to 4.3.1, removing a high-severity YAML parsing vulnerability from the updater dependency tree.

3.7.0 - 2026-08-06

Added

  • A per-layer gradient editor in the custom theme: two colours and a direction, previewed live and applied in the app and the overlay. The old single toggle is imported as a dark fade.
  • Choose another cover… opens a themed gallery with the current cover, the SteamDB library assets and up to eight SteamGridDB grids, matching the library’s orientation.
  • Cross-source duplicate merge: a Ubisoft product mapped to an already-listed Steam release becomes one tile with both unlock sources.
  • Unconfigured installs are named from the executable’s own FileDescription when the folder name is meaningless, so a repack folder called “Game123” no longer shows that.

Improved

  • Installed-game detection merges smart-discovered library roots on every scan, understanding localized folder names in many languages, per-user library folders and library-like Desktop subfolders. Launcher-managed roots are deliberately not auto-added, since the official sources already cover them.
  • The theme editor and cover gallery are responsive at small window sizes, the gallery uses the shared modal chrome and theme tokens, and a layer’s base-colour picker is disabled while its gradient is on.
  • Windows’ “reduce motion” preference now disables decorative animation across the whole main window.
  • The installer shows progress details, refreshed artwork and explicit Start Menu and desktop shortcuts.

Fixed

  • In-app updates no longer fail with “App is not signed” on intentionally unsigned releases: the verifier accepts a file with no Authenticode signature and rejects only one belonging to another publisher.
  • The watchdog status dot no longer pulses forever, which had been burning a steady ~100% of a GPU core on some machines.
  • Playtime tracking starts before COM security is initialized, so the Watchdog no longer loses it to an RPC_E_TOO_LATE failure at startup.
  • The playtime monitor no longer crashes on an unset environment variable in a muted path, the Watchdog starts with a partial [overlay] section, and a busy WebSocket port no longer crash-loops it.
  • Blank tiles are recovered. Steam games whose portrait is a dead guessable URL, and Ubisoft games resolved to a modern Steam release, get their real hashed capsule through SteamDB; the grid falls back to the header when no portrait exists.
  • False “installed” and false “Unconfigured” entries are gone. A stale executable pointing at a known non-game program no longer marks a game installed, well-known non-game executables are not offered as games, and Windows uninstall-registry folders are no longer auto-scanned.
  • Legit launcher installs are no longer surfaced as Unconfigured games or mis-promoted as Uplay R2 emulated installs, wherever they live.
  • A Ubisoft product with no direct mapping row resolves through its own uplay_install.state or by name, and is kept by the “installed games only” filter when the launcher registry proves it.
  • “Merge duplicate games” drops a same-name Steam save phantom when a GOG Galaxy entry exists for the same game, so Cyberpunk 2077 no longer appears twice.
  • The cover gallery opens reliably, never hangs (a 15s download bound with a remote-URL fallback), and SteamDB is only queried for real Steam releases.
  • SteamGridDB lookups require an exact or token-level title match, so an unrelated autocomplete result is never used as a cover.
  • An enabled gradient replaces its layer’s base colour entirely, sizes correctly with a layer image, and follows the layer’s colour when first enabled.

Removed

  • The separate playtime notification scale; playtime popups use the main notification scale.
  • The optional per-user SteamGridDB key; the bundled public key is used.

3.6.1 - 2026-08-06

Added

  • Themes are global and layer-based. Built-in palettes and the Custom theme recolour the whole app
    • window, library, cards, achievement rows, dialogs - and the overlay follows through a Use app theme toggle. Nord, Gruvbox and Tokyo Night joined the set.
  • The Custom theme takes a colour and, per surface layer, an optional background image with a Cover/Contain/Repeat/Stretch fit and a veil or blur effect. Images persist, and changing one never resets another layer.
  • The overlay hotkey toggles the overlay with no game running, follows the active game and closes when it exits.
  • The Settings sidebar is grouped, a discreet Check for updates button sits in its footer, and the blacklist manager gained an add-by-AppID field with name resolution.

Fixed

  • The “Cards & rows” layer was leaking into Settings and the executable modal; Settings now uses its own surface tokens.
  • About 50 hardcoded hex colours across the title bar, settings, library, achievement list and dialogs became theme variables, so a theme reaches the whole app.
  • Custom-theme background images were barely visible under opaque layer colours; a layer with an image now shows through a dark scrim.
  • Progress bars use opaque theme-derived tracks, fixing translucent artifacts on light backgrounds.
  • The overlay hotkey defaults to Ctrl+Shift+K on a fresh install, as the interface already claimed.
  • The overlay hides the whole progress block for single-step achievements, matching the main window.
  • The renderer could silently lose the entire UI when a top-level destructured import collided between two classic scripts.

3.6.0 - 2026-08-05

Added

  • The in-game overlay is localized and customizable: header columns, status labels and fallback messages follow the app language, and it gained a stats bar, instant search, status filters, rarity badges, progress bars and density, icon-size, accent and zoom options.
  • The NSIS installer follows the Windows display language for every page and custom message, shows the LGPL licence before installing, and asks at uninstall whether to delete the app’s data (default: keep).
  • Imperative strings - message boxes, context and tray menus, toasts, busy labels - go through a translation helper instead of hardcoded French/English ternaries.

Fixed

  • The overlay list worked at all again: its preload required app modules that fail in the sandboxed window, and the overlay-language channel had a listener but nothing ever sent it.
  • The overlay loads the app’s own view/overlay.html instead of a stale copy in the user-data folder, escapes game-provided names, and no longer renders “Progress: undefined / 1”.
  • Watched emulator save roots no longer appear as fake games. Their numeric AppID subfolders matched the hex profile shape the SocialClub parser recognises, so every root was listed by its folder name next to the real games.
  • A locally uploaded avatar, and most of the library, could be lost on the first launch after upgrading to 3.5.3. The avatar lived only in Chromium localStorage, which the migration deliberately never imports; it now persists in a migrated cfg\avatar.txt. The “installed games only” filter lived in the same storage and defaulted to ON, silently hiding most of an emulated library on a fresh post-migration profile.
  • The first-run guide falls back to English like the rest of the UI instead of relying on an incomplete duplicated fallback object.
  • The Settings footer’s “maintained by” link pointed at a repository that does not exist.

Improved

  • The resident update check runs hourly instead of every six hours, and a check firing while a prompt is open reschedules itself instead of stopping all future checks until restart.

3.5.3 - 2026-08-05

Added

  • Uninstall a game from its right-click menu.

Fixed

  • Issues #6 to #9: toast delivery, data isolation, Ubisoft identity and Goldberg SocialClub handling.
  • Mistranslations across the bundled locales, and inconsistent notification terminology in the locales and the docs.
  • The Watchdog guards its achievement baseline against invalid saves, and ignores malformed Tenoke progress values.

3.5.2 - 2026-08-04

Improved

  • Notifications default to overlay mode with the Shirow preset, and rarity and progress support is aligned across every bundled preset.

Fixed

  • Steam library paths are kept out of emulator scans, and the Watchdog persists its achievement baseline on fresh installs.

3.5.1 - 2026-08-04

Fixed

  • The Xbox login redirect is captured and the sign-in window closes on its own.

3.5.0 - 2026-08-04

Added

  • Online-Fix and Tenoke stats support, and Epic AppID detection.

Fixed

  • The ampersand in the update download button label.

3.4.3 - 2026-08-03

Fixed

  • Monitor supervision and update reliability were hardened, including a retry when the monitor fails to spawn synchronously.
  • Game-list menu icons were restored, and unused icon scales dropped.

3.4.2 - 2026-08-03

Added

  • Steam global unlock percentages are shown for non-Steam sources.

3.4.1 - 2026-08-03

Fixed

  • The game list is built without waiting for a frame callback. The tray window is usually hidden with background throttling on, so the callback never fired and the list never rendered - which is what drove the three-minute self-refresh loop.

3.4.0 - 2026-08-03

Added

  • A search field in Settings, matching labels, descriptions, values and internal names.

Fixed

  • Ubisoft achievements are read from the emulator’s real save folder.

3.3.1 - 2026-08-03

Added

  • Updates ask before downloading and installing.

Fixed

  • Renderer startup, broken since 3.3.0.

3.3.0 - 2026-08-03

Added

  • Xbox PC as a source, with account import and live unlock polling in the Watchdog.
  • Per-emulator overlay presets for Xenia, RPCS3 and ShadPS4, and emulator achievement rarity through Exophase.
  • A manual achievement unlock override, a per-game emulator source override, per-platform metadata links in the game menu, user themes loaded from the AppData themes folder, and random overlay sounds with more audio formats.
  • The process trail tracks games already running when the Watchdog starts.

Fixed

  • A game with no Steam client icon falls back instead of showing nothing, and the SteamGridDB artwork key is configurable.

3.2.1 - 2026-07-14

Improved

  • The first-run guide gained visible step progress, completed-step markers, contextual folder-search feedback, a notification test using the selected transport, and a layout that stays usable at the minimum window height.

3.2.0 - 2026-07-14

Added

  • Full controller navigation across the library, achievement view, settings, onboarding and prompts, plus optional native controller input for the overlay (XInput, newer Windows backends and raw-HID profiles).
  • Native local achievement readers for GOG Galaxy, Ubisoft Connect and the Steam appcache, with live unlock monitoring for GOG and Ubisoft.
  • An Epic account connection and official Epic achievement source, wired into Sources and the normal library scan.
  • A dedicated Goldberg Uplay R2 diagnosis and repair path for compatible Ubisoft games, using a user-provided loader and a safely derived Steam achievement mapping.
  • Local-first fallbacks for multi-language achievement descriptions, GBE product-info artwork, offline game names, SteamDB launch executables and hard-to-resolve covers.

Fixed

  • Ubisoft installs with no Steam DLLs or AppID markers are detected from their Ubisoft files and internal install-state title, even when a repack renamed the folder, and get the Uplay R2 repair action rather than GBE Fork.
  • Ubisoft games use their own source icon, fill their card artwork, and expose launch, diagnostics, mapped IDs and valid Steam catalog links from the right-click menu.
  • Windows account avatars are read with the current extractor API, from both account-picture folder layouts.

Improved

  • Platform-aware IDs keep Steam, Ubisoft, Epic and GOG entries separate across the shared artwork, rarity and game-index caches.
  • Emulator setup attempts use a content fingerprint, so repeated work is avoided while a changed steam_settings still retries.
  • Electron 43.1.0 (Chromium 150, Node 24), every direct dependency updated, and Puppeteer’s bundled Chromium 110 fallback replaced with Puppeteer Core 25 driving an installed Chrome or Edge.

3.1.0 - 2026-07-11

Added

  • Notification volume is a real slider (0-200%, with a live preview at the chosen loudness), and custom toast sounds follow it instead of playing at a fixed half volume.
  • A Rare notification test, seven overlay presets imported from the reference Achievements project, and separate presets for rare and platinum unlocks.
  • App colour themes (Steam Blue, OLED Black, Dracula, Graphite), previewed live and applied at startup.
  • An achievement search box in the game view, mouse side-button navigation, and a blacklist manager listing hidden games by name with one-click restore.
  • Live Xenia achievement notifications, with baseline seeding and duplicate suppression.
  • Adding a folder scans it immediately and reports how many games were found; Smart Find reports how many folders it added.

Fixed

  • Packaged builds check the GitHub release feed on startup again, download available updates and offer to restart.
  • The window no longer freezes permanently when an Epic game’s SteamGridDB lookup finds no match, and Steam games without store background art no longer lose all their metadata during a scan.
  • Advanced “Fix all games” no longer fails every game’s DLC step, and float-based achievement progress is capped at two decimals instead of printing 3.3333333.

Improved

  • All 18 bundled languages carry the same complete interface set, and the Notifications tab was reorganized so the test buttons sit below the options they exercise.

3.0.8 - 2026-06-30

Fixed

  • Playtime notifications show the game’s high-resolution Steam library art instead of Steam’s tiny icon, which is now only the fallback.

3.0.7 - 2026-06-29

Fixed

  • Notifications show the right primary image: the achievement’s own icon for unlock and progress, the game’s icon for playtime, in every transport and test.

3.0.6 - 2026-06-29

Added

  • TENOKE achievements are read locally from tenoke.ini, so those games show full details without an online lookup.
  • A Goldberg/GBE install with a steam_settings folder but no app id is resolved by name where possible, or kept visible as Unconfigured so it can be repaired instead of silently disappearing.
  • Achievement progress is shown as a progress bar with its count, in the game view and in notifications.

Improved

  • Notifications display the game’s cover art, the GBE/Goldberg backup snapshots steam_settings and steam_api(64).dll, and a restore point is created automatically before any emulator fix runs.
  • Name to AppID lookup falls back to Steam’s live search when the cached app list is stale, so brand-new releases resolve.

Fixed

  • A game bundling a modding editor, SDK or dedicated server in a subfolder is no longer mislabelled with the tool’s app id, and standalone emulator folders are no longer mistaken for games.
  • Progress values are validated and clamped, so malformed progress no longer produces broken bars.

3.0.5 - 2026-06-29

Added

  • Support for stats.json and rich progress-to-stat mappings used by newer GBE Fork builds, and automatic seeding of missing GBE runtime state after a repair without overwriting existing progress.

Fixed

  • Stat-backed achievements map local progress to the real achievement ids, in the parser and the live watchdog alike.
  • Executable detection prefers the base executable over same-folder launcher variants.

3.0.4 - 2026-06-28

Improved

  • Save-path discovery and the packaging setup.

3.0.3 - 2026-06-27

Improved

  • Settings were reorganized into General, Notification, Sources, Folders, Emulator, Guide and Advanced sections, with an expanded platform guide.
  • Automatic discovery covers more Steam emulator save folders and common game-library locations.

Fixed

  • App-id folder recognition is more reliable for common emulator layouts while avoiding profile-id folders.

3.0.2 - 2026-06-27

Fixed

  • Installed-game detection for emulated Steam games, including installs whose main executable is in the game root while steam_api(64).dll or the AppID file is nested.
  • Duplicate tiles are reduced by merging save, install-folder and cover results more consistently.
  • Ignored and removed games no longer accumulate playtime, and Wallpaper Engine helpers are excluded.
  • The first-run guide requires a language before the initial scan, and the selector only offers languages with a complete interface translation.

3.0.1 - 2026-06-26

Fixed

  • The app froze on a fresh install with no API key and an empty cache. The page scrape ran over a blocking channel, locking the window from the very first game; it runs in the background now and the library fills in as data arrives.
  • The library could show every game twice, one copy stuck on a spinner, when a second scan started before the first finished. Scans are coalesced into a single queued follow-up.
  • The background monitor crash-looped on a fresh install, because it required an optional process-blacklist file that does not exist there.
  • A Steam Web API key entered during onboarding is used from the first game, and setting one later takes effect without a restart.

3.0.0 - 2026-06-25

First public release of the modernized 3.0 fork - a large stability, security, compatibility and feature pass on top of the upstream darktakayanagi base.

Added

  • A system-tray app: it runs with no window, the library and settings open on demand, and closing the window no longer quits. Tracking, playtime and notifications keep running.
  • In-game overlay notifications - a styled popup drawn over the game, with presets and sounds, selectable as toast, overlay or both - plus a custom preset builder with a live preview and imported sounds.
  • Rare · X% labels for sub-10% unlocks, a platinum toast, a three-tier rarity display and rarity cached per game so it is instant and works offline.
  • New sources: ShadPS4 with live trophy toasts, Xenia achievements and EA Desktop achievements.
  • Goldberg / GBE tooling: diagnose and repair steam_settings, install the GBE Fork steam_api(64).dll, strip Steam DRM, back up and restore the emulator config, and auto-fix new emulated games in the background.
  • Advanced cover management, souvenir screenshots on unlock, an installed games only filter, and automatic new-game detection.

Improved

  • Platform modernized: Electron 12 to 42 (Chromium 148, Node 24) with every major dependency updated.
  • ~80 MB smaller install and a lower idle footprint: Chromium UI locale packs and other-platform binaries dropped, the tracker sharing the app’s runtime instead of bundling its own Node, and the keyless scraper reusing an installed Edge or Chrome.
  • Faster loading: bounded-concurrency scanning, an optional browser-free data path, a roughly halved emulator scan and a size-capped icon cache.
  • A modern dark UI across the library, details, settings and dialogs, resizable down to 900x600.
  • The emulator fix is a standalone DLL swap matching common auto-crackers, powered by the maintained GBE Fork runtime, with the original DLL always backed up.
  • Security hardening: untrusted text is escaped before reaching the DOM, a tightened Content-Security-Policy with no inline or eval, jQuery 3.7.1 and a hardened main window.

Fixed

  • Windows 11 24H2+ compatibility: every WMIC call Microsoft removed was replaced, so folder scanning, drive listing and process priority work again.
  • Hidden achievement descriptions resolve correctly, and stale blank entries are repaired in place.
  • GreenLuma, Uplay, RPCS3 and Epic first-load failures, and permanent blacklisting after a single transient error.
  • Emulator notification edge cases (3DM, TENOKE, GOG/Nemirtingas, [object Object] titles).
  • Playtime tracking for games whose process name differs from the store index; store launchers and helper processes are no longer tracked as games.
  • Several CPU and memory-leak issues - busy loops during scraping, orphaned browser instances and a tracker pipe leak.
  • Self-healing config: a corrupted folder database is quarantined and defaults restored instead of silently disabling your folders, and the main window can no longer get stuck invisible at startup.