Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
329 commits
Select commit Hold shift + click to select a range
4334e95
[skip ci] Sync translation Translate en_US.json in es_419
transifex-integration[bot] Jun 29, 2025
fee79f5
[skip ci] Sync translation Translate en_US.json in ja_JP
transifex-integration[bot] Jun 30, 2025
f5a105c
Always lookup API export from Utf16StringMarshaller string
neon-nyan Jul 3, 2025
b0a59cf
Adjust core plugin self-update
neon-nyan Jul 3, 2025
29dd48c
[skip ci] Sync translation Translate en_US.json in id_ID
transifex-integration[bot] Jul 4, 2025
90cf59f
Adjust UI Changes
neon-nyan Jul 4, 2025
27d8abb
[skip ci] Sync translation Translate en_US.json in es_419
transifex-integration[bot] Jul 5, 2025
15c0386
[skip ci] Sync translation Translate en_US.json in ja_JP
transifex-integration[bot] Jul 5, 2025
ac4b40b
[skip ci] Sync translation Translate en_US.json in zh_CN
transifex-integration[bot] Jul 5, 2025
d58ac2d
[skip ci] Sync translation Translate en_US.json in id_ID
transifex-integration[bot] Jul 10, 2025
3f7e936
Core Plugin adjustment
neon-nyan Jul 13, 2025
7409071
Add FullPageOverlay UI element + Move TitleBarDragArea logic to MainW…
neon-nyan Jul 13, 2025
6b580d0
Fix theme and CTS dispose on FullPageOverlay
neon-nyan Jul 13, 2025
3cd8f9a
Fix typo
shatyuka Jul 15, 2025
01ed5ba
[skip ci] Sync translation Translate en_US.json in zh_CN
transifex-integration[bot] Jul 15, 2025
9563e3e
Merge branch 'main' into plugin
neon-nyan Jul 17, 2025
c0a5123
Update Hi3Helper.Win32
neon-nyan Jul 17, 2025
688c24f
[skip ci] Sync translation Translate en_US.json in ja_JP
transifex-integration[bot] Jul 18, 2025
2b6e3eb
[skip ci] Sync translation Translate en_US.json in es_419
transifex-integration[bot] Jul 19, 2025
40bfd95
Merge branch 'main' into plugin
bagusnl Jul 20, 2025
d045f05
Update .NET SDK (9.0.7/9.0.302)
bagusnl Jul 20, 2025
2900a8d
Add Plugins.Core to SLNX file
bagusnl Jul 20, 2025
6972aea
CodeQA
bagusnl Jul 20, 2025
0337736
CodeQA
bagusnl Jul 20, 2025
b627bbf
Adjust plugin info display
neon-nyan Jul 20, 2025
793314b
Ignore launcher config save if path is null
neon-nyan Jul 21, 2025
87e0bd2
Fix IsDisableEnvVarDetected returns true if env not set
neon-nyan Jul 21, 2025
2f75402
Escape path in aot-locale-cleanup.bat
neon-nyan Jul 21, 2025
ece9cc6
Adjust overlay and plugin info display
neon-nyan Jul 21, 2025
69007ff
Fix crash when no H/V alignment is set due to null VisualState
neon-nyan Jul 21, 2025
fe014de
Remove unused using
neon-nyan Jul 21, 2025
4edc0a6
Code Review
neon-nyan Jul 21, 2025
9e83e22
Update Hi3Helper.Plugin.Core
neon-nyan Jul 21, 2025
1c75265
Add PluginManagerPage prototype
neon-nyan Jul 21, 2025
065e7e2
Merge branch 'main' into plugin
neon-nyan Jul 26, 2025
4c71c4e
Fix missing conflict with main branch
neon-nyan Jul 26, 2025
edebe4a
Update Hi3Helper.Plugin.Core
neon-nyan Jul 26, 2025
49af60a
Code QA
neon-nyan Jul 26, 2025
5a9fb36
Merge branch 'main' into plugin
neon-nyan Jul 26, 2025
d9f265f
Rename Crowdin to Transifex on CONTRIBUTING.md
neon-nyan Jul 27, 2025
1d449ff
Manually merge from main branch
neon-nyan Jul 29, 2025
a6a9d6f
[Non-breaking changes] Plugin Core Improvements
neon-nyan Jul 29, 2025
9407670
[skip ci] Sync translation Translate en_US.json in es_419
transifex-integration[bot] Jul 29, 2025
e0254b6
Update PluginManifest + Plugin.Core
neon-nyan Jul 29, 2025
d670a12
Ability to disable plugin and perform managed update
neon-nyan Jul 31, 2025
6150b89
Make PluginInfo bindable
neon-nyan Jul 31, 2025
9f49fac
Get alternative plugin icon from manifest.json (if available)
neon-nyan Jul 31, 2025
8e52d2f
[skip ci] Sync translation Translate en_US.json in ja_JP
transifex-integration[bot] Jul 31, 2025
3a1ee15
Update PluginManagerPage UI
neon-nyan Jul 31, 2025
b8325f6
Merge branch 'main' into plugin
neon-nyan Aug 2, 2025
d44435e
Merge branch 'main' into plugin
neon-nyan Aug 2, 2025
0e5aa35
Use async DnsResolverCallback if available
neon-nyan Aug 2, 2025
3580880
Adjust DnsResolverCallbackAsync to receive length
neon-nyan Aug 3, 2025
50bd565
[skip ci] Sync translation Translate en_US.json in zh_CN
transifex-integration[bot] Aug 8, 2025
1d4736b
Add bindings and features on PluginManagerPage
neon-nyan Aug 9, 2025
dbc4adc
Update Hi3Helper.Plugin.Core
neon-nyan Aug 9, 2025
2719848
Add bindings and features on PluginManagerPage (pt. 2)
neon-nyan Aug 9, 2025
0c43504
Merge branch 'main' into plugin
bagusnl Aug 10, 2025
f889c99
Merge branch 'main' into plugin
neon-nyan Aug 11, 2025
98bb436
Update Hi3Helper.Plugin.Core
neon-nyan Aug 11, 2025
d659530
Code QA
neon-nyan Aug 11, 2025
e343290
Code QA + Fix build error
neon-nyan Aug 11, 2025
a78974b
[skip ci] Sync translation Translate en_US.json in es_419
transifex-integration[bot] Aug 11, 2025
a36e7d1
Update contributing.md file with plugin text
Cryotechnic Aug 14, 2025
7e9755d
Remove table, add plugin text
Cryotechnic Aug 14, 2025
208dc4f
[skip ci] Update README.md
neon-nyan Aug 14, 2025
2a39845
[skip ci] Sync translation Translate en_US.json in ja_JP
transifex-integration[bot] Aug 15, 2025
1688e18
[skip ci] Sync translation Translate en_US.json in ja_JP
transifex-integration[bot] Aug 15, 2025
59f848f
Merge from main
bagusnl Aug 16, 2025
5e91c36
Update to SDK 9.0.8 9.0.304
bagusnl Aug 16, 2025
f77d285
Update build.yml
bagusnl Aug 16, 2025
802ba7c
Update build.yml
bagusnl Aug 16, 2025
a162902
Bring back GitInfo tags
bagusnl Aug 16, 2025
c840d5e
Merge remote-tracking branch 'origin/plugin' into plugin
bagusnl Aug 16, 2025
04d3fe0
Remove assembly attributes flags
bagusnl Aug 16, 2025
9d4518e
Use Plugin Game Launch API if available
neon-nyan Aug 19, 2025
5b40ae3
Updates dependencies to latest versions
bagusnl Aug 22, 2025
f7f6434
Move "Minimize to Tray" logic
bagusnl Aug 22, 2025
3165eb2
tryfix: Fixes navigation stack issue on back navigation
bagusnl Aug 22, 2025
97c3f8e
fix: Handles MachineGuid retrieval failures
bagusnl Aug 22, 2025
09b69b9
Improves DBHandler reliability and error handling
bagusnl Aug 22, 2025
dc3d1c2
CodeQA
bagusnl Aug 22, 2025
8e59bf3
Adds build validation steps
bagusnl Aug 22, 2025
7935612
Merge branch 'plugin' into fix/dbhandler-769
bagusnl Aug 22, 2025
b1ac778
Revamp the download settings dialog (#777)
gablm Aug 22, 2025
d9de2ca
[DB] Switch to field type
bagusnl Aug 22, 2025
1c1fdd3
[DB] Optimize field types
bagusnl Aug 22, 2025
2863d7f
[DB] Add exponential delays
bagusnl Aug 22, 2025
f5d8c77
Fix build errors and warnings
bagusnl Aug 23, 2025
198fcfa
[skip ci] Sync translation Translate en_US.json in es_419
transifex-integration[bot] Aug 23, 2025
8429d48
Make EnableConsole and IncludeGameLogs settings applied for plugin
neon-nyan Aug 23, 2025
2643aea
Adjust GAME STARTED/STOPPED log call
neon-nyan Aug 23, 2025
b2f7974
Submodule adjustment
neon-nyan Aug 23, 2025
28cb040
chore: Update sophon submodule
bagusnl Aug 24, 2025
1309e1f
fix: Process Instance Counter
bagusnl Aug 24, 2025
1303c6c
enhance: Optimize EnsureNoReadOnly
bagusnl Aug 24, 2025
7cfe631
Update different NuGet versions
neon-nyan Aug 24, 2025
e57469e
Rewrite Logger implementation
neon-nyan Aug 24, 2025
f023c8e
Revamp the download settings dialog (#777)
gablm Aug 22, 2025
ca145e8
Adjust changes to DownloadSettings PR #777
neon-nyan Aug 24, 2025
77dbc11
[skip ci] Sync translation Translate en_US.json in es_419
transifex-integration[bot] Aug 23, 2025
ea6eb4f
Fix pragma in PluginManagerPage
neon-nyan Aug 24, 2025
a365e71
Update different NuGet versions
neon-nyan Aug 24, 2025
d55a5ed
Rewrite Logger implementation
neon-nyan Aug 24, 2025
a89b9c2
Fix missing class from manual main cherry-pick
neon-nyan Aug 24, 2025
5a53bda
Fix and update logger usage on Plugin's PrintGameLogCallback
neon-nyan Aug 24, 2025
b657f57
Fix insufficient buffer size
neon-nyan Aug 24, 2025
a4ec4d1
Use owned Utf8Encoding instance
neon-nyan Aug 24, 2025
cf5607a
Use owned Utf8Encoding instance (pt. 2)
neon-nyan Aug 24, 2025
e3dd946
[skip ci] Sync translation Translate en_US.json in es_419
transifex-integration[bot] Aug 24, 2025
5d8037b
Merge remote-tracking branch 'origin/main' into plugin
bagusnl Aug 25, 2025
bac8e56
Merge branch 'plugin' into fix/dbhandler-769
bagusnl Aug 25, 2025
66c5522
Seal override methods on logger
neon-nyan Aug 25, 2025
4abc3f2
Merge remote-tracking branch 'origin/main' into plugin
bagusnl Aug 25, 2025
6f7d2e8
Merge branch 'plugin' into fix/dbhandler-769
bagusnl Aug 25, 2025
f8cf171
[skip ci] Sync translation Translate en_US.json in zh_CN
transifex-integration[bot] Aug 25, 2025
c0a6804
[skip ci] Sync translation Translate en_US.json in ja_JP
transifex-integration[bot] Aug 25, 2025
70bbace
[skip ci] Sync translation Translate en_US.json in ja_JP
transifex-integration[bot] Aug 25, 2025
6acea34
Rewrite Logger implementation (pt. 3)
neon-nyan Aug 25, 2025
e1f8dc4
Use Logger.UseConsoleLog to toggle logger mode
neon-nyan Aug 25, 2025
1ddd68b
Remove unused scoped keyword on LoggerConsole.LogWriteLine
neon-nyan Aug 25, 2025
d7f291d
Merge branch 'main' into plugin
neon-nyan Aug 25, 2025
bb1153c
Merge remote-tracking branch 'origin/plugin' into fix/dbhandler-769
bagusnl Aug 26, 2025
e352340
Switch to EncTool's HashUtility
neon-nyan Aug 26, 2025
43de094
Update Submodule
neon-nyan Aug 26, 2025
4fac84d
Merge branch 'main' into plugin
neon-nyan Aug 26, 2025
aaa4915
Fix compile error due to EncTool changes
neon-nyan Aug 26, 2025
e682e67
Increase Hi3 MurmurHash buffer to 512K
neon-nyan Aug 26, 2025
501e83f
Merge branch 'main' into plugin
neon-nyan Aug 26, 2025
bb1a07a
Use .ConfigureAwait(false) on GetCryptoHashAsyncMurmur
neon-nyan Aug 26, 2025
c16b4ef
Merge branch 'main' into plugin
neon-nyan Aug 26, 2025
6b7a516
Improves DBHandler reliability and error handling (#791)
bagusnl Aug 27, 2025
f7d9e60
Fix legacy sophon game install won't recognize existing file
neon-nyan Aug 27, 2025
5923672
Bump version + Fix CDNCacheUtil intermitten error on HSR Game Repair
neon-nyan Aug 27, 2025
08b757c
feat: Update Sentry package to version 5.14.1 and enhance logging cap…
bagusnl Aug 30, 2025
9440d42
feat: Refactor exception handling and improve auto-clean logic in Sen…
bagusnl Aug 30, 2025
9ac9994
CodeQA
bagusnl Aug 30, 2025
e86717d
[skip ci] Add temporary ID crisis intro (August 2025)
neon-nyan Aug 31, 2025
6315f4c
[skip ci] Add temporary ID crisis intro settings on LauncherConfig
neon-nyan Aug 31, 2025
abba48f
[skip ci] Fix AOT build on the temporary intro
neon-nyan Aug 31, 2025
cf414e1
Update NuGet
neon-nyan Aug 31, 2025
02a4efe
[skip ci] Revert intro changes
neon-nyan Aug 31, 2025
93e4821
Remove unused usings
neon-nyan Aug 31, 2025
7cde71f
[CDN] Remove CODING cdn
shatyuka Aug 31, 2025
c2f2575
Revert "[skip ci] Revert intro changes"
neon-nyan Aug 31, 2025
76d3d41
[skip ci] Revert "Remove unused usings"
neon-nyan Aug 31, 2025
9cd30c2
[skip ci] Add announcement on intro
neon-nyan Aug 31, 2025
f18c898
Fix AOT
neon-nyan Aug 31, 2025
6902016
[skip ci] Fix typo
neon-nyan Aug 31, 2025
c3e2d06
[skip ci] Fix timerange
neon-nyan Aug 31, 2025
c7f8176
[skip ci] Fix datetime logic
neon-nyan Aug 31, 2025
c0fcbd3
Merge branch 'main' into plugin
neon-nyan Sep 1, 2025
b179c57
[skip ci] Update crisis announcement text
neon-nyan Sep 1, 2025
fb320a0
[skip ci] Update crisis announcement text
neon-nyan Sep 1, 2025
28ec7d8
[skip ci] Fix XAML button invalid string
neon-nyan Sep 1, 2025
05e8b1b
[ZZZ] Add ability on Game Install/Update to skip excluded assets
neon-nyan Sep 1, 2025
019672c
[ZZZ] Add ability on Game Repair/Cache Update to skip excluded assets
neon-nyan Sep 1, 2025
ab4de3f
Merge branch 'main' into plugin
neon-nyan Sep 1, 2025
016cb88
Fix Resizable Window payload for plugin games and ZZZ
neon-nyan Sep 1, 2025
f46ae88
[skip ci] Sync translation Translate en_US.json in ja_JP
transifex-integration[bot] Sep 1, 2025
93fb08e
Merge branch 'plugin' into feat/exper/sentry-logging
neon-nyan Sep 2, 2025
0b5f308
Switch to SemaphoreSlim for pure async locking + CodeQA
neon-nyan Sep 2, 2025
6ca7fde
Optimize tail lines method
neon-nyan Sep 2, 2025
26f135b
Optimize LogToNativeLogger.ScrubNewlines
neon-nyan Sep 2, 2025
df7636b
Use FileAccess.Read on logFileStream
neon-nyan Sep 2, 2025
25066ef
Add failsafe on TailLinesFromStream
neon-nyan Sep 2, 2025
8546f4a
Improve Sentry Methods (#795)
neon-nyan Sep 2, 2025
fdb1cd4
Add plugin catalog page URL (placeholder)
neon-nyan Sep 2, 2025
987a88a
Implement Plugin System for Adding Support for Third-Party (Non-miHoY…
neon-nyan Sep 3, 2025
61b0d95
[skip ci] Sync translation Translate en_US.json in es_419
transifex-integration[bot] Sep 3, 2025
a30374a
Fix not being able to swap between release channels
gablm Sep 3, 2025
774ce5a
Fix unwanted GameVersion.Revision in ToString()
neon-nyan Sep 5, 2025
7c5e69e
Fix GC'ed _sharedLoggerCallback
neon-nyan Sep 5, 2025
3ee5e48
Change from O1 to O2 on AOT publish
neon-nyan Sep 5, 2025
4492389
Fix mixed tabs on StableRelease profile
neon-nyan Sep 5, 2025
3c9c8b9
Update packages.lock.json
neon-nyan Sep 5, 2025
d20726b
[Tagline] Fix class partial warnings
bagusnl Sep 6, 2025
3480de4
[Plugin] Fix class partial warnings
bagusnl Sep 6, 2025
e78daca
[SimpleDialogs] Implement backoff on QueueAndSpawnDialog
bagusnl Sep 6, 2025
c546fed
[Sentry] Fix Sentry not loading
bagusnl Sep 6, 2025
178b213
[CI] Switch to AOT release
bagusnl Sep 6, 2025
a999f18
[CI] Implement Datadog SCA and Static Code Analysis
bagusnl Sep 6, 2025
3bd8d7f
Use Implicit conversion for GameVersion struct
neon-nyan Sep 6, 2025
b4538b2
CodeQA
neon-nyan Sep 6, 2025
73dc7dc
Try to fix CsWinRT1032
neon-nyan Sep 6, 2025
a7f6f06
Use WrapPluginException for Exceptions
neon-nyan Sep 6, 2025
163c9d6
Use WrapPluginException for Exceptions (pt. 2)
neon-nyan Sep 6, 2025
d26fbe5
Try to fix AssignNullToNotNullAttribute
neon-nyan Sep 6, 2025
29200cd
[Plugin] Move Plugin code location and change plugin catalog page loc…
bagusnl Sep 6, 2025
25d1c1e
Merge remote-tracking branch 'origin/main'
bagusnl Sep 6, 2025
583533c
[Tagline] Reverse toggle description
bagusnl Sep 6, 2025
67e7102
[SimpleDialog] Fix QueueAndSpawnDialog backoff mechanism
bagusnl Sep 6, 2025
9096a26
Fix repeated keys when syncing playtime for plugins
gablm Sep 7, 2025
1355498
[skip ci] Sync translation Translate en_US.json in vi_VN
transifex-integration[bot] Sep 7, 2025
6add790
Fix crashes when creating shortcuts for plugins
gablm Sep 7, 2025
441fa4d
Fix icons on shortcuts created for plugins
gablm Sep 7, 2025
bd4022c
[skip ci] Sync translation Translate en_US.json in zh_CN
transifex-integration[bot] Sep 7, 2025
36f90b8
Update VI translations (#797)
ricecracker12 Sep 8, 2025
4a5b168
Bunch of fixes and improvements on Main()
neon-nyan Sep 8, 2025
aff1fc3
Update packages.lock.json
neon-nyan Sep 8, 2025
7ca0103
Fix indent from Tabs to Space on main .csproj
neon-nyan Sep 8, 2025
880cc89
Re-order ComWrapper initialization + Tidy-up program.cs
neon-nyan Sep 8, 2025
b7de86b
Remove Squirrel reference
neon-nyan Sep 8, 2025
5b74a7a
Recompile static libraries with CFG support
neon-nyan Sep 9, 2025
766c94e
Add *.pdb to .gitignore
neon-nyan Sep 9, 2025
90858a8
Ensure reinitialization on FallbackCDNUtil.InitializeHttpClient
neon-nyan Sep 9, 2025
1087d9b
Adjust FallbackCDNUtil changes
neon-nyan Sep 9, 2025
c8a3116
Update NuGet
neon-nyan Sep 9, 2025
64fff46
Remove NODEFAULTLIB for static library linking
neon-nyan Sep 9, 2025
c824521
Update Static Library path
neon-nyan Sep 9, 2025
70e1d62
Disable CFG on NativeAOT
neon-nyan Sep 9, 2025
0719e61
Add linking for Win32 APIs
neon-nyan Sep 9, 2025
7a349d9
Update packages.lock.json
neon-nyan Sep 10, 2025
a65bc58
Update H.NotifyIcon base + WASDK 1.8
neon-nyan Sep 10, 2025
3d9a310
Update Sophon submodule (performance related)
neon-nyan Sep 10, 2025
896eae7
Update Hi3Helper.Sophon
neon-nyan Sep 10, 2025
a3003a3
[WindowUtility] Add early return to prevent double minimize call
bagusnl Sep 11, 2025
75db1b7
Update NuGet and Submodules
neon-nyan Sep 12, 2025
a5d6df3
Remove DownloadSettings container MaxHeight
neon-nyan Sep 12, 2025
ea700a1
Adjust Win32 ComMarshal changes
neon-nyan Sep 12, 2025
a5d330a
[CI] Force set PublishAot property on non AOT build step
bagusnl Sep 12, 2025
1df46c9
Fix Genshin Repair fail with HoYo plugin enabled
neon-nyan Sep 13, 2025
17fdb3a
Detach image load routine
neon-nyan Sep 13, 2025
2edf4ab
Update Hi3Helper.EncTool
neon-nyan Sep 13, 2025
0906285
Bump SDK to 9.0.305
neon-nyan Sep 13, 2025
effe2c6
Fix CI error on DebugCIRelease
neon-nyan Sep 13, 2025
7b30627
Decouple and add extension to change accent color
neon-nyan Sep 13, 2025
dd83245
Fix FallbackCDNUtil.DownloadAsJSONType not cached
neon-nyan Sep 13, 2025
c2e04e3
Update Hi3Helper.EncTool
neon-nyan Sep 13, 2025
7f4fd38
Fix wrong type set on ChangeAccentColor
neon-nyan Sep 13, 2025
118a7dd
Use BoundedChannel to queue background image tasks
neon-nyan Sep 13, 2025
08f38b6
Re-use bitmap data on loading bg image accent color
neon-nyan Sep 13, 2025
9ee45cd
Fix Task invoked twice on API loader
neon-nyan Sep 13, 2025
01894ce
Update Hi3Helper.Win32
neon-nyan Sep 13, 2025
cf5e0ca
Change submodule url to current
neon-nyan Sep 13, 2025
6f0f6f6
Update NuGet
neon-nyan Sep 13, 2025
376363b
[skip ci][PublishProfiles] Remove PublishReadyToRun annotation in non…
bagusnl Sep 14, 2025
66ef127
Fix compiler error: -1073741819
neon-nyan Sep 14, 2025
53149af
Use cached response for ZZZ fetch
neon-nyan Sep 14, 2025
b6cc896
Use cached response for FallbackCDNUtil
neon-nyan Sep 14, 2025
5ee1eae
Update packages.lock.json
neon-nyan Sep 14, 2025
32d221d
Update SevenZipExtractor
neon-nyan Sep 14, 2025
2898528
Use new overload for Sophon install method
neon-nyan Sep 14, 2025
1395543
[Plugin] Sync submodule
bagusnl Sep 15, 2025
8861508
[GameState] Optimize IsDiskPartitionExist method
bagusnl Sep 15, 2025
bf4f646
Fix rare issue while Sophon API doesn't override package API
neon-nyan Sep 15, 2025
a2183e3
[skip-ci] [CI] [Test] Build preview as test signing CI
bagusnl Sep 16, 2025
c2883d0
[skip ci] [CI] [Test] Forgor to remove debug tag
bagusnl Sep 16, 2025
b104c48
[skip ci] [CI] Fix Sentry release commit pinning
bagusnl Sep 16, 2025
8263e50
[skip ci] [CI] Use Preview release to release test signers
bagusnl Sep 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 25 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,6 @@ on:
- '**/packages.lock.json'

env:
DOTNET_INSTALL_DIR: '.\.dotnet'
DOTNET_VERSION: '9.0.3xx'
DOTNET_QUALITY: 'ga'
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages

jobs:
Expand All @@ -49,6 +46,14 @@ jobs:
with:
submodules: recursive

- name: 'Preparing Environment Variables'
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }}
run: |
$env = Get-Content env.json | ConvertFrom-Json
foreach ($prop in $env.PSObject.Properties) {
echo "$($prop.Name)=$($prop.Value)" >> $env:GITHUB_ENV
}

- name: Install .NET
uses: actions/setup-dotnet@v4
with:
Expand All @@ -62,14 +67,22 @@ jobs:

- name: Build
run: |
dotnet publish CollapseLauncher -c ${{matrix.Configuration}} -p:PublishProfile=Publish-DebugCIRelease -p:PublishDir=".\debug-build\"
dotnet publish CollapseLauncher -c ${{matrix.Configuration}} -p:PublishProfile=Publish-DebugCIRelease -p:PublishDir=".\debug-build\" -p:PublishAot=false

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: collapse_${{ matrix.platform }}-${{ matrix.configuration }}_${{ matrix.framework }}_${{ github.sha }}
path: ./CollapseLauncher/debug-build/
compression-level: 9

- name: Validate build for Preview
run: |
dotnet build CollapseLauncher -c Release --verbosity quiet --no-restore

- name: Validate build for Stable
run: |
dotnet build CollapseLauncher -c Publish --verbosity quiet --no-restore

build-nativeaot:
runs-on: windows-latest
Expand All @@ -89,6 +102,14 @@ jobs:
with:
submodules: recursive

- name: 'Preparing Environment Variables'
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }}
run: |
$env = Get-Content env.json | ConvertFrom-Json
foreach ($prop in $env.PSObject.Properties) {
echo "$($prop.Name)=$($prop.Value)" >> $env:GITHUB_ENV
}

- name: Install .NET
uses: actions/setup-dotnet@v4
with:
Expand Down
21 changes: 21 additions & 0 deletions .github/workflows/dd-sca.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
on: [push]

name: Datadog Software Composition Analysis

jobs:
software-composition-analysis:
runs-on: ubuntu-latest
name: Datadog SBOM Generation and Upload
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive

- name: Check imported libraries are secure and compliant
id: datadog-software-composition-analysis
uses: DataDog/datadog-sca-github-action@main
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
dd_app_key: ${{ secrets.DD_APP_KEY }}
dd_site: ap1.datadoghq.com
24 changes: 24 additions & 0 deletions .github/workflows/dd-static-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
on: [push]

name: Datadog Static Code Analysis

jobs:
static-analysis:
runs-on: ubuntu-latest
name: Datadog Static Analyzer
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive

- name: Check code meets quality and security standards
id: datadog-static-analysis
uses: DataDog/datadog-static-analyzer-github-action@v1
with:
dd_api_key: ${{ secrets.DD_API_KEY }}
dd_app_key: ${{ secrets.DD_APP_KEY }}
dd_site: ap1.datadoghq.com
secrets_enabled: false
static_analysis_enabled: true
cpu_count: 2
12 changes: 9 additions & 3 deletions .github/workflows/qodana-scan-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,6 @@ jobs:
env:
Configuration: ${{ matrix.configuration }}
Platform: ${{ matrix.platform }}
DOTNET_INSTALL_DIR: '.\.dotnet'
DOTNET_VERSION: '9.0.3xx'
DOTNET_QUALITY: 'ga'
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages

steps:
Expand All @@ -42,6 +39,15 @@ jobs:
ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
fetch-depth: 0 # a full history is required for pull request analysis
submodules: recursive # many many submodules

- name: 'Preparing Environment Variables'
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }}
run: |
$env = Get-Content env.json | ConvertFrom-Json
foreach ($prop in $env.PSObject.Properties) {
echo "$($prop.Name)=$($prop.Value)" >> $env:GITHUB_ENV
}

- name: Install .NET
uses: actions/setup-dotnet@v4
with:
Expand Down
25 changes: 10 additions & 15 deletions .github/workflows/qodana-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,8 @@ jobs:
env:
Configuration: ${{ matrix.configuration }}
Platform: ${{ matrix.platform }}
DOTNET_INSTALL_DIR: '.\.dotnet'
DOTNET_VERSION: '9.0.3xx'
DOTNET_QUALITY: 'ga'
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages

permissions:
actions: read
contents: write
Expand All @@ -34,18 +32,15 @@ jobs:
with:
ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
submodules: recursive # many many submodules
# - name: Install winget
# uses: Cyberboss/install-winget@v1
# - name: Install Qodana CLI
# uses: crazy-max/ghaction-chocolatey@v3
# with:
# args: install qodana --pre --confirm

# - name: Verify Qodana
# run: |
# Import-Module "$env:ChocolateyInstall/helpers/chocolateyInstaller.psm1"
# refreshenv
# qodana --version

- name: 'Preparing Environment Variables'
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }}
run: |
$env = Get-Content env.json | ConvertFrom-Json
foreach ($prop in $env.PSObject.Properties) {
echo "$($prop.Name)=$($prop.Value)" >> $env:GITHUB_ENV
}

- name: Install .NET
uses: actions/setup-dotnet@v4
with:
Expand Down
53 changes: 41 additions & 12 deletions .github/workflows/release-signed.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,11 @@ on:
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
DOTNET_INSTALL_DIR: '.\.dotnet'
DOTNET_VERSION: '9.0.3xx'
DOTNET_QUALITY: 'ga'
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages
SIGNPATH_ARTIFACT_SLUG: 'initial' # change this to 'aot-release' when releasing with AOT or 'initial' for normal release
BUILD_PROFILE_PREVIEW: 'Publish-PreviewRelease'
BUILD_PROFILE_STABLE: 'Publish-StableRelease'
BUILD_PROFILE_DEBUG: 'Publish-DebugCIRelease'
SIGNPATH_ARTIFACT_SLUG: 'aot-release' # change this to 'aot-release' when releasing with AOT or 'initial' for normal release
BUILD_PROFILE_PREVIEW: 'Publish-PreviewReleaseAOT'
BUILD_PROFILE_STABLE: 'Publish-StableReleaseAOT'
BUILD_PROFILE_DEBUG: 'Publish-DebugCIReleaseAOT'

# schedule:
# - cron: '0 0 * * 0' # At 00:00 on Sunday
Expand All @@ -33,6 +30,7 @@ jobs:
PUBLISH_PROFILE: ""
SIGNING_POLICY_SLUG: ""
VERSION: ""
PRODUCT_VERSION: ""
Platform: ${{ matrix.platform }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}

Expand All @@ -51,8 +49,8 @@ jobs:
echo "PUBLISH_PROFILE=${{ env.BUILD_PROFILE_STABLE }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "SIGNING_POLICY_SLUG=release-signing" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
} elseif ($branch -eq "github-signpath-test") {
echo "CONFIGURATION_STRATEGY=Debug" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "PUBLISH_PROFILE=${{ env.BUILD_PROFILE_DEBUG }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "CONFIGURATION_STRATEGY=Release" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "PUBLISH_PROFILE=${{ env.BUILD_PROFILE_PREVIEW }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
echo "SIGNING_POLICY_SLUG=test-signing-ci" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
} else {
Write-Error "Unknown branch or input: $branch"
Expand All @@ -69,6 +67,14 @@ jobs:
uses: actions/checkout@v4
with:
submodules: recursive

- name: 'Preparing Environment Variables'
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }}
run: |
$env = Get-Content env.json | ConvertFrom-Json
foreach ($prop in $env.PSObject.Properties) {
echo "$($prop.Name)=$($prop.Value)" >> $env:GITHUB_ENV
}

- name: Install .NET
uses: actions/setup-dotnet@v4
Expand Down Expand Up @@ -156,7 +162,9 @@ jobs:
if ($signature.Status -ne "Valid") {
echo "::error::Invalid signature on $($file.Name): $($signature.Status)"
}
echo "✓ $($file.Name): $($signature.SignerCertificate.Subject)"
else {
echo "::notice::✓ $($file.Name): $($signature.SignerCertificate.Subject)"
}
}

- name: Re-upload Signed Artifact to GitHub
Expand Down Expand Up @@ -187,6 +195,27 @@ jobs:
apps: sentry-cli

- name: Upload Debug artifact to Sentry
continue-on-error: true
shell: pwsh
run: |
sentry-cli debug-files upload --org collapse --project collapse-launcher --include-sources '.\SignedArtifact\BuildArtifact-${{ env.VERSION }}'

sentry-cli debug-files upload --org collapse --project collapse-launcher --include-sources '${{ runner.temp }}\SignedArtifact\BuildArtifact-${{ env.VERSION }}'

- name: Set release version in Sentry
shell: pwsh
continue-on-error: true
run: |
$exePath = "${{ runner.temp }}\SignedArtifact\BuildArtifact-${{ env.VERSION }}\CollapseLauncher.exe"
if (Test-Path $exePath) {
$version = "CollapseLauncher@" + ([System.Diagnostics.FileVersionInfo]::GetVersionInfo("./CollapseLauncher.exe").ProductVersion)
if ($version) {
sentry-cli releases new --org collapse --project collapse-launcher $version
sentry-cli releases set-commits --auto $version
sentry-cli releases finalize $version
}
else {
Write-Warning "No product version found in $exePath"
}
}
else {
Write-Error "File not found: $exePath"
}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ packages/*
CollapseLauncher/Deps/*
CollapseLauncher/StaticLib/*.lib
CollapseLauncher/StaticLib/**/*.lib
CollapseLauncher/StaticLib/*.pdb
CollapseLauncher/StaticLib/**/*.pdb
CollapseLauncher/Invoker/*
**/Generated Files/**
*.psd
Expand Down
7 changes: 5 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
[submodule "Hi3Helper.Http"]
path = Hi3Helper.Http
url = https://github.com/neon-nyan/Hi3Helper.Http
url = https://github.com/CollapseLauncher/Hi3Helper.Http
[submodule "ColorThief"]
path = ColorThief
url = https://github.com/neon-nyan/ColorThief
url = https://github.com/CollapseLauncher/ColorThief
[submodule "Hi3Helper.EncTool"]
path = Hi3Helper.EncTool
url = https://github.com/CollapseLauncher/Hi3Helper.EncTool
Expand All @@ -28,3 +28,6 @@
[submodule "Hi3Helper.Win32"]
path = Hi3Helper.Win32
url = https://github.com/CollapseLauncher/Hi3Helper.Win32
[submodule "Hi3Helper.Plugin.Core"]
path = Hi3Helper.Plugin.Core
url = https://github.com/CollapseLauncher/Hi3Helper.Plugin.Core
1 change: 1 addition & 0 deletions .idea/.idea.CollapseLauncher/.idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .idea/.idea.CollapseLauncher/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 17 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
## Before you Start
- Unless otherwise stated in this project's README, please make sure to clone the source code from the `main` branch using `--recurse` parameter to pull all the submodules Collapse needs to compile.

```git clone https://github.com/neon-nyan/Collapse --recurse```
```git clone https://github.com/CollapseLauncher/Collapse --recurse```

- Make sure you use the supported IDE & SDKs listed below.
- Make sure to read the "Restriction for New Feature(s)" section below.
- Make sure to read the "Restriction for New Feature(s)", "Plugin System" & "Plugin Restrictions" sections below.
- When submitting a Pull Request (PR), make sure that it is done to the same branch from which you first pulled, unless otherwise stated in the project's README, or if specifically instructed by maintainers of this project.
- We don't require a fully descriptive PR, but please be clear on what is added/removed and what the code does.

Expand All @@ -15,13 +15,23 @@ If you wish to add new language that isn't yet listed in the Transifex project,

## Tools Needed
Below is a list of tools needed to contribute to this project:
1. **Visual Studio 2022 (Any Edition - latest version)**
1. **Visual Studio 2022 (Any Edition - latest version)** or **JetBrains Rider (Any Edition - latest version)**
- Select .NET desktop development component
2. **Windows SDK (10.0.26100.0 ONLY)** via Visual Studio Installer
3. .NET 9 SDK: [**(9.0.4 or later)**](https://dotnet.microsoft.com/en-us/download/dotnet/9.0)

> **Note**:
> Make sure to always use the latest version of Visual Studio in order to be able to open the project.
> Make sure to always use the latest version of Visual Studio or Rider in order to be able to open the project.

## Plugin System
> The plugin system was introduced in a recent version of Collapse, allowing for external games, not officially supported by the launcher, to be managed through the it. Any user can create & load their own plugins into Collapse, provided they follow a set of guidelines and standards.

The plugin system requires its own set of dependencies and packages, though the tools required to develop it are identical. For more information about developing your own plugin, take a look at the core plugin module's [documentation](https://github.com/CollapseLauncher/Hi3Helper.Plugin.Core).

## Plugin Restrictions
Plugins are designed to interface with Collapse through COM Interops and marshalling. As such, you must follow the API contracts defined in the core library. That being said, there's nothing stopping you from writing your own interfaces and ways to interact with Collapse, provided that the current launcher code supports that functionality. Ultimately, **we, the Collapse core developer team, cannot stop users from distributing their own plugin libraries and implementing features that we never will** (see below), but it is our hope that our users and community will adhere to the rules we set.

All official plugins (plugins that are accessible through Collapse's download interface) must be validated by a member of the development team before being approved for publishing, to ensure the safety of our users and preserve launcher stability and integrity. The Collapse project and its members are not responsible for damage caused to the user should they install unofficial and unsupported plugins. Furthermore, no support will be provided for any unofficial plugin.

## Restrictions for New Feature(s)
While this software is fully open source and not affiliated with HoYoverse, Cognosphere, or any of its related entities in any way, we are nonetheless bound to their Terms of Service and Code of Conduct when developing Collapse. This means that there are some features that we will **not** implement. We will close any issue or PRs that are made to add such functionality to Collapse. Such features include, but are not limited to:
Expand All @@ -32,6 +42,7 @@ While this software is fully open source and not affiliated with HoYoverse, Cogn
### Examples for features that we encourage others to submit PRs for:
- Community resources
- Officially-endorsed HoYoverse Tools
- Code that enhances plugin-related functionality
- Etc.

### Examples of features that we will probably never implement:
Expand All @@ -40,14 +51,15 @@ While this software is fully open source and not affiliated with HoYoverse, Cogn
- Any type of cheats or exploits.
- Etc.


## Further reads:
- [Genshin Impact Terms of Service](https://genshin.hoyoverse.com/en/company/terms)
- [Honkai Impact 3rd Terms of Service](https://honkaiimpact3.hoyoverse.com/global/en-us/terms)
- [Honkai: Star Rail Terms of Service](https://hsr.hoyoverse.com/en-us/company/terms)
- [Zenless Zone Zero Terms of Service](https://zenless.hoyoverse.com/en-us/company/terms)
- [HoYoLAB Forum Terms of Service](https://www.hoyolab.com/agreement)
- Any other Terms of Service & Privacy Policy links for games implemented through the plugin system

# A Humble Thank You
As contributors, we always feel grateful for all your contributions to the project, whether it be through helping with localizing the app, coming up with new features, reporting bugs, and even using this launcher. Through everyone's effort, we can keep this project alive by bringing even more features and quality-of-life (QoL) upgrades over the existing launchers (including official) that are out there.
Thank you ❤️

Loading
Loading