CollapseLauncher / Collapse

An Advanced Launcher for miHoYo/HoYoverse Games
MIT License
1.41k stars 64 forks source link

Preview 1.82.0 Release #587

Closed bagusnl closed 3 weeks ago

bagusnl commented 1 month ago

What's new ? 1.81.7

To be written

HOLY THAT'S A LOT OF CHANGES

Collapse 1.82.0: Natlan

Long time no see! Welcome back to another (quarterly) release of Collapse. This time around, we're bringing many performance & interface improvements to the launcher; this (hopefully) means that you should see a lot less crashes and a much more stable launcher experience (get it? Stable version, stable experience...No? No one? Ok :( )

Releases have been a bit slower recently since most of our core maintainers have had a lot less time to contribute. Nonetheless, this release is packed with a bunch of changes that we hope you'll find useful.

Read on for the complete list of changes!

For (surely) faster releases and more experimental features, consider switching to the Preview branch in the App Settings.


What's New?


Update to .NET 9 and Switching to NativeAOT Releases

This is the biggest changes so far for Collapse, requiring about 14K+ lines of codes brought to the repository due to dependencies that is not updated to follow the new standards required for NativeAOT release. You should feel Collapse being more snappy especially when launching from cold.

So, what is this "NativeAOT" mumbo jumbo?

Usually, a .NET application is executed in Just-In-Time manner and compiled into Intermediate Language (IL) instead of straight into native code. This however, requires a runtime to be installed into the machine or included within the app.

NativeAOT (Ahead-of-Time) compilation in other hand, will compile your app straight into native machine code executable. Due to its nature, the program can run independently without a runtime since the app was compiled straight into native code, resulting much faster start-up time, smaller memory footprint, smaller executable size and slightly better in performance.

While the app should benefit from using NativeAOT compilation, the developer should follow bunch of strict rules and requirements in order to make their program to work properly. Some of them are the limitation on accessing certain reflection-based methods and dynamic-based types since those requires invocations to happen at runtime.

To get rid all of those obstacles, we refactored bunch of codes with source-generated, COM Interface and Marshal-based/PInvoke ones, which one of them even require a call into Win32 API in order to make it work.

While NativeAOT is still a new norm in .NET app development and a very experimental feature, we finally managed to pull it off and make Collapse Launcher to run and compiled straight into native code executable.

New Feature: Bandwidth Limiter

This is by far the (second) biggest change in this release. We've been using the same downloader code since Collapse first released in 2021. While it worked well enough for its time, it quickly became apparent that, as we wanted to add more features, it became increasingly challenging to do so in a timely manner because of the amount of time we'd need to spend fixing the HTTP module of Collapse.

Well, no more! We've rewritten the entire module so that it is not only more efficient in terms of downloading, but also uses far less memory!

Due to this rewrite, we've been able to finally implement a bandwidth limiter for Collapse.

Here's what it can do:

https://github.com/user-attachments/assets/7202d6cc-f743-402c-9f65-cdc958c5fab6

See for yourself in your App Settings!

New Feature: By-region Custom Background Support

One of our most requested features since we've first allowed users to change backgrounds was the ability to change backgrounds based not only by game but also by region.

What if we told you that now you can do that? And use videos too? Amazing, right?

Here's how you do it: Home Page -> Quick Settings (bottom right) -> Custom Background for Region.

This feature does not require you to enable the Global Custom Background setting.

Background priority as follows: Regional Custom BG -> Global App Custom BG -> API provided BG -> Paimon deadge fallback image.

New Feature: Notification Toast Support for Background Activities

This feature will help users get notified when a background activity is completed. The notification toast includes support for Game Installation, Game Update, Pre-load Download, Game Repair and Cache Update features.

In its current implementation, the notification only supports text-based content.

https://github.com/user-attachments/assets/4f15d484-d7e2-4015-9331-25b0afc2c56a

New Feature: Playtime Synchronization across devices

Collapse now supports tracking playtime across multiple devices through an online SQLite database.

While we've been using https://turso.tech and have tested for that platform, any provider that provides SQLite online database instances through a URL and a token will work.

[!CAUTION] Changing User ID (UID) without taking note of your current User ID will cause the data to be left dangling in the database and not be used anymore. While you can edit the database yourself, it's a bit tedious, so please do NOT lose your User ID.

Collapse staff cannot help you if you misplace your User ID!

Playtime synced to the online database in a many ways:

  1. At first region load

    When the region is first loaded, playtime stats are first loaded from your local machine, then the system fetches from the online database and compares when playtime was last updated. If the local data is out of date then the database value will be used and saved locally. If the database is out of date, then the local value will be used and saved to the online database.

  2. When you first launch your game

  3. Every 5 minutes when the game is running

  4. When you close your game

New Feature: Game Cleanup & File Ignore

This feature does pretty much what it says: it allows you to delete any unused files that are no longer referenced by the game, but that are still shipped with it as part of an update for some reason.

Complementing that feature is the file ignore functionality, which works as follows:

The Game Cleanup feature is accessible in Quick Settings -> "Files Clean-up".

When deleting, you can also chose between moving them to your Recycle Bin or deleting them permanently from your drive.

https://github.com/user-attachments/assets/eff71a6e-746d-48d1-ae15-ec17c5443a73

New Feature: Proxy Support

Collapse now supports using a proxy server for the entire app. By default, it will use whatever proxy settings you have configured in Windows.

We currently support the following protocols: HTTP, HTTPS & SOCKS5.

You can find this feature in your App Settings.

New Game Region Support: Genshin Impact - Google Play

Nothing much to say here, we're now able to offer our users the ability to install the Google Play version of Genshin Impact, which allows you to sign in with Google Play, among other things.

New Game Region Support: Zenless Zone Zero - Bilibili

This falls in line with other newer HoYoverse titles. We're happy to be able to support the installation and updating for this region!


Major Changes


[!NOTE]
System.Text.Json update fixes CVE (Security Vulnerability CVE-2024-43485)

Core System Improvements

Aside from all the bugfixes in this release (which you can view in the full changelog), this version improves the following:

https://github.com/user-attachments/assets/7202d6cc-f743-402c-9f65-cdc958c5fab6

Updater Improvements

We've (once again) switched updaters for Collapse! As the Squirrel project is in a semi-deprecated state, its users are encouraged to switch over to Velopack. And that's what we did!

Velopack is a drop-in replacement for Squirrel. As a user, you won't even see the difference, though it does offer some notable benefits:

Your Collapse install will automatically migrate over to Velopack with this release, no action is required on your part.

Sophon Downloader Improvements

https://github.com/user-attachments/assets/e00a0648-4904-45ea-bf30-3201f4fc3896

Package Download Improvements

Playtime Statistics Improvements

https://github.com/user-attachments/assets/224e1048-947a-4bef-9809-8acc05f70945

Various Localization Updates

As always, we want to thank are awesome community for providing an amazing localization for our project. Collapse is now localizable in 17 languages and dialects! <3


Minor changes


We would list all the minor changes here, but due to the amount of commits, we've decided against it for this release.

Read the full changelog below!

Full Changelog: https://github.com/CollapseLauncher/Collapse/compare/CL-v1.80.19...CL-v1.82.0