Commit 1690f2e
authored
Preview - 1.83.9 (Codename: Luna) (#796)

### Hi there, it's neon-nyan here~
It's been almost 3 weeks since the last preview update. To commemorate
the upcoming Genshin Impact 6.0 (aka: Luna I) update, we have decided to
use a new codename for this release as: "**Luna**"
With this release, we are bringing a long-awaited feature, the Plugin
System. This will catapult the development of Collapse to become not
only an exclusively third-party launcher for HoYoverse/miHoYo titles,
but also others in the future.
Without further ado, let's get into details regarding this update!
# What's New?
## [Plugin System for Other Non-miHoYo Titles
Support](#752), by
@neon-nyan
3 Months, 9000+ of lines changes later, we have finally finished the
first iteration of Plugin System implementation. For now, only basic
functionalities implemented into this plugin system as per the
[v0.1-update1 API
Standard](https://github.com/CollapseLauncher/Hi3Helper.Plugin.Core/tree/98ac5f08e48661f50f34b6d2bb2571fb9bd26730),
including:
- Game Installation
- Game Update/Preload
> Note: Other features like Game Repair, Game Caches and Game Settings
are going to be implemented in the future.
We are planning to make our own in-house plugins which will bring
support to two games are expected to be finished once the Luna release
releases to Stable:
- **Heaven Burns Red**
Developed and Maintained by: Collapse Project Team (@neon-nyan)
Status: Completed
- **Wuthering Waves**
Developed and Maintained by: Collapse Project Team (@Cryotechnic)
Status: Under Development
This implementation took more time due to a NativeAOT implementation of
the system. We are trying to make the plugin to not only works inside of
our code, but also usable for any code/launchers implementation out
there (if they want to).
We are making the compiled plugin footprint as small as possible by
removing any dependencies with .NET Reflections, stripping out .NET
Runtime and implementing COM-Like interfaces to bridge the communication
with plugins and the launcher, making the plugin compiled as a native
library instead of a .NET standard library. With this, we are achieving
6-7 MB for the plugin library.
The plugin can be managed by using the Plugin Manager menu under the App
Settings. Here's how it works:
[2025-09-14
21-51-48.webm](https://github.com/user-attachments/assets/0e972c82-c6d1-41ac-a2a4-b705b703d234)
> **PS:** Plugin download for Heaven Burns Red will be available soon.
Join our official Discord to get you hands on the early access~ 👀
## Bring Back NativeAOT Build
Due to .NET issues in
[#104583](dotnet/runtime#104583), we are unable
to ship NativeAOT build to preview. Fortunately, the latest .NET 9
Runtime comes with a fix and the UI hang issue has been fixed in most
scenarios.
Publishing a NativeAOT Build brings some benefits, including faster cold
start-up time, slight improvements on overall code performance (which
relies on frequent inline calls) and smaller compiled code.
This demo shows an improvement to the cold start-up time while the
launcher is launched. We took Stable v1.82.31 as a baseline to the
comparison and as a result, old ILCompile build start-up finished in 916
milliseconds while NativeAOT build start-up finished in just 466
milliseconds.
[ComparisonAOTvsNonAOT.webm](https://github.com/user-attachments/assets/5b659198-76c9-4f42-9836-6901e231da31)
This also results in a much smaller build as most of the .NET runtime
code are stripped. Here's the comparison of the build size between two
builds (with debug symbols removed):
<img width="731" height="515" alt="image"
src="https://github.com/user-attachments/assets/5fb87181-7a00-4169-8903-874111024267"
/>
## [Revamp Post-Download Behavior
Settings](#777), by
@gablm
We have added few options on how the launcher will do after game
installation/update. You can also set the Download Speed Limit while
performing game installation or update.
<img width="802" height="454" alt="image"
src="https://github.com/user-attachments/assets/2df669e5-c44a-4d51-b3e7-a98f203f951d"
/>
## Cached API Response for Application-wide Functions, by @neon-nyan
Tired of waiting for the launcher to load up each of the regions? Now,
you can make it faster. With the new HTTP Cache method, you can make
game region loadings much faster (even almost immediate). Previously,
this feature is only available for few functionality, including Game
Repair and Cache Updates. Now, every API calls from the launcher can be
cached so the launcher loads everything much-much faster.
[2025-09-14
22-10-08.webm](https://github.com/user-attachments/assets/012d13cb-5bb9-4bf9-8fcf-d7ef43ddb8fa)
# What's Changed?
- **[Removed]** Taking out CODING from CDN Mirror list
- **[Imp]** Recompile Static Libraries with MSVC for NativeAOT builds,
by @neon-nyan
- **[Imp]** Update .NET components NuGet to 9.0.9, by @bagusnl
@neon-nyan
- **[Imp]** Update WindowsAppSDK to 1.8-stable, by @neon-nyan
- **[Imp]** [Improve DBHandler reliability and error
handling](#791), by
@bagusnl
- Implements a retry mechanism with exponential backoff for database
operations
- Adds detailed logging for debugging and troubleshooting
- Uses internal methods for querying and storing data to streamline
error handling
- Integrates with Sentry for exception reporting
- Improves stream expiration handling
- **[Imp]** Decouple Hashing Extensions from Collapse Launcher's Main
Code, by @neon-nyan
- **[Imp]** [Improve app-wide logger
extensions](6acea34#commitcomment-164583504),
by @neon-nyan
- Remove memory allocation entirely by writing string directly to Win32
handles
- Add asynchronous variant for the overloads
- Add ``DefaultInterpolatedStringHandler`` overload for passing
interpolated string.
- **[Imp]** [Improve Sentry
Logging](#795), by
@bagusnl
- Now the telemetry will upload only the last 100 lines from the log
instead of sending everything to Sentry. This will reduce time and
guarantee the log is successfully sent for analysis.
- If multiple errors occurs, the exceptions will be queued and sent
one-by-one. This avoid collisions between other reports being sent at
the same time.
- **[Imp]** Improve I/O Performance on Sophon submodule, by @neon-nyan
- Use OS-level file caching
- Limit FileStream handle's access and share parameter
- Automatically increase FileStream's buffer depends on target file size
- Move ``ChunkStream.CopyToAsync`` into Task.Factory and run it
synchronously in the background
- Increase maximum buffer size budget on patch mode from 4 MiB to 32 MiB
- Allocate only a certain amount of buffer based on target data size
(this to avoid buffer overprovision, causing memory and CPU usage
spikes)
- **[Fix/Imp]** Ignore assets that marked as "unused/deleted" on ZZZ
Game Installation/Update and Game Repair, by @neon-nyan
- **[Fix]** ``NotSupportedException`` error while performing Game Repair
on Honkai Impact 3rd and Honkai: Star Rail, by @neon-nyan
- **[Fix]** Legacy Sophon won't recognize already existed files while
installing games from scratch, by @neon-nyan
- **[Locale]** Update Localizations for vn_VN, es_ES/419, ja_JP, id_ID,
zh_CN, by Localizers ❤File tree
261 files changed
+154045
-5987
lines changed- .github/workflows
- .idea/.idea.CollapseLauncher/.idea
- CollapseLauncher
- Assets/Images/GameMascot
- Classes
- AnimatedVisuals/Lottie
- EventsManagement
- Extension
- FileDialog
- GameManagement
- GamePlaytime
- RegistryClass
- GameSettings/BaseClass
- Versioning
- Helper
- Background
- Loaders
- Database
- Image
- LauncherApiLoader
- HoYoPlay
- Legacy
- Loading
- Metadata
- StreamUtility
- Update
- InstallManagement
- Base
- Zenless
- Interfaces
- Class
- Plugins
- Properties
- RegionManagement
- RepairManagement
- Genshin
- Honkai
- StarRail
- Zenless
- ShortcutCreator
- Properties
- PublishProfiles
- StaticLib
- XAMLs
- MainApp
- Pages
- Dialogs
- GameSettingsPages
- OOBE
- Prototype
- Theme/CustomControls
- FullPageOverlay
- UserFeedbackDialog
- Updater
- Classes
- Hi3Helper.CommunityToolkit
- ImageCropper
- SettingsControls
- Helpers
- SettingsCard
- SettingsExpander
- Hi3Helper.Core
- Classes
- Logger
- Enum
- Type
- SentryHelper
- Data
- Lang
- Locale
- Hi3Helper.EncTool.Test
- Hi3Helper.TaskScheduler
- InnoSetupHelper
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
261 files changed
+154045
-5987
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | 28 | | |
32 | 29 | | |
33 | 30 | | |
| |||
49 | 46 | | |
50 | 47 | | |
51 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
52 | 57 | | |
53 | 58 | | |
54 | 59 | | |
| |||
62 | 67 | | |
63 | 68 | | |
64 | 69 | | |
65 | | - | |
| 70 | + | |
66 | 71 | | |
67 | 72 | | |
68 | 73 | | |
69 | 74 | | |
70 | 75 | | |
71 | 76 | | |
72 | 77 | | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
73 | 86 | | |
74 | 87 | | |
75 | 88 | | |
| |||
89 | 102 | | |
90 | 103 | | |
91 | 104 | | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
92 | 113 | | |
93 | 114 | | |
94 | 115 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | 31 | | |
35 | 32 | | |
36 | 33 | | |
| |||
42 | 39 | | |
43 | 40 | | |
44 | 41 | | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
45 | 51 | | |
46 | 52 | | |
47 | 53 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | 22 | | |
| 23 | + | |
26 | 24 | | |
27 | 25 | | |
28 | 26 | | |
| |||
34 | 32 | | |
35 | 33 | | |
36 | 34 | | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
49 | 44 | | |
50 | 45 | | |
51 | 46 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | 11 | | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
19 | 16 | | |
20 | 17 | | |
21 | 18 | | |
| |||
33 | 30 | | |
34 | 31 | | |
35 | 32 | | |
| 33 | + | |
36 | 34 | | |
37 | 35 | | |
38 | 36 | | |
| |||
51 | 49 | | |
52 | 50 | | |
53 | 51 | | |
54 | | - | |
55 | | - | |
| 52 | + | |
| 53 | + | |
56 | 54 | | |
57 | 55 | | |
58 | 56 | | |
| |||
69 | 67 | | |
70 | 68 | | |
71 | 69 | | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
72 | 78 | | |
73 | 79 | | |
74 | 80 | | |
| |||
156 | 162 | | |
157 | 163 | | |
158 | 164 | | |
159 | | - | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
160 | 168 | | |
161 | 169 | | |
162 | 170 | | |
| |||
187 | 195 | | |
188 | 196 | | |
189 | 197 | | |
| 198 | + | |
| 199 | + | |
190 | 200 | | |
191 | | - | |
192 | | - | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
11 | 13 | | |
12 | 14 | | |
13 | 15 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments