Download Latest Version Deadlock.Mod.Manager_2.3.0_x64-cef-setup.exe (182.3 MB)
Home / v2.0.0
Name Modified Size InfoDownloads / Week
Parent folder
latest.json 2026-10-20 3.4 kB
Deadlock.Mod.Manager_2.0.0_x64-store.exe.sig 2026-10-20 436 Bytes
Deadlock.Mod.Manager_2.0.0_x64-store.exe 2026-10-20 269.5 MB
Deadlock.Mod.Manager_2.0.0_x64-setup.exe.sig 2026-10-20 436 Bytes
Deadlock.Mod.Manager_2.0.0_x64-portable.exe.sig 2026-10-20 440 Bytes
Deadlock.Mod.Manager_2.0.0_x64-setup.exe 2026-10-20 52.6 MB
Deadlock.Mod.Manager_2.0.0_x64-portable.exe 2026-10-20 72.7 MB
deadlock-mod-manager-cef.flatpak 2026-10-20 155.6 MB
Deadlock.Mod.Manager_2.0.0_amd64-cef.deb.sig 2026-10-20 428 Bytes
Deadlock.Mod.Manager_2.0.0_amd64-cef.deb 2026-10-20 197.8 MB
README.md 2026-10-20 66.7 kB
Release 2.0.0 source code.tar.gz 2026-10-20 83.4 MB
Release 2.0.0 source code.zip 2026-10-20 85.7 MB
deadlock-mod-manager.flatpak 2026-10-20 52.9 MB
Deadlock.Mod.Manager-2.0.0-1.x86_64.rpm.sig 2026-10-20 432 Bytes
Deadlock.Mod.Manager-2.0.0-1.x86_64.rpm 2026-10-20 58.0 MB
Deadlock.Mod.Manager_2.0.0_amd64.deb.sig 2026-10-20 428 Bytes
Deadlock.Mod.Manager_2.0.0_amd64.deb 2026-10-20 58.0 MB
Totals: 18 Items   1.1 GB 0

Release 2.0.0

📝 Changelog

Major Changes

  • Ship 2.0 with a local catalog and new addon folder layout

Minor Changes

  • a7cd243: Add selection-based enable and disable actions to the mod library
  • 4970162: Show every Deadworks server and fetch the maps and addons each one advertises
  • a0f2cbd: Add a setting to move the download cache to another folder or drive
  • 293d350: Add profile mod groups with drag, undo, bulk toggles and organization copying
  • 3c5a8ff: Add bulk update, delete, and copy actions to library selection
  • Add a Collections tab with GameBanana collections, local search and filters, and downloads for an entire collection or selected mods
  • f440325: Refresh the GameBanana catalog about every 30 minutes instead of every 6 hours, and show catalog sync status in the bottom bar.
  • 72ea72c: Customize the Stats page: add, arrange and resize widgets on your own tabs.
  • 712f690: Add ranked, unranked, and start-date filters to Overview, Heroes, and Items stats.
  • e31d615: Sort the mod library by install order, hero, name, or recently added, and tidy the library toolbar.
  • b4b34a2: Show update badges in My Mods, including disabled mods, and add a setting to hide them. Keep disabled mods disabled when updating them.
  • 5246248: Add occasional tips that point out features you haven't tried yet
  • 8eb3a21: Add the Drututt theme with channel art and emote easter eggs
  • cdec390: Add a tour of experimental features you can enable and reopen later
  • 5246248: Add a Check mods for repairs action to the Mods Library menu
  • 5246248: Keep the menu bar open after a single tap of Alt
  • cdec390: Tell users when a slow or failed download is on GameBanana's side
  • cdec390: Add a Contributors page crediting the core team and GitHub contributors
  • 932aa5c: Add an NSFW Only filter to the mod browser and My Mods
  • d8d6e74: Add Find a broken mod, which tests mods in halves to find the one breaking the game
  • 5246248: Allow dropping mod files anywhere in the window
  • 85b515a: Show GameBanana comments and changelogs on mod pages and when updating
  • d0d29cd: Add an OLED theme with true-black backgrounds and a customizable accent
  • c52fc90: Add seasonal themes with mini-games for Halloween, Christmas, Easter and more
  • 2fa0b19: Warn when your mods stop loading. If a Steam update or another tool rewrites Deadlock's gameinfo.gi, a bar under the title bar says how many enabled mods are affected and re-applies them in one click. Game updates are detected too, and Valve's latest patch notes now show on the Dashboard.
  • 8547a02: Add rich GameBanana author profiles to mod browsing
  • e3b1c3c: Import mods, profiles and crosshairs from Grimoire or a mod-interchange file; export them too
  • 07cdeaf: Add the Lovelock theme, a plum and pink preset inspired by Asteria's Lovelock Companion. Status bar icons now follow the active theme's accent colour.
  • ae910d5: Enable match data sharing by default. New users can turn it off during onboarding, and existing users see a one-time notice with the option to turn it off. Users who had already turned it off keep it off.
  • d43255c: Remove a mod from My Mods when all of its files are deleted from the addons folder, even while the mod manager is open. A mod that lost only some of its files stays and shows a "Files missing" badge, so you can reinstall or delete it.
  • 2a8af42: Show which enabled mods change the same files

The Mods Library has a new Conflicts tab listing every overlap between enabled mods, with the mod used in game first and a Load first button for the others. Mods whose model is hidden by another mod get a badge in the library, and overlaps you're happy with can be ignored per profile. It is on by default and can be turned off under Settings > Experimental.

  • cbd4c9d: Browse the Mods Store by section: Mods, Sounds, Albums and WiPs have their own tabs, and Maps joins them with the Custom Maps experimental option. Hero and category pickers sit next to search, while the rarer filters (updated, added, NSFW, outdated) live in the Filters menu.
  • a9d8a8b: Block mod changes while Deadlock is running, with a setting to turn it off.
  • a9d8a8b: Add a connection diagnostics tool that pinpoints why a page failed to load.
  • e991797: Add a Privacy setting to clear saved NSFW choices and restore preview blurring.
  • 799d231: Add an opt-in setting that restores the vanilla gameinfo.gi when Deadlock closes, so launching from Steam starts the game without mods
  • 374d9c9: Flashbang now randomly forces Light Mode when the app loads (configurable chance, 1 minute cooldown) instead of using a fixed time window
  • 5de7f61: Let users skip a mod update until a newer one is published, and stop flagging updates when an author only adds files you didn't install
  • 85b515a: Organize mod pages into Overview, Changelog, Comments and Files tabs
  • edf83d7: Add an items tab and live match charts to Stats
  • 1f98b35: Show catalog sync activity and add a clear-and-resync action in Settings Tools.
  • edf83d7: Add detailed match history and interactive item timelines to player stats
  • 615beb0: Browse mods from a local copy of the GameBanana catalog
  • 8b9bcee: Add a Shards page to developer mode for inspecting addon folders
  • 12e5de0: Add an Experimental shortcut to the sidebar for quicker access to experimental features
  • 8ad9a4b: Manage every mod for a hero on the Hero Skins page, and retry failed downloads
  • 5c14a56: Add and delete hero skins directly from the Skins page
  • fc07a56: Download and check GameBanana mods directly with verified, locally cached metadata.
  • edf83d7: Add a Stats page with performance, hero and teammate dashboards
  • 3240213: Add opt-in 1-click installs from DeadlockForge, with confirmation.
  • 12e5de0: Add the Mod Foundry: import a skin, recolor it, swap its cards and sounds, and export a working VPK
  • edf83d7: Add a live tab to Stats showing ranks and stats for everyone in your match
  • fd012ce: Add tools to reinstall broken mods and rebuild mod state
  • 8b9bcee: Migrate existing profiles to the new addon folder layout on first use
  • 1e1cadf: Show download progress and remaining content count in the server join dialog
  • 8b9bcee: Allow more than 99 enabled addons by spreading them across addon folders
  • edf83d7: Keep the live match board across restarts, show the matchmaking queue beside it, and cut the cost of following a running match
  • 208f11d: Add catalog refresh and skip fetching details for unchanged mods
  • 300ab77: Choose which VPK files of an installed mod are enabled from the Installed Files list

Experimental Changes

  • Add Mod Compatibility Repairs for outdated skins, animation rigs, camera interfaces, materials, and shared game data. Enable it under Settings > Experimental, then select Compatibility for the affected mods in My Mods. Repairs use a separate package and leave original mod files unchanged.
  • Fix the camera and aim points in skins built before Deadlock changed its root attachment frame, while preserving custom attachment offsets.

  • 6d8293c: Add performance configs: apply curated community gameinfo.gi configs, configs from GameBanana or your own imports on a new Performance page, edit every setting they change with typed controls, and share them. The manager edits gameinfo.gi in place next to your mods, leaves out settings Deadlock no longer reads and engine-section edits unless you include them, and writes the config again after game updates. A crash check after launch lists what changed since your last normal session.

  • f3bfa9e: Fix compatibility repairs for overlapping skins and mod variations
  • f3bfa9e: Fix skipped skin camera repairs caused by small exported root rotation differences
  • f3bfa9e: Fix repaired Grey Talon ultimate models failing to load
  • f3bfa9e: Repair custom animations after skeleton changes and group repeated repair details
  • f3bfa9e: Fix skin animation repairs blocked by retired UI animation graphs
  • f3bfa9e: Validate rebuilt mesh and control blocks before applying compatibility repairs
  • f3bfa9e: Fix outdated skin cameras when the authored root has a position offset
  • f3bfa9e: Detect untracked enabled VPKs and use actual load order in compatibility reviews

Patch Changes

  • b370dbb: Fix the What's New heading for releases without translated notes
  • a7cd243: Fix local mod names showing internal IDs and recover saved names
  • 5554546: Return to the Default profile when the active profile's folder was deleted
  • c763011: Fix Linux CEF crashes when opening file and folder dialogs
  • b370dbb: Preserve frontend error messages in desktop logs without custom error fields
  • 0c45865: Choose which skin to keep and review replacements when enabling mods
  • 5554546: Fix switching to profiles whose names contain non-English letters
  • f22926b: Validate animation dependencies before and after repairs, restore camera metadata from valid attachments, and repair legacy movement-sound bindings.
  • 0c45865: Restore original conflicting skins after a diagnostic mod search
  • 71c0ee4: Spread seasonal hideouts across real pages, including settings sub-pages
  • b370dbb: Reduce updater log spam while keeping download totals and failure details
  • 5554546: Install imported profile mods in the load order the sharer set
  • 0c45865: Speed up compatibility checks and explain mixed skin animation dependencies
  • 0e657f7: Stop addon analysis from listing leftover files in profile subfolders
  • 45851c9: Fix updates installing mod variants that were never selected
  • a7cd243: Fix library rendering, consent, downloads, update checks and profile labels
  • f22926b: Keep compatibility repairs current after library changes, report stale fixes accurately, and reuse unchanged data to speed up rebuilds and launches.
  • 0e657f7: Show the addon review list whenever analysis reports an error
  • fa0ff6d: Keep a running download from being marked failed when it is requested again
  • b9916d0: Fix fixed mods losing their repairs after other library changes
  • b51a4b8: Keep the active profile loaded in game after enabling a mod
  • 08d0fbf: Back up an unreadable settings file and explain why settings were reset
  • 6f1547d: Keep the library responsive while the repair package rebuilds
  • f815b69: Keep variant file names attached to the right files after repairing a mod folder
  • fa0ff6d: Show each download error once when several files of a mod fail the same way
  • 6819b31: Keep both skins when one mod is made to go on top of another
  • 21e7900: Fix modded launch failing when a mod file cannot be read
  • 41bbeca: Fix Steam launch warnings when match sync is still fetching matches
  • 21e7900: Fix mods that ship older copies of game data or text
  • cdec390: Fix duplicate and missing heroes in the Discord Rich Presence hero picker
  • 39dc269: Improve app responsiveness and cut idle GPU use from the animated background
  • 8215ed4: Fix game launches on Linux when Steam is installed as a Flatpak or Snap
  • 718218b: Starting Deadlock with match sync on no longer shows Steam's "logged in on another computer" prompt.
  • 21e7900: Fix silent footsteps and movement sounds on older hero skins
  • cdec390: Fix Linux GPU detection and preserve explicit compatibility settings
  • 21e7900: Fix adjusted and missing camera points on older hero skins
  • 3920c28: Turn match data sharing off by default and only start it after the user consents
  • 6c300f5: Fix Linux updates for Flatpak, Debian, RPM, and CEF installations
  • 21e7900: Update mod animation skeletons when the game adds bones
  • a1f2286: Check installed mods against the current game after installs and game updates, badge mods made for an older version, and fix them from the library or before launch without the experimental flag. Mod files are never changed, and any mod can go back to its original files
  • 9b06f22: Fix access-denied errors when combining shared mod changes on Windows.
  • 5382703: Add Enable all mods to the library menu, with a recap of what was enabled, skipped or failed and a button to finish each one
  • 2628eea: Smoke test Wry and CEF Flatpak bundles before publishing releases
  • 344c40e: Cancel a launch from the launch overlay or the toolbar instead of waiting up to three minutes for Deadlock to start
  • 2628eea: Use packaged protocol associations for Flatpak deep links
  • c9cfea6: Read the live GameBanana file list in Manage files, show download progress while applying, and show the real error when a file cannot be fetched
  • 2025231: Open Manage files for mods that ship several VPKs, so their files can be turned on and off from the library as well as the mod page, alongside variants
  • 5f0b3b6: Add optional minimize to tray and close to tray, with a tray icon to restore or quit the app
  • fa994af: Fix mod updates failing with "GameBanana file was not found" after an author replaces their files
  • 2a4b721: Keep the new install date for every mod after a batch update, so updated mods stop showing as outdated
  • 861b13c: Align Settings switches across rows and window sizes; titles no longer toggle
  • d45d8ad: Reinstalling a mod whose files were deleted outside the app now installs it again instead of leaving it only downloaded
  • 64eb750: Close the variant picker on backdrop click instead of opening the mod page.
  • 220b9f7: Fix variants that share a VPK filename overwriting each other when installed
  • 220b9f7: Fix re-enabling a file after a mod update restoring its pre-update copy
  • d9d0cb1: Add mod folder repair with restorable backups and safe staging recovery.
  • 9c42228: Fix gap where no Back button is visible while scrolling a mod page
  • bc90972: Stop crashing when adding large local mods (up to about 1 GB), whether dropped or chosen in the file picker.
  • 300ab77: Fix enabling a GameBanana mod file that was not installed yet, which failed with "Download URL scheme must be http or https"
  • 220b9f7: Fix profile imports failing with "no VPKs found" while mods still extract
  • 40531b3: Fix gameinfo resets and offer to make read-only mod files writable
  • c284339: Fix failed update checks incorrectly reporting the latest version
  • 9dc0d04: Fix mod updates dropping newly added or renamed VPK files
  • 220b9f7: Show the read-only file prompt again when installing over a read-only VPK
  • 5019a5e: Add Baba, Chessmaster, Deadpack and Rat King to hero pickers, Foundry imports and Discord presence portraits
  • d45d8ad: Retrying a mod update right after it failed no longer fails with "Backup already exists"
  • 9dc0d04: Keep the saved VPK selection when re-enabling a disabled mod
  • 9dc0d04: Remove stale installed mods when their addons folder was wiped outside DMM
  • b96bc35: Download cards now show the size of only the variants you downloaded.
  • 9dc0d04: Check for missing mod files before a modded launch and offer to reinstall or disable the affected mods
  • Preserve original addon filenames when identifying mods, including compatibility ownership checks.
  • Keep load order when re-enabling mods in profiles with more than 99 mods.
  • Open the Performance editor on changed settings and clarify settings the game ignores.

  • 2aa45ef: Fix updating a mod to a variant you had not installed before failing with "No VPKs matched the update selection"

  • b0c5da5: Fix Skip for Now not advancing setup past existing mods
  • 93763a8: Fix catalog sync after upgrading older development databases
  • 6d8293c: Give confirmation dialogs an icon, more room for the message and a separate button row
  • 8102f13: Fix lost imports and stale VPK ownership after Grimoire moves files
  • 6d8293c: Mark Mod Foundry, Stats and Performance with a "New" badge in the sidebar until you open them
  • dec4de2: Fix updates failing for mods whose author archived older files: the update dialog now marks archived files as outdated, selects only current files by default, and explains why one file must stay selected
  • 173b044: Restore author profiles from Mods Library and preserve the return destination
  • 3134bd5: Fix detected mods showing their installed archives as needing download
  • 1e48334: Open release notes on the website changelog instead of GitHub from What's New, the Dashboard, About and the splash screen
  • 7294b28: Mod updates now remember the files they actually installed, delete their downloaded archives afterwards, and no longer leave a failed update stuck on "Extracting..."
  • bea17db: Preserve installed mods when enabling another mod after upgrading from V1

Avoid intermittent database lock failures when initializing the local mod catalog.

  • eaeb8ae: Fix native Steam game detection on Linux alongside leftover Flatpak installs
  • 0a5a109: Add missing Simplified Chinese translations for catalog sync, filters, and patch notes
  • d58f469: Add a button to wipe the local GameBanana catalog from Debug and Settings
  • 4365ba4: Fix zoom in and zoom out so the app keeps filling the window instead of shrinking into the corner.
  • fa943c9: Fix Discord presence showing Street Brawl as a bot match with a 6-player party.
  • dffeec5: Fix download progress and speed jumping around, and never reaching 100%
  • 5e14be5: Save the latest mod state before the app closes, so a mod enabled or installed just before closing keeps its status after a restart
  • fdb5f3f: Fix hero filters in the Mods Store returning nothing. Mod details such as heroes, download counts, and descriptions now load for the whole catalog, sound previews play from the store, and update badges show when a mod has new files. NSFW blurring now matches what GameBanana hides, and the catalog no longer drops mods that move between pages while it syncs.
  • aeca5f4: Fix localized hero name art (e.g. Korean) showing as plain text when mods are enabled by writing the current Game_UILanguage and Game_LowViolence search paths to gameinfo.gi
  • 5e14be5: Show the Discord presence preview image from the app instead of loading it from Discord's CDN
  • 2f18d23: Add Baba, Deadman Danny, Nurse Harrow, Rat King, Solomon and Violet to hero detection, the Skins page and the Foundry.
  • 757dfe5: Remember the variant picked at download when enabling a mod
  • b0992fe: Hide NSFW mods on author pages when Hide NSFW Content is enabled
  • 5970027: Fix the Nix package failing to start when launched with --disable-auto-update
  • 530ff46: Restore installed mods a migrated library showed as unfinished downloads
  • 02300e2: Preserve gameinfo.gi line endings when toggling mods or updating profile and server search paths.
  • 899eb4b: Update outdated mod warnings and filtering for the City Never Sleeps update.
  • 09ea114: Only read Steam account configuration for match sync after consent is accepted and sync is enabled.
  • c7cc89c: Add a match data sharing step to onboarding, so new users can turn it off before it starts.
  • 3fd7fe4: Stop the Mods Store from rescanning your addons folder for every card that scrolls into view.
  • 0cadbbe: Fix mod update checks failing after a restart because saved install dates were read back as text
  • 5c0ae7e: Show download progress while updating mods, in the update dialog and on the Update buttons. The update dialog can now be closed while the update keeps running.
  • 7c868fb: Add a search box to the settings sidebar. Results show where each setting lives, and selecting one opens its tab and highlights the section.
  • 8ce81cd: Polish the Mod Foundry: solid entry cards, a cleaner skin import dialog, a pinned Paint button, a clearer toolbar, and no more lag selecting files or sounds in large skins
  • d09fb11: Keep active downloads intact when the same mod is requested twice
  • 8f89901: Fix CEF builds after Tauri moved the CEF runtime into its own crate, and read the hardware ID without the machine-uid plugin. The CEF Flatpak starts again, and the CEF .deb now declares the NSS, GBM, ALSA and xkbcommon-x11 libraries it needs.
  • 25a668d: Make the mod store, dashboard and search much faster: cards load small thumbnails, the store loads mods as you scroll, searches return in milliseconds, and browsing no longer uses up the GameBanana request limit needed for mod pages and downloads.
  • b7c9278: Improve crosshair browsing with clear selection, previews, and visible actions.
  • d86526d: Improve Mod Foundry tabs with visible labels and clearer selection states. Soften panel backgrounds to improve readability over theme artwork.
  • b91614b: Add a standalone Windows executable download using the default data locations.
  • 2cc198e: Fix custom crosshairs in Steam account settings and restore them when disabled
  • 933f547: Clean up saved match sync data for removed Steam accounts when match sync is enabled
  • cbab84a: Report failed download lookups per mod instead of aborting the whole batch update or profile import
  • c864567: Turn off the Background plugin when a theme is selected
  • 1d8e407: Process every selected archive when installing multi-file mods. Preserve selected variants and their exact file mappings when switching, re-enabling, and updating mods.

Report accurate file counts for multiple single-VPK downloads without an extra selection prompt, and cap direct variant downloads at 2 GiB.

  • 5aaf4f8: Install a Deadworks server's maps and addons before joining it
  • 29f1e21: Fix enabled mod counts and profile mod names
  • cbab84a: Fix direct GameBanana downloads, catalog recovery, and policy metadata.
  • ab1339d: Fix Flatpak startup crashes on Wayland compositors
  • 573b665: Fix buttons showing a spinner next to their icon while loading
  • db77591: Report Steam launch failures and confirm Deadlock starts after each request
  • 8b9bcee: Fix addon backups being modified while being validated, and reject mod IDs containing path separators
  • 0097615: Respect remembered NSFW show/hide choices only when enabled
  • 5beaed9: Recover from stale VPK records instead of failing the mod load order save
  • fc3f7b4: Show the active variant count next to a mod's file settings button
  • c864567: Fix themes turning off permanently when the Background plugin is enabled
  • 8b9bcee: Show mods whose addon files are missing as downloaded, not enabled
  • 1e1cadf: Fix server content progress showing "0.00 B" while unpacking maps and addons
  • 1d8e407: Apply the global NSFW hide preference to the mod library, hero skins, assignment choices, and direct mod-detail links.
  • 12e5de0: Credit vpkmerge and ValveResourceFormat in Settings → About
  • 0097615: Fix hidden NSFW mods appearing on the dashboard
  • 1d8e407: Fix older saves overwriting recent mod installation and download state
  • 1872459: Show only selected VPKs in the mod page's installed files list.
  • 99b4b6b: Fix a security issue where a malicious mod archive could write files outside the extraction folder. Archives whose entries use absolute paths or .. segments are now rejected instead of installed.
  • 9c43d25: Join the server you clicked instead of landing in the hideout
  • 9c43d25: Keep server passwords out of logs and launch-option injection
  • d91d030: Fix VPK state drift during deletes, batch updates, profile switches, and restore
  • d91d030: Preserve mod metadata during VPK replacement, clean up failed update extractions, and recognize uppercase VPK downloads. Reconcile profiles without overwriting concurrent changes, verify restored files on disk, and retry unavailable mod metadata. Keep inactive-profile cleanup from clearing active-profile progress and visibility.
  • edf83d7: Improve Stats dashboard and player card loading performance
  • 1f98b35: Show GameBanana preview images and likes on the Mods Store and Dashboard
  • fd4234f: Show Deadworks community servers with live ping and their custom maps
  • a83049b: Fix hero mod swaps from the mod store not applying
  • Updated dependencies [8547a02]
  • Updated dependencies [2f18d23]
  • Updated dependencies [25a668d]
  • Updated dependencies [2cc198e]
  • Updated dependencies [1f98b35]
  • Updated dependencies [cbab84a]
  • Updated dependencies [34cbd98]
  • Updated dependencies [55be2ff]
  • Updated dependencies [437e943]
  • Updated dependencies [cbab84a]
  • Updated dependencies [fd4234f]
  • Updated dependencies [c1a5b52]
  • Updated dependencies [cdec390]
  • Updated dependencies [cdec390]
  • Updated dependencies [4970162]
  • @deadlock-mods/shared@2.4.0
  • @deadlock-mods/hero-parser@1.1.2
  • @deadlock-mods/crosshair@0.2.7
  • @deadlock-mods/common@1.3.1
  • @deadlock-mods/vpk-parser@1.1.0

📋 Commits since v1.1.0

  • fix(desktop): keep the sticky mod toolbar opaque under themes (73a27699)
  • style(desktop): improve sticky mod toolbar backdrop (03bf83ff)
  • fix(api): defer stale profiles without reporting sync errors (88f5c8c5)
  • chore(i18n): new Crowdin translations (#985) (1fd9fd66)
  • docs: describe Server Browser as a regular feature (b80f5759)
  • chore(release): consume pending changesets into desktop 2.0.0 (938acc2c)
  • fix(desktop): use portal dialogs in Linux CEF builds (#984) (c7630116)
  • test(desktop): find dialog buttons without racing a closing dialog (4ee5cc2e)
  • fix(api): recheck recent mod updates without bypassing cache (0f4aed46)
  • ci(desktop): allow picking which Windows e2e suites run (c3130853)
  • test(desktop): open the Groups menu with the keyboard in e2e (c02501a6)
  • fix(api): bypass stale GameBanana details during mod sync (174fdcc9)
  • chore(i18n): new Crowdin translations (#983) (eec7c713)
  • feat(desktop): add profile mod groups (#981) (293d350d)
  • chore(nix): update dependency hashes (#982) (faf0bdbb)
  • test(desktop): end E2E crash checkpoints without running exit handlers on Linux (4e37ba65)
  • chore: update language table with Crowdin progress (#980) (6d3b8971)
  • test(desktop): re-click library card buttons when the first click is ignored (88863d93)
  • fix(desktop): correct release notes and update diagnostics (#979) (b370dbb4)
  • chore(i18n): new Crowdin translations (#978) (a18518dd)
  • feat(desktop): redesign library selection with a floating bulk action bar (3c5a8ffb)
  • fix(desktop): scan only loaded folders and always show analysis errors (#969) (0e657f76)
  • fix(desktop): make profile switching and import reliable (#968) (55545467)
  • fix(desktop): keep running downloads marked as downloading and report repeated errors once (#967) (fa0ff6d1)
  • feat(desktop): let users move the download cache to another folder (#966) (a0f2cbd1)
  • fix(desktop): back up an unreadable state file and tell the user (#965) (08d0fbf8)
  • fix(desktop): keep unselected variants out of updates when the tree omits them (#963) (45851c9c)
  • chore(i18n): new Crowdin translations (#975) (8e428ac4)
  • fix(desktop): count each install as one analytics user (fcfcf631)
  • fix(desktop): keep original VPK names aligned when repairing a mod folder (#962) (f815b690)
  • fix(desktop): validate compatibility repairs and cache rebuild work (#974) (f22926b8)
  • chore(nix): update dependency hashes (#973) (69823e54)
  • test(desktop): use the real store in the launch options test (6624f4c3)
  • ci(desktop): trial thin LTO on nightly builds (bb2e5ccb)
  • test(desktop): match E2E checks to the skin conflict dialog and new scenarios (9b18bf7f)
  • test(repo): wire missing package suites into CI (e94e36a4)
  • fix(desktop): keep profile search paths on the first mod enable (b51a4b83)
  • test(desktop): accept parsed season routes in the hideout page check (5b52ebab)
  • feat(desktop): let skins that share a model stay enabled together (6819b310)
  • perf(desktop): rebuild the repair package without blocking mod actions (6f1547d1)
  • fix(desktop): place seasonal hideouts on real pages (71c0ee47)
  • fix(desktop): show toasts in the top-right corner (5aaff4d3)
  • ci(release): build an offline installer for the Microsoft Store (d2172593)
  • fix(desktop): rebuild the repair package after library changes (b9916d0b)
  • feat(desktop): follow the Deadworks content discovery spec in the server browser (49701627)
  • fix(desktop): stop applying launch options removed from the server (184ea91e)
  • fix(desktop): keep perf_config fixtures byte-exact on CRLF checkouts (#961) (dbca9b98)
  • chore(i18n): new Crowdin translations (#971) (2c1a7328)
  • fix(desktop): resolve skin conflicts and speed up compatibility checks (#964) (0c458659)
  • feat(desktop): add subset bulk actions and fix library UX (#960) (a7cd2432)
  • chore: update language table with Crowdin progress (#970) (8ab8eb98)
  • fix(ci): give the Flatpak smoke test's in-sandbox update a new commit (a43d89f9)
  • chore(release): consume pending changesets into desktop 2.0.0 (dc0e2cac)
  • fix(desktop): launch Flatpak and Snap Steam through their sandbox (#958) (8215ed45)
  • chore(i18n): new Crowdin translations (#959) (d772938f)
  • test(desktop): re-query the profile switch before clicking it (bb74d099)
  • test(desktop): wait for the persisted load order in the conflicts oracle (10730279)
  • test(desktop): wait for the restarted library with a fresh lookup (0260f225)
  • test(desktop): turn off library pagination in the shard world (b5434ca3)
  • ci(e2e): run the shards suite on Windows and Debian (5a88882c)
  • fix(desktop): stop the library snapping back mid-scroll (eb6fe7f4)
  • test(desktop): wait for library cards to settle before clicking (3005aed2)
  • fix(desktop): pass the NSFW only filter props to the library search bar (d619b053)
  • perf(desktop): cut per-card work in the Mods Library (39dc2690)
  • perf(desktop): rely on one poller for the game-running check (622b9403)
  • perf(desktop): give always-mounted store reads a selector (ac6c73db)
  • perf(desktop): skip SVG internals in the global color transition (49acfb92)
  • perf(desktop): composite the background geometry animations (875fe079)
  • feat(desktop): add Drututt theme (8eb3a21d)
  • feat(desktop): add an NSFW only mod filter (932aa5c5)
  • fix(desktop): tidy punctuation in English UI copy (3fc3a289)
  • fix(desktop): make match sync opt-in (053dbb67)
  • test(desktop): re-query mod switches while the library re-renders (e48d1262)
  • test(desktop): keep the error message in E2E results (b7968bc3)
  • chore: update language table with Crowdin progress (#953) (d842a77c)
  • fix(desktop): repair Linux update downloads and sandbox installs (#955) (6c300f56)
  • chore(i18n): new Crowdin translations (#957) (2eca53d2)
  • feat(www): add Find a broken mod to the V2 page (da6a88dd)
  • docs: add a guide to finding a broken mod (3bc2d6e2)
  • fix(desktop): name Change Mods Order in the bisect result tip (fa847a84)
  • chore(i18n): new Crowdin translations (#956) (84fb84a2)
  • feat(desktop): find the mod that breaks the game by testing in halves (d8d6e740)
  • test(desktop): name unexpected E2E requests when a case fails (19655038)
  • fix(desktop): keep the presence hero list offline in E2E worlds (fb40845c)
  • ci(cef): cache the Tauri CLI and CEF download on Windows (0c2a3a8e)
  • ci(e2e): cache the pnpm store in desktop E2E setup (ba666de5)
  • ci(nix): cancel Nix builds superseded by a newer main commit (df4d4482)
  • ci: fix rust-cache target paths (c1e75762)
  • chore(i18n): new Crowdin translations (#954) (73b2745a)
  • fix(desktop): require match sync consent from every user (3920c285)
  • chore: run knip check in pre-commit (7121a0dc)
  • fix(www): label the V2 preview as an experimental nightly (caf32186)
  • fix(bot): show total counts when clearing reports (cef25b05)
  • fix(desktop): wait for match sync cleanup before launching (#952) (41bbecaa)
  • chore(nix): update nixpkgs (e1e922f5)
  • feat(bot): add command to trigger forum cleanup (ddfc7a5b)
  • fix(bot): show report-clearing results publicly (d5539c47)
  • fix(bot): allow moderation staff to clear reports (3bd448c3)
  • chore(nix): update dependency hashes (#951) (da403559)
  • chore(nix): update dependency hashes (#948) (d1f317d5)
  • fix(desktop): clear match sync's game instead of logging out of Steam (#950) (f228b480)
  • feat(bot): add command to clear reports by mod or author (439da9f0)
  • chore(i18n): new Crowdin translations (#946) (894d1b28)
  • docs(www): publish Discord language moderation demo (40f2ef76)
  • fix(desktop): log match sync out of Steam before the game launches (#947) (718218b8)
  • fix(api): coalesce release fetches and respect GitHub rate limits (e784832b)
  • fix(feature-flags): stop registration after failed lookups (a4d7103e)
  • fix(common): preserve wrapped database error causes (c1a5b52b)
  • chore(bot): treat interaction handlers as Knip entry points (#949) (4fc7eebe)
  • docs: document installing the Nix nightly from Cachix (da66b7b5)
  • chore: rename and shorten pending changesets to the changeset convention (cdec3900)
  • chore: split and rename the feature tips and repair check changesets (52462483)
  • chore: add the Sentry MCP server to the shared MCP configs (cdb834ef)
  • chore: rename compatibility repair changesets to the changeset convention (21e79007)
  • docs: tighten compatibility repair wording (9d334a42)
  • docs: document the manual check for mod repairs (2c0c04cb)
  • style(bot): normalize test config line endings (535fe921)
  • feat(bot): add English-only channel moderation (4e0c11c2)
  • docs(www): cover Discord bot data in privacy policy (e63264ff)
  • fix(api): read GameBanana error responses only once (dbd4ab18)
  • fix(api,queue): remove retired RSS schedules before consuming jobs (a1535055)
  • fix(desktop,vpkmanager): verify rebuilt resources and packed overlays (5bc74bea)
  • fix(api): reconnect Redis clients after primary demotion (aa258ed0)
  • fix(feature-flags): cache plain flag data before wrapping results (c6b04436)
  • feat(desktop): add a manual check for mod repairs (5394c944)
  • feat(desktop): accept skeletons the game extended (f7685b2e)
  • fix(desktop): report unreadable mod files instead of stopping launch (a96494aa)
  • style(desktop): format compatibility repair tests and helpers (c4069cb9)
  • fix(desktop): fix outdated copies of game data and text (7d496e7d)
  • docs(www): list V2 mod repairs and other shared features on the Grimoire comparison (573f72da)
  • feat(bot): manage bug report and suggestion forum posts (8142be19)
  • fix(desktop): keep restored camera points in the current frame (b89bb215)
  • feat(desktop): restore footstep and movement sound bindings (9e1b6396)
  • fix(desktop): route GitHub contributors through the E2E fixture server (e1bbf49b)
  • fix(desktop): match mod detail action button sizes (26cb36ab)
  • chore(tooling): cap changesets at one sentence (a25a465c)
  • feat(desktop): animate the support author buttons on hover and click (b2225ddd)
  • fix(aur): version cached source names in deadlock-modmanager-bin (351aafc7)
  • ci(nix): publish nightly builds to Cachix (3271078c)
  • chore(i18n): new Crowdin translations (#945) (406f56f2)
  • fix(desktop): ignore GLX vendor-only PRIME selection (422c8a06)
  • fix(desktop): detect the GPU driving the displays for the Linux WebKit workaround (#925) (310b982b)
  • feat(desktop): add a feature tip for the nightly update channel (40fe8eed)
  • feat(desktop): add feature tips for controls users never touch (#944) (8318e70f)
  • chore(i18n): new Crowdin translations (#943) (50f6c15c)
  • feat(desktop): explain slow and failed GameBanana downloads (#941) (3d5dd7e2)
  • chore(i18n): new Crowdin translations (#942) (89b2f0f2)
  • chore(vpk-parser): resolve the native library from import.meta.dir (d66fe43e)
  • fix(lockdex): free native parser results and move to Bun 1.4 (6fbb14d1)
  • feat(desktop): copy the mod list from the library menu (f7622a8a)
  • chore: update language table with Crowdin progress (#940) (6da0c338)
  • fix(desktop): list each hero once in the presence picker (#939) (d1ce05ee)
  • chore(infra): give lockdex two processing slots (0a2bcbe4)
  • fix(ci): keep previous nightly published until the new one is ready (242a1165)
  • chore(api,shared): drop leftovers of the RSS job and top submissions (afd39328)
  • fix(shared): keep mod sync-state columns out of ModDto (8d1914bc)
  • chore(lockdex): drop exports knip flags as unused (08473fbe)
  • feat(api,database): sync GameBanana mods incrementally (f5e197bc)
  • perf(lockdex): overlap downloads, backfill missing files and expose metrics (d2f8b999)
  • fix(database): claim legacy VPK rows instead of hitting the sha256 index (a6ec1122)
  • perf(vpk-parser): hash VPK files from disk in chunks (34608273)
  • fix(queue): pass bulk job options to BullMQ and support non-retryable results (7234e15c)
  • fix(desktop): type the tray commands against the app runtime (983c904a)
  • chore(i18n): new Crowdin translations (#938) (8e60ebc3)
  • fix(desktop): type the Linux tray stub against the app runtime (793a832e)
  • feat(desktop): add a contributors page and credit the core team (e9a98a4f)
  • refactor(desktop): update announcements ticker styling and replace checkbox input with themed component in experimental tour (e94fa416)
  • feat(desktop): move experimental tour discovery to the sidebar (3ec54440)
  • fix(desktop): use the themed checkbox in the experimental tour (fabafc02)
  • feat(desktop): add an optional experimental feature tour (50648da8)
  • chore(i18n): new Crowdin translations (#937) (0580262f)
  • chore(release): consume pending changesets into desktop 2.0.0 (9c610150)
  • feat(www): lead the V2 page with mod health and add the crash check (42115a49)
  • feat(desktop): run the crash check without the performance configs flag (7557bada)
  • feat(desktop): sync the GameBanana catalog every 30 minutes (f440325e)
  • chore(i18n): new Crowdin translations (#936) (d0c5bd28)
  • feat(desktop): check mod health and fix mods after game updates (#931) (a1f2286b)
  • chore: update language table with Crowdin progress (#935) (659cca63)
  • chore(perf-catalog): refresh performance catalog (#934) (e3a8346c)
  • fix(desktop): adjust padding in MyMods (eac29512)
  • chore(i18n): new Crowdin translations (#933) (550339af)
  • feat(desktop): add sorting to the mod library (e31d6155)
  • chore(i18n): new Crowdin translations (#932) (21621f3d)
  • feat(desktop): show update badges for disabled mods (#930) (b4b34a2a)
  • fix(desktop): drop the system tray on Linux (#926) (af171e67)
  • chore(i18n): new Crowdin translations (#928) (73140847)
  • fix(perf-catalog): unblock the refresh workflow; refresh agent docs (#927) (abd59a1b)
  • feat(desktop): add scoped stats filters and refine dashboard controls (#929) (712f6900)
  • feat(desktop): add customizable stats dashboard (#894) (72ea72c3)
  • test(desktop): match E2E specs to the Manage files dialog and repair copy (252888a8)
  • fix(nix): provide libayatana-appindicator for the tray icon (0c35ca84)
  • fix(desktop): stop the update dialog from refetching mod files in a loop (341daedb)
  • fix(ci): stamp CEF nightlies with the shared commit hash (6a088ccd)
  • fix(desktop): close overlay staging handle before packing (#924) (9b06f227)
  • chore(release): consume pending changesets into desktop 2.0.0 (5d3c8a3e)
  • refactor(desktop): drop unused compatibility prop from mod context menu (552438fd)
  • fix(feature-flags): update exposure of Remlock feature flag to false (e99a5e52)
  • chore(i18n): new Crowdin translations (#922) (7823e48b)
  • feat(desktop): add minimize and close to system tray (5f0b3b66)
  • chore(i18n): new Crowdin translations (#921) (ff727577)
  • fix(desktop): tidy library mod card actions (41631345)
  • feat(desktop): manage multi-VPK mod files from the Manage files dialog (2025231d)
  • chore(repo): adopt unified js/ts workspace settings (2fc5ec81)
  • fix(desktop): let players cancel a pending game launch (344c40e6)
  • fix(desktop): spin only the cog in the launch overlay logo (30068dab)
  • fix(desktop): give themed toasts their theme background (56750912)
  • fix(desktop): install live GameBanana files when updating mods (fa994af3)
  • test(desktop): retry fake launcher spawn on ETXTBSY (4ba0503f)
  • test(desktop): match nightly E2E assertions to current app copy (c0aac8ac)
  • chore(nix): update dependency hashes (#919) (9ce369d6)
  • chore: update language table with Crowdin progress (#918) (f4495fad)
  • fix(ci): accept the CEF launcher exit after a deep-link handoff (198de120)
  • chore(i18n): new Crowdin translations (#916) (f3eb4327)
  • chore(nix): update dependency hashes (#917) (d319c9e1)
  • fix(desktop): stop exporting the unused LaunchProgress type (27f37af1)
  • fix(ci): give the Flatpak smoke test X11 and a shared session bus (a300f659)
  • feat(desktop): show launch progress with the real launch steps (999b59de)
  • feat(desktop): group compatibility findings by mod and move the control to the header (29514929)
  • fix(desktop): skip rewriting gameinfo.gi when search paths are unchanged (7616335a)
  • chore: format desktop app and e2e workflow, add turbo agent guidance (9a14d673)
  • chore: upgrade turbo to 2.11.7 and move to TypeScript 7 (514a663d)
  • feat(desktop): add Enable all mods with a recap (5382703d)
  • fix(desktop): read live files and show progress in Manage files (c9cfea69)
  • fix(desktop): keep the new install date for every mod in a batch update (2a4b7216)
  • fix(desktop): tidy Mods Library card controls (c2358b60)
  • fix(desktop): smoke test Flatpak bundles and skip in-sandbox protocol registration (#915) (2628eea6)
  • chore(release): consume pending changesets into desktop 2.0.0 (871c78d6)
  • fix(desktop): stop variants sharing a VPK filename overwriting each other (#853) (220b9f7a)
  • chore(deps): bump actions/create-github-app-token from 3.2.0 to 3.3.0 (#897) (e09a6606)
  • chore(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 (#895) (5b092f6d)
  • chore(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 (#896) (2d4b9ce3)
  • chore(i18n): new Crowdin translations (#912) (b2990f64)
  • fix(desktop): import large local mods without loading them into the webview (#893) (bc909724)
  • fix(desktop): keep backdrop clicks in mod dialogs from opening the mod page (#858) (64eb7508)
  • feat(desktop): add branded NSIS installer images (#888) (6d46ad14)
  • feat(desktop): release unused to-fetch claims after match backfill (#905) (e78b2cf9)
  • feat(desktop): add Gridline theme (#903) (b1e5b6ee)
  • fix(desktop): align settings switches across rows and window sizes (#861) (861b13ce)
  • fix(desktop): show toolbar Back as soon as in-page Back scrolls out (#864) (9c422287)
  • fix(desktop): show only downloaded variants' size on download cards (#856) (b96bc35b)
  • chore(i18n): new Crowdin translations (#911) (f9b060fd)
  • feat: add hero availability and asset support (#865) (5019a5eb)
  • fix(desktop): distinguish updater failures from no update (#870) (c2843395)
  • feat(desktop): toggle individual VPKs in the installed files list (#907) (300ab771)
  • chore(i18n): new Crowdin translations (#909) (219c842a)
  • test(desktop): add a seeded monkey e2e scenario and fix what it found (#892) (d45d8add)
  • fix(docs): serve unoptimized images in the static export (2c106588)
  • chore(repo): drop the removed docs middleware from the knip baseline (f11f88d7)
  • docs: document Cloudflare hosting and static export rules for the docs site (89ad2eec)
  • refactor(docs): merge markdown URL helpers into getPageMarkdown (d697dc90)
  • fix(desktop): recover from read-only gameinfo and stale gameinfo resets (#890) (40531b3d)
  • feat(docs): deploy as a static export on Cloudflare Workers (6813a954)
  • fix(docs): point og:image metadata at the /og/docs route (b8d34984)
  • feat(desktop): add a Repair mod folder action (#889) (d9d0cb1c)
  • chore(i18n): new Crowdin translations (#908) (0b8c3513)
  • fix(desktop): recover from broken mod states reported in support (#868) (9dc0d046)
  • chore(i18n): new Crowdin translations (#906) (75840d44)
  • fix(infra): take remaining services out of the linkerd mesh (bfcc168a)
  • fix(infra): take auth out of the linkerd mesh and run 2 replicas (8e2eb45a)
  • feat(desktop): add compatibility repairs and migrate outdated skin cameras (#804) (f3bfa9ea)
  • chore(infra): scale web to 7 replicas (4450bae1)
  • fix(infra): relax web readiness probe so busy pods stay in rotation (24e0467b)
  • fix(infra): take web out of the linkerd mesh (50c59d82)
  • chore: update language table with Crowdin progress (#869) (83cfa2e0)
  • chore(i18n): apply community Simplified Chinese update (#866) (c2b75f1b)
  • chore: update gameinfo.gi from depot (#862) (041cb368)
  • chore: update language table with Crowdin progress (#850) (cf1c98a8)
  • chore(i18n): new Crowdin translations (#849) (9e8b626f)
  • fix(desktop): use runtime-aware AppHandle in performance commands (e2cec87c)
  • chore(perf-catalog): keep the generated catalog out of oxfmt (13d9e0e6)
  • chore: ignore local worktrees and impeccable output (b859850c)
  • chore(.agents): add humanizer skill (a86cbf7e)
  • feat(desktop): add GameBanana collections (196e1761)
  • chore(www): update partners list (77817edf)
  • chore(perf-catalog): refresh performance catalog (#848) (6e6f9ad1)
  • chore(i18n): new Crowdin translations (#843) (f79c2f93)
  • fix(desktop): keep load order and stray-file detection right past 99 mods (#847) (cdb6a935)
  • ci: auto-merge bot PRs once CI passes (d57f1199)
  • ci: open bot PRs with the GitHub App token and run CI in the merge queue (cdff62cb)
  • chore: update language table with Crowdin progress (#844) (f2b651ce)
  • chore(perf-catalog): refresh performance catalog (#846) (7191911e)
  • fix(perf-catalog): clean up archives that extract read-only folders (9677173a)
  • ci: refresh the perf catalog when a new convar dump lands (137b8344)
  • feat(desktop): quiet the Performance settings editor (03ff71fb)
  • style(desktop): tighten the Performance page copy (55e78dc5)
  • fix(desktop): highlight camera and visibility lines as opt-in in config imports (b310a6c0)
  • feat(www): add a Performance configs section to the V2 page (47faeeef)
  • docs(docs): document the Performance page with screenshots (7f11b13f)
  • chore(release): consume pending changesets into desktop 2.0.0 (94cd6a00)
  • feat(www): group experimental changes on the changelog page (1e3e01d2)
  • fix(api): declare perf catalog output schema for OpenAPI generation (75214c98)
  • chore(i18n): new Crowdin translations (#841) (de7e662c)
  • feat(desktop): add album and author search, sort author pages (#826) (f1abf316)
  • chore: update language table with Crowdin progress (#840) (a08be288)
  • chore(nix): update dependency hashes (#839) (e5a8f5ea)
  • ci: open bot PRs instead of pushing to main (#838) (9aa49954)
  • chore(i18n): new Crowdin translations (#837) (eb622645)
  • feat(desktop): add incremental catalog refresh (#832) (208f11d5)
  • fix(desktop): restore author links for existing library mods (#831) (173b044c)
  • fix(desktop): retain archive ownership for detected mods (#830) (3134bd56)
  • fix(desktop): advance onboarding when skipping addon analysis (#829) (b0c5da59)
  • fix(desktop): recover legacy catalog metadata migrations (#828) (93763a87)
  • fix(desktop): reconcile Grimoire imports after VPK moves (#827) (8102f13c)
  • chore(i18n): new Crowdin translations (#836) (131fb752)
  • feat: performance configs (#835) (6d8293c2)
  • fix(desktop): only reallocate crosshair canvases on real size changes (45c273c8)
  • fix(desktop): reset mods store page on sort change and external filter changes (c08cb1e9)
  • docs(docs): qualify interchange round-trip and document import identification step (d3a0ec6a)
  • chore(i18n): new Crowdin translations (#825) (116080b8)
  • test(desktop): bump mtime when rewriting a stored mod file (66d8f2a6)
  • feat(www): add Arcane, Deadlock API, and OLED themes (#823) (c5e5f436)
  • docs(docs): document mod interchange format (#822) (89c2d131)
  • chore: sync knip baseline with WEB_URL and OG font usage (a80fc374)
  • chore(i18n): new Crowdin translations (#824) (77b0595b)
  • feat(desktop): show addons backup progress in the update dialog (a9a11ddb)
  • fix(desktop): record installed files and clean up after mod updates (7294b28a)
  • feat(desktop): frame harmless mod overlaps as informational (8b732e0b)
  • chore(desktop): make HTTP error logs self-describing and quiet VPK listing (8c87bd29)
  • fix(desktop): only apply a saved VPK selection to archives it covers (2aa45ef2)
  • refactor(desktop): read deadlockskins albums from its public API (8ae2853c)
  • fix(desktop): handle archived GameBanana files when updating mods (dec4de2d)
  • chore: register tauri-mcp-server for Claude Code (abfeff8a)
  • style(desktop): quiet the custom maps advisory (8512b969)
  • chore: scope pre-commit hooks to staged files (d08cccb1)
  • feat(www): give each page its own link preview card (ef498ec3)
  • feat(desktop): link release notes to the website changelog (1e48334b)
  • chore(i18n): new Crowdin translations (#821) (2cbfb7ee)
  • chore(desktop): curate the 2.0.0 release notes and What's New (c3dc52b7)
  • chore(release): consume pending changesets into desktop 2.0.0 (be93f178)
  • feat(www): add a changelog page and a What's new in V2 page (62cdd3d9)
  • chore(changeset): drop the Ctrl+F claim from the settings search note (d6c62386)
  • refactor(www): drop the closing download band from guide pages (edfffa29)
  • fix(ci): pass branch names to test-release via env (757519c8)
  • feat(desktop): show social links in the sidebar footer (2cbb2d4f)
  • chore(.agents): sync deslop skill with the vault version (c3547a18)
  • fix(desktop): refetch a stale hero catalog when a hero icon misses (3e0de54e)
  • chore(i18n): new Crowdin translations (#819) (589c6de2)
  • feat(www): advertise the public API to agents (#820) (55d92e52)
  • ci(i18n): allow auto-approving uploaded Crowdin translations (827882b9)
  • fix(desktop): make Grimoire imports idempotent (#814) (7714ee6d)
  • feat(www): localize the website into 6 languages with hreflang SEO (#818) (3cdd688d)
  • docs: show regular and CEF APT install commands side by side (f4e50aea)
  • docs: recommend the CEF build when the app feels slow (69c9ff9b)
  • fix(ci): backfill missing dependencies when publishing APT packages (50d140a3)
  • fix(desktop): depend on xdg-utils in Linux packages (3d0ff59a)
  • fix(docker): copy .pnpmfile.mjs into service image builds (20d2c65f)
  • feat(ci): publish CEF builds as a cef APT component (46c3d301)
  • fix(ci): only stamp nightly versions on nightly CEF builds (ab417081)
  • fix(desktop): depend on desktop-file-utils in Linux packages (0ba04380)
  • feat(www): announce V2 and index the latest release version (b32e06f5)
  • docs(www): mention the APT repository in Linux install copy (57eb589c)
  • chore(www): small fixes (27928568)
  • feat(www): add error fix pages for common mod manager errors (158b66d3)
  • feat(www): add SEO landing pages for mods, skins, guides and Grimoire comparison (86f9831b)
  • fix(ci): avoid SIGPIPE when selecting releases for the APT repository (#817) (67ccf87c)
  • ci(desktop): publish stable .deb releases to an APT repository (#816) (a101dcc6)
  • ci(desktop): run e2e against the Nix package and fix repeated CLI flags (#809) (5970027f)
  • chore(.agents): ship a PR watcher with the babysit skill (#815) (813a6981)
  • chore(i18n): new Crowdin translations (#813) (8bb56d1a)
  • chore(i18n): new Crowdin translations (#812) (6303a416)
  • feat(desktop): toggle match sync from the stats page (#796) (a0a9df90)
  • feat(desktop): remove mods whose VPKs were deleted outside DMM (#810) (d43255c9)
  • chore(i18n): new Crowdin translations (#811) (ae304758)
  • feat(desktop): enable match sync by default with a notice for existing users (#795) (ae910d5d)
  • chore(i18n): new Crowdin translations (#807) (7efdb819)
  • docs: update setup prerequisites and repository links (6d7e6a05)
  • docs(readme): refresh features, install options, badges, and screenshot (#808) (1e16d326)
  • fix(desktop): refine third-party disclaimer styling (3e7c1596)
  • feat(desktop): track actionable analytics outcomes (#800) (d09fb111)
  • chore: bump actions/upload-artifact from 4.6.2 to 7.0.1 (#797) (cc123e61)
  • chore: bump actions/download-artifact from 4.3.0 to 8.0.1 (#799) (bd63a95e)
  • fix(desktop): detect native Steam installs on Linux (#806) (eaeb8ae4)
  • chore(nix): update dependency hashes [skip ci] (9bb92006)
  • chore: bump actions/checkout from 6.1.0 to 7.0.1 (#798) (ea902784)
  • fix(desktop): resolve Rust compiler warnings (#805) (55bdd497)
  • fix(aur): make source PKGBUILDs build with a system libvips (#801) (d1c0b17e)
  • fix(desktop): show actual autoexec launch argument in settings (50789cec)
  • ci(release): avoid interactive test certificate trust prompt (785333a3)
  • ci(release): verify signatures with pinned test certificate (af62b80e)
  • ci(release): log Authenticode verification failure details (03d79d78)
  • ci(release): revert SignPath to v2 and ignore v3 updates (ba583a80)
  • fix(desktop): preserve analytics hardware ID fallback (5538df31)
  • chore(i18n): new Crowdin translations (#788) (b16e7dbc)
  • chore: update language table with Crowdin progress (78f17aeb)
  • feat(desktop): show download progress while updating mods (#786) (5c0ae7e7)
  • feat(www): remove download CTA section from the homepage (f6967cdf)
  • chore(nix): update dependency hashes [skip ci] (b626d504)
  • feat(www): redesign landing page with a live app preview (#789) (cf5b35bc)
  • test(desktop): cover hero skin active state in E2E (#785) (963a266f)
  • feat(desktop): add commissions entry point (#787) (64fba05b)
  • fix(release): base nightlies on the unreleased package version (#784) (9df19632)
  • test(desktop): run the E2E harness on Linux (Debian and Arch) (#781) (5e14be59)
  • test(desktop): cover remembered and unremembered variant choices in GameBanana E2E (#783) (941bfb7f)
  • feat: tag outbound deadlockskins.gg links with ref=dmm (653e3392)
  • chore(nix): update dependency hashes [skip ci] (2fdd0ccb)
  • chore(i18n): new Crowdin translations (#780) (a0eb9941)
  • fix(desktop): migrate CEF builds to Tauri's runtime crate API (#776) (8f899018)
  • feat(desktop): skip mod updates and ignore unrelated file additions (#774) (5de7f619)
  • fix(desktop): mount localized UI assets when mods are enabled (#779) (aeca5f4d)
  • test(desktop): cover hiding NSFW mods on author pages in e2e (#777) (19ce01f1)
  • chore: update language table with Crowdin progress (67eec21a)
  • fix(desktop): hide NSFW mods on author pages (b0992fee)
  • feat(desktop): add portable Windows executable downloads (#749) (b91614b6)
  • chore(i18n): new Crowdin translations (#772) (766cad46)
  • feat(desktop): add seasonal themes (#770) (c52fc908)
  • feat(desktop): add mod manager interchange support (#744) (e3b1c3c7)
  • feat(desktop): add a button to wipe the local GameBanana catalog (d58f4697)
  • fix(desktop): polish Mod Foundry UI and fix list lag (8ce81cda)
  • chore(i18n): new Crowdin translations (#769) (92037be3)
  • feat(desktop): add launch skin randomizer (#724) (10e1a2a9)
  • chore(i18n): new Crowdin translations (#768) (0f01fc65)
  • chore(i18n): new Crowdin translations (#767) (4d7a110b)
  • feat(desktop): add deadlockskins.gg albums tab (#760) (0f9a0bee)
  • docs(pr-description): add new skill for writing effective pull request descriptions (52b3efec)
  • chore(i18n): new Crowdin translations (#766) (0c1873cf)
  • feat(desktop): improve theme customization and backdrops (#765) (e8fdbda6)
  • chore(skills): add babysit skill (9e7b5933)
  • fix(desktop): harden game guard and connection diagnostics (3a8da7b7)
  • feat(desktop): guard mod changes and add diagnostics (a9d8a8b2)
  • chore: update language table with Crowdin progress (0e478c7f)
  • chore(www): fix knip check on main (b0016b5b)
  • chore(i18n): new Crowdin translations (#764) (6e6cd6b0)
  • chore(i18n): new Crowdin translations (#763) (dc7787e9)
  • feat(desktop): display GameBanana activity (#727) (85b515ad)
  • fix(desktop): adjust search container width for better responsiveness (b1e76fa2)
  • feat(desktop): add OLED theme with customizable accent (d0d29cda)
  • feat(desktop): colorize dev terminal logs (0f201ba7)
  • feat(www): redesign downloads page (0ee32a95)
  • feat(desktop): put conflict detection behind an experimental flag (e3c09b85)
  • feat(desktop): detect file conflicts between enabled mods (2a8af422)
  • perf(desktop): raise GameBanana request budget to 10 req/s (98757d99)
  • chore: bump signpath/github-action-submit-signing-request from 2 to 3 (#729) (121064cc)
  • chore: bump DeterminateSystems/magic-nix-cache-action from 14 to 15 (#728) (16823dec)
  • chore: update language table with Crowdin progress (5eefc71b)
  • chore(nix): update dependency hashes [skip ci] (8e1f9ede)
  • fix(desktop): pin @tauri-apps/plugin-log to match Rust crate (d050eb17)
  • chore(i18n): new Crowdin translations (df312717)
  • chore(nix): update dependency hashes [skip ci] (2e566192)
  • feat(desktop): improve crosshair selection and browsing (b7c92785)
  • fix(desktop): apply crosshairs to Steam hero settings (2cc198e6)
  • perf(desktop,shared): speed up the catalog and mod store (25a668df)
  • fix(desktop): improve foundry tabs and panel readability (d86526dc)
  • feat(desktop): add Remlock theme and Rem easter eggs (bb77ef9c)
  • fix(desktop): read persisted install dates when checking mod updates (0cadbbe2)
  • fix(desktop): add missing common translation keys (53e1fe81)
  • chore: normalize changeset line endings (967c04b8)
  • feat(api,database,desktop,shared): add mod author profiles (8547a021)
  • feat(desktop): trigger flashbang randomly on load (374d9c94)
  • feat(desktop): restore vanilla gameinfo.gi when the game closes (799d2314)
  • fix(desktop): prune forgotten match-sync accounts on enable (#750) (933f5474)
  • fix(desktop): reconcile install state from manifests (#722) (530ff46d)
  • feat(desktop): add Lovelock theme (#754) (07cdeafa)
  • fix(discord-presence): improve match and party detection (#731) (fa943c99)
  • fix: docker file updat (d836bfa0)
  • fix(www): upgrade deps (9a3539be)
  • fix(www): upgrade deps (e39cd27d)
  • fix(ci): restore website tests and update Knip baseline (#753) (1e66c6f1)
  • fix(api,www): restore Wry as the primary Linux download (#752) (2e252cad)
  • fix(desktop): remember selected mod variants on enable (#691) (757dfe58)
  • chore: bump crowdin/github-action from 2 to 3 (#721) (0439aa9e)
  • fix(desktop): stop multi-file download progress jumping (#737) (dffeec5a)
  • chore(i18n): new Crowdin translations (7fc562a3)
  • docs(docs): simplify player guide wording and formatting (d172bbdf)
  • docs(docs): refresh player guides and add interface screenshots (556a75de)
  • fix(desktop): preserve gameinfo line endings (02300e2b)
  • fix(desktop): gate match-sync discovery on consent and enablement (#743) (09ea1147)
  • test(desktop): repair hero and content visibility fixtures (8b684006)
  • fix(desktop): preserve upgraded mod state and stabilize startup (bea17db7)
  • docs(docs): document community Flatpak workarounds (8afb3724)
  • fix(desktop): fill missing Simplified Chinese strings (0a5a1095)
  • ci(release): fix v2 qualification checks (40819a7d)
  • fix(desktop): update branding (d8c89a30)
  • feat(desktop): warn on Steam updates and show patch notes (2fa0b194)
  • feat(desktop): show mod changelogs (bfd61081)
  • feat(desktop): add a reset for saved NSFW choices (e991797f)
  • feat(desktop): browse the mods store by section with a one-row toolbar (cbd4c9d4)
  • fix(api): skip non-mod GameBanana listings and align NSFW rules (15e3954e)
  • fix(desktop): harden GameBanana catalog sync and track WIPs (fdb5f3fc)
  • feat(source2-model): improve hero poses and mesh decoding (40206621)
  • chore: lockfile (518b5db7)
  • feat(desktop): add an "Added" date filter to the mods store (96450896)
  • feat(desktop): show hero portraits wherever hero names appear (840cff8a)
  • chore(repo): modernize agent workflows and enforce knip baseline (904c7c1a)
  • feat(desktop): replace product feature flags with local experimental toggles (c2049ae1)
  • docs: add libprotobuf-dev to Debian/Ubuntu dependencies (314c20ed)
  • fix(desktop): hydrate GameBanana catalog through the legacy bulk API (dc940c3f)
  • fix(desktop): stop store cards from rescanning profile VPKs (3fd7fe45)
  • feat(desktop): add settings search (7c868fb3)
  • fix(desktop): use native webview zoom so the layout fills the window (4365ba4a)
  • feat(desktop): credit Stormix next to the sidebar version (63603fca)
  • feat(desktop): remove the early access badge (8683274e)
  • fix(desktop): break up the match sync consent dialog (10b61c69)
  • feat(desktop): add match sync step to onboarding (c7cc89c5)
  • Revert "feat(desktop): enable match sync by default (#720)" (164cb7a7)
  • style(repo): apply cargo fmt, clippy fixes and oxfmt to changelogs (4fa5489d)
  • fix(desktop): identify local addons by submission identity (76b871c0)
  • fix(api): keep released desktop clients working on v2 endpoints (23af9437)
  • feat(database): backfill submission identities for legacy rows (0f58c9cc)
  • feat(desktop): add the six 2026-09-29 heroes (2f18d23e)
  • fix(desktop): update outdated mod cutoff for City Never Sleeps (899eb4b3)
  • feat(desktop): enable match sync by default (#720) (ddee64e1)
  • chore: prepare release (6fc41494)
  • feat(desktop): implement catalog sync progress display and resync action (9fa129cb)
  • test(desktop): expand nightly E2E coverage (#714) (773fdd2f)
  • refactor(desktop): consolidate E2E harness and scenario utilities (#713) (752654ad)
  • test(desktop): cover GameBanana downloads and installation (#712) (307e9ce0)
  • test(desktop): cover filesystem recovery and crash boundaries (#711) (6ac6d2dd)
  • test(desktop): cover download failures and recovery (#710) (cd8f276e)
  • test(desktop): cover profile switching and native mod ordering (#709) (d11b4805)
  • test(desktop): cover native local mod lifecycle (#708) (46e2aaa8)
  • test(desktop): add isolated Tauri E2E harness (#707) (b936b620)
  • fix(desktop): make the VPK manifest the single owner of installed files (#694) (97f3695f)
  • fix(gamebanana): recover syncs and resolve imported downloads (#704) (77775702)
  • feat(desktop): enable direct catalog while retaining legacy services (#703) (21ab6be4)
  • feat(catalog): detach remaining mirrored consumers (#702) (f1a0e753)
  • feat(repo): decouple moderation policy from the catalog (#701) (c14a7f57)
  • feat(desktop): migrate GameBanana sound identities (#700) (cd013dbe)
  • feat(desktop): validate direct GameBanana downloads (#699) (a785b68a)
  • feat(desktop): browse the local GameBanana catalog (#698) (45c56ad3)
  • feat(desktop): cache GameBanana catalog in SQLite (#697) (4bf1eedb)
  • feat(desktop): fetch GameBanana submissions in Tauri (#696) (1e4b3cf3)
  • feat(desktop): distinguish GameBanana sound IDs (#695) (8428ccba)
  • fix(bot): disable AI support and privileged intents by default (#747) (726bbf2a)
  • chore: update gameinfo.gi from depot (52872bb6)
  • chore(nix): update dependency hashes [skip ci] (20d5cad8)
  • fix(aur): rewrite valveprotos URL when building v1.1.0 from source (8f7aca63)
  • fix(desktop): fetch valveprotos from the deadlock-api monorepo (3190920e)
  • feat(www): enhance randomizer rolls and item upgrades (#740) (02315097)
  • fix(www): handle hero wordmark image failures (#739) (7960090f)
  • feat(www): add hero build randomizer (#734) (bbb30d28)
  • chore(nix): update dependency hashes [skip ci] (47c92f92)
  • fix(build): Add node-gyp to package dependencies (#738) (9685498d)
  • chore: remove Aur notice (e7bd2a1e)
  • fix: aur package bugs (0650eeb2)
  • Revert "feat(www): link to the commissions site" (dddc2baa)
  • feat(www): link to the commissions site (8086d839)
  • chore: update language table with Crowdin progress (3869c6f9)
  • feat(desktop): distinguish salt ingest source by username (#705) (dfbc6271)
  • feat(www): add DeadlockSkins.gg to footer partners (#692) (e9ef7338)
  • chore: update language table with Crowdin progress (ac840a1c)
  • fix(desktop): improve nuke reinstall controls (46260734)
  • chore: update language table with Crowdin progress (f0c2ac46)
  • chore(i18n): new Crowdin translations (#621) (0addc612)
  • feat(desktop): expand hero mod management (#614) (8ad9a4b9)
  • feat(desktop): show active variant counts (#670) (fc3f7b4c)
  • feat(desktop): add mod reinstall and state rebuild tools (#615) (fd012ce6)
  • fix(desktop): mods enabled counter (#623) (29f1e21a)
  • feat(desktop): add sharded VPK support (#552) (8b9bceee)
  • fix(release): harden AUR package definitions (#585) (9f1853b7)
  • feat(desktop): Some small foundry and hero skin improvments (#619) (d8c4f8ca)
  • fix(desktop): stop hero conflict dialog clicks from opening the mod page (a83049bf)
  • fix(desktop): report Linux game launch failures (#620) (db775912)
  • chore: update language table with Crowdin progress (394c405d)
  • fix(api): skip private and withheld GameBanana submissions during sync (d91ea9d3)
  • chore: clarify usage of calldiff in documentation (1331e710)
  • feat(api): run scheduled jobs in a dedicated worker deployment (2130368f)
  • chore(nix): update dependency hashes [skip ci] (e9b18d2c)
  • feat(api,queue): add CLI to queue an immediate cron job run (b5864748)
  • fix(queue): route cron jobs to the correct service's processor (daa9b5ff)
  • chore: update language table with Crowdin progress (7d35af55)
  • chore(nix): update dependency hashes [skip ci] (02f1d5fb)
  • chore(i18n): new Crowdin translations (129bd5a7)
  • docs(security): document Steam session access used by match sync (6047d961)
  • fix(desktop): hide button icons while their action is loading (573b665d)
  • feat(desktop): rebuild the join dialog around the new join flow (1e1cadf5)
  • feat(desktop): install a server's maps and addons before joining (5aaf4f83)
  • feat(desktop): join the selected community server reliably (9c43d25e)
  • feat(desktop): show community servers with live pings (4af57a5e)
  • feat(api): serve Deadworks community servers in the browser (fd4234fc)
  • chore: bump mozilla-actions/sccache-action from 0.0.10 to 0.0.11 (#593) (33569155)
  • chore: bump tauri-apps/tauri-action from 0 to 1 (#592) (7c5c85fc)
  • fix: harden dockerignore and freeze pnpm lockfile installs (#587) (5ed586d9)
  • chore(i18n): new Crowdin translations (#606) (6ec25170)
  • chore: bump actions/cache from 4 to 6 (#591) (f899a522)
  • chore(nix): update dependency hashes [skip ci] (2e6729b4)
  • feat(desktop): 1-click installs from DeadlockForge over a loopback bridge (#599) (32402136)
  • chore(nix): update dependency hashes [skip ci] (dfc24dfc)
  • style: apply rustfmt to the workspace packages (4deb51d1)
  • refactor(desktop): generate Mod Foundry IPC types from Rust (17aba1be)
  • fix(desktop): delay-load comctl32 so cargo test binaries start on Windows (767467b8)
  • chore(nix): update dependency hashes [skip ci] (c503d43e)
  • feat: add mod foundry(#602) (12e5de0f)
  • chore: update language table with Crowdin progress (41ca423b)
  • fix(desktop): stop the background plugin from permanently disabling themes (#601) (c8645679)
  • feat(desktop): Add player stats dashboards (#581) (edf83d74)
  • fix(desktop): prevent Flatpak window creation crashes (#605) (ab1339df)
  • chore(nix): update dependency hashes [skip ci] (0ff878ad)
  • Merge commit from fork (99b4b6b7)
  • fix(desktop): Recover from stale VPK records (#594) (5beaed90)
  • chore: update language table with Crowdin progress (6822a6f3)
  • fix(desktop): hide NSFW mods on dashboard (#588) (00976157)
  • chore(i18n): new Crowdin translations (#584) (2b3fc533)
  • feat(desktop): manage hero skins from skins page (#579) (5c14a567)
  • docs: note AUR releases temporarily unavailable (#583) (ba3e84ca)
  • chore(aur): update deadlock-modmanager-bin to v1.1.0 [skip ci] (7b5e6004)
  • chore: update language table with Crowdin progress (2f949e56)
  • fix: feedback from AUR comment (f32b6111)
  • chore(aur): update deadlock-modmanager to v1.1.0 [skip ci] (a379ffe9)

This release was generated automatically using GitHub Actions.

Source: README.md, updated 2026-10-20