github Nexus-Mods/Vortex v2.1.0-beta.4
2.1.0-beta.4

pre-release5 hours ago

2.1.0-beta.4

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](#23295))

Added

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

Changed

  • Added diagnostic logging in the FOMOD init path ([#23330](#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](#23226))
  • Games remain manageable when extension dependencies are missing or fail to load ([#23226](#23226))
  • Modern UI notification popover now auto-opens for notifications dispatched during startup ([#23226](#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](#23209))
  • Added diagnostic logging in the External Changes path to help triage spurious ECD reports ([#23208](#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](#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](#23034))
  • Upgraded Electron from 41.2.0 to 42.0.0 ([#23025](#23025))
  • Replaced the native exe-version addon with a pure-TypeScript PE-header parser (workspace package), removing a native dependency ([#22914](#22914))
  • Removed the native-errors C++ addon ([#22907](#22907))
  • Replaced the native diskusage addon with Node's fs.statfsSync ([#22906](#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](#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](#22872))
  • Upgraded Electron from 39 to 41 and Node from 22 to 24 ([#22869](#22869))
  • Stopped using Electron's did-start-download event in the new downloader ([#22860](#22860))
  • New downloader now parses redownload and allowInstall args from nxm:// URLs ([#22855](#22855))
  • AlreadyDownloaded errors thrown by the new downloader now carry the offending downloadId ([#22851](#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](#22840))
  • Removed the legacy downloader so the new download manager is the only path for starting downloads ([#22821](#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](#22700))
  • Replaced the native vortexmt MD5 addon with Node's built-in crypto.createHash('md5') plus streaming file reads ([#22697](#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](#22688))
  • New download adapter dispatches redux actions ([#22653](#22653))
  • Download IPC adapter now tracks state, progress, pause/resume, and speed ([#22651](#22651))
  • New IPC download adapter (env-var-toggleable while it was being introduced; now permanent after the old downloader was removed) ([#22615](#22615))
  • IPC handlers added for download channels ([#22614](#22614))
  • New download manager tracks all downloads centrally ([#22516](#22516))
  • Download API exposed via the preload script ([#22510](#22510))
  • Moved download types into a shared workspace package ([#22475](#22475))
  • Added callback IPC channels used by the new downloader ([#22469](#22469))
  • New downloader detects HTML responses and shares its download error types across processes ([#22404](#22404))
  • Added timeout and retry resilience to the new downloader ([#22330](#22330))
  • Adapted Tools changes from v2.0 ([#22293](#22293))
  • New downloader can use range requests for single-chunk downloads when the chunker returns zero chunks ([#22292](#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](#22046))
  • Reworked the downloader around a new manager class, simplifying it to standalone functions ([#22036](#22036))
  • Reworked the Tools page (refactor with assorted fixes) ([#22007](#22007))
  • Product-version check for Baldur's Gate 3 ([#21998](#21998))

Fixed

  • Restored v1 behaviour for the nxm:// handler registration so cold-start downloads use the default user-data location ([#23322](#23322))
  • Witcher 3: md5cache.json was not bundled with the extension ([#23306](#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](#23304))
  • Modern UI: missing sidebar icons (Bethesda plugins, save games) and help menu icons (feedback, bug report) ([#23263](#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](#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](#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](#23213))
  • "Game not discovered" dialog incorrectly shown on -game restart/relaunch while async discovery was still in flight ([#23210](#23210))
  • Tracked-mods fetch crashing when the Nexus client lacked OAuth configuration ([#23173](#23173))
  • Improved scrollbar visibility for the table component ([#23125](#23125))
  • "Tools" dashlet now shows in the classic UI only and is hidden in the modern UI ([#23166](#23166))
  • Removed spurious logs spam ([#23130](#23130), [#23132](#23132))
  • Conflict Editor "Before All" / "After All" silently doing nothing when a filter was applied to the source mod name ([#23136](#23136))
  • Fixed inability to manage certain bundled game extensions (Blade and Sorcery, BattleTech, Daggerfall, DragonAge, NWN, Elder Scrolls Online and a few others) ([#23131](#23131))
  • Tailwind utility classes stripped from the compiled renderer CSS after the stylesheet output moved, leaving Spine and other UIv2 components unstyled ([#23158](#23158))
  • Suppress action on suppressible notifications shown with a cog/gear icon instead of a suppress icon ([#23152](#23152))
  • Toolbar dragging and toolbar popup issues ([#22994](#22994))
  • Remaining instances of app.quit causing application crashes (CLI-relaunch path and Vortex tray-icon close) ([#22091](#22091))
  • Long profile names overflowing the header and profile cards (and now capped at 64 characters) ([#22079](#22079))
  • Elevation script closing prematurely during collection installation (timer extended from 5 seconds to 5 minutes) ([#22029](#22029))
  • Health check passing invalid modId to the Nexus API for external requirements ([#22019](#22019))
  • "External changes" dialog still being raised after batch reinstalls or updates in some scenarios; new fix is timing-independent and avoids a race that could stall collection installation ([#22016](#22016))

Don't miss a new Vortex release

NewReleases is sending notifications on new releases.