From 3949dcfce95af4bd305f258ff5b170d7d50435f6 Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Sun, 12 Apr 2026 21:04:15 -0500 Subject: VFS perf fixes, icon/stylesheet compat, download filename fix VFS: - Open backing fd at mo2_open time for read-only handles so mo2_read can splice without re-opening the file on every read call. - Bump RLIMIT_NOFILE at mount time to fit the resulting fd pressure when the game keeps hundreds of BSAs open. - Dedicated node_cache_mutex so resolveByInode / mo2_lookup stop racing unordered_map writes while multiple tree_mutex readers are active. - max_read=1MB + matching conn->max_read and raised max_readahead/max_write so the kernel merges Wine's small sequential reads into bigger FUSE requests. - Per-op wall-clock counters in mo2_init() logs so we can distinguish VFS latency from game-side work. Proton launch: - Write dxvk.conf to the prefix and set DXVK_CONFIG_FILE to force dxvk.enableGraphicsPipelineLibrary=False, avoiding long GPL compile stalls on first run. UI / plugin compat: - Clamp IconDelegate's per-icon width to [8, 16] so narrow content columns don't trigger QIcon::pixmap(0,0) returning null and logging "failed to load icon" every repaint. - Pre-create lowercase symlinks in the stylesheet directory so QSS files authored on Windows resolve url(foo.svg) when on-disk files are Foo.svg. - Flip content icons empty-chessboard.png and facegen.png to 8-bit RGBA so Qt's built-in PNG reader loads them uniformly. - Add mobase.Version.canonicalString shim for legacy Python plugins that still call the old VersionInfo method on appVersion()'s return. - BSPluginList: compare normalized plugin name lists instead of byte hashes so the post-run case-fix refresh stops spuriously firing the "load order changed" dialog. - BSPluginList disabled by default. Download manager: - Parse CDN URL with QUrl + QUrlQuery and read the filename from the response-content-disposition query param (RFC 6266 quoted / unquoted / ext-value forms), not QFileInfo on the raw URL. - When the API or URL gives us a CDN object key (no archive extension), prefer the actual Content-Disposition header from the live response in metaDataChanged and downloadFinished. Co-Authored-By: Claude Opus 4.6 (1M context) --- libs/installer_bsplugins/src/bsplugins_en.ts | 978 +++++++++++++++++++++++++++ 1 file changed, 978 insertions(+) create mode 100644 libs/installer_bsplugins/src/bsplugins_en.ts (limited to 'libs/installer_bsplugins/src/bsplugins_en.ts') diff --git a/libs/installer_bsplugins/src/bsplugins_en.ts b/libs/installer_bsplugins/src/bsplugins_en.ts new file mode 100644 index 0000000..d0a5969 --- /dev/null +++ b/libs/installer_bsplugins/src/bsplugins_en.ts @@ -0,0 +1,978 @@ + + + + + BSPluginInfo::AuxLoserModel + + + File + + + + + Providing Mod + + + + + BSPluginInfo::AuxNonConflictModel + + + File + + + + + BSPluginInfo::AuxTreeModel + + + File Name + + + + + BSPluginInfo::AuxWinnerModel + + + File + + + + + Overwritten Mods + + + + + BSPluginInfo::PluginRecordModel + + + + + + Children + + + + + Block %1 + + + + + Sub-Block %1 + + + + + Block %1, %2 + + + + + Sub-Block %1, %2 + + + + + Persistent + + + + + Temporary + + + + + Visible Distant + + + + + Form + + + + + Origin + + + + + Editor ID + + + + + BSPluginInfo::PluginRecordView + + + Ignore Record + + + + + BSPluginList::PluginListContextMenu + + + All Items + + + + + Collapse all + + + + + Expand all + + + + + Enable all + + + + + + + Confirm + + + + + Really enable all plugins? + + + + + Disable all + + + + + Really disable all plugins? + + + + + Enable selected + + + + + Disable selected + + + + + Collapse others + + + + + + Create Group... + + + + + + Please enter a name: + + + + + + Rename Group... + + + + + Remove Group... + + + + + Are you sure you want to remove "%1"? + + + + + Send to... + + + + + Top + + + + + Bottom + + + + + Priority... + + + + + Set Priority + + + + + Set the priority of the selected plugins + + + + + Group... + + + + + Open Origin in Explorer + + + + + Open Origin Info... + + + + + Select a group... + + + + + BSPluginList::PluginListModel + + + Origin + + + + + This plugin can't be disabled or moved (enforced by the game). + + + + + This plugin can't be disabled (enforced by the game). + + + + + + Form Version + + + + + + Header Version + + + + + + Author + + + + + + Description + + + + + + Missing Masters + + + + + Enabled Masters + + + + + Loads Archives + + + + + Loads INI settings + + + + + This is a dummy plugin. It contains no records and is typically used to load a paired archive file. + + + + + Overrides & has overridden records + + + + + Overrides records + + + + + Has overridden records + + + + + Overwrites & has overwritten archive files + + + + + Overwrites another archive file + + + + + Overwritten by another archive file + + + + + There is an ini file connected to this plugin. Its settings will be added to your game settings, overwriting in case of conflicts. + + + + + There are Archives connected to this plugin. Their assets will be added to your game, overwriting in case of conflicts following the plugin order. Loose files will always overwrite assets from Archives. + + + + + This file is flagged as a master plugin (ESM). It will load before any non-ESM files in the load order. + + + + + This file is flagged as a light plugin (ESL). It will adhere to its position in the load order but the records will be loaded in ESL space (FE/FF). You can have up to 4096 light plugins in addition to other plugin types. + + + + + This file is flagged as a medium plugin (ESH). It will adhere to its position in the load order but the records will be loaded in ESH space (FD). You can have 256 medium plugins in addition to other plugin types. + + + + + This plugin has the blueprint flag. This forces it to load after every other non-blueprint plugin. Blueprint plugins will adhere to standard load order rules with other blueprint plugins. + + + + + WARNING: This plugin is both light and medium flagged. This could indicate that the file was saved improperly and may have mismatched record references. Use it at your own risk. + + + + + This game does not currently permit custom plugin loading. There may be manual workarounds. + + + + + Name + + + + + Conflicts + + + + + Flags + + + + + Priority + + + + + Mod Index + + + + + unknown + + + + + BSPluginList::PluginsWidget + + + Type + + + + + Active + + + + + Total + + + + + All plugins + + + + + ESMs + + + + + ESPs + + + + + ESMs+ESPs + + + + + ESHs + + + + + ESLs + + + + + + Sorting plugins + + + + + + Are you sure you want to sort your plugins list? + + + + + Note: You are currently in offline mode and LOOT will not update the master list. + + + + + + Restore failed + + + + + + Failed to restore the backup. Errorcode: %1 + + + + + Backup of load order created + + + + + Hide force-enabled files + + + + + Ignore conflicts with masters + + + + + Collapse all + + + + + Expand all + + + + + Enable all + + + + + + Confirm + + + + + Really enable all plugins? + + + + + Disable all + + + + + Really disable all plugins? + + + + + Load order changed + + + + + Load order was changed while running %1. Keep changes? + + + + + BSPlugins + + + Manages plugin load order for BGS game engines + + + + + Plugins + + + + + ListDialog + + + Select an item... + + + + + Filter + + + + + LootDialog + + + LOOT + + + + + Progress + + + + + about:blank + + + + + Open JSON report + + + + + MOTools::Loot + + + Loot failed to run + + + + + No errors were reported. The log below might have more information. + + + + + + Get more information by using the LOOT application to sort your load order. + + + + + + Errors + + + + + Warnings + + + + + failed to start loot + + + + + Loot failed. Exit code was: 0x%1 + + + + + MOTools::LootDialog + + + Stopping LOOT... + + + + + Running LOOT... + + + + + MessageDialog + + + + Placeholder + + + + + PluginInfoDialog + + + BGS Data + + + + + Records + + + + + Archives + + + + + Conflicts + + + + + + Files that exist in other mods but are overwritten by this mod + + + + + Winning file conflicts: + + + + + + + + Filter + + + + + + Files that are unused because they are overwritten by other mods + + + + + Losing file conflicts: + + + + + + Files that have no conflicts + + + + + The following files have no conflicts: + + + + + Tree + + + + + Previous + + + + + Next + + + + + Close + + + + + PluginRecordView + + + All conflicts + + + + + Winning conflicts + + + + + Losing conflicts + + + + + Ignore conflicts with masters + + + + + PluginsWidget + + + Plugins + + + + + + Sort the plugins using LOOT. + + + + + Sort + + + + + Open list options... + + + + + Refresh list. This is usually not necessary unless you modified data outside the program. + + + + + + Restore a backup. + + + + + + Create a backup. + + + + + Active: + + + + + <html><head/><body><p>This provides statistics about the plugin list. The total number of active plugins is normally displayed. Other statistics may be accessed with the tooltip of this counter.</p></body></html> + + + + + + List of available esp/esm files. + + + + + + Filter the list of plugins. + + + + + Filter + + + + + QObject + + + Incompatible with %1 + + + + + + Warning + + + + + + Error + + + + + Choose backup to restore + + + + + No Backups + + + + + There are no backups to restore + + + + + General messages + + + + + Plugins + + + + + No messages. + + + + + Incompatibilities + + + + + Missing masters + + + + + Verified clean by %1 + + + + + %1 found %2 ITM record(s), %3 deleted reference(s) and %4 deleted navmesh(es). + + + + + failed to run loot: %1 + + + + + Checking masterlist existence + + + + + Updating masterlist + + + + + Loading lists + + + + + Reading plugins + + + + + Sorting plugins + + + + + Writing loadorder.txt + + + + + Parsing loot messages + + + + + Done + + + + + SelectionDialog + + + Select + + + + + Placeholder + + + + + Cancel + + + + -- cgit v1.3.1