Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1058 commits
Select commit Hold shift + click to select a range
3459e5b
build(cmake): de-vendor ecm files
getchoo Nov 27, 2025
690a61a
build(cmake): de-vendor versionless qt commands
getchoo Nov 27, 2025
32303d6
Improve no loader dialog (#4374)
Trial97 Nov 27, 2025
1caf2cc
Drop Qt5Compat (#4176)
getchoo Nov 27, 2025
030dc4e
ci(setup-dependencies/linux): use deps from system
getchoo Nov 27, 2025
dc774aa
build(cmake): remove `Launcher_FORCE_BUNDLED_LIBS` option
getchoo Nov 27, 2025
5cb09d6
De-vendor Qt and ECM CMake files (#4404)
getchoo Nov 28, 2025
e2c3156
build: remove third party submodules
getchoo Nov 27, 2025
38afa3a
build: remove vendored gamemode code
getchoo Nov 27, 2025
5c8b180
Remove in-tree third party dependencies (#4405)
getchoo Nov 28, 2025
0704027
build: install 256x256 png icons
getchoo Nov 7, 2025
2cf5fe5
build: use `go-appimage` to create appimages
getchoo Nov 7, 2025
be25d3a
fix(launcher/updater): call architecture-agnostic AppImageUpdate
getchoo Nov 29, 2025
603da29
Use `go-appimage` to create AppImages (#4314)
getchoo Nov 29, 2025
b1b4b5d
fix(launcher): set correct bin path for self-contained appimages
getchoo Nov 29, 2025
428f8d6
chore(nix): update lockfile
github-actions[bot] Nov 30, 2025
3dee0ef
fix(launcher): set correct bin path for self-contained appimages (#4408)
getchoo Dec 1, 2025
5e54f9e
chore(nix): update lockfile (#4409)
Ryex Dec 1, 2025
5532976
fix: Add back fallback to pkgconfig for tomlplusplus
DioEgizio Dec 1, 2025
fbe239e
fix: Add back fallback to pkgconfig for tomlplusplus (#4416)
Trial97 Dec 2, 2025
e8d33e5
build: manually specify appimage update information
getchoo Dec 4, 2025
92738fe
build: manually specify appimage update information (#4423)
getchoo Dec 4, 2025
069dacd
Expand variables in JVM args
TheKodeToad Dec 5, 2025
cbf2f14
Add library_dir var
TheKodeToad Dec 5, 2025
4ae0b3d
Replace QDir("libraries/").absolutePath() with metacache solution
TheKodeToad Dec 5, 2025
c018b60
Only continue log level if line starts with whitespace; reintroduce e…
TheKodeToad Dec 5, 2025
04a4050
fix(LaunchController): correctly communicate if asking for offline na…
Octol1ttle Dec 6, 2025
86fd58e
Apply suggestions from code review
Octol1ttle Dec 6, 2025
aa0bd45
LaunchController: fix offline launches always failing (#4436)
TheKodeToad Dec 6, 2025
61f94f5
chore(nix): update lockfile
github-actions[bot] Dec 7, 2025
904e8ef
clang-format: specify access modifier offset used in codebase
Octol1ttle Dec 7, 2025
1344dcb
EditorConfig: set continuation indent size in CMakeLists for IntelliJ
Octol1ttle Dec 7, 2025
0fd945b
EditorConfig: set continuation indent size in CMakeLists for IntelliJ…
TheKodeToad Dec 7, 2025
c9d3f05
EditorConfig essentials
TheKodeToad Dec 7, 2025
fd3ae85
Simplify MessageLevel::Enum -> MessageLevel
TheKodeToad Dec 7, 2025
de5c7ba
Simplify IndexedVersionType::VersionType -> IndexedVersionType
TheKodeToad Dec 7, 2025
22df159
clang-format: specify access modifier offset used in codebase (#4442)
TheKodeToad Dec 7, 2025
ec129ee
chore(nix): update lockfile (#4438)
Trial97 Dec 7, 2025
0853afe
Fix tests
TheKodeToad Dec 7, 2025
ff98c35
Simplify MessageLevel and IndexedVersionType enums (#4446)
Trial97 Dec 7, 2025
551382d
EditorConfig essentials (#4445)
Trial97 Dec 7, 2025
67aa140
Fix typo in contributors section of README
sheldoncork Dec 8, 2025
4f5e348
Merge branch 'develop' into fix-log-level-bleed
TheKodeToad Dec 8, 2025
45fd2a8
Only continue log level if line starts with whitespace (#4430)
Trial97 Dec 8, 2025
0e68ba9
fix log window margins (#4428)
TayouVR Dec 8, 2025
2e3097d
fix log window margins (#4428) (#4451)
Trial97 Dec 8, 2025
33547c6
chore: Update in-tree flatpak to use kde platform 6.10
DioEgizio Dec 8, 2025
c106818
Fix typo in contributors section of README (#4448)
Ryex Dec 8, 2025
826da57
Properly rename shader config on update/version change
TheKodeToad Dec 8, 2025
87286fa
fix(libarchive): use multibyte encoding aware libarchive functions wh…
Ryex Dec 9, 2025
2477c4f
Use FS::move instead; check new config does not exist
TheKodeToad Dec 9, 2025
66c8afe
Simplify implementation by removing some unused code
TheKodeToad Dec 9, 2025
f72db98
Properly rename shader config on update/version change (#4454)
Trial97 Dec 9, 2025
bc68192
Expand variables in JVM args and add library_dir variable (#4427)
Trial97 Dec 9, 2025
c305ed4
fix(appimage): launch external processes with bundled linker
getchoo Dec 4, 2025
afe9994
fix(updater): re-use `binPath` to determine launcher binary path
getchoo Dec 7, 2025
66f1ca2
Update in-tree flatpak to use KDE Platform 6.10 (#4452)
getchoo Dec 11, 2025
30f24da
fix(appimage): launch updater with bundled linker (#4425)
getchoo Dec 11, 2025
5e7de6b
Apply suggestions from code review
Ryex Dec 11, 2025
808b09c
improve archive detection
Trial97 Dec 9, 2025
a7dd3ae
replaced binary with in ci building of Icons
ShadowPaint-SP Dec 11, 2025
2b949d5
Make page container hug edges of dialog <3
TheKodeToad Nov 23, 2025
81f34be
Use old ProjectItem highlight on Windows styles
TheKodeToad Dec 11, 2025
d1b6d7c
chore: Re-simplify `IndexVersionType` and `MessageLevel` with c++20
Ryex Dec 11, 2025
28d27d4
refactor(MessageLevel): move and rename 'FromLine*' functions
Ryex Dec 11, 2025
40d1dcc
chore: Re-simplify `IndexVersionType` and `MessageLevel` with c++20 (…
Trial97 Dec 11, 2025
6fe989d
chore(deps): update cachix/install-nix-action digest to 4e002c8
renovate[bot] Dec 11, 2025
52fe83f
chore(deps): update actions/cache action to v5
renovate[bot] Dec 12, 2025
f024251
chore(deps): update actions/cache action to v5 (#4471)
Trial97 Dec 12, 2025
9cd199a
fix use-afrer-free crash caused by QtConcurrent
Trial97 Dec 9, 2025
f5e122b
chore(deps): update cachix/install-nix-action digest to 4e002c8 (#4467)
timoreo22 Dec 12, 2025
0f7320f
fix partial java download
Trial97 Dec 12, 2025
f155269
fix(InstanceImportTask): stream archive reads (#4459)
getchoo Dec 12, 2025
7baac92
Fix server columns being totally invisible
TheKodeToad Dec 12, 2025
0d7244d
Remove unused code
TheKodeToad Dec 12, 2025
9a505a0
Make page sidebar look less disjointed on breeze (#4465)
Trial97 Dec 12, 2025
d53b785
implemented recommended changes -reverted .icns file instellation
ShadowPaint-SP Dec 12, 2025
d818f23
Allow http://localhost for meta
TheKodeToad Dec 12, 2025
a159b64
chore(deps): update actions/cache action to v5.0.1
renovate[bot] Dec 12, 2025
3b715ad
chore(deps): update github artifact actions
renovate[bot] Dec 12, 2025
5d48e13
change(Actions): cancel outdated builds
Octol1ttle Dec 13, 2025
891eb82
fix: bundle cmark in portable build
DioEgizio Dec 12, 2025
c865c5b
chore(deps): update korthout/backport-action action to v4
renovate[bot] Dec 13, 2025
7cb623e
bumped macos runner version to 26
ShadowPaint-SP Dec 13, 2025
7f740e4
added mono to brew because macos 26 runner doesnt include it
ShadowPaint-SP Dec 13, 2025
6955c14
chore(deps): update github artifact actions (major) (#4479)
Trial97 Dec 13, 2025
7eaaf6a
chore(deps): update actions/cache action to v5.0.1 (#4478)
Trial97 Dec 13, 2025
e775629
fix archive detection
Trial97 Dec 13, 2025
f05fd4d
fix leak of cloned entry
Trial97 Dec 13, 2025
caa69ee
Allow http://localhost for meta (#4477)
TheKodeToad Dec 13, 2025
aa3d78b
Fix server columns text other than name being invisible (#4475)
Trial97 Dec 13, 2025
ed63a35
fix partial java download (#4472)
Trial97 Dec 13, 2025
66c9faf
Use old ProjectItem highlight on Windows styles (#4466)
Trial97 Dec 13, 2025
960c3a5
fix: bundle cmark in portable build (#4476)
Trial97 Dec 13, 2025
95d2789
fix archive detection (#4486)
Ryex Dec 13, 2025
5931320
chore(deps): update korthout/backport-action action to v4 (#4485)
Ryex Dec 13, 2025
7e9324b
chore(nix): update lockfile
github-actions[bot] Dec 14, 2025
e125f47
removed unnecessary Option from actool command and failsafe attempt f…
ShadowPaint-SP Dec 14, 2025
c33d104
fix leak of cloned entry (#4487)
Ryex Dec 14, 2025
fd338ce
chore(nix): update lockfile (#4488)
Trial97 Dec 14, 2025
e46b033
xCode version check
ShadowPaint-SP Dec 14, 2025
e7f801c
Add suggestion from code review
ShadowPaint-SP Dec 14, 2025
bf0d0a1
change(Actions): cancel outdated builds (#4483)
Trial97 Dec 14, 2025
e53093c
feat: Use pre-compiled headers
Ryex Dec 15, 2025
b40544d
fix: remove locale forcing as unnecessary
Ryex Dec 15, 2025
fc3c5cb
Use multibyte encoding aware libarchive functions when dealing with f…
getchoo Dec 15, 2025
981b3fc
chore(deps): update korthout/backport-action action to v4.0.1
renovate[bot] Dec 15, 2025
92a12b5
chore(deps): update korthout/backport-action action to v4.0.1 (#4500)
Trial97 Dec 16, 2025
9aa1a4d
fix: actually fix toml++ on fedora
DioEgizio Dec 16, 2025
8cfed54
fix: actually fix toml++ on fedora (#4506)
Trial97 Dec 16, 2025
177e7b2
Use static image when opengl context is not available
Trial97 Dec 16, 2025
5ebd386
server player req: parse malformed json
TayouVR Dec 16, 2025
1dd8c96
server player req: parse malformed json (#4512)
Trial97 Dec 16, 2025
3c570f9
Update launcher/ui/dialogs/skins/SkinManageDialog.cpp
Trial97 Dec 16, 2025
f7111b6
fix legacy skin model
Trial97 Dec 16, 2025
06e99e2
build(linux): use `sharun` for appimage bundling
getchoo Dec 17, 2025
1d8bf82
revert: "fix(appimage): launch external processes with bundled linker"
getchoo Dec 17, 2025
e39e59a
revert: "fix(launcher): set correct bin path for self-contained appim…
getchoo Dec 17, 2025
5d5f22e
ci(linux): verify appstream info for appimages
getchoo Dec 17, 2025
018ff60
Use static image when opengl context is not available (#4509)
Trial97 Dec 18, 2025
43fce3a
Trim unexpected info from pack.mcmeta
dsch7705 Dec 18, 2025
e1eee6e
Add Json::parseUntilMalformed helper
dsch7705 Dec 18, 2025
9c7fe72
Use Json::parseUntilMalformed in McClient::parseResponse
dsch7705 Dec 18, 2025
51b4705
Check specifically for GarbageAtEnd error
dsch7705 Dec 18, 2025
53e090f
Trim unexpected info from pack.mcmeta (#4522)
Trial97 Dec 18, 2025
624d506
fix skin depth
Trial97 Dec 18, 2025
e360a95
fix elytra preview
Trial97 Dec 18, 2025
d1df515
Updated App icon for macOS 26 (#4160)
Trial97 Dec 19, 2025
53fbc39
Use `sharun` to bundle AppImage (#4515)
getchoo Dec 19, 2025
2f540ff
fix elytra preview (#4525)
Trial97 Dec 19, 2025
877b824
fix skin depth (#4524)
Trial97 Dec 19, 2025
42b72d6
fix(skin-preview): smoother chessboard background contrast
Ryex Dec 19, 2025
fcf2017
fix skin preview leg rendering
TayouVR Dec 20, 2025
5c6c92f
fix skin preview leg rendering (#4538)
TayouVR Dec 20, 2025
d3f59a8
fix(skin-preview): smoother chessboard background contrast (#4534)
Trial97 Dec 20, 2025
f4b22da
fix accounts crash
Trial97 Dec 20, 2025
08c4568
match disabled mods on uninstall
Trial97 Dec 20, 2025
6732d7f
chore(nix): update lockfile
github-actions[bot] Dec 21, 2025
52240cc
fix accounts crash (#4543)
timoreo22 Dec 21, 2025
49b66d8
chore(nix): update lockfile (#4545)
Trial97 Dec 21, 2025
d7745d9
fix modrinth modpack allways download latest
Trial97 Dec 21, 2025
ee21ad8
fix modrinth modpack allways download latest (#4549)
Trial97 Dec 22, 2025
85849fe
fix(build): handle CMAKE_BUILD_TYPE with generator expressions
getchoo Dec 22, 2025
586364e
Make blocked/stacked pr detection more flexible with capitalization
Ryex Dec 22, 2025
39c4e7c
fix(build): handle CMAKE_BUILD_TYPE with generator expressions (#4553)
getchoo Dec 22, 2025
d85ff94
build(mingw): use dwarf debug info
getchoo Dec 22, 2025
ea84621
Make blocked/stacked pr detection more flexible with capitalization (…
getchoo Dec 22, 2025
5ee3381
build(nix): use nixos-25.11 channel for nixpkgs
getchoo Dec 22, 2025
c7bf324
build(nix): use nixos-25.11 channel for nixpkgs (#4559)
timoreo22 Dec 22, 2025
4b96c57
add copyright for modrinth code
Trial97 Dec 22, 2025
c723b3a
Update launcher/minecraft/skins/SkinModel.cpp
Trial97 Dec 22, 2025
8a84f5f
fix legacy skin model (#4511)
Trial97 Dec 22, 2025
b140877
fix Pre-release filter
Trial97 Dec 22, 2025
9504ed5
build(mingw): use dwarf debug info (#4554)
Trial97 Dec 22, 2025
8e96bee
preserve original file extension when importing modpack icon
Trial97 Dec 22, 2025
d18a690
fix Pre-release filter (#4563)
Trial97 Dec 22, 2025
c59db39
match disabled mods on uninstall (#4544)
Trial97 Dec 22, 2025
7f68f2f
fix mod update remaining disabled on second open
Trial97 Dec 23, 2025
072eaa3
preserve original file extension when importing modpack icon (#4565)
Trial97 Dec 23, 2025
76d1cd1
fix mod update remaining disabled on second open (#4573)
Trial97 Dec 23, 2025
e0c2fbb
Force disable xrandr if it is unavailable
PeakKS Dec 25, 2025
8e3be68
Force disable xrandr if it is unavailable (#4578)
Trial97 Dec 26, 2025
a4b1426
chore: use go-appimage soft fork until the pgp pr is merged
DioEgizio Dec 26, 2025
1fdc336
CMakeLists: fix ASan compile options
Octol1ttle Dec 26, 2025
de09292
fix(APIPage.ui): resolve duplicate name
Octol1ttle Dec 26, 2025
91bd741
fix(APIPage.ui): resolve duplicate name (#4591)
Trial97 Dec 26, 2025
e3c79b3
CMakeLists: fix ASan compile options (#4590)
Trial97 Dec 26, 2025
993da92
feat: Use precompiled headers for 130-180% speedup (#4494)
Trial97 Dec 26, 2025
31dd8cd
chore: add new ftb packs are also on cf notice
DioEgizio Dec 27, 2025
57c4b71
fix: improve a bit the FTB packs are also on cf notice
DioEgizio Dec 27, 2025
16635ca
feat: use sharun for portable builds too
DioEgizio Dec 27, 2025
d1313cb
ci: use Release env for releases
getchoo Dec 31, 2025
44e927a
ci: only sign windows artifacts in Release environment
getchoo Dec 31, 2025
99d0095
fix(nix): add `qtimageformats` to wrapper
getchoo Dec 31, 2025
df1573a
chore: use go-appimage soft fork until the pgp pr is merged (#4588)
getchoo Dec 31, 2025
698e1dd
ci(nix): don't build for intel macs
getchoo Dec 31, 2025
abe0c8e
ci(flatpak): only build for x86_64
getchoo Dec 31, 2025
d423034
ci: upload portable linux arm tarball to releases
getchoo Dec 31, 2025
c059e81
ci: fail releases on unmatched files
getchoo Dec 31, 2025
b9e8dda
Add `qtimageformats` to Nix wrapper (#4606)
Trial97 Dec 31, 2025
3aab71e
ci: use Release env for releases (#4605)
Trial97 Dec 31, 2025
7e4e1de
Remove some CI jobs (#4608)
Trial97 Dec 31, 2025
840bed0
Include ARM Linux portable builds in releases (#4609)
Trial97 Dec 31, 2025
20f9784
feat: Qt 6.10.1 outside macOS
DioEgizio Dec 29, 2025
015ee05
chore: simplify Launcher.in quite a bit
DioEgizio Dec 27, 2025
36ffd6b
chore: bump to ubuntu 24.04
DioEgizio Dec 27, 2025
fe2e171
feat: use Qt 6.10.1 outside mac and use sharun for portable builds to…
Trial97 Dec 31, 2025
0944255
Modified the plist to categorize it as a game
dkaluta Jan 2, 2026
55102d4
Change enum style guideline to PascalCase
TheKodeToad Jan 4, 2026
939093d
ci: actually sign windows builds in Release env
getchoo Jan 5, 2026
b32bc08
ci: actually sign windows builds in Release env (#4632)
Trial97 Jan 5, 2026
7b0896a
use libarchive to extract release files
Trial97 Jan 6, 2026
56392a2
refactor: remove broken Qt includes
Octol1ttle Jan 6, 2026
009b65c
refactor: remove broken Qt includes (#4643)
Trial97 Jan 6, 2026
d694208
Change enum style guideline to PascalCase (#4623)
Trial97 Jan 6, 2026
c46eaec
change(program_info): unhardcode brand from Windows files
Octol1ttle Jan 6, 2026
abd482d
change(program_info): unhardcode brand from macOS bundle GUI identifier
Octol1ttle Jan 6, 2026
681c635
fix manifest generation for linux
Trial97 Jan 6, 2026
9b76304
use libarchive to extract release files (#4641)
Trial97 Jan 6, 2026
318a12c
change(program_info): more brand unhardcoding (#4648)
Trial97 Jan 6, 2026
db0bdc6
Modified the plist to categorize it as a game [Mac] (#4619)
Trial97 Jan 6, 2026
6392687
fix manifest generation for linux (#4649)
Trial97 Jan 6, 2026
1cf48df
Don't use .index for shaderpacks
TheKodeToad Jan 6, 2026
d625a28
Properly show shaderpacks in export
TheKodeToad Jan 6, 2026
ea7122b
Bump to 10.0.1
TheKodeToad Jan 6, 2026
398305e
Less destructive delete
TheKodeToad Jan 6, 2026
e4991d8
Avoid some errors (less noisy log)
TheKodeToad Jan 6, 2026
3a7366a
Fix oversights and make requested changes
TheKodeToad Jan 6, 2026
3b967ee
Bump to 10.0.1 (#4662)
Trial97 Jan 6, 2026
31da9f5
Don't use .index for shaderpacks (#4658)
Trial97 Jan 6, 2026
44bf3aa
build(macos/windows): automatically use vcpkg
getchoo Jan 6, 2026
20055aa
Automatically use `vcpkg` to build on macOS and Windows (#4670)
getchoo Jan 6, 2026
4037446
build(appimage): use tag for version when available
getchoo Jan 6, 2026
c3bcfec
Fix AppImage zsync information (#4671)
getchoo Jan 6, 2026
2e6efab
fix: skip asking for offline name when using offline account
Octol1ttle Jan 7, 2026
39e2831
fix(CheckComboBox): check that mouse press is inside view rectangle
Octol1ttle Jan 7, 2026
6ae0624
Skip asking for offline name when using offline account (#4680)
Trial97 Jan 7, 2026
d191f83
Check that mouse press is inside view rectangle of CheckComboBox (#4681)
Trial97 Jan 7, 2026
e91d059
Update build instructions links in README
dylanrenwick Jan 7, 2026
3e5990f
Update build instructions links in README (#4688)
Trial97 Jan 7, 2026
b3e7e74
feat(upstream): merge PrismLauncher 10.0.0
so5iso4ka Jan 7, 2026
050053a
feat(upstream): merge PrismLauncher 10.0.1
so5iso4ka Jan 8, 2026
2579cea
refactor(cmake): fix formatting
so5iso4ka Jan 8, 2026
ada0401
Remove prismlauncher-qt5-git badge from README
pointydev Jan 8, 2026
3b1a5dd
Remove prismlauncher-qt5-git badge from README (#4696)
Trial97 Jan 8, 2026
7e5b566
ci(codeql): restore codeql-config.yml
so5iso4ka Jan 8, 2026
a270c31
fix(FS): fix struct redefinition
so5iso4ka Jan 8, 2026
fd45bf2
fix(program_info): set correct version in manifest
so5iso4ka Jan 8, 2026
3986896
fix curseforge import
Trial97 Jan 8, 2026
7f952d9
remove curseforge api key validation
Trial97 Jan 8, 2026
a97c15d
fix modrinth environments filter
Trial97 Jan 9, 2026
50f2965
chore(icons): add icon for macOS 26
so5iso4ka Jan 9, 2026
3e7ef5e
Fix shaderpacks folder being hidden on Windows
TheKodeToad Jan 9, 2026
3f53670
fix jpg icons
Trial97 Jan 9, 2026
c7501b7
fix curseforge import (#4699)
TheKodeToad Jan 9, 2026
1d659b5
fix jpg icons (#4706)
Trial97 Jan 9, 2026
99c5c7b
remove curseforge api key validation (#4700)
Trial97 Jan 9, 2026
133842d
Disable tooltips if using gamescope / Steam Deck. (#4096)
mdeneen Jan 9, 2026
53acc60
format the code
Trial97 Jan 9, 2026
01228cc
Fix broken EnvironmentVariables and CustomCommands when tab is inactive
TheKodeToad Jan 9, 2026
100b2aa
format the code (#4717)
Scrumplex Jan 9, 2026
cbe7787
Bump to 10.0.2 (#4713)
TheKodeToad Jan 9, 2026
9a6a37c
build(macos): use unhardcoded launcher name in the actool command
so5iso4ka Jan 10, 2026
62e17cd
fix modrinth environments filter (#4704)
Trial97 Jan 10, 2026
7f3790b
change(NetRequest): log server response on error
Octol1ttle Jan 10, 2026
db9f335
fix(ui): fix compilation warnings for .ui files
so5iso4ka Jan 10, 2026
2b04da0
Fix shaderpacks folder being hidden (#4707)
Trial97 Jan 11, 2026
136ad59
Fix environment variables always being discarded and custom commands …
Trial97 Jan 11, 2026
c64d871
Network: log server response on error (#4726)
Trial97 Jan 11, 2026
7a5414f
feat(upstream): merge PrismLauncher 10.0.1
so5iso4ka Jan 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ AllowShortIfStatementsOnASingleLine: false
ColumnLimit: 140
---
Language: Cpp
AccessModifierOffset: -1
AlignConsecutiveMacros: None
AlignConsecutiveAssignments: None
BraceWrapping:
Expand Down
26 changes: 13 additions & 13 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ Checks:
# ^ Without unused-parameters the readability-identifier-naming check doesn't cause any warnings.

CheckOptions:
- { key: readability-identifier-naming.ClassCase, value: PascalCase }
- { key: readability-identifier-naming.EnumCase, value: PascalCase }
- { key: readability-identifier-naming.FunctionCase, value: camelCase }
- { key: readability-identifier-naming.GlobalVariableCase, value: camelCase }
- { key: readability-identifier-naming.GlobalFunctionCase, value: camelCase }
- { key: readability-identifier-naming.GlobalConstantCase, value: SCREAMING_SNAKE_CASE }
- { key: readability-identifier-naming.MacroDefinitionCase, value: SCREAMING_SNAKE_CASE }
- { key: readability-identifier-naming.ClassMemberCase, value: camelCase }
- { key: readability-identifier-naming.PrivateMemberPrefix, value: m_ }
- { key: readability-identifier-naming.ProtectedMemberPrefix, value: m_ }
- { key: readability-identifier-naming.PrivateStaticMemberPrefix, value: s_ }
- { key: readability-identifier-naming.ClassCase, value: PascalCase }
- { key: readability-identifier-naming.EnumCase, value: PascalCase }
- { key: readability-identifier-naming.FunctionCase, value: camelCase }
- { key: readability-identifier-naming.GlobalVariableCase, value: camelCase }
- { key: readability-identifier-naming.GlobalFunctionCase, value: camelCase }
- { key: readability-identifier-naming.GlobalConstantCase, value: SCREAMING_SNAKE_CASE }
- { key: readability-identifier-naming.MacroDefinitionCase, value: SCREAMING_SNAKE_CASE }
- { key: readability-identifier-naming.ClassMemberCase, value: camelCase }
- { key: readability-identifier-naming.PrivateMemberPrefix, value: m_ }
- { key: readability-identifier-naming.ProtectedMemberPrefix, value: m_ }
- { key: readability-identifier-naming.PrivateStaticMemberPrefix, value: s_ }
- { key: readability-identifier-naming.ProtectedStaticMemberPrefix, value: s_ }
- { key: readability-identifier-naming.PublicStaticConstantCase, value: SCREAMING_SNAKE_CASE }
- { key: readability-identifier-naming.EnumConstantCase, value: SCREAMING_SNAKE_CASE }
- { key: readability-identifier-naming.PublicStaticConstantCase, value: SCREAMING_SNAKE_CASE }
- { key: readability-identifier-naming.EnumConstantCase, value: PascalCase }
30 changes: 22 additions & 8 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
# EditorConfig specs and documentation: https://EditorConfig.org

# top-most EditorConfig file
root = true

# C++ Code Style settings
[*.{c++,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}]
cpp_generate_documentation_comments = doxygen_slash_star
# EditorConfig specs and documentation: https://EditorConfig.org

# top-most EditorConfig file
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true

[*.{yml,nix}]
indent_size = 2

# C++ Code Style settings
[*.{c++,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}]
cpp_generate_documentation_comments = doxygen_slash_star

[CMakeLists.txt]
ij_continuation_indent_size = 4
6 changes: 6 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,9 @@ bbb3b3e6f6e3c0f95873f22e6d0a4aaf350f49d9

# (nix) alejandra -> nixfmt
4c81d8c53d09196426568c4a31a4e752ed05397a

# reformat codebase
1d468ac35ad88d8c77cc83f25e3704d9bd7df01b

# format a part of codebase
5c8481a118c8fefbfe901001d7828eaf6866eac4
137 changes: 137 additions & 0 deletions .github/actions/package/linux/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
name: Package for Linux
description: Create Linux packages for Freesm Launcher

inputs:
version:
description: Launcher version
required: true
build-type:
description: Type for the build
required: true
default: Debug
artifact-name:
description: Name of the uploaded artifact
required: true
default: Linux
qt-version:
description: Version of Qt to use
required: true
gpg-private-key:
description: Private key for AppImage signing
required: false
gpg-private-key-id:
description: ID for the gpg-private-key, to select the signing key
required: false

runs:
using: composite

steps:
- name: Setup build variables
shell: bash
run: |
# Fixup architecture naming for AppImages
dpkg_arch="$(dpkg-architecture -q DEB_HOST_ARCH_CPU)"
case "$dpkg_arch" in
"amd64")
APPIMAGE_ARCH="x86_64"
;;
"arm64")
APPIMAGE_ARCH="aarch64"
;;
*)
echo "# 🚨 The Debian architecture \"$deb_arch\" is not recognized!" >> "$GITHUB_STEP_SUMMARY"
exit 1
;;
esac
echo "APPIMAGE_ARCH=$APPIMAGE_ARCH" >> "$GITHUB_ENV"

# Used for the file paths of libraries
echo "DEB_HOST_MULTIARCH=$(dpkg-architecture -q DEB_HOST_MULTIARCH)" >> "$GITHUB_ENV"

- name: Package AppImage
shell: bash
env:
VERSION: ${{ github.ref_type == 'tag' && github.ref_name || inputs.version }}
BUILD_DIR: build
INSTALL_APPIMAGE_DIR: install-appdir

GPG_PRIVATE_KEY: ${{ inputs.gpg-private-key }}
run: |
cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} --prefix ${{ env.INSTALL_APPIMAGE_DIR }}

if [ '${{ inputs.gpg-private-key-id }}' != '' ]; then
echo "$GPG_PRIVATE_KEY" > privkey.asc
gpg --import privkey.asc
gpg --export --armor 9C7A2C9B62603299 > pubkey.asc
else
echo ":warning: Skipped code signing for Linux AppImage, as gpg key was not present." >> $GITHUB_STEP_SUMMARY
fi

sharun lib4bin \
--hard-links \
--with-hooks \
--dst-dir "$INSTALL_APPIMAGE_DIR" \
"$INSTALL_APPIMAGE_DIR"/bin/* "$QT_PLUGIN_PATH"/*/*.so

cp ~/bin/AppImageUpdate.AppImage "$INSTALL_APPIMAGE_DIR"/bin/
# FIXME(@getchoo): gamemode doesn't seem to be very portable with DBus. Find a way to make it work!
find "$INSTALL_APPIMAGE_DIR" -name '*gamemode*' -exec rm {} +

ln -s org.freesmTeam.freesmlauncher.metainfo.xml "$INSTALL_APPIMAGE_DIR"/share/metainfo/org.freesmTeam.freesmlauncher.appdata.xml
ln -s share/applications/org.freesmTeam.freesmlauncher.desktop "$INSTALL_APPIMAGE_DIR"
ln -s share/icons/hicolor/256x256/apps/org.freesmTeam.freesmlauncher.png "$INSTALL_APPIMAGE_DIR"
mv "$INSTALL_APPIMAGE_DIR"/{sharun,AppRun}
ls -la "$INSTALL_APPIMAGE_DIR"

if [[ "${{ github.ref_type }}" == "tag" ]]; then
APPIMAGE_DEST="FreesmLauncher-Linux-$APPIMAGE_ARCH.AppImage"
else
APPIMAGE_DEST="FreesmLauncher-Linux-$VERSION-${{ inputs.build-type }}-$APPIMAGE_ARCH.AppImage"
fi

mkappimage \
--updateinformation "gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|FreesmLauncher-Linux-$APPIMAGE_ARCH.AppImage.zsync" \
"$INSTALL_APPIMAGE_DIR" \
"$APPIMAGE_DEST"

- name: Package portable tarball
shell: bash
env:
BUILD_DIR: build

INSTALL_PORTABLE_DIR: install-portable
run: |
cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} --prefix ${{ env.INSTALL_PORTABLE_DIR }}
cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} --component portable

sharun lib4bin \
--with-hooks \
--hard-links \
--dst-dir "$INSTALL_PORTABLE_DIR" \
"$INSTALL_PORTABLE_DIR"/bin/* "$QT_PLUGIN_PATH"/*/*.so

# FIXME(@getchoo): gamemode doesn't seem to be very portable with DBus. Find a way to make it work!
find "$INSTALL_PORTABLE_DIR" -name '*gamemode*' -exec rm {} +

for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f -o -type l); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt
cd ${{ env.INSTALL_PORTABLE_DIR }}
tar -czf ../FreesmLauncher-portable.tar.gz *

- name: Upload binary tarball
uses: actions/upload-artifact@v6
with:
name: FreesmLauncher-${{ inputs.artifact-name }}-Qt6-Portable-${{ inputs.version }}-${{ inputs.build-type }}
path: FreesmLauncher-portable.tar.gz

- name: Upload AppImage
uses: actions/upload-artifact@v6
with:
name: FreesmLauncher-${{ runner.os }}-${{ inputs.version }}-${{ inputs.build-type }}-${{ env.APPIMAGE_ARCH }}.AppImage
path: FreesmLauncher-${{ runner.os }}-*${{ env.APPIMAGE_ARCH }}.AppImage

- name: Upload AppImage Zsync
uses: actions/upload-artifact@v6
with:
name: FreesmLauncher-${{ runner.os }}-${{ inputs.version }}-${{ inputs.build-type }}-${{ env.APPIMAGE_ARCH }}.AppImage.zsync
path: FreesmLauncher-${{ runner.os }}-*${{ env.APPIMAGE_ARCH }}.AppImage.zsync
121 changes: 121 additions & 0 deletions .github/actions/package/macos/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
name: Package for macOS
description: Create a macOS package for Freesm Launcher

inputs:
version:
description: Launcher version
required: true
build-type:
description: Type for the build
required: true
default: Debug
artifact-name:
description: Name of the uploaded artifact
required: true
default: macOS
apple-codesign-cert:
description: Certificate for signing macOS builds
required: false
apple-codesign-password:
description: Password for signing macOS builds
required: false
apple-codesign-id:
description: Certificate ID for signing macOS builds
required: false
apple-notarize-apple-id:
description: Apple ID used for notarizing macOS builds
required: false
apple-notarize-team-id:
description: Team ID used for notarizing macOS builds
required: false
apple-notarize-password:
description: Password used for notarizing macOS builds
required: false
sparkle-ed25519-key:
description: Private key for signing Sparkle updates
required: false

runs:
using: composite

steps:
- name: Fetch codesign certificate
shell: bash
run: |
echo '${{ inputs.apple-codesign-cert }}' | base64 --decode > codesign.p12
if [ -n '${{ inputs.apple-codesign-id }}' ]; then
security create-keychain -p '${{ inputs.apple-codesign-password }}' build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p '${{ inputs.apple-codesign-password }}' build.keychain
security import codesign.p12 -k build.keychain -P '${{ inputs.apple-codesign-password }}' -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k '${{ inputs.apple-codesign-password }}' build.keychain
else
echo ":warning: Using ad-hoc code signing for macOS, as certificate was not present." >> $GITHUB_STEP_SUMMARY
fi

- name: Package
shell: bash
env:
BUILD_DIR: build
INSTALL_DIR: install
run: |
cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build-type }}

cd ${{ env.INSTALL_DIR }}
chmod +x "FreesmLauncher.app/Contents/MacOS/freesmlauncher"

if [ -n '${{ inputs.apple-codesign-id }}' ]; then
APPLE_CODESIGN_ID='${{ inputs.apple-codesign-id }}'
ENTITLEMENTS_FILE='../program_info/App.entitlements'
else
APPLE_CODESIGN_ID='-'
ENTITLEMENTS_FILE='../program_info/AdhocSignedApp.entitlements'
fi

sudo codesign --sign "$APPLE_CODESIGN_ID" --deep --force --entitlements "$ENTITLEMENTS_FILE" --options runtime "FreesmLauncher.app/Contents/MacOS/freesmlauncher"
mv "FreesmLauncher.app" "Freesm Launcher.app"

- name: Notarize
shell: bash
env:
INSTALL_DIR: install
run: |
cd ${{ env.INSTALL_DIR }}

if [ -n '${{ inputs.apple-notarize-password }}' ]; then
ditto -c -k --sequesterRsrc --keepParent "Freesm Launcher.app" ../FreesmLauncher.zip
xcrun notarytool submit ../FreesmLauncher.zip \
--wait --progress \
--apple-id '${{ inputs.apple-notarize-apple-id }}' \
--team-id '${{ inputs.apple-notarize-team-id }}' \
--password '${{ inputs.apple-notarize-password }}'

xcrun stapler staple "Freesm Launcher.app"
else
echo ":warning: Skipping notarization as credentials are not present." >> $GITHUB_STEP_SUMMARY
fi
ditto -c -k --sequesterRsrc --keepParent "Freesm Launcher.app" ../FreesmLauncher.zip

- name: Make Sparkle signature
shell: bash
run: |
if [ '${{ inputs.sparkle-ed25519-key }}' != '' ]; then
echo '${{ inputs.sparkle-ed25519-key }}' > ed25519-priv.pem
signature=$(/opt/homebrew/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/FreesmLauncher.zip -inkey ed25519-priv.pem | openssl base64 | tr -d \\n)
rm ed25519-priv.pem
cat >> $GITHUB_STEP_SUMMARY << EOF
### Artifact Information :information_source:
- :memo: Sparkle Signature (ed25519): \`$signature\`
EOF
else
cat >> $GITHUB_STEP_SUMMARY << EOF
### Artifact Information :information_source:
- :warning: Sparkle Signature (ed25519): No private key available (likely a pull request or fork)
EOF
fi

- name: Upload binary tarball
uses: actions/upload-artifact@v6
with:
name: FreesmLauncher-${{ inputs.artifact-name }}-${{ inputs.version }}-${{ inputs.build-type }}
path: FreesmLauncher.zip
Loading
Loading