Skip to content

Releases: Nexus-Mods/Vortex

2.1.0-beta.7

04 Jun 14:16
48c7f4c

Choose a tag to compare

2.1.0-beta.7 Pre-release
Pre-release

Changed

  • Error fingerprinting now uses the error type name as an additional discriminator, so distinct errors that happen to share a stack trace are no longer merged into a single report (#23387)
  • Increased the default IPC callback timeout to 45 seconds so underlying callbacks complete before the caller times out (#23382)

2.1.0-beta.6

02 Jun 06:31
031aaff

Choose a tag to compare

2.1.0-beta.6 Pre-release
Pre-release

Fixed

  • Download callbacks now propagate the underlying error instead of a generic message, so download failures surface the actual cause (#23366)

2.1.0-beta.5

28 May 11:27
99cb294

Choose a tag to compare

2.1.0-beta.5 Pre-release
Pre-release

First public beta of the 2.1 release.

Known Issues

  • Old extension version folders are not deleted on extension update, causing duplicate game listings and repeated update notifications (#23295)

Added

  • Persist download checkpoints in the new download manager (#22678)
  • Cookie support in the new downloader (#22429)
  • Custom request header support in the new downloader (#22406)
  • Bandwidth throttling for downloads (#22277)
  • Resuming interrupted downloads (#22251)
  • Pausing downloads with checkpointing (#22099)
  • Cancellation support for downloads via AbortController (#22084)
  • New downloader uses If-Match header when a strong ETag is available (#22008)
  • Typed download errors in the new downloader (#22005)
  • Pull-based download progress reporting (#22001)

Changed

  • Added diagnostic logging in the FOMOD init path (#23330)
  • Notifications with actions now persist until the user acts on or dismisses them, matching the documented INotification contract (both classic and modern UI) (#23226)
  • Games remain manageable when extension dependencies are missing or fail to load (#23226)
  • Modern UI notification popover now auto-opens for notifications dispatched during startup (#23226)
  • Extension install failures now surface the underlying 7z error text instead of the generic "needs to include index.js and info.json on top-level" message (#23209)
  • Added diagnostic logging in the External Changes path to help triage spurious ECD reports (#23208)
  • nexus-api now refreshes the OAuth access token proactively when within 30s of expiry; concurrent refreshes coalesce into a single /oauth/token call, with the 401-driven fallback retained for clock skew and server-side revocation (#23178)
  • Replaced the native crash-dump C++ addon with Electron's built-in crashReporter (Crashpad), so crash dumps now use Crashpad's directory layout instead of the old flat crash-{process}-{timestamp}.dmp naming (#23034)
  • Upgraded Electron from 41.2.0 to 42.0.0 (#23025)
  • Replaced the native exe-version addon with a pure-TypeScript PE-header parser (workspace package), removing a native dependency (#22914)
  • Removed the native-errors C++ addon (#22907)
  • Replaced the native diskusage addon with Node's fs.statfsSync (#22906)
  • Replaced the native bsdiff-node addon with WASM bsdiff/bspatch running in a worker-thread pool, removing the last native C++ dependency from the collections extension (#22878)
  • Ported the BSA archive reader (bsatk) from native C++ to pure TypeScript, merged BSA/BA2 support into a single gamebryo-archive-support extension, and added LZ4-frame decompression for Skyrim SE BSAs (#22872)
  • Upgraded Electron from 39 to 41 and Node from 22 to 24 (#22869)
  • Stopped using Electron's did-start-download event in the new downloader (#22860)
  • New downloader now parses redownload and allowInstall args from nxm:// URLs (#22855)
  • AlreadyDownloaded errors thrown by the new downloader now carry the offending downloadId (#22851)
  • Ported the ESP/ESM plugin parser (esptk) from native C++ to pure TypeScript; plugin parsing is now async and runs in parallel via Promise.all (#22840)
  • Removed the legacy downloader so the new download manager is the only path for starting downloads (#22821)
  • Replaced the native ba2tk C++ addon with a pure-TypeScript BA2 archive parser supporting GNRL and DX10 archive types across v1 and v8 formats (#22700)
  • Replaced the native vortexmt MD5 addon with Node's built-in crypto.createHash('md5') plus streaming file reads (#22697)
  • Replaced the native gamebryo-savegame C++ parser with pure-TypeScript parsers for all six Gamebryo savegame formats (Oblivion, Skyrim, Skyrim SE, Fallout 3, Fallout NV, Fallout 4), removing the node-gyp/CMake/MSVC build toolchain requirement for the savegame extension (#22688)
  • New download adapter dispatches redux actions (#22653)
  • Download IPC adapter now tracks state, progress, pause/resume, and speed (#22651)
  • New IPC download adapter (env-var-toggleable while it was being introduced; now permanent after the old downloader was removed) (#22615)
  • IPC handlers added for download channels (#22614)
  • New download manager tracks all downloads centrally (#22516)
  • Download API exposed via the preload script (#22510)
  • Moved download types into a shared workspace package (#22475)
  • Added callback IPC channels used by the new downloader (#22469)
  • New downloader detects HTML responses and shares its download error types across processes (#22404)
  • Added timeout and retry resilience to the new downloader (#22330)
  • Adapted Tools changes from v2.0 (#22293)
  • New downloader can use range requests for single-chunk downloads when the chunker returns zero chunks (#22292)
  • DuckDB extensions are now bundled and loaded from a local cache, removing the runtime FORCE INSTALL ... FROM 'https://...' so Vortex no longer touches the network for DuckDB extension loading at startup (#22046)
  • Reworked the downloader around a new manager class, simplifying it to standalone functions (#22036)
  • Reworked the Tools page (refactor with assorted fixes) (#22007)
  • Product-version check for Baldur's Gate 3 (#21998)

Fixed

  • Restored v1 behaviour for the nxm:// handler registration so cold-start downloads use the default user-data location (#23322)
  • Witcher 3: md5cache.json was not bundled with the extension (#23306)
  • Cancelling a collection install via the free-user download dialog now cleanly tears down the install pipeline, driver state, and notification, instead of leaving canceled sibling downloads as failures in the dialog (#23304)
  • Modern UI: missing sidebar icons (Bethesda plugins, save games) and help menu icons (feedback, bug report) (#23263)
  • Unauthenticated 401 errors from the NXM download resolver now surface as a non-reportable "You are not logged in to Nexus Mods!" notification instead of a TypeError crash on undefined OAuth config (#23262)
  • Missing or failed-to-load extension dependencies left games un-manageable; the install, profile-management, notifications, and modtype-enb paths were all hardened against this state (#23226)
  • Download failure when the target game's downloads folder did not yet exist, affecting mods that are compatible across multiple game domains (Skyrim/Enderal/Nehrim, site-domain mods); the folder is now created on demand when the download is queued (#23213)
  • "Game not discovered" dialog incorrectly shown on -game restart/relaunch while async discovery was still in flight (#23210)
  • Tracked-mods fetch crashing when the Nexus client lacked OAuth configuration (#23173)
  • Improved scrollbar visibility for the table component (#23125)
  • "Tools" dashlet now shows in the classic UI only and is hidden in the modern UI (#23166)
  • Removed spurious logs spam (#23130, [#23132]...
Read more

2.0.2

19 May 12:03
a402ee6

Choose a tag to compare

Changed

  • nexus-api now refreshes the OAuth access token proactively when within 30s of expiry; concurrent refreshes coalesce into a single /oauth/token call, with the 401-driven fallback retained for clock skew and server-side revocation (#23178)
  • Notifications with actions now persist until the user acts on or dismisses them, matching the documented INotification contract (both classic and modern UI) (#23226)
  • Modern UI notification popover now auto-opens for notifications dispatched during startup (#23226)
  • Extension install failures now surface the underlying 7z error text instead of the generic "needs to include index.js and info.json on top-level" message (#23209)
  • Added diagnostic logging in the External Changes path to help triage spurious ECD reports (#23208)
  • Removed last traces of electron/remote from bundled plugins (#23131)

Fixed

  • Missing or failed-to-load extension dependencies left games un-manageable; the install, profile-management, notifications, and modtype-enb paths were all hardened against this state (#23226)
  • "Game not discovered" dialog incorrectly shown on --game restart/relaunch while async discovery was still in flight (#23210)
  • Tracked-mods fetch crashing when the Nexus client lacked OAuth configuration (#23173)
  • Main-process access violation when destroying a BrowserWindow with the mouse over it; added synchronous renderer diagnostics that survive teardown crashes (#23179)
  • Old "Tools" dashlet appeared in the modern UI and was missing from the classic UI (#23166)
  • Notification "suppress" action icon was a cog/gear, which read as "settings" rather than "suppress" (#23152)
  • profile-did-change crash when the active game's discovery folder had just been cleared by the startup discovery pass (#23144)
  • Auto-updater spuriously logging downloadUpdate errors on every launch when already on the latest version (#23132)
  • Conflict Editor "Before All" / "After All" silently doing nothing when a filter was applied to the source mod name (#23136)
  • "Not yet initialized" log line caused by startup.json being read before ApplicationData.init() resolved (#23130)
  • Improved scrollbar visibility for the table component (#23125)

2.0.1

12 May 13:26
f25ff55

Choose a tag to compare

Changed

  • Large state changes (mass plugin sort, collection install, bulk rule edits) no longer stall Vortex (#23049)
  • Theme cloning is blocked while the source theme has validation issues (#23068)
  • Reduced crash-report noise: better grouping, and user-environment errors (permission denied, disk full, read-only drive) and user-cancelled actions are no longer reported as crashes (#23050, #23059, #23066)
  • More detail captured when a Nexus API request fails (#23101)

Fixed

  • "Deployment interrupted" failure when symlink deployment required elevation (#23107)
  • nxm:// links not being captured by Vortex after 2.0.0 (#23107)
  • State verifier looping on the same entries, so repair warnings reappeared on every launch (#23112)
  • "NXM handler registered" notification appearing on every startup (#23026)
  • Baldur's Gate 3 "pak read failed" error spam on load-order changes (#23022)
  • Renderer bootloop after an outdated extension was queued for removal (#23048)
  • Stardew Valley hardlink deployment failing with a self-copy error (#23055)
  • Crash while loading extensions when a stale install or backup folder was present (#23063)
  • Collection plugin-rules toggles shown for games without plugins (#23018)
  • Awkward line breaks in game-name tooltips in the new UI (#23019)

2.0.0

06 May 07:26
8b5a9f6

Choose a tag to compare

What's new in 2.0

  • New UI with 1-click game switching and a toggle in Settings to revert to the legacy UI.
  • Healthcheck scans your mod setup for missing dependencies and suggests fixes.
  • Per-profile plugin rules, with options to skip or exclude them when installing collections.
  • FOMOD presets now persist across variant installs.
  • Better crash and error reporting.
  • Updated Electron runtime (now on Node.js 22).

Bugs and feedback

If you hit a bug, report it on GitHub Issues with your Vortex log file attached. General feedback and questions go to the Vortex channel on the official Nexus Mods Discord.

For the full list of changes, see the CHANGELOG.

2.0.0-beta.2

28 Apr 06:54
ef53c11

Choose a tag to compare

2.0.0-beta.2 Pre-release
Pre-release

Added

  • Per-profile plugin rules with "Reset Plugin Rules" button and curator/consumer controls to skip or exclude plugin rules when installing collections (#22620)

Changed

  • BG3: refactored divine wrapper with cleaner error classification, cancellation on game switch, and silent skipping of corrupt third-party paks instead of "re-install LSLib" notifications (#22679)

Fixed

  • Install crash from fileList.push spread overflowing the call stack on archives with ~100k+ files (#22704)
  • FOMOD KeyNotFoundException when saved preset choices referenced steps that no longer exist (#22706)
  • FOMOD installer rejecting saved presets when "no options" fell back to an empty object instead of an empty array (#22716)
  • "Vortex seems to be running already" dialog incorrectly shown for non-ASCII path, permission, or disk-full errors instead of real DB lock contention (#22703)
  • Mod install crash with undefined gameId when the current profile was stale or absent (#22684)
  • Witcher 3 Script Merger dummy installer crash and misleading error notifications when installing the script merger archive as a mod (#22677)
  • Missing extension identity in failed-init error payload making startup crash reports untraceable (#22672)
  • Notifications render crash caused by quickUpdate stale-index writes (#22643)
  • Notifications reducer and quickUpdate crashing on malformed payloads (#22816)
  • File UID generation failing due to stale Nexus games cache (#22641)
  • Several race conditions when switching collection revisions: patched mods not reinstalled, install driver starting before old mods were cleaned up, optional mods losing enabled state, update notification shown on latest revision, and install activity running indefinitely (#22520)
  • Crash when downloading collection mods while the collection was being reinstalled or updated (#22607)
  • Auto-download not triggering for patch updates in the auto-updater (#22609)
  • Spurious error notification when the user declined the Nexus login consent prompt (#22715)
  • Spurious error notification for discarded collection revisions and collections under moderation (#22717)
  • Failed Gamebryo plugin light-flag changes (eslify) recorded as successful history entries (#22803)
  • Morrowind plugin scan aborting the whole loop when a single mod's install directory was missing or inaccessible (#22714)

2.0.0-beta.1

20 Apr 07:07
2038c0c

Choose a tag to compare

2.0.0-beta.1 Pre-release
Pre-release

Welcome to the first beta of Vortex 2.0. Here's what's new.

What's new in 2.0

  • New UI with 1-click game switching and a toggle in Settings to revert to the legacy UI.
  • Healthcheck scans your mod setup for problems (missing deps, conflicts) and suggests fixes.
  • FOMOD presets now persist across variant installs.
  • Better crash and error reporting.
  • Updated Electron runtime (now on Node.js 22).
  • Vortex API package is now synced and tagged for every release. See Nexus-Mods/vortex-api for details.

Breaking changes for extension authors

Internal project structure has changed drastically. Extensions with deep path imports instead of API imports will break. See Nexus-Mods/vortex-api for migration details.

Bugs and feedback

This is a beta. Things will break. If you hit a bug, report it on GitHub Issues with your Vortex log file attached. General feedback and questions go to the Vortex channel on the official Nexus Mods Discord.

For the full list of changes, see the CHANGELOG.

1.16.9

15 Apr 06:55

Choose a tag to compare

Added

  • Starfield: Added support for blueprint plugins.
  • FOMOD Variants: Added the ability to preserve FOMOD presets/installer choices when installing variants. A new checkbox lets users choose between keeping the previous preset or starting from a fresh dialog with auto-select based on existing files. (#20556)

Changed

  • 7-Zip: Updated bundled 7-Zip to 26.00.
  • libloot: Updated to 0.29.3.
  • Starfield: Updated native plugin list for new DLCs.
  • FOMOD Re-install: Manual FOMOD re-installs now show the dialog with previously selected values pre-populated, instead of toggling between a fresh dialog and a silent re-install. Users who want to keep the preset can click through; those who want to change something can adjust the pre-selection. (Not applied during collection installs.) (#21864)

Fixed

  • Plugin Management: Fixed the load order page mechanism switch (rules-based vs. drag-and-drop) requiring an app restart to take effect.
  • Collections: Collaborators with edit permissions are no longer shown the "different account" warning when editing a collection uploaded by someone else.

1.16.8

31 Mar 10:35

Choose a tag to compare

Changed

  • Updated libloot to 0.29.1
  • Restored drag-drop support for non-archive files on the mods page
  • Baldur's Gate 3 specific fixes (lslib installer and minor tweaks)

Fixed

  • External changes dialog incorrectly appearing after batch mod reinstallations and updates
  • Load order export failing silently when permission elevation was required
  • Installer choices still not being preserved during mod reinstalls
  • Category column not updating and category filter excluding too many results (#19423, #21456, #20735, #21820)
  • Duplicate entries and rule changes being dropped when unlocking conflict rules