Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 3.1.56 (Develop) #1644

Merged
merged 135 commits into from
Feb 26, 2025
Merged

Release 3.1.56 (Develop) #1644

merged 135 commits into from
Feb 26, 2025

Conversation

ebkr
Copy link
Owner

@ebkr ebkr commented Feb 26, 2025

No description provided.

ebkr and others added 30 commits November 6, 2024 22:37
- TODO: Fix 'Has correct class' test
Added "Other" selection option for Bomb Rush Cyberfunk
* Use ImmutableProfile in ConflictManagementProvider
* Use ImmutableProfile in LocalModInstallerProvider
Fallback is needed e.g. when mods are removed from cache while still
used in profiles, or when plain .dll files are imported locally.
As far as I can tell this was the original way of importing local mods,
but it hasn't been in use for a while.
Also document the intent of the file so it doesn't look like obsolete
legacy code and get accidentally removed.
Callback added unnecessary complexity, as throwing the the error
works as well.
Users may want to get to the manager screen quickly so they can just
launch the game with existing mods. Having to wait for the latest mod
list update can be frustrating.

Splash screen now only checks the API for a fresh list if no local
cache is found at all. Handling different error scenarios is also
omitted, and user is moved to profile selection screen even if no mod
list can be loaded. Error screen offering a chance to retry loading
the mod list is dropped. The idea is that the background update or a
manually triggered mod list update will handle the mod list eventually.

Note that the changes only affect the splash screen. Background updates
still work the same way they did before.

In the future the splash screen can be hastened even further e.g. by
handling the loading of the exclusion list in the background and
reducing the timeouts/retry attempts of the API calls.
The banner will show on top of an empty online mod list, explaining
that the list is empty because splash screen failed to load it. A
one-click option for trying to update the mod list is offered.

This change is adjustment to the fact that the splash screen no longer
stops on errors and user is more likely to reach the manager view with
no mod list loaded into Vuex.
Exclusions are only needed to filter the package list read from API
before it's stored into IndexedDB. If the package list update is
skipped to get the user quickly into profile select view, we might
as well defer the update of exclusion list to when it's actually
needed.
When updating the persistent cache, a sanity check ensured the
exclusion list loaded before trying to use it. However, as an empty
array was used as the default value (and the value used when the store
was reset), the sanity check never triggered.

It's unlikely this has caused issues before, as the exclusion list
should've always been updated before updating the persistent cache.
This however changed when Splash screen was changed to skip unnecessary
steps to get the user to profile selection screen faster.
The "background" update originally referred to the periodic updates,
i.e. not the update that happens on splash screen and shows the
progress to user. The Vuex state is now shared between the background
updates and user triggered manual updates that show a lightweight
status reporting, so the naming was bit misleading.
VilppeRiskidev and others added 29 commits January 28, 2025 15:00
Added BepInExPack_AmongUs to MODLOADER_PACKAGES
Update ModLoaderVariantRecord.ts
Add option for copying troubleshooting information to clipboard
Fix Aloft Steam App ID
Fix Aloft Steam App ID
Lock both source and destination files when copying or renaming files
MelonLoader has added support for recursive loading. This means mods,
plugins and userLibs can all be placed in the same folder inside the
profile folder instead of needing to copy each type to a specific
subfolder. This in turn means we can namespace each installed mod into
its own subfolder, which makes uninstalling the mods straightforward
and removes the need to track installation state on a separate file.

The mod author still needs to place plugins and userLibs to specific
folders in their Thunderstore packages though.

In the profile, package's UserData folder (if any) gets copied to
profile/UserData/[packageName] and everything else gets copied to
profile/Mods/[packageName]. MelonLoader handles the rest.

This will require MelonLoader v0.7.0 or newer to work.
New name hopefully makes it clearer this is a custom manifest file, not
to be confused with the common manifest.json file required by
Thunderstore ecosystem.
Create a manifest.json file into cache folder if one wasn't provided by
the uploaded zip, or if a .dll file was uploaded. For consistency we
want all installed mods to have this file regardless of the
installation method.

Locally installed mods will still have the separate mm_v2_manifest.json
file so they can be told apart from the files downloaded from
Thunderstore.
Add RecursiveMelonLoaderInstaller
Add support for Dale & Dawson
Ensure manifest.json is present in all locally imported mods
…ement

Download completed callback improvement
Fix a bug in activeDownloadCount which caused mods in installation step to not be counted
…exist

Remove invalid manifest locations from list before attempting to search for valid installation directories
@ebkr ebkr merged commit 22c99ec into master Feb 26, 2025
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants