Skip to content

Bring 1.83.x branch to main #719

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

Draft
wants to merge 149 commits into
base: main
Choose a base branch
from
Draft

Bring 1.83.x branch to main #719

wants to merge 149 commits into from

Conversation

bagusnl
Copy link
Member

@bagusnl bagusnl commented Apr 6, 2025

Features Spotlight: (so far)

(2nd try) NativeAOT Releases!

More native-app like speed in terms of start-up and other resource heavy operations (such as installation and repair). This is our 2nd try on shipping NativeAOT builds due to .NET issue back in SDK 9.0.0 causing random freeze/crashes. Let us know how you feel about Collapse performance and stability on this release!

External DNS Support, by @neon-nyan

Ability to set the DNS request to specific server just for the launcher. Supports plain DNS (UDP/53), DNS over HTTPS (DoH), and DNS over TLS (DoT). Includes 3 predefined DNS providers, Cloudflare ($cloudflare), Google ($google), and quad9 ($quad9). User can customize to use other DNS provider(s) and use multiple all at once as a fallback.

image

Search on App Settings, by @bagusnl & @neon-nyan

Tired of scrolling all of our launcher MASSIVE tunable options? Us too! That's why we have implemented a way to search all the available settings by just typing it, then you can navigate by using arrows to get to the settings you want. Works in all of our supported locales!

image

Sophon Patch for Game Update Implementation, by @neon-nyan

HoYo recently released what we called "Sophon Patch Mode" for game update. This method is different than the older "Sophon Chunk" as the patch method compares the entire file instead of replacing part of the file like in chunk method. This leads to Pre-download size reduction on Genshin Impact (EN+JP VO) from 15.97 GB with Sophon Chunk to 5.92 GB (almost a third of the size). Pretty good work on HoYo side, but we observed only a few of HoYoplay users have them. With our implementation, everyone can use them! (As long as it's provided in the game's update data from HoYo). You can also disable them the same way as you disable the Sophon Chunk method.

[TODO: Image]

Other changes:

  • [New] Kill other instance that doesn't have window, by @bagusnl
  • [Imp] Improved WebView panel backend, by @bagusnl
    • Immediately dispose and release all related resources on panel close.
    • Ensures WebView instance is available before the UI is displayed and interactable.
  • [Imp] Move our release CI to GitHub action, by @bagusnl
    • Everyone can now monitor all of our release easily by opening the Action tab. You can also verify all the binaries were coming from the build as we upload both the unsigned and the signed build in the artifacts of the run.
    • The move from AppVeyor to GitHub is due to annoying fact that AppVeyor has a very long initialization time before the CI is even run, and also with separate config that we can only test when putting up a release meaning everytime the CI breaks especially on an emergency release, it is quite a feat to fix in terms of how much time it takes for both waiting and fixing it, also the sanity of the CI maintainer due to how annoying the CI config looks/
    • By moving to GitHub Actions, we can monitor the CI availability as its the same commands that gets run every time we push a commit. So, when it breaks, we know before any release and can fix it easily.

Templates

Changelog Prefixes
  **[New]**
  **[Imp]**
  **[Fix]**
  **[Loc]**
  **[Doc]**

bagusnl and others added 30 commits February 12, 2025 11:19
we love to live dangor-ously
Co-authored-by: Kemal Setya Adhi <[email protected]>
All entries except Primitives.Popup since it requires DataTriggerBehavior
Always disable optimization while calling CurrentToastNotificationService to avoid weird NRE due to over-optimization on JIT before compilation
+ Since the AOT build is pretty much stable now (thanks to .NET 9.0.2 patch), we are going to set the optimization preference back to Speed
Copy link

github-actions bot commented Apr 6, 2025

Qodana for .NET

5 new problems were found

Inspection name Severity Problems
Unused local variable 🔶 Warning 2
'??' condition is known to be null or not null 🔶 Warning 1
Method with optional or 'params' parameter is hidden by overload 🔶 Warning 1
Variable in local function hides variable from outer scope 🔶 Warning 1

💡 Qodana analysis was run in the pull request mode: only the changed files were checked
☁️ View the detailed Qodana report

Detected 67 dependencies

Third-party software list

This page lists the third-party software dependencies used in CollapseLauncher

Dependency Version Licenses
CommunityToolkit.Common 8.4.0 MIT
CommunityToolkit.Mvvm 8.4.0 MIT
CommunityToolkit.WinUI.Animations 8.2.250402 MIT
CommunityToolkit.WinUI.Behaviors 8.2.250402 MIT
CommunityToolkit.WinUI.Controls.Primitives 8.2.250402 MIT
CommunityToolkit.WinUI.Controls.Sizers 8.2.250402 MIT
CommunityToolkit.WinUI.Converters 8.2.250402 MIT
CommunityToolkit.WinUI.Extensions 8.2.250402 MIT
CommunityToolkit.WinUI.Helpers 8.2.250402 MIT
CommunityToolkit.WinUI.Media 8.2.250402 MIT
CommunityToolkit.WinUI.Triggers 8.2.250402 MIT
Costura.Fody 6.0.0 MIT
DependencyPropertyGenerator 1.5.0 MIT
DotNet.ReproducibleBuilds 1.2.25 MIT
EventGenerator.Generator 0.13.1 MIT
Fody 6.9.2 MIT
GitInfo 3.5.0 MIT
Google.Protobuf.Tools 3.30.0 PROTOBUF
Google.Protobuf 3.30.0 BSD-3-Clause
Hi3Helper.ZstdNet 1.6.4 BSD-3-Clause
HtmlAgilityPack 1.12.0 MIT
Markdig.Signed 0.40.0 BSD-2-Clause
Microsoft.CSharp 4.7.0 MIT
Microsoft.Extensions.DependencyInjection.Abstractions 9.0.3 MIT
Microsoft.Extensions.DependencyInjection 9.0.3 MIT
Microsoft.Extensions.Logging.Abstractions 9.0.3 MIT
Microsoft.Extensions.Logging 9.0.3 MIT
Microsoft.Extensions.Options 9.0.3 MIT
Microsoft.Extensions.Primitives 9.0.3 MIT
Microsoft.Graphics.Win2D 1.3.2 MS-ASP-NET-WEB-OPTIMIZATION
Microsoft.NET.ILLink.Tasks 9.0.3 MIT
Microsoft.NETCore.Targets 6.0.0-preview.4.21253.7 MIT
Microsoft.Web.WebView2 1.0.3171-prerelease BSD-3-Clause
BSD-MYLEX
Microsoft.Win32.SystemEvents 9.0.3 MIT
Microsoft.Windows.CsWin32 0.3.183 Apache-2.0
Microsoft.Windows.CsWinRT 2.2.0 MIT
Microsoft.Windows.SDK.BuildTools 10.0.26100.1742 PROPRIETARY-LICENSE
Microsoft.Windows.SDK.Win32Docs 0.1.42-alpha PROPRIETARY-LICENSE
Microsoft.Windows.SDK.Win32Metadata 61.0.15-preview MIT
Microsoft.Windows.WDK.Win32Metadata 0.12.8-experimental MIT
Microsoft.WindowsAppSDK 1.7.250310001 MIT
MS-DXSDK-D3DX-9.29.952.3
Microsoft.Xaml.Behaviors.WinUI.Managed 3.0.0 MIT
NuGet.Versioning 6.12.1 Apache-2.0
PhotoSauce.MagicScaler 0.15.0 MIT
PhotoSauce.NativeCodecs.Libwebp 1.4.0-preview1 MIT
Roman-Numerals 2.0.1 MIT
Sentry 5.5.0 MIT
SharpCompress 0.39.0 MIT
SharpHDiffPatch.Core 2.3.2 MIT
System.Buffers 4.6.0 MIT
System.Drawing.Common 9.0.3 MIT
System.IO.Hashing 9.0.3 MIT
System.Net.Http 4.3.4 MIT
System.Security.AccessControl 6.0.1 MIT
System.Security.Cryptography.Algorithms 4.3.0 MIT
System.Security.Cryptography.Encoding 4.3.0 MIT
System.Security.Cryptography.Primitives 4.3.0 MIT
System.Security.Cryptography.ProtectedData 9.0.3 MIT
System.Security.Cryptography.X509Certificates 4.3.0 MIT
System.Text.Encoding.CodePages 9.0.3 MIT
System.Text.Json 9.0.3 MIT
System.Text.RegularExpressions 4.3.1 MIT
System.Threading.Tasks.Extensions 4.5.4 MIT
TaskScheduler 2.12.1 MIT
ThisAssembly.Constants 2.0.6 MIT
Velopack 0.0.1053 MIT
ZstdSharp.Port 0.8.5 MIT
Contact Qodana team

Contact us at [email protected]

return false;
}

ResourceRecordCollection CreateFromSingle(string host, byte[] addressByte)

Check warning

Code scanning / QDNET

Variable in local function hides variable from outer scope Warning

Parameter 'host' hides outer parameter with the same name
return;
}

LauncherConfig.SetAndSaveConfigValue("IsUseExternalDns", (_isUseExternalDns = value) ?? false);

Check warning

Code scanning / QDNET

'??' condition is known to be null or not null Warning

'??' left operand is never null
transifex-integration bot and others added 17 commits April 6, 2025 16:55
100% reviewed source file: 'en_US.json'
on 'id_ID'.
97% of minimum 75% reviewed source file: 'en_US.json'
on 'es_419'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
100% reviewed source file: 'en_US.json'
on 'zh_CN'.
84% of minimum 75% reviewed source file: 'en_US.json'
on 'pt_BR'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
100% reviewed source file: 'en_US.json'
on 'ja_JP'.
97% of minimum 75% reviewed source file: 'en_US.json'
on 'fr_FR'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
90% of minimum 75% reviewed source file: 'en_US.json'
on 'uk_UA'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
86% of minimum 75% reviewed source file: 'en_US.json'
on 'ru_RU'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
94% of minimum 75% reviewed source file: 'en_US.json'
on 'ko_KR'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
97% of minimum 75% reviewed source file: 'en_US.json'
on 'vi_VN'.

Sync of partially translated files: 
untranslated content is included with an empty translation 
or source language content depending on file format
100% reviewed source file: 'en_US.json'
on 'es_419'.
100% reviewed source file: 'en_US.json'
on 'fr_FR'.
100% reviewed source file: 'en_US.json'
on 'ja_JP'.
Apply nullable on all the to be disposed objects

fix #721
private Brush? BackgroundHighlightSelectedBrush { get; }
private Brush? BackgroundOriginalBrush { get; }

internal IList<TextHighlighter>? ElementTextHighlighter { get; }

Check warning

Code scanning / QDNET

Auto-property accessor is never used (non-private accessibility) Warning

Auto-property accessor 'ElementTextHighlighter.get' is never used
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Media.Animation;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;

Check warning

Code scanning / QDNET

Redundant using directive Warning

Using directive is not required by the code and can be safely removed
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.

3 participants