Compare commits

...

2040 Commits
8.4 ... develop

Author SHA1 Message Date
Seth Flynn
f086233186
chore(nix): update lockfile (#3693) 2025-04-29 04:23:53 -04:00
Seth Flynn
e9afa16aa1
chore: format some of the project files (#3677) 2025-04-29 04:23:25 -04:00
Trial97
8bb79cefac
chore: add format commits to the git-blame-ignore
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-29 10:47:00 +03:00
Trial97
5c8481a118
chore: reformat
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-29 10:46:41 +03:00
Alexandru Ionut Tripon
57d3d4815b
fix: build error introduced in #3516 (#3708) 2025-04-29 10:46:19 +03:00
Seth Flynn
e1fce47eb3
ci(nix): remove addtional > (#3709) 2025-04-29 03:43:32 -04:00
Trial97
7da32af1b2
ci(nix): remove addtional >
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-29 10:42:42 +03:00
Alexandru Ionut Tripon
c54f420c23
ci(nix): fix the PR number (#3703) 2025-04-29 10:33:43 +03:00
Trial97
93552277fe
fix: build error introduced in #3516
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-29 10:20:28 +03:00
Alexandru Ionut Tripon
6b4f07e976
Add checkboxes to resource downloader (#3516) 2025-04-29 08:32:30 +03:00
Alexandru Ionut Tripon
0d15699b26
change java on modpack update (#3379) 2025-04-29 08:31:59 +03:00
Alexandru Ionut Tripon
aa6324c920
chore(deps): update hendrikmuhs/ccache-action action to v1.2.18 (#3704) 2025-04-29 08:31:46 +03:00
Alexandru Ionut Tripon
a6006c3a33
chore: make all the regexes static const (#3647) 2025-04-29 00:33:49 +03:00
renovate[bot]
1c223997db
chore(deps): update hendrikmuhs/ccache-action action to v1.2.18 2025-04-28 21:33:12 +00:00
Alexandru Ionut Tripon
d6bba50d86
replace qvector with qlist (#3519) 2025-04-29 00:32:40 +03:00
Alexandru Ionut Tripon
5f20d98643
chore: update submodules (#3701) 2025-04-28 23:24:23 +03:00
Trial97
71da130fe4
ci(nix): fix the PR number
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-28 23:11:52 +03:00
Alexandru Ionut Tripon
25b1d79080
ci(nix): add github token for gh cli (#3700) 2025-04-28 22:49:38 +03:00
Trial97
c5fd5e6ac1
chore: make all the regexes static const
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-28 22:37:29 +03:00
Alexandru Ionut Tripon
21c90527d2
Parse log4j xml events in logs (#3642) 2025-04-28 18:33:17 +03:00
Alexandru Ionut Tripon
2ceb8a4986
Fix: Use after free collecting tasks from ResourceDownloadDialogs (#3670) 2025-04-28 18:32:39 +03:00
Trial97
0ccb4059a0
chore: update submodules
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-28 17:57:31 +03:00
Trial97
bcdbe79c59
fix: add github token for gh cli
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-28 17:38:01 +03:00
Rachel Powers
07a6606c9c
fix: cover both usages of the download dialog
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-28 04:49:30 -07:00
Rachel Powers
d0ccd110a1
fix: use after free begone!
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-28 04:49:23 -07:00
Rachel Powers
2031859731
Merge remote-tracking branch 'upstream/develop' into xml-logs 2025-04-28 04:11:53 -07:00
Rachel Powers
2c943a003d
feat(xml-logs): preserve whitespace lines in logs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-28 03:54:47 -07:00
Rachel Powers
da30904630
fix: nullptr access (#3690) 2025-04-28 03:39:01 -07:00
TheKodeToad
63e30352e6
Fix catastrophic regex mistake (#3669) 2025-04-28 11:07:01 +01:00
TheKodeToad
51cd4c2174
Shallow search and lazy loading for Other Logs page (#3664) 2025-04-28 10:57:37 +01:00
TheKodeToad
1e3c197222
Merge remote-tracking branch 'upstream/develop' into shallow-lazy-otherlogs
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-28 10:31:48 +01:00
TheKodeToad
20626e6606
Fix log sorting
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-28 10:28:57 +01:00
TheKodeToad
0f7cb916cc
Pass mainclass and gameargs to the main game via system properties (#3692) 2025-04-28 09:47:25 +01:00
Alexandru Ionut Tripon
f58ee6af7a
ci(nix): fix get-merge-commit action call (#3697) 2025-04-27 23:48:49 +03:00
Rachel Powers
abba91c6fa
chore(deps): update determinatesystems/nix-installer-action action to v17 (#3686) 2025-04-27 13:46:57 -07:00
Seth Flynn
cdb4247323
Improve CI path filtering (#3696) 2025-04-27 14:48:09 -04:00
Seth Flynn
57a2ef1aed
ci: fix improper paths-ignore usage
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-27 07:47:36 -04:00
Seth Flynn
3b7b9fa03c
ci: better filter workflow runs
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-27 07:30:26 -04:00
Seth Flynn
47cb58d326
ci(nix): fix get-merge-commit action call
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-27 07:28:25 -04:00
Seth Flynn
440f7ea9a5
Use nix-shell over nix develop in .envrc (#3634) 2025-04-27 06:46:13 -04:00
Seth Flynn
816752e4e9
Ensure Nix workflows are actually running on PRs (#3678) 2025-04-27 03:21:58 -04:00
github-actions[bot]
facc48d0f8 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef?narHash=sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU%3D' (2025-04-17)
  → 'github:NixOS/nixpkgs/f771eb401a46846c1aebd20552521b233dd7e18b?narHash=sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA%3D' (2025-04-24)
2025-04-27 00:28:07 +00:00
Xander
02106ab29a
comment on property about delimeter
Signed-off-by: Xander <xander@isxander.dev>
2025-04-26 23:42:22 +01:00
Xander
a92e114236
Use \u001F instead of a space as a delimeter for game args
Signed-off-by: Xander <xander@isxander.dev>
2025-04-26 21:57:28 +01:00
Xander
a702d06cd8
Pass mainclass and gameargs to the main game via system properties
Signed-off-by: Xander <xander@isxander.dev>
2025-04-26 21:41:14 +01:00
Seth Flynn
abe18fb144
ci(nix): checkout merge commit of pull request
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-26 15:02:39 -04:00
Rachel Powers
83ebb5984b
fix: nullptr access
style can't always be created

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-25 19:18:28 -07:00
renovate[bot]
f2a601f815
chore(deps): update determinatesystems/nix-installer-action action to v17 2025-04-24 16:58:13 +00:00
Seth Flynn
e03870d3f2
ci(get-merge-commit): init
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-20 16:52:14 -04:00
Alexandru Ionut Tripon
60e279bf39
chore(nix): update lockfile (#3672) 2025-04-20 08:29:12 +03:00
github-actions[bot]
3fd5557f89 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'libnbtplusplus':
    'github:PrismLauncher/libnbtplusplus/23b955121b8217c1c348a9ed2483167a6f3ff4ad?narHash=sha256-yy0q%2Bbky80LtK1GWzz7qpM%2BaAGrOqLuewbid8WT1ilk%3D' (2023-11-06)
  → 'github:PrismLauncher/libnbtplusplus/531449ba1c930c98e0bcf5d332b237a8566f9d78?narHash=sha256-qhmjaRkt%2BO7A%2Bgu6HjUkl7QzOEb4r8y8vWZMG2R/C6o%3D' (2025-04-16)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2631b0b7abcea6e640ce31cd78ea58910d31e650?narHash=sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR%2BXhw3kr/3Xd0GPTM%3D' (2025-04-12)
  → 'github:NixOS/nixpkgs/b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef?narHash=sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU%3D' (2025-04-17)
• Updated input 'qt-qrcodegenerator':
    'github:nayuki/QR-Code-generator/f40366c40d8d1956081f7ec643d240c02a81df52?narHash=sha256-5%2BiYwsbX8wjKZPCy7ENj5HCYgOqzeSNLs/YrX2Vc7CQ%3D' (2024-11-18)
  → 'github:nayuki/QR-Code-generator/2c9044de6b049ca25cb3cd1649ed7e27aa055138?narHash=sha256-6SugPt0lp1Gz7nV23FLmsmpfzgFItkSw7jpGftsDPWc%3D' (2025-01-23)
2025-04-20 00:28:02 +00:00
Rachel Powers
1bd1245d86
feat(xml-logs): Case insisitive xml parseing + cleaner switch
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-19 13:48:18 -07:00
TheKodeToad
11015a22d2
Remove commented out code
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-19 13:02:40 -07:00
TheKodeToad
266031df81
Fix compilation on Qt 6.4.2
Is this an EOL version lol

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-19 13:02:40 -07:00
Rachel Powers
21570a03fb
feat(xml-logs): finish tests
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-19 13:02:30 -07:00
Rachel Powers
bfdc77665d
feat(xml-logs): add tests
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-19 12:54:45 -07:00
Rachel Powers
47295da390
feat(logs): parse log4j xml events in logs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-19 12:54:40 -07:00
Rachel Powers
15a981b3f8
fix: gzip file parsing as a stream (#3667) 2025-04-19 05:33:56 -07:00
TheKodeToad
feec7bf249
chore: update submodules (#3643) 2025-04-19 11:08:34 +01:00
TheKodeToad
111cdc240e
Disable auto-reload of files
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-19 09:34:12 +01:00
Rachel Powers
2ce1fdcee0
chore(deps): update cachix/install-nix-action digest to 754537a (#3666) 2025-04-18 20:39:40 -07:00
Rachel Powers
16b0447dc9
blocked-prs workflow fixes (#3665) 2025-04-18 20:39:22 -07:00
Rachel Powers
0e00c28450
Console colors and log invocation location (#3654) 2025-04-18 20:38:55 -07:00
TheKodeToad
92ba13cfdb
Fix catastrophic regex mistake
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-19 00:12:38 +01:00
TheKodeToad
0aa3341d58
Fix other weird import
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-19 00:07:13 +01:00
TheKodeToad
19b241fd31
Include txt too
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-19 00:07:12 +01:00
TheKodeToad
8ea5eac29c
Make requested changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-18 23:50:02 +01:00
TheKodeToad
96a4b78e2e
Remove accidental return
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-18 23:46:55 +01:00
Trial97
49f0e8ef6b
replace qvector with qlist
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-19 00:59:48 +03:00
Trial97
d1c7107575
fix: gzip file parsing as a stream
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-19 00:41:24 +03:00
renovate[bot]
95492cdeef
chore(deps): update cachix/install-nix-action digest to 754537a 2025-04-18 20:57:31 +00:00
Seth Flynn
b6e48ac641
ci(blocked-prs): allow workflow_dispatch on blocking prs
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-18 16:56:19 -04:00
Seth Flynn
e9f7ba188b
ci(blocked-prs): use object filter to check pr label
https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions#example-using-an-object-filter

Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-18 16:53:16 -04:00
Seth Flynn
7f2f62afa8
ci(blocked-prs): use pull_request_target
This needs to run in the context of our repo to have access to it's
secrets

Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-18 16:50:25 -04:00
Seth Flynn
3df98dd5e7
Remove support for Qt 5 (#2174) 2025-04-18 16:26:55 -04:00
TheKodeToad
01efd5b5d8
Fix double load (again lol)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-18 21:24:25 +01:00
TheKodeToad
d5db974008
Shallow search and lazy loading for Other Logs page
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-18 20:14:33 +01:00
TheKodeToad
a39edb3b59
Optimise log colourisation (#3641) 2025-04-18 20:14:17 +01:00
TheKodeToad
0f847d6682
Fix mistakes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-18 19:40:19 +01:00
TheKodeToad
f307340690 Fix formatting
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-18 11:32:50 -07:00
TheKodeToad
166b2cb286 Tweak log formatting
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-18 11:32:50 -07:00
Alexandru Ionut Tripon
5cab302ce4
chore: improve log display (#3658) 2025-04-18 21:31:41 +03:00
Alexandru Ionut Tripon
8373fa81f1
chore: add getOrRegisterSetting function (#3660) 2025-04-18 21:31:22 +03:00
Trial97
0948d3598b
chore: improve log display
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-18 20:38:37 +03:00
Trial97
5af06dec85
chore: add getOrRegisterSetting function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-18 20:02:52 +03:00
Alexandru Ionut Tripon
5eb8561157
add qr code support for login (#3257) 2025-04-18 18:48:26 +03:00
Alexandru Ionut Tripon
c622c83930
Add Popup for metacache clear failures (#3586) 2025-04-18 18:47:12 +03:00
Alexandru Ionut Tripon
e9245716f7
fix: load world size async (#3651) 2025-04-18 18:47:05 +03:00
Alexandru Ionut Tripon
6f38ab3fb0
fix: beginResetModel called before endResetModel (#3657) 2025-04-18 18:46:59 +03:00
Trial97
cb591ba52e
chore:add qr code support for login
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-18 18:46:10 +03:00
Trial97
cddf00c61b
fix: beginResetModel called before endResetModel
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-18 14:10:00 +03:00
Trial97
2271a05b19
chore: add back deprecation warnings and disable all API deprecated before 6.0
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-18 12:37:54 +03:00
Rachel Powers
45b6454222
feat(ansi-console): Format console with ansi excapes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-18 00:39:19 -07:00
Rachel Powers
4a2b5c72dc
feat(color-console): support ansi colors in console
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-17 14:54:44 -07:00
Trial97
5fee4e3f8b
chore: remove qt5 from release and copyright
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-18 00:17:29 +03:00
Trial97
442aae88ce
chore: remove qt version checks from code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-17 23:46:55 +03:00
Trial97
59bd6a915b
chore: remove qt5 from cmake files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-17 23:38:49 +03:00
Trial97
8a3aafc274
chore: remove qt5 from github actions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-17 23:38:48 +03:00
Trial97
efeaefbf2e
fix: load world size async
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-17 23:31:25 +03:00
Trial97
6e00f94a57
chore: rename varibales to match code standards
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-17 22:43:32 +03:00
Rachel Powers
564f120c22
chore: sync cmake version with the one used in the launcher (#3644) 2025-04-16 19:35:30 -07:00
Alexandru Ionut Tripon
202095c466
fix: compile warning regarding duplicate object name (#3645) 2025-04-16 21:30:48 +03:00
Trial97
b70d9d6537
chore: update submodules
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-16 17:56:01 +03:00
Trial97
c3f4735808
fix: compile warning regarding duplicate object name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-16 17:02:22 +03:00
Trial97
5ce6ad604b
chore: sync cmake version with the one used in the launcher
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-16 16:54:08 +03:00
Alexandru Ionut Tripon
8285993f38
fix: crash when the instance window is closed before download dialog is open (#3614) 2025-04-16 16:28:11 +03:00
TheKodeToad
df15aacfbb
Harmonizing "Other Log" page with "Minecraft Log" (#3638) 2025-04-15 21:49:13 +01:00
Yihe Li
29b81e7163
Set parent for LogModel
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-15 23:11:54 +08:00
TheKodeToad
ce76320b23
Remove unnecessary import
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-15 15:58:11 +01:00
TheKodeToad
be803b3279
Optimise guessLevel
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-04-15 15:39:27 +01:00
Alexandru Ionut Tripon
8f54a8c8dc
Fix icon removal in icon picker (#3410) 2025-04-15 16:58:13 +03:00
Yihe Li
521302a962
Move delete buttons to the same line & set model to nullptr before adding lines
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-15 20:35:05 +08:00
Yihe Li
de66fe4eda
Apparently removeLast() only comes in Qt 6.5+
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-15 06:16:47 +08:00
Yihe Li
5634723ecd
Harmonizing other log controls with minecraft log
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-15 06:00:49 +08:00
Yihe Li
1ee1bab067
Add color lines button
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-15 05:07:56 +08:00
Yihe Li
4ac6a0629b
Use LogView to implement level highlighting for other logs
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-15 03:42:51 +08:00
timoreo
41a790d258
Shorten LocalPeer socket names to fix CLI not working if an instance of the launcher is already running (#3630) 2025-04-14 11:40:38 +02:00
Rachel Powers
bd304eee94
chore: use nix-shell over nix develop in .envrc (brakes less things)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-13 12:16:07 -07:00
Alexandru Ionut Tripon
42007290a0
Start using patch versioning for launcher (#3605) 2025-04-13 20:27:14 +03:00
Kenneth Chew
7d4034cfa5
Shorten LocalPeer socket names
On most systems supporting Unix sockets, the maximum length of a socket name is quite low (e.g. on macOS 104 characters and on Linux 108). If the name is too long, the sockets will not work and thus sending messages to a running instance of the launcher will not work.

Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com>
2025-04-13 02:33:22 -04:00
Alexandru Ionut Tripon
edd88b9603
chore(nix): update lockfile (#3628) 2025-04-13 08:15:13 +03:00
github-actions[bot]
6812d137e6 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2c8d3f48d33929642c1c12cd243df4cc7d2ce434?narHash=sha256-F7n4%2BKOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE%3D' (2025-04-02)
  → 'github:NixOS/nixpkgs/2631b0b7abcea6e640ce31cd78ea58910d31e650?narHash=sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR%2BXhw3kr/3Xd0GPTM%3D' (2025-04-12)
2025-04-13 00:51:01 +00:00
Rachel Powers
a8e5e8dcfc
Fix compatibility with Qt 6.9 (#3622) 2025-04-11 11:44:41 -07:00
Yihe Li
8bb9b168fb
Use explicit construction for QFile from QString
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-12 01:59:07 +08:00
timoreo
a601a7cb06
chore: remove release macos Legacy reference (#3619) 2025-04-11 08:32:45 +02:00
Trial97
cc69a59f36
fix: crash when the instance window is closed before download dialog is open
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-11 08:38:05 +03:00
Trial97
d1eebbceff
chore: remove release macos Legacy reference
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-11 08:33:27 +03:00
Alexandru Ionut Tripon
c430b66657
Drop ghc_filesystem (#3608) 2025-04-10 22:39:10 +03:00
Trial97
4361aaa094
remove ghc_filesystem
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-10 22:38:55 +03:00
Alexandru Ionut Tripon
2ec0457854
Remove macOS Legacy build (#3607) 2025-04-10 22:38:24 +03:00
Seth Flynn
9364753d51
[Linux] Update to Qt 6.8.1 (#3610) 2025-04-09 17:22:06 -04:00
Alexandru Ionut Tripon
a6f00330a6
Improvements to modlist export (#3512) 2025-04-10 00:16:32 +03:00
Seth Flynn
a3b8846465
[Linux] Bump Ubuntu requirement to 22.04 (#3612) 2025-04-08 21:14:06 -04:00
Trial97
1a3cc00438
deprecate ubuntu 20.04 runner
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-08 21:37:34 +03:00
Trial97
5ba25a1476
remove mac legacy build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-08 21:36:13 +03:00
Trial97
c89a8a676e
increment linux qt version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-04-08 20:43:41 +03:00
Rachel Powers
b579cae5c2
feat(server): start using semver for launcher
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-08 04:27:06 -07:00
Seth Flynn
734db2bedc
Use ninja with MSVC on x64 (#3587) 2025-04-07 09:25:31 -04:00
Seth Flynn
4995bdcad6
Fix Nix release CI (#3594) 2025-04-07 09:13:23 -04:00
Seth Flynn
d92f7b3c97
ci: use ninja with msvc on x64
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-07 09:01:32 -04:00
Seth Flynn
6386d044e3
revert: "feat: publish on flakehub"
Flakehub requires semver. We don't use that (yet)

Refs: 86cc6d3
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-07 08:40:15 -04:00
Seth Flynn
180292098d
ci(nix): pin release packages in cachix
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-07 08:40:15 -04:00
Seth Flynn
76bec385d6
ci(nix): correctly parse action env vars as bools
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-07 08:40:15 -04:00
Seth Flynn
1a5a162727
ci(nix): ignore more paths
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-07 08:40:14 -04:00
Seth Flynn
da3a498490
ci(nix): run on tags
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-07 08:40:14 -04:00
Seth Flynn
3f1b91c611
chore(nix): update lockfile (#3581) 2025-04-07 08:13:04 -04:00
Soup of the tomato kind
9b3fa591d3
Update launcher/net/HttpMetaCache.h
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: Soup of the tomato kind <43444191+Soup-64@users.noreply.github.com>
2025-04-06 16:24:09 -04:00
Soup of the tomato kind
25d7db207d
Update FileSystem.cpp
fix oopsie

Signed-off-by: Soup of the tomato kind <43444191+Soup-64@users.noreply.github.com>
2025-04-06 16:15:02 -04:00
Soup
0c90530f88
cleanup
Fix formatting and fix a typo in the return code check

Signed-off-by: Soup <43444191+Soup-64@users.noreply.github.com>
2025-04-06 16:09:49 -04:00
Soup
b9a1fa3645
Implement popup for metacache
someone in the Discord ran into an issue somewhat related to the metacache button not working (folder in use err), so this warning makes it more obvious when this happens, though it would be better to find out why it ran into a process conflict

Signed-off-by: Soup <43444191+Soup-64@users.noreply.github.com>
2025-04-06 16:09:42 -04:00
Seth Flynn
6dd8bd0708
Use default palette on all system themes (#3584) 2025-04-06 15:55:02 -04:00
Seth Flynn
e5861129ad
fix(SystemTheme): use default palette on all system themes
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-04-06 06:41:37 -04:00
github-actions[bot]
aec410cb28 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5e5402ecbcb27af32284d4a62553c019a3a49ea6?narHash=sha256-gWd4urRoLRe8GLVC/3rYRae1h%2BxfQzt09xOfb0PaHSk%3D' (2025-03-27)
  → 'github:NixOS/nixpkgs/2c8d3f48d33929642c1c12cd243df4cc7d2ce434?narHash=sha256-F7n4%2BKOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE%3D' (2025-04-02)
2025-04-06 00:27:19 +00:00
Seth Flynn
c1b460fa05
Nix Flake spring cleaning (#3560) 2025-04-04 05:01:40 -04:00
Alexandru Ionut Tripon
1bed9536f3
Add checkbox for LiteLoader in mod filter (#3572) 2025-04-04 08:12:52 +03:00
Alexandru Ionut Tripon
5ad6e7b50d
chore(deps): update actions/create-github-app-token action to v2 (#3575) 2025-04-04 08:11:15 +03:00
hanlie
12c266f8bd Update ExportToModListDialog.ui
Signed-off-by: hanlie <48323966+HanlieChina@users.noreply.github.com>
2025-04-04 11:22:00 +08:00
renovate[bot]
dc4cb8b9d5
chore(deps): update actions/create-github-app-token action to v2 2025-04-03 22:22:42 +00:00
Yihe Li
3ae68114f6
Remove extra argument from ModFilterWidget::create
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-02 16:28:49 +08:00
Yihe Li
b0c85fd539
Hide checkbox for CurseForge
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-02 16:22:52 +08:00
Yihe Li
0518c50958
Add checkbox for LiteLoader in mod filter
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-04-02 16:01:45 +08:00
Rachel Powers
e883e9f359
(blocked-pr): push json expansion into env (#3571) 2025-04-01 23:53:34 -07:00
Rachel Powers
8fd86e065e
push json expansion into env
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-04-01 23:46:49 -07:00
Rachel Powers
f82b050bca
Fix blocked pr comment body (#3570)
* Add newline to seperate header from comment body

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Seth Flynn <getchoo@tuta.io>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

---------

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Co-authored-by: Seth Flynn <getchoo@tuta.io>
2025-04-02 02:33:17 -04:00
Alexandru Ionut Tripon
3042e051c7
ci: add a workflow to detect and check dependencies for blocked pull requests (#3497) 2025-04-02 09:08:21 +03:00
Alexandru Ionut Tripon
40ff0321f6
Rename instance's physical dir when renaming instances (#3550) 2025-04-02 09:03:08 +03:00
TheKodeToad
1e5d21be61
feat: add updater dialogues (#3454) 2025-04-01 16:09:40 +01:00
Seth Flynn
1d45850b6d
chore(deps): update cachix/install-nix-action digest to d1ca217 (#3563) 2025-03-31 21:41:17 -04:00
renovate[bot]
b1c4e85806
chore(deps): update cachix/install-nix-action digest to d1ca217 2025-03-31 19:53:22 +00:00
Seth Flynn
de08d7c364
chore(gitignore): add more nix-related files
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-31 01:28:43 -04:00
Seth Flynn
e9cac2e0e3
refactor(nix): use date for version
Helps avoid needless rebuilds where only the revision changed. Also
better conforms to Nixpkgs' version standards

Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-31 01:28:43 -04:00
Seth Flynn
9b38226f8c
chore(nix): clone git submodules automatically
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-31 01:28:43 -04:00
Seth Flynn
38ec7def32
chore(nix): add nice welcome message to dev shell
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-31 01:28:43 -04:00
Seth Flynn
51bbd02a08
Fix typo in NetRequest.cpp (#3561) 2025-03-31 01:12:48 -04:00
Seth Flynn
de923a07d8
refactor(nix): rely more on setup hooks in dev shell
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-30 19:25:48 -04:00
Seth Flynn
2d4bc09cb9
build(nix): properly wrap development shell
Allows actually running the executables built in the development shell

Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-30 19:25:48 -04:00
Seth Flynn
58579539d0
fix(nix): only create compile_commands.json if it doesn't exist
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-30 19:25:48 -04:00
Seth Flynn
32b49ecb84
refactor(nix): cleanup flake
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-30 19:25:48 -04:00
Seth Flynn
c367f48ec9
refactor(nix): pin flake-compat in default.nix
Avoids polluting downstream flake.locks

Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-30 19:25:47 -04:00
Seth Flynn
99852c972c
Reapply "refactor(nix): nix-filter -> lib.fileset"
After extensive (5 minutes) of testing, it seems we don't actually come
across any Nix bugs with lib.fileset! (aside from those inherit to
it...but 🤷)

This reverts commit a49a58bc4571f87f42f45bb9eeb1a957d5d12331.

Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-30 19:25:47 -04:00
Yihe Li
da007d6212
Use CustomMessageBox::selectable
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-31 07:14:09 +08:00
Alexandru Ionut Tripon
0709479110
chore(nix): update lockfile (#3557) 2025-03-30 10:53:02 +03:00
github-actions[bot]
0487ab3754 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a84ebe20c6bc2ecbcfb000a50776219f48d134cc?narHash=sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ%3D' (2025-03-19)
  → 'github:NixOS/nixpkgs/5e5402ecbcb27af32284d4a62553c019a3a49ea6?narHash=sha256-gWd4urRoLRe8GLVC/3rYRae1h%2BxfQzt09xOfb0PaHSk%3D' (2025-03-27)
2025-03-30 00:27:40 +00:00
Alexandru Ionut Tripon
6b93e7aa62
fix themes leak (#3555) 2025-03-30 01:54:33 +02:00
Trial97
5b12d3cfff
fix themes leak
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-30 00:46:59 +02:00
LAHarbottle
66c6399ade
Fix typo in NetRequest.cpp
Signed-off-by: LAHarbottle <87842870+LAHarbottle@users.noreply.github.com>
2025-03-29 17:17:57 +00:00
Yihe Li
02ca6bea8c
Sync group after updating instance
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-29 14:11:09 +08:00
Yihe Li
694959ef7f
Remove names from header comments
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 20:25:30 +08:00
Yihe Li
a2e44c0ef7
Use custom signals to record previous name
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 17:13:52 +08:00
Yihe Li
11a0dbf810
Make deleting a verb
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 16:11:54 +08:00
Yihe Li
45368fbf2f
Get rid of unused includes
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 08:36:07 +08:00
Yihe Li
a7af120cf0
Fix interaction with invalid chars
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 07:22:05 +08:00
Yihe Li
294448a01e
Filter out invalid chars
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 06:54:10 +08:00
Yihe Li
8fea37b8b7
Only call on interactive uses
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 06:53:57 +08:00
Yihe Li
ea44c2465c
Add link instance detection
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 05:48:05 +08:00
Yihe Li
7b511f4c67
Refactor into InstanceDirUpdate.h
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 05:47:29 +08:00
Yihe Li
b550a6c5c4
Revert the radio button changes
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 05:20:58 +08:00
Yihe Li
7ea5b6173c
Refactor updateInstanceRoot() to BaseInstance
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 04:51:13 +08:00
Yihe Li
abac3db125
Make remember checkbox off by default
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 04:11:29 +08:00
Yihe Li
4b20e3bc39
Implement instance renaming
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 03:26:13 +08:00
Yihe Li
0da645594f
Adjust instance view sorting mode to QComboBox and add renaming behavior
Signed-off-by: Yihe Li <winmikedows@hotmail.com>
2025-03-27 01:20:07 +08:00
Alexandru Ionut Tripon
1c0c247631
chore:fixed some codeql warnings (#1679) 2025-03-26 08:05:57 +02:00
Rachel Powers
064383b8fa
Pin AppImage tooling in CI, drop libfuse2 (#3543) 2025-03-24 16:09:51 -07:00
Seth Flynn
671aad88f5
ci: don't install libfuse2
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-24 18:17:39 -04:00
Seth Flynn
5d5155bb22
ci: pin appimage tooling
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-24 18:17:39 -04:00
Seth Flynn
6ef59fe984
ci: use bundled linuxdeploy appimage plugin
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-24 18:17:39 -04:00
Alexandru Ionut Tripon
ad8e0a9f7f
chore(deps): update actions/cache action to v4.2.3 (#3517) 2025-03-24 22:27:02 +02:00
Trial97
f7fd6f566f
chore:fixed some codeql warnings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-24 22:25:35 +02:00
TheKodeToad
9a57fddaaf
Refactor ResourcePack (#2616) 2025-03-24 20:12:41 +00:00
Alexandru Ionut Tripon
e27f602b7c
chore(nix): update lockfile (#3525) 2025-03-24 18:59:26 +02:00
Alexandru Ionut Tripon
7d0e3fb792
Fix crash with low disk space (#3528) 2025-03-24 18:59:09 +02:00
Alexandru Ionut Tripon
aa4c0a4dcc
fix account help link (#3529) 2025-03-24 18:58:36 +02:00
Alexandru Ionut Tripon
80b4a4427c
Use correct colours for all system themes (#3530) 2025-03-24 18:58:27 +02:00
Seth Flynn
9fe78fa86a
Improve clangd support (in Nix development shell) (#3526) 2025-03-23 17:15:23 -04:00
TheKodeToad
513959750f
Try best to avoid regression
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-23 14:29:58 +00:00
TheKodeToad
f08478c7ec
Use correct colours for all system themes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-23 14:17:43 +00:00
Trial97
a4472406b9
fix account help link
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-23 14:02:09 +02:00
Trial97
9ce5587f60
fix crash on accessing reseted output
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-23 08:52:30 +02:00
Trial97
269938dfd8
rename variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-23 08:52:08 +02:00
Seth Flynn
e3f93295f0
build(nix): add clangd to dev shell
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-22 22:36:16 -04:00
Seth Flynn
d6103c2a06
build(nix): copy compile_commands.json when entering dev shell
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-22 22:36:11 -04:00
Seth Flynn
8a21b07915
build: export compile commands for debug builds
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-22 22:16:18 -04:00
Seth Flynn
9fa397a299
chore(gitignore): add compile_commands.json
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-03-22 22:15:36 -04:00
github-actions[bot]
9ee357dcf1 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/6607cf789e541e7873d40d3a8f7815ea92204f32?narHash=sha256-cPfs8qMccim2RBgtKGF%2Bx9IBCduRvd/N5F4nYpU0TVE%3D' (2025-03-13)
  → 'github:NixOS/nixpkgs/a84ebe20c6bc2ecbcfb000a50776219f48d134cc?narHash=sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ%3D' (2025-03-19)
2025-03-23 00:27:03 +00:00
Rachel Powers
815306f1d0
Use group redirections for multiple outputs, prevent glob expansion of PR_NUMBER
Co-authored-by: Seth Flynn <getchoo@tuta.io>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-21 12:16:44 -07:00
TheKodeToad
216034c283
refactor FlameCheckUpdate to remove qEventLoop (#3046) 2025-03-20 09:34:26 +00:00
Rachel Powers
436896d365
ci(blocked-pr): use gh issue comment --create-if-none --edit-last with app token, not composit action
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-19 15:46:04 -07:00
Rachel Powers
187728c1f2
ci(blocked-pr): use app token
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-19 15:19:13 -07:00
Alexandru Ionut Tripon
71e0c62fee
fix no cape select (#3511) 2025-03-19 22:56:37 +02:00
renovate[bot]
4c2182e086
chore(deps): update actions/cache action to v4.2.3 2025-03-19 18:59:33 +00:00
TheKodeToad
947ca67952
Fix windows 9x and possibly other styles
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 13:32:14 +00:00
TheKodeToad
a108b5e9eb
Correctly set objectName for HintOverrideProxyStyle
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 12:35:24 +00:00
TheKodeToad
e89f96e9e9
Hack for broken windowsvista
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 11:48:31 +00:00
TheKodeToad
5832fb8b95
Implement middle click
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 11:09:25 +00:00
TheKodeToad
9f768f76bb
Translate installed indicator
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 11:00:51 +00:00
TheKodeToad
6dc16c48a2
Append [installed] to installed mods
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 10:56:07 +00:00
TheKodeToad
6c44a3f6df
onToggle -> onResourceToggle
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 10:46:32 +00:00
TheKodeToad
0f3ac57fdd
Trigger onToggle instead of onResourceSelected when pressing enter
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 10:42:38 +00:00
TheKodeToad
7532172233
Clear enableQueue on model reset
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 10:31:55 +00:00
hanlie
6bda537633 Improvements to modlist export
Added .replace("{mod_id}", modID)

Signed-off-by: hanlie <48323966+HanlieChina@users.noreply.github.com>
2025-03-19 12:35:22 +08:00
TheKodeToad
a5c62e657a
Snek case
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 01:43:43 +00:00
TheKodeToad
c6066fe6ec
Add warning dialog if there are no versions available
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 01:41:56 +00:00
TheKodeToad
900579eea6
Handle checkbox toggle
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-19 01:17:25 +00:00
TheKodeToad
8577f58fe3
Remove UserDataTypes::SELECTED
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-18 20:44:49 +00:00
TheKodeToad
5f70335a07
Render checkbox in project items
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-18 19:52:59 +00:00
Trial97
d5d83bf55c
fix no cape select
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-18 16:48:18 +02:00
TheKodeToad
a501441e6e
Paint project item backgrounds with native style
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-17 21:34:03 +00:00
Alexandru Ionut Tripon
d0b9073f60
Show online players on servers screen (#3112) 2025-03-16 08:30:12 +02:00
Alexandru Ionut Tripon
52a53a3b75
Make account checks more on-par with MultiMC (#3466) 2025-03-16 08:29:31 +02:00
Alexandru Ionut Tripon
41e2a486e0
chore(nix): update lockfile (#3484) 2025-03-16 08:28:22 +02:00
Alexandru Ionut Tripon
da508da1ab
chore(deps): update cachix/install-nix-action digest to 02a151a (#3507) 2025-03-16 08:28:12 +02:00
github-actions[bot]
6cf96d8fe7 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/6313551cd05425cd5b3e63fe47dbc324eabb15e4?narHash=sha256-D%2BR%2BkFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs%3D' (2025-02-27)
  → 'github:NixOS/nixpkgs/6607cf789e541e7873d40d3a8f7815ea92204f32?narHash=sha256-cPfs8qMccim2RBgtKGF%2Bx9IBCduRvd/N5F4nYpU0TVE%3D' (2025-03-13)
2025-03-16 00:27:01 +00:00
renovate[bot]
a469f6b114
chore(deps): update cachix/install-nix-action digest to 02a151a 2025-03-15 21:14:57 +00:00
Rachel Powers
e28dd30d87
ci(blocked_pr): merge env setup for dispatch and pull_request events
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-14 19:26:27 -07:00
Rachel Powers
72aee5c9f6
ci(blocked-pr): go back to single labels use gh cli actions directly insead of api where possible
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-14 16:07:14 -07:00
Alexandru Ionut Tripon
1a1bc14a73
Fix crash with invalid quilt mod info (#3496) 2025-03-15 00:00:46 +02:00
Alexandru Ionut Tripon
577cae3e00
chore(deps): update cachix/cachix-action action to v16 (#3493) 2025-03-15 00:00:30 +02:00
Alexandru Ionut Tripon
998de93ee5
chore(deps): update cachix/install-nix-action action to v31 (#3492) 2025-03-15 00:00:19 +02:00
Rachel Powers
e8e81a7627
use basename and dirname to split owner/repo
Co-authored-by: Seth Flynn <getchoo@tuta.io>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-14 14:56:46 -07:00
Rachel Powers
b42b453f76
ci(blocking-lables): cleanup lables with a pr closes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-14 12:58:42 -07:00
Rachel Powers
da3f378d5d
ci(label-actions): actions can't directly access secrets
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-14 11:04:44 -07:00
Rachel Powers
7cbdb80f6b
ci(label-actions): composit actions to add and delete labels in bulk
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-14 10:26:19 -07:00
Rachel Powers
0818e7068a
ci(blocked_pres): ensure merge workflow has actions permission
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 21:01:58 -07:00
Rachel Powers
c75ae4170f
ci(blocked_prs): fix merge workflow
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:07 -07:00
Rachel Powers
c2b7b4c82a
ci(blocked_prs): fix multiline comment body in comment action
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:07 -07:00
Rachel Powers
05356eff69
ci(blocking_prs): fix generated comment
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:06 -07:00
Rachel Powers
0474b03626
ci(blocked_pr): fix comment action
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:06 -07:00
Rachel Powers
79283fd744
ci(blocked_prs): checkout default branch for action access
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:06 -07:00
Rachel Powers
e00d93135f
ci(blocked_prs): fix blocking_data refrences, add synchronize and
reopend events

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:06 -07:00
Rachel Powers
6fd70ad095
ci(blocked_prs): correct condition to use JOB_DATA from env
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:05 -07:00
Rachel Powers
1c6ab1f054
ci(blocked_prs): unnest array of blocking prs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:05 -07:00
Rachel Powers
14f042540c
ci(blocking_pr): pass json expressions as env not direct.
use internal compost comment action

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:05 -07:00
Rachel Powers
eb11cde0f4
ci(blocked_prs): use compact jq output when outputting to ENV or step
ouput

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:05 -07:00
Rachel Powers
0bbf529afb
ci(blocked_prs): quote json in env file
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:04 -07:00
Rachel Powers
a6a172a136
ci: ensure block pr scan always returns valid json
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:04 -07:00
Rachel Powers
a2907dcaa3
ci: fix blocked PR workflow to preserve JSON in ENV
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:04 -07:00
Rachel Powers
cbd1fc6f43
ci: fix repo URL in blocked pr workflow
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:04 -07:00
Rachel Powers
cfc3c76779
ci: fix labels detected as sequence
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:03 -07:00
Rachel Powers
be1ce8dd9d
ci: add workflow to trigger refresh of dependants when a blocking pr is merged
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:03 -07:00
Rachel Powers
a65ced1598
ci: add a workflow to detect and check dependencies for blocked pull requests
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2025-03-12 20:44:03 -07:00
Alexandru Ionut Tripon
88bdb6541e
Update launcher/minecraft/mod/tasks/LocalModParseTask.cpp
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-03-12 00:14:53 +02:00
Trial97
0626e354a0
Fix crash with invalid quilt mod info
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-12 00:01:45 +02:00
renovate[bot]
de13d55c7c
chore(deps): update cachix/cachix-action action to v16 2025-03-10 21:53:14 +00:00
renovate[bot]
d41c54b6b2
chore(deps): update cachix/install-nix-action action to v31 2025-03-10 18:24:28 +00:00
TheKodeToad
fde2f4afe9
Fix mistakes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-10 12:44:44 +00:00
Alexandru Ionut Tripon
1e1730e5a9
fix mod load with empty gameversions (#3455) 2025-03-10 14:40:35 +02:00
Alexandru Ionut Tripon
bb9e19eec6
Qt app ID fix (#3480) 2025-03-09 15:03:38 +02:00
Echo J
14ab4055ff Reduce app ID hardcoding
And rename the relevant build variable to make more sense

Signed-off-by: Echo J <tcg96nougat@gmail.com>
2025-03-09 14:16:48 +02:00
Echo J
ffdf1f746e Remove .desktop suffix from application ID
Signed-off-by: Echo J <tcg96nougat@gmail.com>
2025-03-09 14:15:45 +02:00
Alexandru Ionut Tripon
91ef9f4998
fix duplicate optional mods dialog appearing when updating a modpack (#3475) 2025-03-09 14:05:09 +02:00
Alexandru Ionut Tripon
0716e49065
fix beginResetModel called before endResetModel (#3470) 2025-03-09 14:04:58 +02:00
Alexandru Ionut Tripon
43385f22be
fix null mainwindow in case of login on setup (#3464) 2025-03-09 14:04:48 +02:00
Trial97
59a816c696
fix duplicate optional mods dialog appearing when updating a modpack
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>

tmp
2025-03-06 10:19:38 +02:00
Trial97
c441ae05df
fix beginResetModel called before endResetModel
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-05 13:06:29 +02:00
Sticks
d4e1851e67
fix: remove qWarning for unknown state
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Sticks <sticks@teamhydra.dev>
2025-03-04 22:20:40 -06:00
Trial97
7db717ee7c
fix null mainwindow in case of login on setup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-03 23:55:44 +02:00
Trial97
162bbcfe19
rename some variables
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-03 23:55:43 +02:00
TheKodeToad
cb77cc1219
Use refresh instead of requestRefresh on LaunchController::login
There should be no reason to queue it and it could cause problems with the launcher's rate limiting

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-03-03 20:24:07 +00:00
Trial97
4dd026d1ae
QList to QVector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-03 08:31:39 +02:00
Trial97
8e33608ddb
refactor FlameCheckUpdate to remove qEventLoop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-03 08:31:39 +02:00
Trial97
22e0659a5f
removed unused BaseInstance argument from some API functions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-03 08:31:39 +02:00
Trial97
3da94eeea2
removed some unused QNetworkAccessManager references
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-03 08:31:39 +02:00
Alexandru Ionut Tripon
f9ab75868a
remove some QEventLoops (#3044) 2025-03-03 08:27:06 +02:00
Alexandru Ionut Tripon
5d268a3ded
chore: Update year range (#3461) 2025-03-03 08:26:56 +02:00
txtsd
f99b7e9ebd
chore: Update year range
Signed-off-by: txtsd <code@ihavea.quest>
2025-03-03 10:14:06 +05:30
Trial97
8f8c8394dc
remove some QEventLoops
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-02 08:36:48 +02:00
Alexandru Ionut Tripon
02b6afe3d5
Default to Fusion based Dark/Bright themes on Windows (#3452) 2025-03-02 08:21:20 +02:00
Alexandru Ionut Tripon
67d385fed2
chore(deps): update actions/cache action to v4.2.2 (#3451) 2025-03-02 08:19:27 +02:00
Alexandru Ionut Tripon
758b6cb756
chore(deps): update korthout/backport-action action to v3.2.0 (#3448) 2025-03-02 08:19:18 +02:00
Alexandru Ionut Tripon
74dd9ff43a
chore(nix): update lockfile (#3439) 2025-03-02 08:19:10 +02:00
Alexandru Ionut Tripon
ecf770d4ae
implement packignore for curseforge/modrinth export (#3295) 2025-03-02 08:19:03 +02:00
Alexandru Ionut Tripon
bf01d42c83
Add skin preview (#3283) 2025-03-02 08:18:51 +02:00
Alexandru Ionut Tripon
74ed1f3b5d
Improve profile setup error messages (#3256) 2025-03-02 08:18:40 +02:00
github-actions[bot]
d75f1e3032 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2ff53fe64443980e139eaa286017f53f88336dd0?narHash=sha256-%2B/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc%3D' (2025-02-13)
  → 'github:NixOS/nixpkgs/6313551cd05425cd5b3e63fe47dbc324eabb15e4?narHash=sha256-D%2BR%2BkFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs%3D' (2025-02-27)
2025-03-02 00:26:09 +00:00
Trial97
29b3eb5cc6
fix mod load with empty gameversions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-03-01 22:45:36 +02:00
iTrooz
93286789c5
fix typo
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-03-01 20:12:31 +01:00
Sticks
ea5458ed22
fix: Grammar correction in failed message for update dialogues
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Sticks <sticks@teamhydra.dev>
2025-02-28 21:06:34 -06:00
sticks
998bc660fa feat: add updater dialogues
Signed-off-by: sticks <tanner@teamhydra.dev>
2025-02-28 15:09:46 -06:00
TheKodeToad
5261b615d7 Default to Fusion based Dark/Bright themes on Windows
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-02-28 21:07:58 +00:00
renovate[bot]
8cb999c479
chore(deps): update actions/cache action to v4.2.2 2025-02-27 19:24:06 +00:00
renovate[bot]
3cb44ba105
chore(deps): update korthout/backport-action action to v3.2.0 2025-02-23 22:35:16 +00:00
Alexandru Ionut Tripon
12a4915420
Apply suggestions from code review
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-02-21 11:32:30 +02:00
Trial97
6a2f5f071c
improve chessboard contrast
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-21 11:12:27 +02:00
Trial97
47af33ff6f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin 2025-02-21 08:40:33 +02:00
Trial97
5810032861
Fix icon removal in icon picker
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-19 09:29:05 +02:00
Trial97
c9471d083b
change java on modpack update
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-19 09:28:06 +02:00
Seth Flynn
0af021fef2
ci: always run nix workflow on push (#3433) 2025-02-19 02:17:41 -05:00
Alexandru Ionut Tripon
d24066c965
chore(deps): update actions/cache action to v4.2.1 (#3432) 2025-02-19 08:20:04 +02:00
Seth Flynn
46385e671d
ci: always run nix workflow on push
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-02-18 22:55:51 -05:00
renovate[bot]
73bb740bbb
chore(deps): update actions/cache action to v4.2.1 2025-02-18 18:14:21 +00:00
Alexandru Ionut Tripon
50ab1b2c40
Recognize riscv64 as a 64-bit platform (#3425) 2025-02-17 20:33:17 +02:00
Alexandru Ionut Tripon
d472b966dc
chore(nix): update lockfile (#3401) 2025-02-17 18:04:45 +02:00
Alexandru Ionut Tripon
beee93e199
Update hendrikmuhs/ccache-action action to v1.2.17 (#3388) 2025-02-17 18:04:33 +02:00
thonkdifferent
8f1750df51
Recognize riscv64 as a 64-bit platform
Currently PrismLauncher complains about the installed JDK being a 32-bit version, despite it being compiled for 64-bit RISC-V `riscv64`. 

This PR fixes this issue.

Signed-off-by: thonkdifferent <41342923+thonkdifferent@users.noreply.github.com>
2025-02-16 19:30:31 +02:00
github-actions[bot]
bdf87fa02f chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3a228057f5b619feb3186e986dbe76278d707b6e?narHash=sha256-xvTo0Aw0%2Bveek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc%3D' (2025-02-01)
  → 'github:NixOS/nixpkgs/2ff53fe64443980e139eaa286017f53f88336dd0?narHash=sha256-%2B/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc%3D' (2025-02-13)
2025-02-16 00:25:49 +00:00
Rachel Powers
3295b0717a
add libMangoHud_shim.so to mangohub preloadlist (#3413) 2025-02-13 14:41:01 -07:00
Rachel Powers
7b97863685
make sure if user changes java path also disable java management (#3414) 2025-02-13 14:40:40 -07:00
TheKodeToad
3840d8a37a
Always check Microsoft account for offline account
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-02-13 19:12:50 +00:00
Alexandru Ionut Tripon
3e4fc2ff3b
Increase the stale operations (#3393) 2025-02-13 13:44:01 +02:00
Alexandru Ionut Tripon
d22a20ffa6
Update .github/workflows/stale.yml
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-02-13 08:14:20 +02:00
TheKodeToad
de86e63611
Update .github/workflows/stale.yml
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-02-13 00:05:14 +00:00
TheKodeToad
e41a60e57e
remove some unused files (#3412) 2025-02-13 00:04:45 +00:00
iTrooz
34233a93a2
MinecraftTarget::parse() to parse IP
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-02-13 00:55:35 +01:00
Trial97
174cddcf42
make sure if user changes java path also disable java management
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-12 20:40:09 +02:00
Trial97
9e954548dd
add libMangoHud_shim.so to mangohub preloadlist
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-12 20:21:45 +02:00
Trial97
14b653e08d
remove some unused files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-12 20:16:00 +02:00
TheKodeToad
79180db663
Fix some undefined behaviour (#3407) 2025-02-11 19:04:56 +00:00
Alexandru Ionut Tripon
22b59e760c
Update launcher/ui/widgets/CheckComboBox.cpp
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-02-11 21:03:04 +02:00
Alexandru Ionut Tripon
1d1a4f1b30
Apply suggestions from code review
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-02-11 21:02:27 +02:00
Trial97
bf1084d7fa
Fix some undefined behaviour
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-11 10:59:10 +02:00
Trial97
ef825a7bc5
update stale action
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-06 09:58:41 +02:00
Alexandru Ionut Tripon
8d143c7b95
Fixed when game crashes, it doesn't log any time played (#3392) 2025-02-06 09:35:23 +02:00
Riley Richard
9ea33e0651 DCO Remediation Commit for Riley Richard <bubbalou112@gmail.com>
I, Riley Richard <bubbalou112@gmail.com>, hereby add my Signed-off-by to this commit: cb83f8e52db1046173a8def2f216cfcf1518b91f

Signed-off-by: Riley Richard <bubbalou112@gmail.com>
2025-02-05 18:10:31 -05:00
Trial97
f1209c1279
Increase the stale operations
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-05 23:43:38 +02:00
Riley Richard
17e95c0d07 forgot to sign
Signed-off-by: Riley Richard <bubbalou112@gmail.com>
2025-02-05 16:33:15 -05:00
Riley Richard
cb83f8e52d fixed thing 2025-02-05 16:13:22 -05:00
Alexandru Ionut Tripon
7d202e348d
Use the same UI for instance and global settings (#3341) 2025-02-05 23:04:54 +02:00
Alexandru Ionut Tripon
364b5be856
Add stale workflow (#3389) 2025-02-05 23:04:38 +02:00
TheKodeToad
e1896d5b6b
Update launcher/ui/pages/global/MinecraftPage.h
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-02-05 13:45:49 +00:00
TheKodeToad
6e3dd04a1f
Update launcher/ui/pages/global/MinecraftPage.h
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-02-05 12:09:32 +00:00
TheKodeToad
f7a401ab22
Update launcher/ui/pages/instance/InstanceSettingsPage.h
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-02-05 12:09:26 +00:00
TheKodeToad
9ed6801b15
Update launcher/ui/pages/global/JavaPage.h
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-02-05 12:09:12 +00:00
TheKodeToad
06b50dfd33
Fix more header mistakes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-02-05 11:11:45 +00:00
TheKodeToad
5a76d9b7e1
Make requested changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-02-05 10:58:06 +00:00
Alexandru Ionut Tripon
34438824c1
Update .github/workflows/stale.yml
Co-authored-by: Seth Flynn <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-02-04 23:15:18 +02:00
Alexandru Ionut Tripon
ac598740b3
Update .github/workflows/stale.yml
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-02-04 22:08:46 +02:00
Alexandru Ionut Tripon
85c2710e33
Apply suggestions from code review
Co-authored-by: Seth Flynn <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-02-04 22:08:16 +02:00
Alexandru Ionut Tripon
afe6d4836d
Update .github/workflows/stale.yml
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-02-04 17:41:36 +02:00
Trial97
9c26ba5932
add stale workflow
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-02-04 16:13:55 +02:00
renovate[bot]
2a987b5a4a
chore(deps): update hendrikmuhs/ccache-action action to v1.2.17 2025-02-03 22:11:56 +00:00
Alexandru Ionut Tripon
1a375dc243
Merge pull request #3382 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2025-02-03 00:28:59 +02:00
Alexandru Ionut Tripon
ab3792b080
Merge pull request #3381 from razzeee/patch-1
Add PackageManager category
2025-02-03 00:28:42 +02:00
Seth Flynn
f9dcc31843
Merge pull request #3374 from getchoo-contrib/ci/fix-nix-out-paths
Fix Nix workflow
2025-02-02 17:18:03 -05:00
Seth Flynn
989e6c6cb6
ci: directly print nix out paths to step summary
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-02-01 22:55:39 -05:00
Seth Flynn
138684a84f
Revert "ci: add nix out paths to job summary"
This reverts commit 588e0d6305e673fc4e5eceebfe2692d30b8e876a.

Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-02-01 22:54:26 -05:00
github-actions[bot]
faf7e6b06e chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/825479c345a7f806485b7f00dbe3abb50641b083?narHash=sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU%3D' (2025-01-24)
  → 'github:NixOS/nixpkgs/3a228057f5b619feb3186e986dbe76278d707b6e?narHash=sha256-xvTo0Aw0%2Bveek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc%3D' (2025-02-01)
2025-02-02 00:24:39 +00:00
Kolja
f1671e3ded
Add PackageManager category
Signed-off-by: Kolja <razzeee@gmail.com>
2025-02-01 20:25:01 +01:00
Alexandru Ionut Tripon
6404d81ada
Merge pull request #3373 from Trial97/fix_crash2
Show warning when adding new resources with no instances
2025-01-31 23:03:55 +02:00
Alexandru Ionut Tripon
d6eb96df5c
Merge pull request #3260 from Trial97/fix_modrinth_shapshot
Map Minecraft snapshots to Modrinth
2025-01-31 23:02:55 +02:00
Trial97
c5efe081b4
fix add resource with no instance
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-31 22:03:57 +02:00
Seth Flynn
a639bc019e
Merge pull request #3368 from getchoo-contrib/ci/print-nix-out-paths 2025-01-31 07:00:37 -05:00
Seth Flynn
588e0d6305
ci: add nix out paths to job summary
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-01-30 13:34:34 -05:00
Sefa Eyeoglu
d7eddedf41
Merge pull request #3359 from PrismLauncher/ci/flakehub 2025-01-30 16:06:58 +01:00
Alexandru Ionut Tripon
6ae9fa4df4
Merge pull request #3314 from Trial97/update_modules
update submodules
2025-01-29 23:35:08 +02:00
Seth Flynn
86cc6d3c5e
feat: publish on flakehub
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-01-29 16:34:31 -05:00
Seth Flynn
61d7f08883
ci: use generic workflow for publishing
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-01-29 16:34:27 -05:00
Seth Flynn
0deb5e20ae
Merge pull request #3362 from getchoo-contrib/ci/flakehub-cache 2025-01-29 16:34:02 -05:00
Alexandru Ionut Tripon
fcb3dd5e9d
Merge pull request #3346 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2025-01-29 23:33:01 +02:00
Seth Flynn
169f5728b1
ci: run nix workflow on pull_request_target
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-01-29 16:22:44 -05:00
Seth Flynn
8816be1668
ci: use flakehub cache
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-01-29 16:17:01 -05:00
Alexandru Ionut Tripon
bd752c025c
Merge pull request #3360 from getchoo-contrib/ci/split
Split Flatpak and Nix CI jobs from main build workflow
2025-01-29 22:51:07 +02:00
Seth Flynn
49d734f314
ci: separate flatpak job
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-01-29 08:32:49 -05:00
Seth Flynn
417688089d
ci: separate nix job
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-01-29 08:31:45 -05:00
Seth Flynn
de21b77ae1
Merge pull request #3334 from PrismLauncher/renovate/determinatesystems-magic-nix-cache-action-9.x
chore(deps): update determinatesystems/magic-nix-cache-action action to v9
2025-01-29 07:44:06 -05:00
TheKodeToad
68bf409a98
Fix formatting issues
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 19:14:57 +00:00
TheKodeToad
5d179671bf
Fix non-Linux build
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 18:55:24 +00:00
TheKodeToad
dc6f536843
Fix Qt 5 compilation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 18:04:41 +00:00
TheKodeToad
cc504f4a6c
Merge remote-tracking branch 'upstream/develop' into unify-mc-settings
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 17:02:50 +00:00
TheKodeToad
a92c68adbd
Remove duplicate console section
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 16:54:45 +00:00
TheKodeToad
7aaa9fa93c
Finish off MinecraftSettingsWidget implementation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 16:46:26 +00:00
TheKodeToad
81769b9047
Use MinecraftInstancePtr instance of InstancePtr
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 14:34:07 +00:00
TheKodeToad
147b315c14
Update thresholds when min. memory value is changed too
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 14:15:07 +00:00
TheKodeToad
9d0918a064
Remove outdated JavaWizardWidget comment
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 13:19:10 +00:00
TheKodeToad
98ab686348
Merge remote-tracking branch 'upstream/develop' into unify-mc-settings
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-27 13:18:19 +00:00
TheKodeToad
39ae2fbd4a
Fix tab inconsistencies
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-26 22:44:43 +00:00
TheKodeToad
36a35d7925
Fix tab order
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-26 22:36:48 +00:00
TheKodeToad
1b4b36df33
Unify Java page
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2025-01-26 22:25:26 +00:00
github-actions[bot]
3d9e073721 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c?narHash=sha256-Tbk1MZbtV2s5aG%2BiM99U8FqwxU/YNArMcWAv6clcsBc%3D' (2025-01-16)
  → 'github:NixOS/nixpkgs/825479c345a7f806485b7f00dbe3abb50641b083?narHash=sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU%3D' (2025-01-24)
2025-01-26 00:23:21 +00:00
iTrooz
bb20848449
use more sensible protocol version
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-01-25 21:01:21 +01:00
iTrooz
0b9d4784d8
Show socket error in McClient
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-01-25 20:26:52 +01:00
iTrooz
b06c4341d8
update documentation
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-01-25 20:22:09 +01:00
iTrooz
7c82cd82d7
use m_responseReadState to avoid calling parseResponse() (as a failsafe for malicious/bad server responses)
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-01-25 20:19:19 +01:00
iTrooz
439c565961
forward McResolver error as Task error
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-01-25 20:14:15 +01:00
iTrooz
cf2b413f29
forward McClient error as Task error
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-01-25 20:10:31 +01:00
iTrooz
fe8f755b43
remove waitForConnected() and waitForReadyRead() and use signals ineatd
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-01-25 20:08:44 +01:00
iTrooz
43376b1c40
remove unused defines in McClient.h
Signed-off-by: iTrooz <hey@itrooz.fr>
2025-01-25 19:06:52 +01:00
Trial97
255f27d419
virtual constructor
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-22 16:11:54 +02:00
Trial97
aeeb6f6bb6
fix build final
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-22 00:16:20 +02:00
Trial97
49d82ab528
fix build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-21 23:49:42 +02:00
Alexandru Ionut Tripon
fdb4159f2a
Merge pull request #3332 from eff3ry/modrinth-filter-tweak
Update Modrinth Client/Server Filters to match Modrinth website & launcher.
2025-01-21 23:42:37 +02:00
Alexandru Ionut Tripon
98be91c9d5
Merge pull request #3294 from Trial97/fix_flame_update
Fix updating Curseforge mods with missing mod loader
2025-01-21 23:40:21 +02:00
Trial97
7010b8acb6
fix the freeze with openglwidget
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-21 23:36:40 +02:00
renovate[bot]
705375c0df
chore(deps): update determinatesystems/magic-nix-cache-action action to v9 2025-01-21 21:35:18 +00:00
Alexandru Ionut Tripon
38d3f14f06
Apply suggestions from code review
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-01-21 16:45:40 +02:00
TheKodeToad
8d3684c484
Merge pull request #1413 from Trial97/fix_curse_import
feat: updated flame mod resolution
2025-01-21 13:53:00 +00:00
Alexandru Ionut Tripon
0d4eeb9965
Merge pull request #3330 from getchoo-contrib/mingw-cfg
Use better compile flags for MINGW
2025-01-21 15:18:43 +02:00
Jeffery Tolmie
caccaefb39
Change "none" to ""
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: Jeffery Tolmie <jeffery.tolmie@gmail.com>
2025-01-22 02:06:49 +13:00
eff3ry
532fec7748 DCO Remediation Commit
DCO Remediation Commit for eff3ry <jeffery.tolmie@gmail.com>

I, eff3ry <jeffery.tolmie@gmail.com>, hereby add my Signed-off-by to this commit: 2a403b3bfe9f4c79c38c33e80515a232576f6018
I, eff3ry <jeffery.tolmie@gmail.com>, hereby add my Signed-off-by to this commit: 4ba3fd559d2664099524848825adb6f5a60650ab

Signed-off-by: eff3ry <jeffery.tolmie@gmail.com>
2025-01-22 01:48:04 +13:00
eff3ry
4ba3fd559d Update Filter Checks
Updates the filter checks so that options both and none can be differentiated.

Signed-off-by: Jeffery Tolmie Jeffery.tolmie@gmail.com
2025-01-22 01:40:59 +13:00
eff3ry
2a403b3bfe Edit Modrinth search faucets
Edit Modrinth search faucets to alter the client and server filters to be more in-line with the Modrinth website and Launcher, making it easier to find client-side only mods etc.

Signed-off-by: Jeffery Tolmie Jeffery.tolmie@gmail.com
2025-01-22 01:39:28 +13:00
Seth Flynn
f8a504e254
Merge pull request #3299 from Trial97/appimage2
Use Ubuntu 22.04 for Linux builds
2025-01-20 23:43:45 -05:00
Seth Flynn
e66f447ce5
feat: use better compile flags for mingw
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-01-20 20:36:48 -05:00
Seth Flynn
67b218b1f3
Merge pull request #2895 from Edgars-Cirulis/qt-6.8
chore: update to qt 6.8.x
2025-01-20 18:53:05 -05:00
Alexandru Ionut Tripon
db766574a4
Update .github/workflows/build.yml
Co-authored-by: Seth Flynn <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-01-21 01:38:13 +02:00
timoreo
18da01c9a6
Merge pull request #3320 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2025-01-20 09:48:11 +01:00
Alexandru Ionut Tripon
c79ad73311
Merge pull request #3319 from getchoo-contrib/flatpak-arm
Build Flatpaks for ARM
2025-01-19 10:16:41 +02:00
Sefa Eyeoglu
fb3926a85d
Merge pull request #3318 from getchoo-contrib/nix-arm
Build Nix packages for aarch64-linux
2025-01-19 09:08:17 +01:00
github-actions[bot]
8d4f279539 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/bffc22eb12172e6db3c5dde9e3e5628f8e3e7912?narHash=sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc%2Bc2c%3D' (2025-01-08)
  → 'github:NixOS/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c?narHash=sha256-Tbk1MZbtV2s5aG%2BiM99U8FqwxU/YNArMcWAv6clcsBc%3D' (2025-01-16)
2025-01-19 00:24:56 +00:00
Alexandru Ionut Tripon
1b5d3c2bf9
Update .github/workflows/build.yml
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-01-19 02:03:21 +02:00
Trial97
be3eca8c97
remove specific step for qt6
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-19 01:05:06 +02:00
seth
66f0397087
ci: build flatpaks for arm
Signed-off-by: seth <getchoo@tuta.io>
2025-01-18 17:16:02 -05:00
seth
8e8538b506
ci: build nix packages for aarch64-linux
Signed-off-by: seth <getchoo@tuta.io>
2025-01-18 16:55:38 -05:00
Trial97
dc00c47f2e
update submodules
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-18 13:27:18 +02:00
Trial97
7d3238d234
rename variables
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-17 21:09:44 +02:00
Alexandru Ionut Tripon
f17599c8b8
Merge pull request #1689 from Trial97/progrss_bar_interaction
Added mouse interactions for labels in ProgressDialog
2025-01-17 20:59:52 +02:00
Trial97
8e5a7c6e33
ensure that the snapshot mapping is on all apis
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-17 10:35:13 +02:00
Trial97
1d8bf1d5a7
map modrinth snapshots
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-17 09:19:39 +02:00
Alexandru Ionut Tripon
0a71b19509
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2025-01-17 08:53:10 +02:00
Alexandru Ionut Tripon
c2f4389e5f
Merge pull request #3254 from Trial97/remove_multimc
remove EditAccountDialog
2025-01-17 08:51:44 +02:00
Alexandru Ionut Tripon
b7d117cc77
Merge pull request #2737 from maskersss/log-upload
Truncate logs for mclo.gs to fit 25k line limit
2025-01-17 08:49:49 +02:00
seth
1cce582d56
Merge pull request #3292 from Trial97/fix_modrinth_link
fix modrinth link
2025-01-16 20:42:00 -05:00
seth
867aaf881e
Merge pull request #3286 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2025-01-16 20:40:44 -05:00
seth
14b348ffe7
Merge pull request #3285 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x
chore(deps): update hendrikmuhs/ccache-action action to v1.2.16
2025-01-16 20:40:17 -05:00
Edgars Cīrulis
181610a8c1
Merge branch 'PrismLauncher:develop' into qt-6.8 2025-01-17 03:04:43 +02:00
seth
b7f2175718
Merge pull request #3179 from sshcrack/fix-inst-java
Fix $INST_JAVA not being set for auto download java
2025-01-16 20:03:26 -05:00
seth
7a1dc0e9c9
Merge pull request #1555 from Trial97/env_vars
correctly expand env vars for pre/post launch commands
2025-01-16 19:45:31 -05:00
Trial97
9317a675ed
removed unused type
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-16 17:07:44 +02:00
Trial97
7cb8deeb90
feat: updated flame mod resolution
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-16 17:05:36 +02:00
Trial97
797cacf804
refactor to remove code duplication
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-16 17:04:53 +02:00
Trial97
d2516cbecc
use YCbCr for chesboard pattern
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-16 14:11:56 +02:00
Trial97
bca517b8d3
fix appimage
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-16 12:10:19 +02:00
Trial97
aa6518410e
fix build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-15 23:04:47 +02:00
Trial97
9d25680587
remove defaults blocked list
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-15 22:35:47 +02:00
Trial97
82e59658d5
uniform ignoreFilesWithPath
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-15 21:59:31 +02:00
Trial97
a6f5858dac
Fix ignore for modrinth/flame export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-15 21:54:02 +02:00
Trial97
c0525ebf4e
add wheel support for zoom
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-15 17:59:45 +02:00
Trial97
dbeb987978
improve skin preview
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-15 17:59:24 +02:00
Trial97
f6622a4cbb
implement packignore for curseforge/modrinth export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-14 18:48:41 +02:00
Trial97
2292df16cc
some renames
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-14 18:48:20 +02:00
Trial97
e4ad4051c8
fix curseforge with empty loader as newest version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-13 13:56:55 +02:00
Trial97
3ee73916ca
fix modrinth link
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-13 08:16:12 +02:00
github-actions[bot]
03834e1455 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65?narHash=sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk%3D' (2025-01-02)
  → 'github:NixOS/nixpkgs/bffc22eb12172e6db3c5dde9e3e5628f8e3e7912?narHash=sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc%2Bc2c%3D' (2025-01-08)
2025-01-12 00:26:01 +00:00
renovate[bot]
54da41c625
chore(deps): update hendrikmuhs/ccache-action action to v1.2.16 2025-01-11 22:11:18 +00:00
Trial97
1b98c69948
generate skin preview
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-10 17:30:00 +02:00
Trial97
5ba4b3a32f
add licence header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-10 15:31:57 +02:00
Trial97
059c03c655
fix qt5 build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-10 15:03:53 +02:00
Trial97
87ec7cdd39
move background to vertex buffer
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-10 14:54:40 +02:00
Trial97
0219c11a73
Fix build CI
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-10 11:48:21 +02:00
Trial97
6fc386cfe9
Move shaders to separate files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-10 11:40:38 +02:00
Trial97
cd0895b237
Add skin preview
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-10 00:54:14 +02:00
Alexandru Ionut Tripon
f4f1d5f0d7
Merge pull request #3228 from Trial97/delete_block
Add settings to control the if prism should move the downloaded mods
2025-01-09 00:12:12 +02:00
Alexandru Ionut Tripon
fbd886e9db
Merge pull request #3255 from Trial97/propagate_load
propagate load component error
2025-01-09 00:11:48 +02:00
Alexandru Ionut Tripon
0fb99d837f
Merge pull request #3230 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2025-01-09 00:11:24 +02:00
Alexandru Ionut Tripon
cb8320ca41
Merge pull request #3278 from Trial97/remove_drop
remove drop label
2025-01-09 00:10:50 +02:00
Alexandru Ionut Tripon
33981b9870
Merge pull request #3215 from Trial97/fix_custom_instance_icons
Fix curseforge/modrinth instance icons
2025-01-09 00:10:39 +02:00
Alexandru Ionut Tripon
07a0a15457
Merge pull request #3277 from Trial97/drop_file
fix drop file on resource page
2025-01-08 10:46:55 +02:00
Trial97
0f9ea5c949
remove drop label
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-08 01:55:45 +02:00
Trial97
d40c8b704c
fix drop file on resource page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2025-01-08 01:52:11 +02:00
github-actions[bot]
82a500f4e8 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5d67ea6b4b63378b9c13be21e2ec9d1afc921713?narHash=sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g%3D' (2024-12-11)
  → 'github:NixOS/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65?narHash=sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk%3D' (2025-01-02)
2025-01-05 00:25:34 +00:00
Trial97
4358e28d7e
improve profile setup error message
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-12-31 14:33:36 +02:00
Trial97
6ebfcb91cf
propagate load component error
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-12-31 13:44:22 +02:00
Trial97
e01df73deb
remove EditAccountDialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-12-31 11:13:01 +02:00
Trial97
7dde35fef2
Add settings to control the if prism should move the downloaded mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-12-20 19:57:09 +02:00
Trial97
23ffc4d8b9
Refactor ResourcePack
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-12-19 10:42:42 +02:00
Alexandru Ionut Tripon
0b6ce5525d
Merge pull request #3216 from Trial97/fix_auto_mod_provider
Fix automatically choose mod provider option
2024-12-19 09:16:59 +02:00
timoreo
f17faadf8a
Merge pull request #3174 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-12-18 19:54:44 +01:00
timoreo
c7b6977692
Merge pull request #3043 from Trial97/fix_flame_loader_match
fix the flame loaders match
2024-12-18 19:53:22 +01:00
timoreo
423d72a6e8
Merge pull request #3197 from Trial97/fix_curseforge_import
Do not fail curseforge import if modrinth file check fails
2024-12-18 19:48:05 +01:00
timoreo
2a2ed9f8bd
Merge pull request #3214 from kthchew/fix/manifest-symlink
Correct symbolic link destination on manifest (Mojang) Java download
2024-12-18 19:42:25 +01:00
Trial97
0412ed3f78
Fix automatically choose mod provider option
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-12-16 14:51:59 +02:00
Trial97
f4d93a08ba
Fix curseforge/modrinth instance icons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-12-16 13:27:44 +02:00
Kenneth Chew
8d53242952
Correct symbolic link destination on manifest Java download
Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com>
2024-12-16 03:30:09 -05:00
github-actions[bot]
706e263050 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-compat':
    'github:edolstra/flake-compat/9ed2ac151eada2306ca8c418ebd97807bb08f6ac?narHash=sha256-HRJ/18p%2BWoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg%3D' (2024-11-27)
  → 'github:edolstra/flake-compat/ff81ac966bb2cae68946d5ed5fc4994f96d0ffec?narHash=sha256-NeCCThCEP3eCl2l/%2B27kNNK7QrwZB1IJCrXfrbv5oqU%3D' (2024-12-04)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/970e93b9f82e2a0f3675757eb0bfc73297cc6370?narHash=sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE%3D' (2024-11-28)
  → 'github:NixOS/nixpkgs/5d67ea6b4b63378b9c13be21e2ec9d1afc921713?narHash=sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g%3D' (2024-12-11)
2024-12-15 00:27:47 +00:00
Alexandru Ionut Tripon
507faf9f00
Merge pull request #3150 from kthchew/fix/unneeded-hr-exceptions
Remove unnecessary hardened runtime exceptions on macOS
2024-12-14 19:30:11 +02:00
Alexandru Ionut Tripon
c0803365ef
Merge pull request #3202 from kthchew/chore/bump-sparkle
[macOS] Update Sparkle to v2.6.4
2024-12-14 18:18:04 +02:00
Alexandru Ionut Tripon
02e527c15b
Merge pull request #3199 from kthchew/fix/launcher-settings-tab
Fix tab order in launcher settings
2024-12-14 18:17:08 +02:00
Alexandru Ionut Tripon
5659dad23d
Merge pull request #3198 from kthchew/fix/local-net-use-desc
[macOS] Add local network usage description
2024-12-14 18:16:34 +02:00
Alexandru Ionut Tripon
647bb04a0d
Merge pull request #3181 from Trial97/fix_mrpack_crash
fix crash with invalid mrpack format
2024-12-14 18:15:50 +02:00
Kenneth Chew
b6cd46ad27
Update Sparkle to v2.6.4
Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com>
2024-12-14 00:42:08 -05:00
Kenneth Chew
c3712ba648
Fix tab order in launcher settings
Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com>
2024-12-12 14:53:39 -05:00
Kenneth Chew
c3e44554ab
Add local network usage description
Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com>
2024-12-12 14:43:28 -05:00
Trial97
a1c1c0b769
Do not fail curseforge import if modrinth file check fails
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-12-12 17:29:46 +02:00
Alexandru Ionut Tripon
15e58589d5
Merge pull request #3170 from leia-uwu/fix-icon-theme-path
[Linux] Don't use fallback icon search paths
2024-12-09 09:14:25 +02:00
Edgars Cirulis
eb8c375ec5
chore: update Qt to 6.8.1
Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-12-09 00:40:05 +02:00
Trial97
1dd0728a58
fix crash with invalid mrpack format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-12-08 22:04:16 +02:00
sshcrack
cf2dcbd431
load meta first
Signed-off-by: sshcrack <34072808+sshcrack@users.noreply.github.com>
2024-12-08 18:27:57 +01:00
sshcrack
dedb7a2343
change order of steps
Signed-off-by: sshcrack <34072808+sshcrack@users.noreply.github.com>
2024-12-08 14:39:06 +01:00
leia uwu
614574f15c
fix icon theme search paths
using fallback search paths breaks qadwaitadecorations

Signed-off-by: leia uwu <leia@tutamail.com>
2024-12-06 23:26:46 -03:00
Alexandru Ionut Tripon
28a471777a
Merge pull request #2800 from QazCetelic/advanced-icon-dialog
Add search and support for subdirectories to icon picker
2024-12-06 12:37:45 +02:00
Alexandru Ionut Tripon
93526637cb
Merge pull request #3166 from PrismLauncher/renovate/actions-cache-4.x
chore(deps): update actions/cache action to v4.2.0
2024-12-06 08:47:04 +02:00
renovate[bot]
94c893bd86
chore(deps): update actions/cache action to v4.2.0 2024-12-05 20:29:11 +00:00
iTrooz
f9e450ace2
do not destroy the ping ConcurrentTask directly at the end of the task
Signed-off-by: iTrooz <hey@itrooz.fr>
2024-12-05 20:43:40 +01:00
iTrooz
4e48015868
currentQueryTask -> m_currentQueryTask
Signed-off-by: iTrooz <hey@itrooz.fr>
2024-12-05 20:43:40 +01:00
Alexandru Ionut Tripon
c99876f3d7
Merge pull request #3154 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-12-03 16:17:50 +02:00
Alexandru Ionut Tripon
a3b2f1a931
Merge pull request #3119 from guihkx/flathub-manifest-sync
Sync Flatpak manifest with Flathub's
2024-12-02 17:30:19 +02:00
TheKodeToad
488dc7815c
Merge pull request #3135 from Trial97/italic
Make FTB Import note italic to match others
2024-12-02 14:07:42 +00:00
Tayou
dbee4bee14
Merge pull request #3152 from leia-uwu/fix-system-icons
Fix system icons on Linux
2024-12-02 15:00:43 +01:00
github-actions[bot]
2cfd116947 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-compat':
    'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33?narHash=sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U%3D' (2023-10-04)
  → 'github:edolstra/flake-compat/9ed2ac151eada2306ca8c418ebd97807bb08f6ac?narHash=sha256-HRJ/18p%2BWoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg%3D' (2024-11-27)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/23e89b7da85c3640bbc2173fe04f4bd114342367?narHash=sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w%3D' (2024-11-19)
  → 'github:NixOS/nixpkgs/970e93b9f82e2a0f3675757eb0bfc73297cc6370?narHash=sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE%3D' (2024-11-28)
2024-12-01 00:30:03 +00:00
leia uwu
3f67ef968b
fix: icon search paths memory leak
Signed-off-by: leia uwu <leia@tutamail.com>
2024-11-30 12:51:39 -03:00
leia uwu
fd9c80db62
fix: fix system icons
This sets the fallback icon theme to the current(system default) icon theme before
launcher specific themes are applied

And removes `Inherits` line of multimc/legacy icon theme because it can end up making it
inherit a default theme set from /usr/share/icons/default/index.theme
instead of the user configured theme (probably a qt bug?)

Signed-off-by: leia uwu <leia@tutamail.com>
2024-11-30 11:35:41 -03:00
Kenneth Chew
7e76638f2c
Only disable library validation if using ad-hoc signature
While not needed for regular releases, it is needed for CI when an Apple Developer account isn't available and you can only perform an ad-hoc signature.

Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com>
2024-11-29 21:18:07 -05:00
Kenneth Chew
884f15da1e
Remove unnecessary hardened runtime exceptions
These are cruft from an older time when the launcher was ad-hoc signed, and the OS couldn't tell the libraries and launcher were signed by the same party.

Additionally, add a workaround to send the necessary library injection to the game if Steam overlay is used despite library validation being on for the launcher.

Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com>
2024-11-29 21:18:06 -05:00
iTrooz
ba0bd5fd74
Use shared pointer to store server query task
Signed-off-by: iTrooz <hey@itrooz.fr>
2024-11-29 19:42:54 +01:00
iTrooz
1477d64400
add m_ prefix to class members
Signed-off-by: iTrooz <hey@itrooz.fr>
2024-11-29 19:42:52 +01:00
iTrooz
4aaf7b9b09
chore
Signed-off-by: iTrooz <hey@itrooz.fr>
2024-11-29 14:07:39 +01:00
iTrooz
fd1cb1b58b
DCO Remediation Commit for iTrooz <hey@itrooz.fr>
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: fac521a312d1f6055b29d12da8b8773adaa24afb
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 43a54cafef95a3b4c2181f4d3d1e2d3876b8e7f9
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: ee35ac5afdb2a6409b7ad52fde38c411d112f064
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 99ac11bc408b5102a7c9d6d0c003e854d5e7fdef
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 8fa1dff17dc4d7953fbf7f0961a33e751183b06b
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 2f70115be5555c7c9ad46765f61e6b1cc965e8b4
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: ea2a2349f8ebd353ac4ba4296f9514c3f8419c58
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 87c9066a2b218aef5296ab8ad4dddfa483dcd9cb
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: fe28a051d533bd34681c6306deab5b93b13dc5e9
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 0a379a05ff03b2c55fcc4342c84f90fff64bb9a9
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 6a7678a6e9548501b84ed3a2d81a9cabe6955703
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: cba7e2dc362238cbfa9bcc680d164c828cd39836
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 8cf0c2029ccccf40cbf21fd122bea233732911bc
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 0d830e56e9c888b860e03ee4a9e44239d67a4d4a
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: b35cffb3477b997a4dc779696aeb0acb79880d51
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 1f094b98039b4f8c79bc402246babd4f821116db
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 2d06e0a11194a3a4c379ddd518b857c4c2b98f54
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: c3543b104b5f13778677e2244ab93faf6850cb99
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 8b7040d416b46d8011b97b71505778026c2c5ece
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: b8035ca0783ba42efbc7c11cf329c6f4372abbc5
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 9d5727e36b22d2a2eeb17f6faf0bf5b2c01421fd
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 7cf24586c2a9ff8e5dd33a390f83b7f098266881
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 7d04f0ee758cb3c0c9c4273de67424269d63507c
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 60fb922ba2ed56703e5d64626f015e57d5cb0de5
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: a79a66c177194f1761f353e00bc53f1dc653eea3
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 1fb0fe0171fa2db09b296a62d636bab1ea026009
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 5cfb5a6f0db81e850ed3299759ffc131d049f289
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 9ce5eaaa0c8e8ca74dce42e2d287e865905efdf4
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 0c6f78dee2c16820624e2f55e12d903392baad75
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 7c8d2c9b55526db21a9656a65adbe4b2cfabd892
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 24b9815763ce1f81b30c4d422ee0d2dc5660dede
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 7d2da194184180846362af7c5d8e3726db190b88
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: ca6d66970ea52ae95c064babf42f74a1d953717b
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 520d6b0b42eae5b7fb5757cc07d96b53d2f6e7e8
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 4fad298d675102df39fadd0837bc36450068a7dc
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 087ab70143c69de8e8b9c5006393137f42b41f1c
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 7c61fec8e0e753de1b7215e45b0a4272551ffac4
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: fef8ee2d1b4f866437b30ec4ea8fd5cae2426e9c
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 3a9c03098267fd64a27b9bfe62dddccbdffc6cf0
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: f05548f3a36c0badcedec86d6fc5dd7a973bd36e
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 66f36195d8d2d4c362e94dc56239feb42e31fd36
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: ca52d00b8040e27860f931bdf5a6e7ce92c08413
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 26f50f9b818e68fc21c8ae06fc313bfc2e0da6e9
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 873232ebe3b3e41a97f908018dd5ff7fd14be10e
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 8b90a9f2b3e3d58b9725eda081cf209781c13aa6
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: dbb88ca7df6594f65cba5c5e5bd821a0c2605c00
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 6f9be258dc87752c3d8d80cac44570575ecba7b0
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: d124e2e0cba25e914bb885a4efd785294790227c
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: cfb0c97262f2f6467f1f35460938a9160cb2484e
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 5eb417ff2be159330558999082ecb64e3ee8f003
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 3fb6764ea48e942a655aafbbce9fc4a226839eff
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: ae7d3379e4ed2d8aee51026f37b7344026f97de7
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 09782745c6f1e1ad0edfd4222f432d679d10c17b
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: b0778e7a1fcf62493638aa9caafcb17a8860a3a1
I, iTrooz <hey@itrooz.fr>, hereby add my Signed-off-by to this commit: 01db826ec92bd41164514518d25b1941b58e5180

Signed-off-by: iTrooz <hey@itrooz.fr>
2024-11-29 01:01:32 +01:00
iTrooz
01db826ec9
Reset online players UI component when refreshing 2024-11-29 00:58:08 +01:00
iTrooz
b0778e7a1f
chore 2024-11-29 00:44:31 +01:00
iTrooz
09782745c6
make writePacketToSocket() clear data automatically 2024-11-29 00:44:25 +01:00
iTrooz
ae7d3379e4
abort current query task if present when refreshing 2024-11-29 00:39:43 +01:00
iTrooz
3fb6764ea4
fix typo 2024-11-29 00:13:43 +01:00
iTrooz
5eb417ff2b
Always autodelete signal connections with this captured when the objet is deleted, just to be sure 2024-11-28 23:54:51 +01:00
TheKodeToad
616aa002e1
Merge pull request #2875 from Jan200101/PR/switcheroo
[Linux] Integrate switcheroo-control for discrete GPU support
2024-11-28 20:02:58 +00:00
iTrooz
cfb0c97262
use Json::requireInteger() 2024-11-28 18:09:38 +01:00
iTrooz
d124e2e0cb
cleanup 2024-11-28 17:50:55 +01:00
iTrooz
6f9be258dc
add documentation about task abortion 2024-11-28 17:49:35 +01:00
iTrooz
dbb88ca7df
move ServerPingTask in its own file 2024-11-28 17:46:42 +01:00
iTrooz
8b90a9f2b3
remove infinite loop from readVarInt() 2024-11-28 17:32:49 +01:00
iTrooz
873232ebe3
remove infinite loop in writeVarInt() 2024-11-28 17:29:35 +01:00
guihkx
e0faee7f26
ci(flatpak): update build artifact name
Just aligning the name of the Flatpak package with other build artifacts.

Signed-off-by: guihkx <626206+guihkx@users.noreply.github.com>
2024-11-27 14:35:15 -03:00
iTrooz
26f50f9b81
connect job to deletion task before starting it
This ensures the signal is not fired before we have connected it
2024-11-26 18:50:37 +01:00
iTrooz
ca52d00b80
replace std::string by QString in emitFail() 2024-11-26 18:47:13 +01:00
iTrooz
66f36195d8
simplify code 2024-11-26 18:44:21 +01:00
iTrooz
f05548f3a3
remove implicit captures 2024-11-26 18:43:14 +01:00
iTrooz
3a9c030982
Do not timeout after just 3000ms
Keep the network default timeout
2024-11-26 18:24:46 +01:00
iTrooz
fef8ee2d1b
Disconnect task finished signal when ServersModel is destroyed 2024-11-26 18:16:15 +01:00
iTrooz
7c61fec8e0
Make task output online players rather than updating Server itself
This doesn't really change anything
2024-11-26 18:03:35 +01:00
guihkx
f6770a847a
flatpak: update KDE runtime to 6.8
This also switches to the Docker image provided and maintained by
Flathub collaborators through the 'flathub-infra' organization on
GitHub, because it looks better maintained at the moment.

Signed-off-by: guihkx <626206+guihkx@users.noreply.github.com>
2024-11-26 13:51:09 -03:00
guihkx
4a50e94967
flatpak: update xrandr to 1.5.3
Signed-off-by: guihkx <626206+guihkx@users.noreply.github.com>
2024-11-26 13:51:09 -03:00
iTrooz
087ab70143
refresh UI when we got the players online 2024-11-26 14:33:02 +01:00
iTrooz
4fad298d67
put more McClient methods to private 2024-11-26 13:22:02 +01:00
iTrooz
520d6b0b42
run socket code in thread 2024-11-26 13:22:00 +01:00
iTrooz
ca6d66970e
add documentation for Task and ConcurrentTask 2024-11-25 23:49:03 +01:00
Jan200101
514ec99a03
Integrate switcheroo-control for discrete GPU support
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
2024-11-25 22:29:39 +01:00
TheKodeToad
6c062c48b4
Merge pull request #3130 from Kationor/trimversion
Improve MANIFEST.MF parsing
2024-11-25 10:05:02 +00:00
iTrooz
7d2da19418
make McResolver have the same signal name conventions as Task 2024-11-25 01:09:47 +01:00
iTrooz
24b9815763
cleanup 2024-11-25 00:16:46 +01:00
iTrooz
7c8d2c9b55
always delete McResolver object, even when it fails 2024-11-25 00:16:25 +01:00
iTrooz
0c6f78dee2
communicate when ServerPingTask succeeds/fails 2024-11-25 00:10:17 +01:00
iTrooz
9ce5eaaa0c
fix job being deleted before tasks are finished 2024-11-24 23:54:19 +01:00
Kationor
b40a1973bf
Improve MANIFEST.MF parsing
Previously, we would only properly parse LF-encoded manifests, and even
those only if they used the recommended casing.

This commit allows the parser to recognise CR and CRLF newlines, and
also makes the name comparison case insensitive to align with the
specification. (Though not completely: we still don't support multiline
values)

Signed-off-by: Kationor <n96211028@gmail.com>
2024-11-24 19:30:59 +01:00
Trial97
a09af619ce
Make FTB Import note italic to match others
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-24 20:29:07 +02:00
TheKodeToad
835944387b
Merge pull request #3128 from QazCetelic/naming-clang-tidy
Add naming check in `.clang-tidy` file
2024-11-24 16:10:41 +00:00
iTrooz
5cfb5a6f0d
do not capture things implicitely in lambdas 2024-11-24 16:37:42 +01:00
QazCetelic
d927c539b5 Update CONTRIBUTING.md conventions section
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-11-23 19:55:40 +01:00
QazCetelic
14454faac8 Use old list style
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-11-23 18:21:03 +01:00
QazCetelic
2351531e84 Add naming checks to clang-tidy
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-11-23 18:15:07 +01:00
QazCetelic
33ff3b4f36 Fix naming
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-11-23 18:10:33 +01:00
seth
11e7b218d4
Merge pull request #3113 from PrismLauncher/update_flake_lock_action
chore(nix): adopt new darwin SDK pattern
2024-11-22 18:25:21 -05:00
seth
fbbd64ddb7
chore(nix): sync with upstream nixpkgs
Signed-off-by: seth <getchoo@tuta.io>
2024-11-22 17:33:16 -05:00
github-actions[bot]
41db87c8cf chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/776e68c1d014c3adde193a18db9d738458cd2ba4?narHash=sha256-SCHiL%2B1f7q9TAnxpasriP6fMarWE5H43t25F5/9e28I%3D' (2024-10-29)
  → 'github:numtide/nix-filter/f7653272fd234696ae94229839a99b73c9ab7de0?narHash=sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms%3D' (2024-11-13)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4aa36568d413aca0ea84a1684d2d46f55dbabad7?narHash=sha256-Zwl8YgTVJTEum%2BL%2B0zVAWvXAGbWAuXHax3KzuejaDyo%3D' (2024-11-05)
  → 'github:NixOS/nixpkgs/23e89b7da85c3640bbc2173fe04f4bd114342367?narHash=sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w%3D' (2024-11-19)
2024-11-22 22:26:01 +00:00
Alexandru Ionut Tripon
79dd912126
Merge pull request #3091 from Awqre/develop
Lossless image asset compression
2024-11-20 10:12:34 +02:00
Awqre
00fa65c18b
Merge branch 'PrismLauncher:develop' into develop 2024-11-20 02:08:31 +00:00
iTrooz
1fb0fe0171
ping servers when opening Servers page 2024-11-19 20:48:17 +01:00
iTrooz
a79a66c177
remove debug print 2024-11-19 20:43:04 +01:00
iTrooz
60fb922ba2
remove QObject parent argument from ServerPingTask constructor 2024-11-19 20:43:04 +01:00
seth
59db80cb0e
Merge pull request #3068 from Scrumplex/chore/update-nixos-readme
[Linux] Update Nix README
2024-11-19 10:09:11 -05:00
Alexandru Ionut Tripon
e5a4dfdf16
Merge pull request #2962 from AOSC-Tracking/upstream/detect-aosc-os-jdks
javautils: add a filter for detecting Java paths on AOSC OS
2024-11-19 13:44:57 +02:00
QazCetelic
6ca18c6266 Refactoring
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-11-18 19:19:02 +01:00
QazCetelic
e74592fa09 Code style conventions (camelCase, m_ prefix)
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-11-17 20:43:09 +01:00
QazCetelic
abbebff400 Removed bug when renaming icon file in nested folder while application is running
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-11-17 20:35:24 +01:00
iTrooz
7d04f0ee75
remove useless code when reading response 2024-11-17 20:06:08 +01:00
iTrooz
7cf24586c2
.hpp -> .h 2024-11-17 19:58:30 +01:00
iTrooz
9d5727e36b
MCResolver -> McResolver 2024-11-17 19:51:15 +01:00
iTrooz
b8035ca078
refactor header and code into 2 files 2024-11-17 19:50:52 +01:00
iTrooz
8b7040d416
use Qt5-compatible writeString() impl 2024-11-17 19:37:15 +01:00
iTrooz
c3543b104b
fix qDebug() call with string << append 2024-11-17 19:26:21 +01:00
iTrooz
2d06e0a111
Fix after rebase 2024-11-17 19:21:09 +01:00
iTrooz
1f094b9803
avoid translating back to stf string without reason 2024-11-17 19:10:15 +01:00
iTrooz
b35cffb347
fix warning about unused jsonLength 2024-11-17 19:10:15 +01:00
iTrooz
0d830e56e9
replace std::runtime_exception with PrismLauncher Exception + add try/catch 2024-11-17 19:10:15 +01:00
iTrooz
8cf0c2029c
No need to close the socket, it is done automatically
https://doc.qt.io/qt-6/qtcpsocket.html#dtor.QTcpSocket
2024-11-17 19:10:15 +01:00
iTrooz
cba7e2dc36
use std::optional<> to signify when there is no value 2024-11-17 19:10:15 +01:00
iTrooz
6a7678a6e9
Actually show online players when clicking on the button 2024-11-17 19:10:15 +01:00
iTrooz
0a379a05ff
replace my printf calls with qDebug 2024-11-17 19:10:15 +01:00
iTrooz
fe28a051d5
make MCResolver a dynamic object so it doesnt get deleted before the callback
See https://discord.com/channels/1031648380885147709/1031823065937629267/1307471566166167696
2024-11-17 19:10:15 +01:00
iTrooz
87c9066a2b
run the code in tasks 2024-11-17 19:10:15 +01:00
iTrooz
ea2a2349f8
make splitAddress() const 2024-11-17 19:10:15 +01:00
iTrooz
2f70115be5
add debug print 2024-11-17 19:10:15 +01:00
iTrooz
8fa1dff17d
remove space 2024-11-17 19:10:15 +01:00
iTrooz
99ac11bc40
add my classes to CMakeLists 2024-11-17 19:10:15 +01:00
iTrooz
ee35ac5afd
add method queryStatus() to servers and use it on click 2024-11-17 19:10:15 +01:00
iTrooz
43a54cafef
add my classes 2024-11-17 19:10:15 +01:00
iTrooz
fac521a312
Add dummy UI button 2024-11-17 19:10:15 +01:00
Awqre
3c88eccf17
Merge branch 'PrismLauncher:develop' into develop 2024-11-17 08:19:35 +00:00
TheKodeToad
48235f5b71
Merge pull request #3083 from Trial97/fix_resource_search
Fix resource search
2024-11-15 23:09:28 +00:00
timoreo
736ecf266d
Merge pull request #3019 from Trial97/task_parent
fixed double deletion for tasks
2024-11-15 06:19:40 +01:00
timoreo
b2a37452be
Merge pull request #3024 from Trial97/leak
fix leak on resource search
2024-11-15 06:18:33 +01:00
timoreo
54f2e75b9d
Merge pull request #3070 from TheKodeToad/general-scrollbar
Add scrollbar to Settings -> Launcher -> Features
2024-11-15 06:16:54 +01:00
timoreo
f7620a43aa
Merge pull request #3094 from Trial97/remove_resource_warning
Fix warnings regarding Resource static cast
2024-11-15 06:15:55 +01:00
timoreo
bcbe5da87f
Merge pull request #3096 from Trial97/dangling_file
Fix file remaingin open after program closure
2024-11-15 06:14:25 +01:00
Alexandru Ionut Tripon
e735ea7e63
Merge pull request #3003 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-11-14 22:50:53 +02:00
Trial97
ce61ed2f86 Fix file remaingin open after program closure
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-14 13:27:16 +02:00
Trial97
172e43cd3f Fix warnings regarding Resource static cast
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-13 23:11:33 +02:00
Awqre
9f0b2bafd8 Further additional even better(er) compression
Truly unprecedented levels of optimization we're reaching here. (OxiPNG/ZopfliPNG/ECT/DeflOpt)

Signed-off-by: Awqre <32497511+Awqre@users.noreply.github.com>
2024-11-13 14:31:20 -05:00
txtsd
03b34e39f8
feat: Compression script with compressed images
Also modified genicons.sh

Signed-off-by: txtsd <code@ihavea.quest>
2024-11-13 19:04:31 +05:30
Awqre
885fc66c14 Lossless image compression
Applied lossless zopfli/ect/deflopt compression to PNG files including ones contained in ICO files.

Repacked ICO files with optidash icopack

Signed-off-by: Awqre <32497511+Awqre@users.noreply.github.com>
2024-11-12 20:17:17 -05:00
github-actions[bot]
f41380d91c chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/3342559a24e85fc164b295c3444e8a139924675b?narHash=sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj%2BrL8sRQsSM%3D' (2024-03-11)
  → 'github:numtide/nix-filter/776e68c1d014c3adde193a18db9d738458cd2ba4?narHash=sha256-SCHiL%2B1f7q9TAnxpasriP6fMarWE5H43t25F5/9e28I%3D' (2024-10-29)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0?narHash=sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c%2BcHUJwA%3D' (2024-10-18)
  → 'github:NixOS/nixpkgs/4aa36568d413aca0ea84a1684d2d46f55dbabad7?narHash=sha256-Zwl8YgTVJTEum%2BL%2B0zVAWvXAGbWAuXHax3KzuejaDyo%3D' (2024-11-05)
2024-11-10 00:24:54 +00:00
Trial97
66883db645 Fix removed signal handler for filter resource
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-09 23:30:04 +02:00
Tayou
df45e5518f
Merge pull request #3081 from Trial97/fix_markdown
fix CONTRIBUTING.md formating
2024-11-09 22:19:41 +01:00
Trial97
4c8c6e543e fix contrributing
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-08 00:18:12 +02:00
Alexandru Ionut Tripon
1d9508c268
Merge pull request #3074 from Trial97/lock
Close the window using the invokeMethod to not block
2024-11-07 23:45:44 +02:00
Alexandru Ionut Tripon
7d03cb114d
Merge pull request #3031 from Trial97/lambda
do not capture by default all values in lambdas
2024-11-07 23:45:31 +02:00
Tayou
2fcf03ead3
Merge pull request #3036 from Trial97/typo4 2024-11-07 17:30:47 +01:00
TheKodeToad
012bbca197
JavaSettingsWidget -> JavaWizardWidget
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-11-07 14:51:43 +00:00
TheKodeToad
8132828ad7
Phrasing fix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-11-07 13:36:33 +00:00
Trial97
9601fbf2d5
Close the window using the invokeMethod to not block
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-07 15:07:17 +02:00
TheKodeToad
6e55239cec
Merge pull request #3073 from TheKodeToad/fix-formatting-guidelines-oversight
Fix formatting oversight
2024-11-07 13:01:15 +00:00
TheKodeToad
900235642c
Fix formatting oversight
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-11-07 12:16:22 +00:00
TheKodeToad
f667f56fb7
Merge pull request #3067 from TheKodeToad/updated-formatting-guidelines
Updated formatting guidelines
2024-11-07 11:43:12 +00:00
TheKodeToad
e06b3e7a7a
Implement open global settings
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-11-07 00:47:32 +00:00
TheKodeToad
223b6b3b2b
Fix non-Linux build
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-11-07 00:22:22 +00:00
TheKodeToad
71e55f8829
Add scrollbar to Settings -> Launcher -> Features
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-11-07 00:11:27 +00:00
TheKodeToad
e6d4e5d78d
Unify instance and global settings pt.1
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-11-06 23:46:30 +00:00
TheKodeToad
8ecc21c093
Make Ryex's suggested change
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-11-06 22:12:22 +00:00
Sefa Eyeoglu
0a80da28fa
chore: update Nix readme
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2024-11-06 19:29:57 +01:00
TheKodeToad
b67d400f60
Update formatting guidelines
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-11-06 16:27:03 +00:00
timoreo
1ab10bdd84
Merge pull request #3060 from Ryex/ci/bump_linux_qt
ci: bump linux qt version
2024-11-05 11:25:27 +01:00
Rachel Powers
ba6743d134
ci: libxcb-curcsor_dev ?
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-11-05 01:30:55 -07:00
Rachel Powers
d63a336411
ci: bump linux qt version
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-11-05 01:10:38 -07:00
Alexandru Ionut Tripon
4a92573235
Merge pull request #3042 from Trial97/isportable
use isPortable to determine if the MSAStep should check for url handler
2024-11-03 11:55:55 +02:00
Alexandru Ionut Tripon
db3d796275
Merge pull request #3045 from Trial97/ask_retry3
disable retry for modrinth currentVersions API
2024-11-03 11:55:37 +02:00
Trial97
6f2f3c2d3b
disable retry for modrinth currentVersions API
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-01 17:34:29 +02:00
Trial97
f77f0207f7
fix the flame loaders match
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-01 14:30:47 +02:00
Trial97
99cfb62370
use isPortable to determine if the MSAStep should check for url handler
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-01 11:03:47 +02:00
Trial97
2b590f24ed
remove task parent from constuctor
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-11-01 00:11:45 +02:00
Trial97
670c932f32 Fix installed typo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-31 14:51:18 +02:00
TheKodeToad
ba07a136dc
Merge pull request #3035 from PrismLauncher/remove-BasicFolderLoadTask
Remove BasicFolderLoadTask
2024-10-31 09:17:27 +00:00
TheKodeToad
9ae16921bc
Remove BasicFolderLoadTask
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-30 21:10:43 +00:00
Tayou
887e4a964a
Merge pull request #3010 from Trial97/lock3 2024-10-30 21:56:17 +01:00
seth
8faff9ac6a
Merge pull request #3030 from Trial97/sys 2024-10-30 15:16:38 -04:00
Trial97
0e80aae1b8
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into lambda 2024-10-30 19:35:25 +02:00
TheKodeToad
c142d38f08
Merge pull request #1588 from TheKodeToad/resource-meta
Implement tracking and updates for files other than mods
2024-10-30 17:03:54 +00:00
Trial97
82bffabb69
do not capture by default all values in lambdas
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-30 18:16:43 +02:00
Trial97
14c95b9d37
fix macos system detection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-30 17:15:42 +02:00
Alexandru Ionut Tripon
b7598c6a41
Merge pull request #2331 from michaeltyson/develop
Support for launching from command line in offline mode
2024-10-30 09:49:33 +02:00
Michael Tyson
ced2f9d1a0 Applied clang formatting
Signed-off-by: Michael Tyson <michael@atastypixel.com>
2024-10-30 12:51:34 +11:00
Michael Tyson
5661444414 Removed “--name” flag in favour of specifying offline player name via “--offline” flag
Signed-off-by: Michael Tyson <michael@atastypixel.com>
2024-10-30 12:37:14 +11:00
Michael Tyson
afa1e0599a Improved formatting
Signed-off-by: Michael Tyson <michael@atastypixel.com>
2024-10-30 12:34:33 +11:00
Michael Tyson
43e4481b70 Support for launching from command line in offline mode
This allows launching an offline instance with --offline --name=OfflineName. This is useful for playing split screen by creating two side-by-side instances, which is impossible online, unless one is using two separate paid accounts.

With this PR, it makes it possible to launch from a script - otherwise, one has to launch manually, which is a pain, or create offline profiles for each instance, which interferes with some functionality like skins (my autistic son takes great issue with his skin not being visible, when using offline profiles!).

Implementation is based on MultiMC, which supports this feature.

See also https://github.com/PrismLauncher/PrismLauncher/issues/1059 for discussion.

Signed-off-by: Michael Tyson <michael@atastypixel.com>
2024-10-30 12:30:20 +11:00
Tayou
65b0fdf08d
Merge pull request #3027 from benthetechguy/metadata 2024-10-29 23:06:01 +01:00
Ben Westover
f6511c601e
Fix some typos
Signed-off-by: Ben Westover <me@benthetechguy.net>
2024-10-29 20:45:10 +00:00
Ben Westover
fd109c4740
Shorten metainfo.xml app summary
Signed-off-by: Ben Westover <me@benthetechguy.net>
2024-10-29 20:45:06 +00:00
TheKodeToad
2368521a9a
Add missing semicolon
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-29 17:54:03 +00:00
TheKodeToad
d49e6187cd
Make requested changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-29 17:17:51 +00:00
TheKodeToad
c1c198b84b
Combine if statements
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-29 15:45:30 +00:00
TheKodeToad
e7ff3146fe
Merge pull request #1953 from Trial97/account2
Auto reauthenticate account if expired
2024-10-29 14:08:50 +00:00
Trial97
8e7d84d05b
fix leak on resource search
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-29 00:40:13 +02:00
TheKodeToad
d157159106
Fix license headers and formatting
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 22:29:43 +00:00
TheKodeToad
bd8b30c606
Implement link for InfoFrame::updateWithResource
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 22:17:16 +00:00
TheKodeToad
f56a8feade
Merge pull request #2986 from Trial97/bump_10.x
bump develop to 10
2024-10-28 21:12:53 +00:00
TheKodeToad
f3cae427f1
Fix tests (make them green)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 21:09:45 +00:00
Alexandru Ionut Tripon
51b7abec24
Merge pull request #3005 from Trial97/installed
add installed text to version select
2024-10-28 22:55:40 +02:00
Alexandru Ionut Tripon
d90ed89a30
Merge pull request #2989 from Trial97/what
add extra protection against empty download link
2024-10-28 22:55:21 +02:00
TheKodeToad
ad1d5ddcdf
Revert unwise refactor
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 20:42:59 +00:00
Alexandru Ionut Tripon
2dee936246
Merge pull request #2837 from Trial97/translate_standeard_butons
translate standard buttons
2024-10-28 22:31:47 +02:00
Alexandru Ionut Tripon
a0a74612e1
Merge pull request #1894 from Trial97/maximize
Fixed the maximized option on the newer Minecraft versions
2024-10-28 22:30:09 +02:00
Alexandru Ionut Tripon
fbd3aa36c4
Merge pull request #3006 from Trial97/relase_type
add release_type filer for mod/modpacks
2024-10-28 22:29:38 +02:00
Trial97
94f65f8727
add qassert
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 22:27:40 +02:00
TheKodeToad
2b22a1aebe
Reimplement View Homepage
I removed it for some reason, but now it's back for all pages!

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 20:14:56 +00:00
TheKodeToad
354a0ed46e
Fix column sizes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 18:01:01 +00:00
Trial97
9cdda4377b
remove message box
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 19:19:06 +02:00
TheKodeToad
49044e23de
Fix Export List placement
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 16:21:00 +00:00
TheKodeToad
f57ca1e79e
Add Change Version action to all pages
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 16:07:41 +00:00
Trial97
0f42f3cc5c
Added warning regarding maximized option
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 17:19:18 +02:00
Trial97
81c5866fa9
Made sure that the qt version check is in place
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 17:19:18 +02:00
Trial97
1be29076ea
When java disappoints try C++
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 17:19:18 +02:00
Trial97
3c17f606ed
Patched the maximized option on the newer Minecraft versions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 17:19:18 +02:00
Trial97
09a118e85e
expand env from wrapped cmd
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 16:23:33 +02:00
Trial97
c12beb43a0
correctly expand env vars
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 16:23:33 +02:00
Trial97
08f5148a9a
Added mouse interactions for labels in ProgressDialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 16:22:52 +02:00
Trial97
14ad720c58
fix conflict
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 16:21:40 +02:00
Trial97
0ee5665c95
Revert "Removed auto reauthenticate"
This reverts commit 400b518bc21b8a56131384fd4a56988d31bceb9f.

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 16:21:39 +02:00
Trial97
bd82737efb
translate standard buttons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 15:46:47 +02:00
Trial97
f75e049675
add release_type filer for mod/modpacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 15:36:47 +02:00
Tayou
1f8ce9eb92
Merge pull request #3002 from Trial97/typo2 2024-10-28 14:19:53 +01:00
Alexandru Ionut Tripon
d4bf61da50
Merge pull request #3007 from Trial97/open_source
add open source filter
2024-10-28 15:04:33 +02:00
Tayou
33754db9b9
Merge pull request #3009 from Trial97/order 2024-10-28 14:04:20 +01:00
TheKodeToad
1809858fc7
Ignore .index in ExportPackDialog
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 11:01:30 +00:00
Trial97
0cafac84ac
replace currentData with itemData on QComboBox::currentIndexChanged slots
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 12:54:21 +02:00
Trial97
9eb1ce3ad7
replace unzipping with unpacking
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-28 12:39:26 +02:00
TheKodeToad
6a6fe60a5b
Revert "Use non-mod metadata in ModrinthPackExportTask"
Out-of-scope

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-28 10:29:49 +00:00
Alexandru Ionut Tripon
6338e2b362
Update launcher/ui/widgets/ModFilterWidget.ui
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-10-28 00:34:41 +02:00
txtsd
b1113f4293
Merge pull request #3008 from Trial97/about
change contributors name
2024-10-28 01:01:43 +05:30
Trial97
c4cd7cf6c1
change ZekeZ name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-27 13:17:58 +02:00
Trial97
11d4d948aa
lock m_instanceExtras
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-27 12:36:14 +02:00
Trial97
61448a61ea
swap search with filter button for modpacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-27 12:06:45 +02:00
Trial97
f373a5cea0
change contributors name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-27 11:58:34 +02:00
Trial97
935b2e8fb2
add open source filter
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-27 11:56:48 +02:00
Trial97
b1c8ab9350
add installed text to version select
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-27 10:56:14 +02:00
Trial97
b593ff09e9
fix #3001
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-27 03:05:56 +02:00
Trial97
44894a29b1
rename snake_case to camelCase
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-27 03:05:30 +02:00
Trial97
685d3c79ac
fix unzipping typo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-27 03:02:13 +03:00
TheKodeToad
b66d6b2812
Unhardcode PREFIXES
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-26 13:24:03 +01:00
seth
5b8ea89092
Merge pull request #2992 from getchoo-contrib/nix/sync 2024-10-25 20:56:44 -04:00
TheKodeToad
13e13ea8fc
Use non-mod metadata in ModrinthPackExportTask
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-25 19:13:41 +01:00
seth
63b10738b2
chore(nix): use self for version
Signed-off-by: seth <getchoo@tuta.io>
2024-10-25 02:35:53 -04:00
seth
a5c554cf6e
chore(nix): sync with nixpkgs
Signed-off-by: seth <getchoo@tuta.io>
2024-10-25 02:35:53 -04:00
seth
6a2ed4a631
Merge pull request #2982 from TheKodeToad/launcher-level-autoinstalljava
Use Launcher log level in AutoInstallJava
2024-10-25 02:23:02 -04:00
seth
b7152e7010
Merge pull request #2963 from PrismLauncher/renovate/actions-cache-4.x
chore(deps): update actions/cache action to v4.1.2
2024-10-25 02:22:12 -04:00
seth
d766de5fbf
Merge pull request #2980 from Arcitec/flatpak-enhancements
fix: bring back Flathub manifest improvements to the repo
2024-10-25 02:19:09 -04:00
Trial97
8daa1219a5
add extra protection against empty download link
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-25 01:13:05 +03:00
Trial97
3bc40120cd
bump develop to 10
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-25 00:17:34 +03:00
Arcitec
4ce025c0a2 fix: bring back Flathub manifest improvements to the repo
- Brings back all manifest improvements, such as the incredibly important Mojang Java Downloader (without it, the Flatpak doesn't work), and important fixes for Wayland.

Signed-off-by: Arcitec <38923130+Arcitec@users.noreply.github.com>
2024-10-24 17:36:45 +02:00
TheKodeToad
d8702e1357
Use Launcher log level in AutoInstallJava
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-24 12:46:01 +01:00
TheKodeToad
9fe81ff564
Merge pull request #2975 from Ryex/fix/version-page-load-speed
fix: don't hang the ui for a full version load
2024-10-24 11:24:35 +01:00
TheKodeToad
5eff9b0934
Fix column crashes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-24 01:23:11 +01:00
TheKodeToad
8e586c883c
Fix Modrinth update crashing
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-24 01:16:06 +01:00
Rachel Powers
7bd04ae928
fix don't hang the ui for a full version load
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-10-23 16:23:10 -07:00
TheKodeToad
4a7d624e9b
Merge pull request #2972 from TheKodeToad/fix-clean-env
Fix launching Minecraft in portable Linux
2024-10-23 22:30:42 +01:00
TheKodeToad
92a906e0d4
Move everything in CheckUpdateTask::Update
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-23 14:58:52 +01:00
TheKodeToad
24cecf7b63
Fix compile
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-23 14:42:54 +01:00
TheKodeToad
89a327d363
Merge remote-tracking branch 'upstream/develop' into resource-meta
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-23 14:19:07 +01:00
TheKodeToad
e7cd8fe078
Fix CleanEnviroment()'s usage of stripVariableEntries
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-23 13:44:39 +01:00
Kaiyang Wu
3d82bc37af
javautils: add a filter for detecting Java paths on AOSC OS
Signed-off-by: Kaiyang Wu <origincode@aosc.io>
2024-10-22 11:58:00 -07:00
TheKodeToad
f13e875f0d
Try to fix ModrinthCheckUpdate (not working)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-22 18:46:10 +01:00
Alexandru Ionut Tripon
79439a0217
Merge pull request #2958 from Trial97/crash_QsaveFile
skip parsing open QSaveFile temprary files as resources
2024-10-22 17:38:32 +03:00
renovate[bot]
210d0d8aa2
chore(deps): update actions/cache action to v4.1.2 2024-10-22 13:48:29 +00:00
Trial97
836aebc0d9
fix small leak
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-22 13:43:16 +03:00
Trial97
73d33f93b3
Replaced QSet with QHash
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-22 09:41:00 +03:00
Trial97
562c301326
skip QSaveFile temprary files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-22 01:22:31 +03:00
Alexandru Ionut Tripon
a43ebefc97
Merge pull request #2954 from Trial97/skin_warn
do not try to import skin if path is empty
2024-10-22 00:14:16 +03:00
Alexandru Ionut Tripon
69028969f1
Update launcher/ui/dialogs/skins/SkinManageDialog.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-10-21 22:59:51 +03:00
Alexandru Ionut Tripon
671d5270eb
Merge pull request #2953 from TheKodeToad/portable-fix
Fix removing portable.txt on Linux portable build
2024-10-21 22:44:44 +03:00
Trial97
9a5b773e69
do not try to import skin if path is empty
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-21 19:28:34 +03:00
TheKodeToad
f3f4c44620
Fix removing portable.txt on Linux portable build
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-21 16:30:08 +01:00
TheKodeToad
b049e92697
Merge pull request #2947 from Trial97/fix_initial_setup
do not require java if auto-download is enabled
2024-10-21 15:57:47 +01:00
Tayou
ea703ba26e
Merge pull request #2948 from TheKodeToad/vc-redist-norestart 2024-10-21 16:54:18 +02:00
TheKodeToad
78e24962f9
Fix /norestart
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-21 14:41:48 +01:00
Trial97
fcadbbb739
do not require java if auto-download is enabled
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-21 16:17:48 +03:00
Alexandru Ionut Tripon
a8c3a49cb9
Merge pull request #2938 from Trial97/fix_sparkle
fix sparkle signature
2024-10-21 00:05:57 +03:00
Trial97
0586d38e03
fix sparkle signature
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-20 23:53:23 +03:00
ZekeZ
3ac080806d
Merge pull request #2831 from Trial97/fix_login
split the auth loading screen
2024-10-21 00:14:36 +10:00
seth
38e0e0cb73
Merge pull request #2935 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-10-20 02:11:26 -04:00
github-actions[bot]
0501c1e17a chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5633bcff0c6162b9e4b5f1264264611e950c8ec7?narHash=sha256-9UTxR8eukdg%2BXZeHgxW5hQA9fIKHsKCdOIUycTryeVw%3D' (2024-10-09)
  → 'github:NixOS/nixpkgs/4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0?narHash=sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c%2BcHUJwA%3D' (2024-10-18)
2024-10-20 00:25:22 +00:00
Alexandru Ionut Tripon
417bb3564d
Merge pull request #2933 from getchoo-contrib/flatpak/jdks
Don't bundle JREs in Flatpak
2024-10-19 22:33:05 +03:00
Alexandru Ionut Tripon
e43836a271
Merge pull request #2932 from getchoo-contrib/nix/enable-tests
Enable checks in Nix package
2024-10-19 22:32:59 +03:00
Alexandru Ionut Tripon
9a161a0335
Merge pull request #2930 from Trial97/fixes
Fix tests segfault
2024-10-19 22:32:51 +03:00
Trial97
2d234b127b
make sure that tests are only disabled fro cmark
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-19 22:07:31 +03:00
Rachel Powers
464c7c1d4d
Merge pull request #2929 from Trial97/https
Replace http with https on skins
2024-10-19 12:00:52 -07:00
Trial97
2030041fcc
Fix tests segfault
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-19 21:42:14 +03:00
seth
01721b593b
fix(flatpak): run tests for launcher
Signed-off-by: seth <getchoo@tuta.io>
2024-10-19 12:40:15 -04:00
seth
0bae14999f
chore(flatpak): don't bundle JREs
After https://github.com/PrismLauncher/PrismLauncher/pull/2069, JREs can
be managed at runtime. This is great for the Flatpak, as previously
*all* JREs had to be installed and could not be updated independently of
the launcher's Flatpak. It also makes using unsupported Java versions
easier as the launcher can download any version in the sandbox

We don't need to include these anymore

Signed-off-by: seth <getchoo@tuta.io>
2024-10-19 12:40:15 -04:00
seth
522d105dbe
fix(nix): enable checks
Signed-off-by: seth <getchoo@tuta.io>
2024-10-19 12:32:36 -04:00
Trial97
7519c63f2e
Replace http with https on skins
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-19 01:11:27 +03:00
timoreo
f60d6e4d48
Merge pull request #2917 from Trial97/asan_log
fix heap-use-after-free in modrinth creation task
2024-10-18 12:09:24 +02:00
Alexandru Ionut Tripon
43eb27b695
Merge pull request #2916 from Ryex/fix/progress_dialog_use_after_free
fix: ensure all connections to the ProgressDialogs's Task the dialog made are disconnected
2024-10-15 08:59:12 +03:00
Trial97
ac13579b99
fix heap-use-after-free in modrinth creation task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-14 11:10:54 +03:00
Rachel Powers
a108b5b420
fix: ensure all connections to the ProgressDialogs's Task the dialog made are dissconnected
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-10-14 00:45:45 -07:00
Alexandru Ionut Tripon
f239f4c17c
Merge pull request #2914 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-10-13 22:46:00 +03:00
Alexandru Ionut Tripon
5685bc3407
Merge pull request #2913 from archessmn/fix/custom-command-tab-order
Fix tab order on custom command inputs
2024-10-13 09:49:13 +03:00
Alexandru Ionut Tripon
bd01c47dc9
Merge pull request #2906 from TheKodeToad/no-recursive-remove-on-update
Prevent directories from being removed on instance update
2024-10-13 09:48:27 +03:00
github-actions[bot]
3c836ece71 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/bc947f541ae55e999ffdb4013441347d83b00feb?narHash=sha256-NOiTvBbRLIOe5F6RbHaAh6%2B%2BBNjsb149fGZd1T4%2BKBg%3D' (2024-10-04)
  → 'github:NixOS/nixpkgs/5633bcff0c6162b9e4b5f1264264611e950c8ec7?narHash=sha256-9UTxR8eukdg%2BXZeHgxW5hQA9fIKHsKCdOIUycTryeVw%3D' (2024-10-09)
2024-10-13 00:24:52 +00:00
Mia Moir
3a1c06de02
fix: Tab order on custom command inputs
The tab order on the custom command UI in the instance settings is off, it goes 0 -> 2 -> 1, This re-orders the ui file to fix the order the inputs are in.

Signed-off-by: Mia Moir <63592337+archessmn@users.noreply.github.com>
2024-10-12 23:47:58 +01:00
Alexandru Ionut Tripon
ef0cb88dd3
Merge pull request #2907 from Ryex/fix/icon_cache_stack_overflow
Prevent infinite recursion when mod icon load fails
2024-10-12 12:21:09 +03:00
Alexandru Ionut Tripon
0b624a43d6
Merge pull request #2908 from Trial97/remove_client
remove client overrides instead of double deleting the normal ones
2024-10-12 00:49:57 +03:00
Trial97
97f4ead0fb
remove client overrides instead of double deleting the normal ones
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-12 00:19:54 +03:00
Alexandru Ionut Tripon
78ceae9c17
Merge pull request #2887 from Trial97/filters_modpack
Add filters for modpack search
2024-10-12 00:07:14 +03:00
TheKodeToad
72cfad8fee
Continue deleting before failing
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-11 21:35:13 +01:00
Rachel Powers
09c9da268f
fix: prevent inf recursion when mod icon load fails; cut max pixmapcache to 1/4 previous value
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-10-11 13:26:20 -07:00
TheKodeToad
2bc6ae9756
Prevent directories from being removed on instance update
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-11 19:53:28 +01:00
Tayou
0c4c86c41f
Merge pull request #2900 from TheKodeToad/log-utf8
Use UTF-8 to decode logs on Java 18 or newer
2024-10-11 19:10:55 +02:00
Edgars Cirulis
0beaa94311
ci: uprev qt install action to v4
Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-10-10 15:26:36 +03:00
Edgars Cirulis
b39098dbc5
ci: fix qt-6.8 workflow
Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-10-10 15:26:19 +03:00
Edgars Cirulis
5b6d551650
chore: update Qt to 6.8.0
Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-10-10 03:45:35 +03:00
TheKodeToad
98adcc60a3
Use UTF-8 to decode logs on Java 18 or newer
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-09 17:15:53 +01:00
TheKodeToad
909114bf2a
Change LaunchTask to only accept MinecraftInstance
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-09 15:07:09 +01:00
txtsd
2abbcdfa6f
Merge pull request #2896 from PrismLauncher/renovate/actions-cache-4.x
chore(deps): update actions/cache action to v4.1.1
2024-10-09 13:01:15 +05:30
renovate[bot]
093313e591
chore(deps): update actions/cache action to v4.1.1 2024-10-09 07:14:47 +00:00
Alexandru Ionut Tripon
c72cce6572
Merge pull request #2897 from Trial97/fix_crash
fix crash when no resorce version is available
2024-10-09 08:37:22 +03:00
TheKodeToad
4b66320f63
Move x-prism-launcher to unnamed table for consistency
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-08 22:51:03 +01:00
TheKodeToad
a76f37760c
Fix log spam when opening files from older versions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-08 22:30:50 +01:00
Trial97
d31c947b36
fix crash when no resorce version is available
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-08 22:02:38 +03:00
seth
e2b346fc53
Merge pull request #2888 from PrismLauncher/renovate/actions-cache-4.x
chore(deps): update actions/cache action to v4.1.0
2024-10-08 13:15:05 -04:00
seth
7c45f88769
Merge pull request #2883 from PrismLauncher/renovate/cachix-install-nix-action-30.x
chore(deps): update cachix/install-nix-action action to v30
2024-10-08 13:14:47 -04:00
seth
acd4dceafa
Merge pull request #2890 from arnfaldur/patch-1
Keep libGLU in Flatpak
2024-10-08 13:14:18 -04:00
Trial97
df9f54454a
removed static functions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-08 19:19:03 +03:00
TheKodeToad
538815e033
Merge remote-tracking branch 'upstream/develop' into resource-meta
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-08 17:16:10 +01:00
TheKodeToad
3fae659b30
Merge remote-tracking branch 'upstream/develop' into resource-meta
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-08 17:15:42 +01:00
Trial97
5bd5627a96
extended the modrinth search and applied the suggested change
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-08 15:06:50 +03:00
TheKodeToad
a200fca45c
Merge pull request #2869 from Edgars-Cirulis/patch-1
chore: update Qt to 6.7.3
2024-10-08 12:36:11 +01:00
Alexandru Ionut Tripon
dc1f56e108
Merge pull request #2865 from Ryex/nsis_vc_redist
add vc_redist as a NSIS install section
2024-10-08 14:09:22 +03:00
Trial97
6e5f616ced
move checkMcVersions to Filter struct
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-07 00:21:28 +03:00
Alexandru Ionut Tripon
1eee5c924b
Merge pull request #2891 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-10-06 23:21:16 +03:00
Alexandru Ionut Tripon
999dec18dd
Merge pull request #2893 from PrismLauncher/ftb-private-no-retry
Disable retry for private pack fetch
2024-10-06 23:20:14 +03:00
TheKodeToad
d5990cca43
Disable retry for private pack fetch
This is already handled with a dialog asking whether you want it to be removed.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-10-06 13:51:36 +01:00
github-actions[bot]
03294f0000 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/1925c603f17fc89f4c8f6bf6f631a802ad85d784?narHash=sha256-J%2BPeFKSDV%2BpHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI%3D' (2024-09-26)
  → 'github:NixOS/nixpkgs/bc947f541ae55e999ffdb4013441347d83b00feb?narHash=sha256-NOiTvBbRLIOe5F6RbHaAh6%2B%2BBNjsb149fGZd1T4%2BKBg%3D' (2024-10-04)
2024-10-06 00:24:57 +00:00
arnfaldur
f7bd76c7d4
flatpak: don't cleanup libGLU
The mod AAA Particles (found in the modpack Prominence II RPG) fails to start due to a missing `libGLU.so.1` file.
Removing this cleanup command fixes the issue and makes the modpack run without issue.

I reproduced the issue at the head of the develop branch, with and without the change. No other issue was detected by adding the library, and I could not find the initial justification for removing it.

Signed-off-by: arnfaldur <a.arnaldur+git@gmail.com>
2024-10-05 17:58:53 +00:00
renovate[bot]
cc0c9d208d
chore(deps): update actions/cache action to v4.1.0 2024-10-04 22:22:10 +00:00
Trial97
859fac604b
add modrinth modpack filter
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-04 17:06:47 +03:00
Rachel Powers
a61c93bede
Update .github/workflows/build.yml
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-10-04 07:06:19 -07:00
Rachel Powers
023aa18e85
ci: NSCurl only needed on MSVC
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-10-03 23:14:29 -07:00
Rachel Powers
63172540fb
fix: nisi needs !include "x64.nsh" now. also, there were some broken varible
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-10-03 22:38:30 -07:00
Rachel Powers
bcb1d456d4
fix: version NSCurl plugin in workflow, detect and use arm64 vc_redist for arm64
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-10-03 21:56:19 -07:00
renovate[bot]
010678da53
chore(deps): update cachix/install-nix-action action to v30 2024-10-03 13:46:28 +00:00
Trial97
dfe3cd849d
add curseforge modpack filter
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-02 01:06:45 +03:00
Alexandru Ionut Tripon
44b4262f3c
Merge pull request #2862 from PrismLauncher/renovate/cachix-install-nix-action-29.x
chore(deps): update cachix/install-nix-action action to v29
2024-10-01 14:04:55 +03:00
Alexandru Ionut Tripon
2539aa42da
Merge pull request #2851 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-10-01 14:04:28 +03:00
timoreo
62f19a6ac9
Merge pull request #2863 from Trial97/fix_resource_search_equal 2024-10-01 11:41:11 +02:00
timoreo
c57e26cf57
Merge pull request #2874 from Trial97/modpack_equal 2024-10-01 11:40:42 +02:00
timoreo
1b58645c52
Merge pull request #2857 from Trial97/translation_warnings 2024-10-01 10:20:56 +02:00
Trial97
946e791d39
sync modpack search field
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-01 08:53:27 +03:00
Trial97
5ea2dece54
fix search term not remaining the same between providers on resource download
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-01 08:52:07 +03:00
Trial97
0eefa52dbc
fix some transtaions warnings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-10-01 08:51:06 +03:00
Trial97
b676a67b3c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_login 2024-10-01 08:49:03 +03:00
Alexandru Ionut Tripon
fa92e6bd29
Merge pull request #2859 from Trial97/packwiz_prefix
add prefix to non-standard packwiz fields
2024-10-01 08:23:10 +03:00
renovate[bot]
79be2fc062
chore(deps): update cachix/install-nix-action action to v29 2024-10-01 00:32:42 +00:00
seth
974c89b9c3
Merge pull request #2843 from getchoo-contrib/ci/fix-nix
Fix Nix CI
2024-09-30 20:32:08 -04:00
seth
38fa2e0cd4
style: format with clang-format
Signed-off-by: seth <getchoo@tuta.io>
2024-09-30 16:32:55 -04:00
seth
988ef32019
fix(nix): don't write to files in formatting check
Signed-off-by: seth <getchoo@tuta.io>
2024-09-30 16:32:50 -04:00
seth
bf432b5514
chore(nix): use cachix for binary cache
Signed-off-by: seth <getchoo@tuta.io>
2024-09-30 16:25:58 -04:00
seth
68bf500f7e
chore: add nix reformat to .git-blame-ignore-revs
Signed-off-by: seth <getchoo@tuta.io>
2024-09-30 16:25:58 -04:00
seth
5adca58337
ci: add nix job
Signed-off-by: seth <getchoo@tuta.io>
2024-09-30 16:25:56 -04:00
seth
2663ac5405
build(nix): add debug builds
This will lead to build times on par with our other CI jobs, as now
we're not always building for release

Signed-off-by: seth <getchoo@tuta.io>
2024-09-30 16:18:20 -04:00
seth
732008db20
ci: drop garnix
Signed-off-by: seth <getchoo@tuta.io>
2024-09-30 16:18:17 -04:00
Tayou
a63451212f
Merge pull request #2867 from turret-dev/turret/tmpdir_noexec_jvmarg_noannoy
fix: don't annoy when java tmpdir jvmarg is set & /tmp is noexec
2024-09-29 09:07:25 +02:00
github-actions[bot]
c899043816 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4f807e8940284ad7925ebd0a0993d2a1791acb2f?narHash=sha256-IiA3jfbR7K/B5%2B9byVi9BZGWTD4VSbWe8VLpp9B/iYk%3D' (2024-09-11)
  → 'github:NixOS/nixpkgs/1925c603f17fc89f4c8f6bf6f631a802ad85d784?narHash=sha256-J%2BPeFKSDV%2BpHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI%3D' (2024-09-26)
2024-09-29 00:25:33 +00:00
Rachel Powers
ed15a28eb3
fix : baking the redist into the installer breaks GPL, download at runtime instead
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-09-28 14:58:13 -07:00
Edgars Cīrulis
a897b012d9
chore: update Qt to 6.7.3
Only bug fixes no new / breaking changes 

Signed-off-by: Edgars Cīrulis <edgarsciruliss@gmail.com>
2024-09-28 12:11:25 +03:00
Rachel Powers
00f4221a83
reorg MSVC set(CMAKE_INSTALL_SYSTEM_RUNTIMES_LIBS_SKIP true) call
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-09-27 19:16:50 -07:00
Mason Rocha
b9c19fd3f7
fix: don't annoy when java tmpdir jvmarg is set & /tmp is noexec
Signed-off-by: Mason Rocha <mrocha@turretllc.us>

Got annoyed, didn't want to see it anymore.

Java tmpdir noexec warning modified to include information about
possible remedies available
2024-09-27 16:42:59 -05:00
Rachel Powers
8fa4467a36
use /norestart with redist install
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-09-27 13:29:00 -07:00
Rachel Powers
c5daca3b01
include vc_redist in portable build
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-09-27 00:57:28 -07:00
Rachel Powers
37d3b2a4f6
prevent the unauthorised reditribution of MSVC CRT files
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-09-27 00:49:00 -07:00
Rachel Powers
2dc6f7504b
add vc_redist as a NSIS install section
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-09-27 00:18:35 -07:00
Alexandru Ionut Tripon
b9a6c13d47
Merge pull request #2861 from Cartrigger/FixStringCases
Fix case for Java strings
2024-09-26 20:35:14 +03:00
Cart
6475dc5786 Lots of J's for Java needed to be uppercased 2024-09-26 01:58:21 -04:00
Trial97
1b2e9b95e2
add prefix to non-standard packwiz fields
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-25 21:17:44 +03:00
seth
3e60713257
Merge pull request #2838 from Trial97/view_log
Always display Minecraft log tab
2024-09-24 20:00:54 -04:00
seth
48904c0d66
Merge pull request #2806 from Trial97/technic_client
Add Technic client ID
2024-09-24 19:55:21 -04:00
QazCetelic
f641f3acda Refactoring
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-24 12:32:49 +02:00
QazCetelic
b675406b1a Split set creation into a separate function for readability
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-24 10:16:26 +02:00
QazCetelic
a58e81d744 snake_case to camelCase
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-24 09:58:47 +02:00
Alexandru Ionut Tripon
4a40b53e5f
Merge pull request #2845 from Trial97/typo
fix updater typo
2024-09-22 19:09:40 +03:00
TheKodeToad
4a5749f4d9
Merge pull request #2844 from Trial97/fix_modrith_update
fix folder duplication for modrinth
2024-09-22 11:28:19 +01:00
Trial97
9567d763c1
fix java archive typo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-21 22:17:44 +03:00
Trial97
3e1cf6b2a7
fix updater typo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-20 16:58:22 +03:00
Trial97
1243328876
fix folder duplication for modrinth
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-20 16:53:36 +03:00
Trial97
77463c6d33
display minecraft log before instance run
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-18 21:17:15 +03:00
timoreo
dc67807894
Merge pull request #2825 from Trial97/skin_fix 2024-09-17 08:50:19 +02:00
Alexandru Ionut Tripon
926a6bc72a
Merge pull request #2583 from Trial97/metadata2
Generate updater metadata for mods added/updated using modpack updater/installer
2024-09-17 08:45:09 +03:00
Alexandru Ionut Tripon
d06f0529a0
Merge pull request #2830 from Trial97/login_wizard_retry
Show login dialog again if account login fails
2024-09-17 08:44:41 +03:00
Alexandru Ionut Tripon
53c3d99bdd
Merge pull request #2828 from Trial97/cmake_fields
Allow configuring more URLs through CMake
2024-09-17 08:44:24 +03:00
Alexandru Ionut Tripon
c57b1d4227
Merge pull request #2820 from Trial97/mac_java
Add extra step to macos java install
2024-09-17 08:44:09 +03:00
Tayou
1b00d61587
Merge pull request #2819 from Trial97/java_dir
add open java folder action
2024-09-16 20:41:34 +02:00
Trial97
3ca67cc388
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into metadata2 2024-09-16 20:08:43 +03:00
Trial97
2fd8685894
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into java_dir 2024-09-16 20:08:20 +03:00
Trial97
0af639c20b
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_login 2024-09-16 20:07:18 +03:00
Trial97
7438c71fdd
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into login_wizard_retry 2024-09-16 20:06:50 +03:00
Trial97
b4ecb38ae5
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into cmake_fields 2024-09-16 20:06:18 +03:00
Trial97
f36cfaf878
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_fix 2024-09-16 20:05:44 +03:00
Trial97
aab82705cd
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into mac_java 2024-09-16 20:05:18 +03:00
Alexandru Ionut Tripon
914ae6ead6
Use macOS 14 in CI (#2826)
* chore: fix mac CI build

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>

* try what the error says

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>

* set -DCMAKE_OSX_ARCHITECTURES=x86_64

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>

---------

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-16 13:00:38 -04:00
Trial97
e53a5b3eca
replace TRANSLATIONS_BASE_URL with TRANSLATION_FILES_URL
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-16 17:51:35 +03:00
Alexandru Ionut Tripon
2e537e55de
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-09-16 17:47:58 +03:00
seth
7eac06cad9
Merge pull request #2829 from Trial97/ask_retry2
disable retry for translation files
2024-09-16 10:15:21 -04:00
Alexandru Ionut Tripon
8d14060ad1
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-09-16 16:46:01 +03:00
seth
8faebe320e
Merge pull request #2807 from Trial97/fix_server_launch
fix server launch
2024-09-16 09:42:54 -04:00
Trial97
580fc32518
split the auth loading screen
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-16 16:41:16 +03:00
Alexandru Ionut Tripon
db3c7d01fd
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-09-16 16:36:05 +03:00
seth
160d2962e6
Merge pull request #2827 from Trial97/prefix_option
add Launcher_ prefix to enable java option
2024-09-16 09:30:54 -04:00
Trial97
75756b49c3
reshow login dialog in case account login fails
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-16 16:15:36 +03:00
Trial97
81f30f0360
disable retry for translation files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-16 15:53:54 +03:00
Trial97
ca6b62c773
move some URLs in cmake
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-16 15:51:51 +03:00
Trial97
2c2defb266
add Launcher_ prefix to enable java option
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-16 14:30:23 +03:00
Trial97
d2f0d1d8d5
Wrap FS::write in try catch
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-16 12:42:09 +03:00
Trial97
d38e7fa142
Add more null protection for skin management
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-16 12:41:33 +03:00
QazCetelic
e35faa5522 Feedback I
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-15 09:04:23 +02:00
Alexandru Ionut Tripon
bee59c904a
Merge pull request #2773 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-09-15 08:49:07 +03:00
github-actions[bot]
8932a42644 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c374d94f1536013ca8e92341b540eba4c22f9c62?narHash=sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh%2BaRKoCdaAv5fiO0%3D' (2024-08-21)
  → 'github:NixOS/nixpkgs/4f807e8940284ad7925ebd0a0993d2a1791acb2f?narHash=sha256-IiA3jfbR7K/B5%2B9byVi9BZGWTD4VSbWe8VLpp9B/iYk%3D' (2024-09-11)
2024-09-15 00:24:43 +00:00
Alexandru Ionut Tripon
71dda06276
Merge pull request #5 from QazCetelic/java_dir_disable_alt
Disable folder action instead of hiding it and add additional informa…
2024-09-14 23:27:57 +03:00
QazCetelic
1c6bd74ed8 Disable folder action instead of hiding it and add additional information in the tooltip.
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-14 22:04:18 +02:00
Trial97
0afdce8a31
Add extra step to macos java install
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-14 21:18:20 +03:00
Alexandru Ionut Tripon
6492ad7076
Merge pull request #2813 from Trial97/fix_java_autodetect
fix java autodetect when instance settings are open
2024-09-14 20:19:15 +03:00
Alexandru Ionut Tripon
ad786fb983
Merge pull request #2811 from Trial97/fix_java_abort
fix download java abort being stuck
2024-09-14 20:19:02 +03:00
Alexandru Ionut Tripon
281621cfc0
Merge pull request #2808 from Trial97/fix_java_download_crash
fix java crash on refresh
2024-09-14 20:18:51 +03:00
Trial97
312009513d
add open java folder action
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-14 19:35:43 +03:00
Trial97
5073fc19d4
fix java autodetect when instance settings are open
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-14 00:36:31 +03:00
Alexandru Ionut Tripon
e59f90eca8
Update launcher/ui/pages/global/APIPage.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-09-14 00:19:48 +03:00
Trial97
22ebf7e961
fix download java abort being stuck
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-14 00:13:16 +03:00
Trial97
6706317f20
fix java crash on refresh
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-13 23:26:04 +03:00
Trial97
e18e9b0509
fix server launch
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-13 22:57:08 +03:00
timoreo
f46b73acb5
Merge pull request #2789 from Trial97/fix_concurrent_task
Remove all the slowdown code from CocurrentTask
2024-09-13 21:10:30 +02:00
Trial97
40b10ecf30
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_concurrent_task 2024-09-13 21:38:29 +03:00
Trial97
1db122f1a2
fix typo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-13 21:37:50 +03:00
Trial97
e34ebc1a0d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into metadata2 2024-09-13 21:14:48 +03:00
Alexandru Ionut Tripon
d20f24d96f
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-09-13 21:13:21 +03:00
seth
ef76894587
Merge pull request #2799 from PrismLauncher/renovate/determinatesystems-update-flake-lock-24.x
chore(deps): update determinatesystems/update-flake-lock action to v24
2024-09-13 14:03:42 -04:00
Alexandru Ionut Tripon
f1ef243617
Merge pull request #2803 from Trial97/java_setup
Improve wizzard page
2024-09-13 21:01:02 +03:00
Trial97
973b43ca7a
Add techinc client ID
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-13 20:01:45 +03:00
Trial97
c85294af9d
Improve wizzard page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-13 19:33:24 +03:00
QazCetelic
7b49fd6508 fixes for ci errors IV
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-11 10:07:05 +02:00
QazCetelic
f7f7c4b43e fixes for ci errors III
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-11 09:55:27 +02:00
QazCetelic
506ec64273 fixes for ci errors II
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-11 09:43:45 +02:00
QazCetelic
0a576a0f67 fixes for ci errors
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-11 09:31:16 +02:00
QazCetelic
40c3866f63 clang-tidy formatting
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-11 09:22:28 +02:00
QazCetelic
6b0007291b Added search and support for subdirectories to icon picker
Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-10 22:30:29 +02:00
Alexandru Ionut Tripon
fa68428a90
Merge pull request #2795 from Trial97/fix_mc_launch
Fix launch when no java is loaded
2024-09-10 18:57:09 +03:00
Alexandru Ionut Tripon
b17a688237
Merge pull request #2771 from Kurumi78/develop
Add webp to validIconExtensions
2024-09-10 12:27:02 +03:00
TheKodeToad
e3f78e0205
Merge pull request #2798 from QazCetelic/chronological-screenshot-list
Sort screenshots chronologically in descending order
2024-09-10 09:38:11 +01:00
renovate[bot]
7e49fa0426
chore(deps): update determinatesystems/update-flake-lock action to v24 2024-09-09 19:05:56 +00:00
QazCetelic
e2ef280da9 DCO Remediation Commit for QazCetelic <qaz.cetelic@protonmail.com>
I, QazCetelic <qaz.cetelic@protonmail.com>, hereby add my Signed-off-by to this commit: 7fbf0d3bf3c3821916119a5303d6bc302f954580

Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com>
2024-09-09 16:24:40 +02:00
QazCetelic
7fbf0d3bf3 Sort files chronologically in descending order
Signed-off-by: Qaz <dev@malplena.net>
2024-09-09 15:40:31 +02:00
Trial97
2622d3daa9
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_mc_launch
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-09 08:11:11 +03:00
TheKodeToad
01015a7345
Merge pull request #2547 from Ryex/fix/component-version-resolusion
Component version resolusion on Minecraft version change
2024-09-08 23:44:07 +01:00
Trial97
14fb54afd9
Fix launch when no java is loaded
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-08 09:10:29 +03:00
Alexandru Ionut Tripon
42eedd1afa
Merge pull request #2784 from Trial97/ensure_desktop
ensure that the shortcut destination exists
2024-09-08 08:52:53 +03:00
Rachel Powers
c2a2e95183
fix: Forge and neoforge conflict with quilt, not fabric twice
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-09-07 21:35:01 -07:00
Trial97
c5592a446a
Remove all the slowdown code from CocurrentTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-06 21:47:35 +03:00
Trial97
166207753c
ensure that the shortcut destination exists
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-09-05 09:36:45 +03:00
Kurumi78
4ea7132bdf
Add webp validIconExtensions
Add webp to list of valid file extensions for Icons

Signed-off-by: Kurumi78 <30587387+Kurumi78@users.noreply.github.com>
2024-08-30 02:08:07 -05:00
timoreo
828acef7e9
Merge pull request #2760 from Trial97/mangohid
fix mangohud detection for absolute path
2024-08-29 06:24:09 +02:00
Alexandru Ionut Tripon
685519d12f
Merge pull request #2758 from Edgars-Cirulis/improvements/instanceview-navigation
Improve left and right cursor navigation in Instances
2024-08-26 23:55:03 +03:00
Alexandru Ionut Tripon
74acb483af
Merge pull request #2757 from Trial97/hash_maybe
Add checksum validator to resource download
2024-08-26 23:54:29 +03:00
Alexandru Ionut Tripon
cf12365358
Merge pull request #2755 from Trial97/fix_java_typo
fix java 64 bit condition
2024-08-26 23:49:35 +03:00
Edgars Cirulis
630df29010
feat: Improve left and right cursor navigation in Instances
Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-08-26 22:45:01 +03:00
Trial97
034e2a44ad
update thresholds each time java result changes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-26 17:43:49 +03:00
Trial97
c64b7cd693
fix mangohud detection for absolute path
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-26 09:00:46 +03:00
Trial97
430013737a
add checksum validator
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-26 00:27:23 +03:00
Trial97
d55ebefac3
fix java 64 bit condition
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-25 21:42:40 +03:00
maskers
6a12c43c78 fix off by one error
Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com>
2024-08-25 16:02:32 +03:00
TheKodeToad
43fc9ba932
Confirm Truncate -> Truncation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-08-25 13:05:08 +01:00
TheKodeToad
23c69e7f94
Merge pull request #2018 from Trial97/coremods
Ensure that core mods tab is visible on correct versions
2024-08-25 13:01:27 +01:00
timoreo
70a0a71f10
Merge pull request #2753 from TheKodeToad/modrinth-hashes-parse-fix 2024-08-25 13:34:54 +02:00
TheKodeToad
ff9fa6aa4f
Stop accepting malformed hashes object
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-08-25 11:45:45 +01:00
seth
faf9086705
Merge pull request #2750 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-08-25 05:12:32 -04:00
Trial97
465c9498d4
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into metadata2
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-25 09:50:41 +03:00
Alexandru Ionut Tripon
44f589817f
Merge pull request #2749 from TheKodeToad/theme-bugfixes
Fix system theme detection
2024-08-25 08:58:42 +03:00
Alexandru Ionut Tripon
aa206f4c89
Merge pull request #2748 from TheKodeToad/gentoo-java-perf
Improve Java checking speed by using startsWith for gentoo paths
2024-08-25 08:58:22 +03:00
ZekeZ
1bb7f35ddb
Merge pull request #2751 from Ryex/security/modrith-hash-priority
Prefer stronger hashes from Modrinth
2024-08-25 13:53:04 +10:00
Rachel Powers
5f874330d5
security(modrinth) reorder hash algo priority, prefer stronger hashes.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-08-24 20:24:35 -07:00
github-actions[bot]
96414d7153 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c3aa7b8938b17aebd2deecf7be0636000d62a2b9?narHash=sha256-med8%2B5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c%3D' (2024-08-14)
  → 'github:NixOS/nixpkgs/c374d94f1536013ca8e92341b540eba4c22f9c62?narHash=sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh%2BaRKoCdaAv5fiO0%3D' (2024-08-21)
2024-08-25 00:22:51 +00:00
TheKodeToad
cbdacf81ee
Fix system theme detection
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-08-24 22:50:51 +01:00
TheKodeToad
d2304b6698
Improve Java checking speed by using startsWith for gentoo paths
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-08-24 22:13:18 +01:00
Sefa Eyeoglu
fac28a81ae
Merge pull request #2738 from getchoo/nix-omnibus 2024-08-23 10:08:59 +02:00
Trial97
2a86ceb5d6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into metadata2 2024-08-23 08:34:15 +03:00
Trial97
575cdb043b
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix/component-version-resolusion
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-23 08:29:43 +03:00
Alexandru Ionut Tripon
eae5d70385
Merge pull request #2069 from Trial97/feature/java-downloader
Feature/java downloader
2024-08-23 08:17:15 +03:00
Trial97
92495494ca
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-23 08:16:59 +03:00
Alexandru Ionut Tripon
e4be8f97cd
Merge pull request #2740 from TheKodeToad/themeable-logs
Allow themes to modify log colours
2024-08-23 08:12:34 +03:00
seth
fd14d3e9b0
Merge pull request #2745 from TheKodeToad/fix-java-message
Fix invalid Java path message
2024-08-22 21:33:24 -04:00
seth
11927e9bf2
Merge pull request #2739 from PrismLauncher/renovate/korthout-backport-action-3.x
chore(deps): update korthout/backport-action action to v3.1.0
2024-08-22 21:32:03 -04:00
maskers
762d24bd02 don't mention prism in the middle of the log
Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com>
2024-08-22 21:44:53 +03:00
maskers
a910337e9d
apply suggestion from code review
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: maskers <97827489+maskersss@users.noreply.github.com>
2024-08-22 21:42:05 +03:00
TheKodeToad
89ed85182c
Fix invalid Java path message
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-08-22 19:07:15 +01:00
Trial97
5f64d7dc47
update adoptium icon
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-22 20:38:08 +03:00
Trial97
0b05c7cb07
fix bug with buton not updating corectly for java dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-22 18:59:09 +03:00
Trial97
7d9e47ac18
Change major java column name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-22 18:58:38 +03:00
Trial97
aa3a4585ee
Add icons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-22 18:58:04 +03:00
TheKodeToad
2ad34c724e
Make log colours themeable
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-08-21 22:19:50 +01:00
maskers
6d017b5f0b fix formatting
Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com>
2024-08-21 22:39:27 +03:00
maskers
65f8526152
add a Cancel option
Co-authored-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Signed-off-by: maskers <97827489+maskersss@users.noreply.github.com>
2024-08-21 22:14:11 +03:00
renovate[bot]
7472233033
chore(deps): update korthout/backport-action action to v3.1.0 2024-08-21 17:22:09 +00:00
maskers
99bd4a8937
Apply suggestions from code review
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: maskers <97827489+maskersss@users.noreply.github.com>
2024-08-21 19:42:35 +03:00
maskers
cf914526bf add a warning about the log being too large
Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com>
2024-08-21 15:59:51 +03:00
Trial97
26ae608685
fix initial java dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-21 15:01:42 +03:00
Trial97
da7cc529f0
Enable auto-detect java if java path is not set
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-21 14:54:47 +03:00
seth
99ecab01fc
ci(garnix): explicitly declare systems
as we now create outputs for each system in `lib.systems.flakeExposed`,
we should ensure garnix only builds the systems we officially support

dev shells are also no longer built as they really don't need to be
"built" on the developer's machine in any case; everything should be
cached

Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 04:02:48 -04:00
seth
a49a58bc45
Revert "refactor(nix): nix-filter -> lib.fileset"
This reverts commit 8312713dc2274670db6f9167125af8a27c2fd8a6.

See nix#9428. Path coercion like `"${./.}"` in flakes causes the path to
be copied to the store twice; using the `self` argument works around
this. However, as `lib.fileset` doesn't support using `self`, so we need
to go back to `nix-filter`

Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 04:01:32 -04:00
seth
13eedbb7de
doc(nix): prefer packages output
overlays can cause issues we don't run into upstream, especially when
used on stable channels for example. preferring the pure `packages`
output also encourages the use of our binary cache by users, who
probably don't like building the launcher all too much

Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 04:01:32 -04:00
seth
e29ea4efb0
build(nix): add formatting checks
Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 04:01:32 -04:00
seth
0ae421c265
chore(nix): drop flake-parts
The primary goals here include making the flake easier to contribute to
by having it follow the standard boilerplate, while also limiting the
size of our flake.lock to lower the chance of duplicate inputs for users

Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 04:01:30 -04:00
seth
e85b364748
refactor(nix): use final in overlay
this allows to implictly pass `prismlauncher-unwrapped`
it won't have an effect on our package set as directly inheriting from
the scope we create filters out the extra attributes usually introduced
with a scope

Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 03:49:37 -04:00
seth
271c38bc56
doc(nix): update package names and params
Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 03:49:36 -04:00
seth
7a83d0cea0
ci(nix): drop pre-commit-hooks
Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 03:49:36 -04:00
seth
4c81d8c53d
style(nix): format with nixfmt
Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 03:49:36 -04:00
seth
7dff77ca35
style(nix): alejandra -> nixfmt-rfc-style
Signed-off-by: seth <getchoo@tuta.io>
2024-08-21 03:49:36 -04:00
seth
1edfbeec8d
Merge pull request #2732 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-08-20 22:36:33 -04:00
maskers
858f6aa9b8 fix formatting
Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com>
2024-08-20 22:16:40 +03:00
maskers
e6f30c0ebe fix formatting
Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com>
2024-08-20 22:14:40 +03:00
maskers
014fc14291 truncate logs for mclo.gs upload to fit 25k line limit
Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com>
2024-08-20 21:53:05 +03:00
timoreo
7f594a342e
Merge pull request #2735 from Trial97/force_load_java 2024-08-20 08:04:21 +02:00
Trial97
002fc71b8d
allways load java list on autodetect
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-20 01:18:37 +03:00
Trial97
ca298d1ed5
add automatic java switch on minecraft version switch
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-20 01:08:03 +03:00
Trial97
7a66276838
fix conflicts
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-20 01:07:23 +03:00
Trial97
4d24213aa3
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader 2024-08-20 00:02:14 +03:00
Trial97
23c06f23c3
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix/component-version-resolusion 2024-08-19 22:35:11 +03:00
Alexandru Ionut Tripon
1b756b99bb
Merge pull request #2528 from Trial97/validate_metadata
validate metadata on instance launch
2024-08-19 22:34:13 +03:00
Trial97
38b5ee198a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into validate_metadata 2024-08-18 22:39:46 +03:00
Trial97
6bd8b72f68
fix meta not validating for specific versions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-18 22:38:45 +03:00
Alexandru Ionut Tripon
efac063797
Merge pull request #2729 from Trial97/currentTextChanged
replaced currentTextChanged with currentIndexChanged
2024-08-18 19:00:29 +03:00
TheKodeToad
e9791d6bc1
Merge pull request #2633 from Trial97/refactor_minecraft_update
refactor MinecraftUpdate Task
2024-08-18 11:44:44 +01:00
github-actions[bot]
91d6465d45 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5e0ca22929f3342b19569b21b2f3462f053e497b?narHash=sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI%3D' (2024-08-09)
  → 'github:NixOS/nixpkgs/c3aa7b8938b17aebd2deecf7be0636000d62a2b9?narHash=sha256-med8%2B5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c%3D' (2024-08-14)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/c7012d0c18567c889b948781bc74a501e92275d1?narHash=sha256-qbhjc/NEGaDbyy0ucycubq4N3//gDFFH3DOmp1D3u1Q%3D' (2024-08-09)
  → 'github:cachix/pre-commit-hooks.nix/bfef0ada09e2c8ac55bbcd0831bd0c9d42e651ba?narHash=sha256-yezvUuFiEnCFbGuwj/bQcqg7RykIEqudOy/RBrId0pc%3D' (2024-08-16)
2024-08-18 00:22:22 +00:00
Trial97
b5bbe93775 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-17 00:20:40 +03:00
Trial97
b0cd412926 use index instead of currentIndex function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-16 15:41:31 +03:00
Trial97
e6bc61d6d0 add overload for qt5
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-16 14:44:57 +03:00
Trial97
6de026bfcf replaced currentTextChanged with currentIndexChanged
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-16 14:34:28 +03:00
Sefa Eyeoglu
d6a825dd47
Merge pull request #2707 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2024-08-12 10:40:26 +02:00
Sefa Eyeoglu
3d4be7ac8c
Merge pull request #2669 from PrismLauncher/update_flake_lock_action 2024-08-12 10:40:00 +02:00
Sefa Eyeoglu
af83fc84a7
Merge pull request #2585 from PrismLauncher/renovate/determinatesystems-update-flake-lock-23.x 2024-08-12 10:39:19 +02:00
Alexandru Ionut Tripon
6b07e8e72d
Merge pull request #2718 from cthbleachbit/develop
mangohud support: MangoHud::getLibraryString should return absolute path
2024-08-12 11:26:30 +03:00
Alexandru Ionut Tripon
d2daacf736
Merge pull request #2716 from Trial97/quickPlaySingleplayer
add setting for quickplay singleplayer
2024-08-12 11:25:25 +03:00
github-actions[bot]
96dad63173 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/9227223f6d922fee3c7b190b2cc238a99527bbb7?narHash=sha256-pQMhCCHyQGRzdfAkdJ4cIWiw%2BJNuWsTX7f0ZYSyz0VY%3D' (2024-07-03)
  → 'github:hercules-ci/flake-parts/8471fe90ad337a8074e957b69ca4d0089218391d?narHash=sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC%2Bx4%3D' (2024-08-01)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/7e7c39ea35c5cdd002cd4588b03a3fb9ece6fad9?narHash=sha256-EYekUHJE2gxeo2pM/zM9Wlqw1Uw2XTJXOSAO79ksc4Y%3D' (2024-07-12)
  → 'github:NixOS/nixpkgs/5e0ca22929f3342b19569b21b2f3462f053e497b?narHash=sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI%3D' (2024-08-09)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/8d6a17d0cdf411c55f12602624df6368ad86fac1?narHash=sha256-ni/87oHPZm6Gv0ECYxr1f6uxB0UKBWJ6HvS7lwLU6oY%3D' (2024-07-09)
  → 'github:cachix/pre-commit-hooks.nix/c7012d0c18567c889b948781bc74a501e92275d1?narHash=sha256-qbhjc/NEGaDbyy0ucycubq4N3//gDFFH3DOmp1D3u1Q%3D' (2024-08-09)
2024-08-11 00:22:53 +00:00
Tianhao Chai
c2192cfa98
mangohud support: getLibraryString should return absolute path when possible
Some distros ship MangoHub vulkan layer json with bare shared object name
instead of an absolute path. This breaks environment config as
`MinecraftInstance::createLaunchEnvironment()` seems to require absolute
path of `libMangoHud.so`.

Since we already have `MangoHud::findLibrary()` lying around, use that to
figure out where `libMangoHud.so` really is. In case of a platform that
doesn't support `dlopen()`, fallback to old behavior and return the path
verbatim as it is recorded in vk layer json.

Signed-off-by: Tianhao Chai <cth451@gmail.com>
2024-08-09 14:11:44 -04:00
Trial97
dcca175b36
snake_case to m_camelCase
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-09 11:06:31 +03:00
Trial97
a9c7e95c66
fix widebar action removal
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-08 19:39:32 +03:00
Trial97
c9809fff6d
add setting for quickplay singleplayer
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-08 16:53:26 +03:00
Tayou
b41e730707
Merge pull request #2714 from Kationor/fix-local-installs
Improve Java auto-detection
2024-08-07 18:48:24 +02:00
Kationor
659fa7fbfb
fix/windows: Check registry for per-user java installations
Signed-off-by: Kationor <n96211028@gmail.com>
2024-08-07 18:00:42 +02:00
Sefa Eyeoglu
0215af828d
Merge pull request #2667 from unmojang/evan-goode/nix-sync 2024-08-07 09:18:03 +02:00
Tayou
7a5e4a4293
Merge pull request #2706 from Edgars-Cirulis/develop
Restore connect line for device authorization in MSADeviceCodeStep
2024-08-05 22:08:40 +02:00
renovate[bot]
128827cef5
chore(deps): update hendrikmuhs/ccache-action action to v1.2.14 2024-08-05 20:02:40 +00:00
Edgars Cirulis
ba7391308e
Restore connect line for device authorization in MSADeviceCodeStep
Parent PRs: https://github.com/PrismLauncher/PrismLauncher/pull/2617

Fixes https://github.com/PrismLauncher/PrismLauncher/issues/2705

Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-08-05 22:12:18 +03:00
Alexandru Ionut Tripon
0308710211
Merge pull request #2639 from Edgars-Cirulis/qt672
chore: update Qt to 6.7.2
2024-08-05 14:06:52 +03:00
Trial97
fe23e76714
fix codeql
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-05 12:04:08 +03:00
Trial97
af65eb17cf
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into metadata2
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-08-05 11:54:58 +03:00
Alexandru Ionut Tripon
9d684dcb82
Merge pull request #2617 from Trial97/clean_net
remove duplicate code from net folder
2024-08-05 10:56:40 +03:00
Alexandru Ionut Tripon
e4967f8d08
Merge pull request #2694 from Trial97/zip_folder_permissions
ensure minimal folder permissions when extracting files
2024-08-05 10:56:06 +03:00
Alexandru Ionut Tripon
5702b8e3c2
Merge pull request #2692 from srcres258/pr
Fix a typo in comment
2024-08-05 10:55:24 +03:00
Alexandru Ionut Tripon
110efb7259
Merge pull request #2627 from Edgars-Cirulis/build-instructions
readme: build instructions
2024-08-05 10:54:47 +03:00
TheKodeToad
b77dc47c6c
Merge pull request #1526 from Trial97/disablemods
feat:Removed update disabled warning
2024-08-03 15:38:46 +01:00
Trial97
ca5df3ea60
ensure minimal folder permissions when extracting files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-30 01:32:46 +03:00
src_resources
61e62dce1b
Fix a typo in comment
Signed-off-by: src_resources <src.res.211@gmail.com>
2024-07-29 21:07:28 +08:00
Trial97
d5c5f5d4fc
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into disablemods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-24 11:47:45 +03:00
Trial97
2c0b17d107
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into metadata2
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-24 11:40:23 +03:00
Trial97
0ac62f9ddf
Recommend java major
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-23 01:41:41 +03:00
Trial97
4928706d8c
Merge branch 'clean_net' of github.com:Trial97/PrismLauncher into clean_net 2024-07-22 22:06:27 +03:00
Trial97
63a380a039
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into clean_net
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-22 22:06:09 +03:00
Alexandru Ionut Tripon
33bf370d17
Update launcher/net/RawHeaderProxy.h
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-07-22 21:51:20 +03:00
Trial97
5d3549a5e9
Add tooltips and fix archive download task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-22 09:18:20 +03:00
Trial97
29a6db171f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader 2024-07-22 08:57:31 +03:00
Evan Goode
ff31e88cf8 nix: sync changes from nixpkgs
Brings in changes from the Prism Launcher derivation(s) in nixpkgs, notably
from https://github.com/NixOS/nixpkgs/pull/321851 and
https://github.com/NixOS/nixpkgs/pull/303880

Signed-off-by: Evan Goode <mail@evangoo.de>
2024-07-21 15:47:38 -04:00
Trial97
91d03b34ac
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into validate_metadata 2024-07-21 02:24:30 +03:00
Alexandru Ionut Tripon
6352362907
Merge pull request #2662 from Edgars-Cirulis/ui
ui: swap timeoutSecondsLabel and numberOfManualRetriesLabel order
2024-07-20 11:39:51 +03:00
Edgars Cirulis
fc2d013402
ui: swap timeoutSecondsLabel and numberOfManualRetriesLabel order
fixes: 7a200a337f08cfa1e32102594958f10cb7f000c6
conflicted with 6078a771c18fd749f38d7c1a2f80ed3c7ec7ad28

Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-07-20 01:55:23 +03:00
Trial97
c666d060fc
fix merge issue
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-19 17:10:04 +03:00
Trial97
cae1fbc171
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix/component-version-resolusion
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-19 15:59:43 +03:00
Alexandru Ionut Tripon
0041d2a126
Merge pull request #2440 from Trial97/fix_retry_dialog
update retry netjob dialog
2024-07-19 15:47:12 +03:00
Alexandru Ionut Tripon
69c55d90ce
Merge pull request #2558 from Trial97/update_filters
Resolve issue with multiple loaders during mod update
2024-07-19 15:46:15 +03:00
Alexandru Ionut Tripon
ddcaf25149
Merge pull request #2650 from Trial97/help-pages
fix a few missing help pages
2024-07-19 15:45:57 +03:00
Alexandru Ionut Tripon
fcdedc795c
Merge pull request #2660 from benthetechguy/typo
Fix a few typos
2024-07-19 08:50:11 +03:00
Ben Westover
fb10cb5fdf
Fix a few typos
As part of packaging Prism Launcher for Debian, I have run a package linter
called lintian which found a few spelling errors throughout the source.

I am not a fan of contributions that only fix cosmetics like spelling errors,
but Debian encourages forwarding this stuff upstream instead of letting it get
fixed naturally over time.

Signed-off-by: Ben Westover <me@benthetechguy.net>
2024-07-18 22:08:18 -04:00
Tayou
dcc58c8b75
Merge pull request #2655 from Ryex/fix/json-parsing-validator-buffer-reset
fix(net/validators): ensure buffers are cleared and reset;
2024-07-18 09:11:29 +02:00
Rachel Powers
cb65f6dfb5
fix(net/validators): ensure buffers are cleared and reset;
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-07-17 23:05:45 -07:00
Alexandru Ionut Tripon
d7579319e0
Merge pull request #2653 from UnownPlain/patch-1
Fix dead link to Modrinth authentication docs
2024-07-18 08:40:59 +03:00
UnownPlain
e6019ab396
Fix dead link to Modrinth authentication docs
Signed-off-by: UnownPlain <38232575+UnownPlain@users.noreply.github.com>
2024-07-17 23:04:52 -04:00
Trial97
6d425717e9
fix a few missing help pages
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-16 14:42:23 +03:00
Sefa Eyeoglu
84263cd94c
Merge pull request #2644 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-07-14 09:31:41 +02:00
github-actions[bot]
303f3303f6 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/9f4128e00b0ae8ec65918efeba59db998750ead6?narHash=sha256-rwz8NJZV%2B387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ%3D' (2024-07-03)
  → 'github:NixOS/nixpkgs/7e7c39ea35c5cdd002cd4588b03a3fb9ece6fad9?narHash=sha256-EYekUHJE2gxeo2pM/zM9Wlqw1Uw2XTJXOSAO79ksc4Y%3D' (2024-07-12)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07?narHash=sha256-F1h%2BXIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4%3D' (2024-06-24)
  → 'github:cachix/pre-commit-hooks.nix/8d6a17d0cdf411c55f12602624df6368ad86fac1?narHash=sha256-ni/87oHPZm6Gv0ECYxr1f6uxB0UKBWJ6HvS7lwLU6oY%3D' (2024-07-09)
2024-07-14 00:22:27 +00:00
Alexandru Ionut Tripon
2df5d4012c
Merge pull request #2635 from Izder456/develop
FIX launcher/java/JavaUtils.cpp to properly autodetect JVM paths on …
2024-07-13 11:16:35 +03:00
Edgars Cirulis
d3ca8864c2
chore: update Qt to 6.7.2
Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-07-12 23:54:22 +03:00
izder456
0a543cb66b FIX launcher/java/JavaUtils.cpp to properly autodetect JVM paths on OpenBSD and FreeBSD
Signed-off-by: izder456 <izder456@disroot.org>
2024-07-11 20:32:04 -05:00
Trial97
b989c5a36c
refactor MinecraftUpdate Task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-10 16:24:31 +03:00
Edgars Cirulis
3076e5b961
remove useless BUILD.md orphaned file
Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-07-09 22:21:13 +03:00
Edgars Cirulis
e5b1fa1e3a
readme: build instructions
Signed-off-by: Edgars Cirulis <edgarsciruliss@gmail.com>
2024-07-09 22:15:52 +03:00
Trial97
061fdc1ada
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into clean_net
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-09 18:36:23 +03:00
Alexandru Ionut Tripon
5f345cedea
Merge pull request #2596 from TayouVR/more-system-themes
Display all system themes in widget theme selector
2024-07-09 12:55:22 +03:00
timoreo
39b4293a62
Merge pull request #1752 from Trial97/fix_duplicate_mod 2024-07-09 10:32:56 +02:00
timoreo
ebd7974fcc
Merge pull request #2416 from Trial97/retry_auth 2024-07-09 09:57:32 +02:00
Trial97
71c7dd1c5d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_duplicate_mod
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-08 21:51:34 +03:00
Alexandru Ionut Tripon
ca2dda5547
Merge pull request #2626 from Trial97/remove_poly
remove some poly mentions from the code
2024-07-08 21:46:39 +03:00
Alexandru Ionut Tripon
aeb7f29a5b
Update launcher/InstanceList.cpp
Co-authored-by: Tayou <git@tayou.org>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-07-08 15:04:27 +03:00
Trial97
fdcd1068f3
remove some poly mentions from the code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-08 14:53:39 +03:00
Alexandru Ionut Tripon
08cab11cfe
Merge pull request #2554 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-07-07 08:01:42 +03:00
github-actions[bot]
e49e2622fc chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8?narHash=sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw%3D' (2024-06-01)
  → 'github:hercules-ci/flake-parts/9227223f6d922fee3c7b190b2cc238a99527bbb7?narHash=sha256-pQMhCCHyQGRzdfAkdJ4cIWiw%2BJNuWsTX7f0ZYSyz0VY%3D' (2024-07-03)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3f84a279f1a6290ce154c5531378acc827836fbb?narHash=sha256-u1fA0DYQYdeG%2B5kDm1bOoGcHtX0rtC7qs2YA2N1X%2B%2BI%3D' (2024-06-13)
  → 'github:NixOS/nixpkgs/9f4128e00b0ae8ec65918efeba59db998750ead6?narHash=sha256-rwz8NJZV%2B387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ%3D' (2024-07-03)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/cc4d466cb1254af050ff7bdf47f6d404a7c646d1?narHash=sha256-7XfBuLULizXjXfBYy/VV%2BSpYMHreNRHk9nKMsm1bgb4%3D' (2024-06-06)
  → 'github:cachix/pre-commit-hooks.nix/0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07?narHash=sha256-F1h%2BXIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4%3D' (2024-06-24)
2024-07-07 00:21:50 +00:00
Trial97
c07260e836
remove duplicate code from net folder
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-07 02:49:27 +03:00
Tayou
330c95e55b
Merge pull request #2612 from Trial97/lib_doc
add docs to Library.cpp
2024-07-06 14:21:28 +02:00
Trial97
a6ae078e7e
add docs to Library.cpp
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-06 09:30:26 +03:00
Trial97
c886111e18
format the code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-06 09:09:54 +03:00
Trial97
a09742a406
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader 2024-07-06 01:07:00 +03:00
Alexandru Ionut Tripon
5973c1c45e
Merge pull request #2607 from Kationor/noupdateprompt
Add ModpackUpdatePromptDisabled setting
2024-07-06 00:49:06 +03:00
Alexandru Ionut Tripon
9596e6fb01
Merge pull request #2609 from Trial97/crash_hash
fix crash with hash task
2024-07-06 00:48:19 +03:00
Trial97
5d8d1c4b90
transform hashFile to lambda
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-04 16:47:27 +03:00
Trial97
1dd21a5e4a
fix crash with hash task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-07-04 16:38:40 +03:00
Kationor
83a5fe1984
Rename setting to SkipModpackUpdatePrompt
Was ModpackUpdatePromptDisabled

Signed-off-by: Kationor <n96211028@gmail.com>
2024-07-03 23:13:39 +02:00
timoreo
219de66783
Merge pull request #2567 from Ryex/feat/ungrouped-group-persist-state 2024-07-03 18:21:54 +02:00
Kationor
9b172278f8
Add ModpackUpdatePromptDisabled setting
When creating an instance of a modpack that's already associated with
another instance, the user gets asked if they want to update that
instance instead. This commit introduces a setting to suppress the
prompt and directly create the new instance.

Signed-off-by: Kationor <n96211028@gmail.com>
2024-07-03 12:43:05 +02:00
Tayou
dbcfefca1b fix system theme
Signed-off-by: Tayou <git@tayou.org>
2024-07-01 23:05:54 +02:00
Tayou
d70be5121c tooltips
Signed-off-by: Tayou <git@tayou.org>
2024-06-30 23:27:45 +02:00
Tayou
4f795eb6ef format
Signed-off-by: Tayou <git@tayou.org>
2024-06-30 22:06:01 +02:00
Trial97
0f311453e1
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-30 22:54:23 +03:00
Tayou
7104f8909d another oop
Signed-off-by: Tayou <git@tayou.org>
2024-06-30 21:52:26 +02:00
Tayou
a184b26a00 #ifdef, not #if... I'm smort
Signed-off-by: Tayou <git@tayou.org>
2024-06-30 21:47:52 +02:00
Trial97
4b4da8e6f6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_retry_dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-30 22:41:49 +03:00
Tayou
f0c9b52055 oop
Signed-off-by: Tayou <git@tayou.org>
2024-06-30 21:41:37 +02:00
Tayou
046e3588af more system themes initial changes
Signed-off-by: Tayou <git@tayou.org>
2024-06-30 21:35:03 +02:00
Alexandru Ionut Tripon
fc445078cd
Merge pull request #2415 from Trial97/configure_timeout
Add config for transfer timeout
2024-06-30 22:26:19 +03:00
Alexandru Ionut Tripon
7ff173d72a
Merge pull request #2173 from Trial97/dependency_removal
Remove dependencies if review mods is rejected
2024-06-30 22:21:38 +03:00
Alexandru Ionut Tripon
aa24d70a24
Merge pull request #2590 from Trial97/env_dir
control Prism data directory via env variable
2024-06-30 20:45:22 +03:00
Alexandru Ionut Tripon
80243ab554
Merge pull request #2588 from Ryex/fix/updater-support-linux-nonportable
Fix linux non portable update
2024-06-30 07:54:05 +03:00
Alexandru Ionut Tripon
5d9f4f9ee7
Merge pull request #2589 from Trial97/portabledatadir2
make sure updater take into consideration UserData
2024-06-30 07:53:54 +03:00
Alexandru Ionut Tripon
de9df31efa
Merge pull request #2592 from Trial97/import_whitespace
trim input from import page
2024-06-30 07:53:39 +03:00
Rachel Powers
8488d11c69
review suggestions + spelling
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 20:34:10 -07:00
Trial97
492c78a570
format the code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-29 20:34:10 -07:00
Rachel Powers
c4cc1cfe4f
Warn about known conflicting modloaders
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 20:34:10 -07:00
Rachel Powers
4ed92a95c2
fix segfaults consistently set component problems
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 20:34:09 -07:00
Rachel Powers
a85d6cb1f2
move resolution into update actions in task.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 20:34:09 -07:00
Trial97
474effe7c7
clang-format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-29 20:34:09 -07:00
Rachel Powers
cf319649f9
fix qt5 lwjgl recommend + spelling
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 20:34:09 -07:00
Rachel Powers
a94a081b9c
add better profile logging properly resolve important dependencies
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 20:34:08 -07:00
Rachel Powers
ce280c2d04
fix misepellings
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 20:34:08 -07:00
Rachel Powers
a791e22853
fix(instance components): resolve instance componants when changing minecraft version
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 20:34:08 -07:00
Rachel Powers
44bf0315ad
feat(components) recomend the correct lwjgl version for the minecraft version
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 20:33:51 -07:00
Trial97
25bae20db4
trim input from import page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-30 00:17:25 +03:00
Trial97
7a0b299be9
control Prism data directory via env variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-29 18:08:28 +03:00
Rachel Powers
ae3e4ed528
fix Build Artifact Checks
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 04:29:19 -07:00
Rachel Powers
b4f5c3d241
Update launcher/updater/prismupdater/PrismUpdater.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 04:21:13 -07:00
Rachel Powers
9d1fffff27
reject zsync file as valid build artifact
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 04:21:13 -07:00
Rachel Powers
41bcfb3c07
Fix #2586
non portable linux update technically works even if not genraly a good idea.

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-29 04:21:06 -07:00
Alexandru Ionut Tripon
e6234b5086
Merge pull request #2504 from Trial97/auth3
update login flow
2024-06-29 14:09:49 +03:00
Trial97
eab53c6e42
make sure updater take into consideration UserData
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-29 14:02:09 +03:00
Trial97
f1a4a1e8ee
increase 'or' font size for login dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-29 08:41:35 +03:00
renovate[bot]
63a458ca0c
Update DeterminateSystems/update-flake-lock action to v23 2024-06-28 21:48:40 +00:00
Alexandru Ionut Tripon
196b2b5a3e
Merge pull request #2580 from Trial97/silent_background_update_check
do not display message that no update is avvailable if the check was …
2024-06-28 23:27:00 +03:00
Trial97
ebad11d34f
made sure const method is respected
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 22:04:11 +03:00
Trial97
06add2b0a8
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into update_filters
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:55:16 +03:00
Trial97
9d903175ab
format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:51:52 +03:00
Trial97
cf220356b1
fixed panic with recursive eventloop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:51:28 +03:00
Trial97
715c99636d
fix offline mode for meta
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:51:28 +03:00
Trial97
0a95b57c0a
moved QEventLoops inside functions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:51:28 +03:00
Trial97
06e1cab41f
force online in case the offline load failed
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:51:28 +03:00
Trial97
2af6902b42
validate metadata on launch
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:51:26 +03:00
Trial97
4f8b20437f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into auth3 2024-06-28 20:49:37 +03:00
Trial97
515baffb8e
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_retry_dialog 2024-06-28 20:48:28 +03:00
Trial97
4ad19cded5
format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:45:54 +03:00
Trial97
0b79abcdcd
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:45:30 +03:00
Trial97
90e756c041
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into coremods 2024-06-28 20:41:48 +03:00
Trial97
ddf1ea014c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_duplicate_mod 2024-06-28 20:39:37 +03:00
Alexandru Ionut Tripon
4aa2e5b85d
Merge pull request #2571 from Trial97/account_refresh
refresh account if it should refresh on instance launch
2024-06-28 20:38:05 +03:00
Trial97
55f740453c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into disablemods 2024-06-28 20:34:59 +03:00
Trial97
72dd3dfba5
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into metadata2
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:30:05 +03:00
Trial97
1021222c95
create mod meta information when importing modrinth pack
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 20:28:52 +03:00
Alexandru Ionut Tripon
2cd0223cff
Merge pull request #2578 from Trial97/clang-format
chore:increment clang-tools version
2024-06-28 19:33:18 +03:00
Trial97
09d258670a
create mod meta information when importing curseforge pack
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 19:26:11 +03:00
Trial97
2c02d02214
do not display message that no update is avvailable if the check was done in the background
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 14:11:27 +03:00
Trial97
bac678a7fc
format files outside launcher
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 12:54:37 +03:00
Trial97
147741e616
increment clang-tools version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-28 12:48:52 +03:00
seth
66e6fc04d3
Merge pull request #2520 from Trial97/metadata 2024-06-28 04:57:39 +00:00
Trial97
9d7c36c2fc
made identty certain if the login ended
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-27 15:35:44 +03:00
Alexandru Ionut Tripon
5928bc30e1
Merge pull request #2572 from Trial97/sdkman_macos
fix sdkman on macos
2024-06-27 13:20:10 +03:00
Alexandru Ionut Tripon
68292aff6c
Merge pull request #2574 from ajerick/develop
fix non-persistent user icon selection in NewInstanceDialog.cpp
2024-06-27 08:38:46 +03:00
seth
3f3351f89e
Merge pull request #1892 from Trial97/change_version
Added mod reinstall dialog
2024-06-27 02:12:00 +00:00
Aiden J Erickson
37388e1d48
fix non-persistent user icon selection in NewInstanceDialog.cpp
Signed-off-by: Aiden J Erickson <aiden.j.erickson@gmail.com>
2024-06-26 20:54:04 -04:00
Trial97
3b473b24d8
fix sdkman on macos
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-26 10:16:27 +03:00
Trial97
b1a86bec34
refresh account if it should refresh on instance launch
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-26 09:51:12 +03:00
Alexandru Ionut Tripon
3aaa36a2bc
Merge pull request #2566 from Trial97/mod_warning
add warnning when user closes the resource download dialog with selec…
2024-06-26 08:17:16 +03:00
Alexandru Ionut Tripon
8e2bb21e23
Merge pull request #2570 from porterporter/patch-1
add ~/Library/Java/JavaVirtualMachines/* to java installation detection
2024-06-26 08:16:37 +03:00
porter milton
2958691857
add ~/Library/Java/JavaVirtualMachines/* to java installation detection
Signed-off-by: porter milton <57007161+porterporter@users.noreply.github.com>
2024-06-25 23:16:26 +00:00
Trial97
7c38edc93d
Apply suggestion from code review
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-25 16:10:05 +03:00
Alexandru Ionut Tripon
555c4a7c59
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-06-25 15:33:11 +03:00
Alexandru Ionut Tripon
4e9e7212a6
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-06-25 15:22:30 +03:00
Alexandru Ionut Tripon
52839774e6
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-06-25 15:19:23 +03:00
Alexandru Ionut Tripon
1a66db78a9
Apply text change suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-06-25 15:17:51 +03:00
Rachel Powers
14b09549e1
feat(instanceList) persist "ungrouped" hidden state
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2024-06-25 01:55:54 -07:00
Trial97
2f88da9de2
add warnning when user closes the resource download dialog with selection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-25 09:50:33 +03:00
Alexandru Ionut Tripon
12db1efd20
Merge pull request #2561 from Trial97/fix_curseforge_logo
fix missing curseforge logo
2024-06-25 00:01:03 +03:00
Tayou
6b1c16b01a
Merge pull request #2562 from Trial97/fix_update_message
fix update message
2024-06-24 22:17:48 +02:00
Alexandru Ionut Tripon
1fcad8d427
Merge pull request #1886 from Trial97/time4
Fixed playtime recording
2024-06-24 23:07:41 +03:00
Trial97
096266c141
fix update message
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-24 21:31:26 +03:00
Trial97
73db320bff
fix missing curseforge logo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-24 21:13:21 +03:00
Trial97
00b83efb9a
fix build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-24 20:12:40 +03:00
Trial97
e57c2180da
Resolve issue with multiple loaders during update
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-24 03:06:10 +03:00
Trial97
bb48d1ec9d
made sure that the retry dialog is not displayed offline
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-24 00:29:21 +03:00
Trial97
c04031ff00
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_retry_dialog 2024-06-23 23:40:12 +03:00
Alexandru Ionut Tripon
98d68bafeb
Merge pull request #2481 from DioEgizio/qt671
chore: update Qt to 6.7.1
2024-06-23 08:41:02 +03:00
seth
92b9f1a3e3
Merge pull request #2515 from Trial97/size_for_skin
force aspect ratio for skin preview
2024-06-22 19:21:59 -04:00
seth
e0063b1ee7
Merge pull request #2429 from Richard-Rogalski/GENTOOweloveyou
[Linux] Auto-detect Gentoo installed JDKs
2024-06-22 19:14:46 -04:00
seth
d8b47f5c8a
Merge pull request #2466 from PrismLauncher/renovate/determinatesystems-update-flake-lock-22.x
chore(deps): update determinatesystems/update-flake-lock action to v22
2024-06-22 19:11:20 -04:00
Alexandru Ionut Tripon
369d7d83f5
Merge pull request #2542 from leia-uwu/perf/async-print-servers
perf: print api servers asynchronously on instance launch
2024-06-23 01:51:53 +03:00
Alexandru Ionut Tripon
5f1d86d91a
Merge pull request #2553 from TayouVR/tr-file-types-in-dialogs
don't translate file types on file save/open, etc. dialogs
2024-06-23 01:51:27 +03:00
Trial97
2ac89c2378
add more states for account refresh fail
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-23 01:49:37 +03:00
Trial97
b0386a4c2f
added better error handling
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-23 00:47:48 +03:00
Trial97
24aa337a64
fixed offline accounts
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-23 00:27:49 +03:00
Trial97
27ee8374e7
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into auth3 2024-06-22 22:54:38 +03:00
Tayou
178bd4a9c3 don't tr() file types on file save/open, etc. dialogs
Signed-off-by: Tayou <git@tayou.org>
2024-06-22 17:28:59 +02:00
leia uwu
c1d0560524
perf: print api servers asynchronously on instance launch
Doing this on the main thread can cause the launcher to freeze for up to
5 seconds when launching an instance on my system
so i moved it to a launch step where it gets all the servers info
asynchronously to print

Signed-off-by: leia uwu <leia@tutamail.com>
2024-06-20 17:58:00 -03:00
Alexandru Ionut Tripon
8014283bf4
Merge pull request #2536 from Trial97/refactor_hash
Refactor hash task
2024-06-18 22:55:32 +03:00
Trial97
888b22b4c7
rename variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-18 22:36:39 +03:00
Sefa Eyeoglu
8607dd46b5
Merge pull request #2361 from Scrumplex/fix/nix/drop-qt5 2024-06-18 21:32:31 +02:00
Trial97
97147f2d24
fix(nix): drop unsupported Qt 5 package
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-18 22:31:41 +03:00
Alexandru Ionut Tripon
5f3d3c3294
Merge pull request #2534 from DioEgizio/dataresourceupdate
fix: update datapack and resourcepack versions
2024-06-18 21:06:31 +03:00
DioEgizio
a63842c727 fix: add more datapack formats and clang-format it
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-06-18 18:05:34 +02:00
Trial97
ac8c7baff2
fix tipo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-18 17:49:07 +03:00
Trial97
9cbdbddb08
made hasing task async
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-18 17:27:17 +03:00
Trial97
766ddc80e3
refactored hassing task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-18 16:51:26 +03:00
Alexandru Ionut Tripon
3f68b68691
Merge pull request #2531 from Trial97/relax_fat
relax fat FS filename restrictions
2024-06-18 12:51:22 +03:00
DioEgizio
c07e791d7f chore: clang-format ResourcePack.cpp
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-06-18 10:17:48 +02:00
Alexandru Ionut Tripon
35e195b397
Merge pull request #2533 from Cartrigger/patch-1
Spelling mistake for Minecraft
2024-06-18 10:59:39 +03:00
DioEgizio
6af52c97c2 fix: update datapack and resourcepack versions
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-06-18 09:47:07 +02:00
Cart
c9827f8085
Spelling mistake
in m_column_names and translated it is Miecraft and not Minecraft

Signed-off-by: Cart <81428538+Cartrigger@users.noreply.github.com>
2024-06-17 23:12:07 -04:00
Trial97
a587de8553
relax fat FS filename restrictions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-17 13:35:23 +03:00
Trial97
2fb3e12492
fix auto java install
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-16 17:54:13 +03:00
Trial97
8d3e6667cd
fix java download tasks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-16 15:09:49 +03:00
Trial97
94fd02a34f
fix java download button
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-16 14:26:19 +03:00
Alexandru Ionut Tripon
fdd302bc11
Merge pull request #2521 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-06-16 09:00:16 +03:00
github-actions[bot]
8dde773486 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d226935fd75012939397c83f6c385e4d6d832288?narHash=sha256-HV97wqUQv9wvptiHCb3Y0/YH0lJ60uZ8FYfEOIzYEqI%3D' (2024-06-07)
  → 'github:nixos/nixpkgs/3f84a279f1a6290ce154c5531378acc827836fbb?narHash=sha256-u1fA0DYQYdeG%2B5kDm1bOoGcHtX0rtC7qs2YA2N1X%2B%2BI%3D' (2024-06-13)
2024-06-16 00:21:16 +00:00
Trial97
bbf52e3549
renamed dialog and button action
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-16 01:59:50 +03:00
Trial97
d0584684f2
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader 2024-06-16 01:17:01 +03:00
Trial97
2108ddcc1d
completly remove metadata on refresh
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-16 01:16:09 +03:00
Trial97
5fbbdb9707
fix merge issues
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-16 00:31:31 +03:00
Trial97
c01f3107a4
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into change_version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-16 00:18:11 +03:00
Alexandru Ionut Tripon
978e96916d
Merge pull request #1728 from Trial97/filters
feat: add more filters to the mod download dialog
2024-06-16 00:05:42 +03:00
Trial97
f1d1c9e22c
forget sort keys
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-15 11:06:20 +03:00
Trial97
a121bfbb15
add size back to texture view
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-15 10:43:21 +03:00
Trial97
98f8bc526d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2024-06-15 10:21:53 +03:00
Trial97
d5fb9f0935
force aspect ratio for skin preview
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-15 10:21:21 +03:00
Trial97
8cdaf5d05f
fix tests
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 23:27:27 +03:00
Trial97
cfdf4a9e1f
Merge branch 'develop' of github.com:Trial97/PrismLauncher into feature/java-downloader 2024-06-14 22:50:20 +03:00
Trial97
1a84dc9bca
no need for extra exist check
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 22:47:42 +03:00
Trial97
b872f88617
do not double rename
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 22:46:39 +03:00
Trial97
d2510b851b
mark files as duplicate
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 22:45:15 +03:00
Trial97
2d51008304
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_duplicate_mod 2024-06-14 21:05:11 +03:00
Alexandru Ionut Tripon
3c4eed13a3
Merge pull request #1829 from Trial97/demo
Fixed demo mode
2024-06-14 18:41:02 +03:00
Trial97
9d16557328
simplify constructor
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 16:40:27 +03:00
Trial97
863ebe421c
randomize server port
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 16:38:41 +03:00
Trial97
52490743b4
revert desktop file creation
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 14:16:23 +03:00
Trial97
164d31dcb1
fix win build take#2
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 13:09:22 +03:00
Trial97
3db4f4dc2b
fix build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 13:00:59 +03:00
Trial97
8db0b5f421
Register mime-type on the fly
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 12:48:37 +03:00
Trial97
f60d0135f7
made login link to open browser
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 12:47:44 +03:00
Trial97
74a86df53c
update the desktop file
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 12:41:37 +03:00
Trial97
1bd4e60e99
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into auth3 2024-06-14 11:23:52 +03:00
Trial97
c35461b314
remove aspect ratio
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 11:23:14 +03:00
Trial97
014721ca10
remove unused import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 11:19:54 +03:00
Trial97
712fbc3a4b
reverse login layout
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-14 11:15:40 +03:00
Alexandru Ionut Tripon
e9d681a088
Merge pull request #2509 from Scrumplex/fix/flatpak/glfw
fix(flatpak): disable docs for glfw
2024-06-14 08:57:50 +03:00
Sefa Eyeoglu
52338f0e88
fix(flatpak): disable docs for glfw
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2024-06-13 19:55:50 +02:00
Trial97
6e8dc6ccc0
add mouse interaction on microsoft link
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-13 19:20:32 +03:00
Alexandru Ionut Tripon
3fc5f56ed6
Merge pull request #2405 from Trial97/fix_missing_manifest
Fix portable if manifest is missing
2024-06-13 19:16:12 +03:00
Alexandru Ionut Tripon
ce5b2c54c5
Merge pull request #2439 from Trial97/fix_vanila_technic
fix vanilla technic modpacks
2024-06-13 19:15:43 +03:00
Trial97
f7c3e08ac8
add prismlauncher to plist
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-13 18:27:37 +03:00
Trial97
7fdc65eda8
add tooltip to url button
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-13 08:51:11 +03:00
Trial97
2b229d7326
increase qr code size
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-13 00:20:16 +03:00
Trial97
80ea67f7cf
finish login dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-13 00:00:08 +03:00
Alexandru Ionut Tripon
a74bebb358
Merge pull request #2499 from Trial97/imgur3
update imgur upload
2024-06-12 23:45:17 +03:00
Trial97
125fb2eaf2
remove png qr code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-12 19:34:58 +03:00
Trial97
5f5296ef5e
update ui once again
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-12 19:34:19 +03:00
Trial97
bbbe7c879e
update callback
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-12 12:35:02 +03:00
Trial97
df142550fe
update Add account question
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-12 11:55:56 +03:00
Trial97
c4a65dd861
update login flow
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-12 00:34:39 +03:00
Tayou
6b1c4981e7
Merge pull request #2498 from LaoshuBaby/patch-1
fix(SkinManageDialog.cpp): typo
2024-06-10 13:21:51 +02:00
Trial97
c1c182fd0c
update imgur upload
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-10 12:38:59 +03:00
快乐的老鼠宝宝
1c1e296960
fix(SkinManageDialog.cpp): typo
Signed-off-by: 快乐的老鼠宝宝 <laoshubaby@protonmail.com>
2024-06-10 17:15:38 +08:00
Alexandru Ionut Tripon
7d418a32e7
Merge pull request #2425 from Trial97/win_char
improve invalid path name
2024-06-10 12:11:21 +03:00
Alexandru Ionut Tripon
93a0277479
Merge pull request #2450 from Trial97/remove_search
remove search button
2024-06-10 10:56:54 +03:00
Trial97
2ffabbdc6d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-10 10:00:52 +03:00
Trial97
11ae169087
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-10 09:34:48 +03:00
Alexandru Ionut Tripon
95e7f36732
Merge pull request #2054 from Trial97/add_configurable_updater_interval
Made updater interval configurable
2024-06-10 09:22:54 +03:00
Trial97
6607c3bfa4
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into disablemods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-10 09:04:09 +03:00
Trial97
3f0fa54fe8
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into retry_auth
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-10 09:03:04 +03:00
Trial97
e63f25c9e4
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_retry_dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-10 09:01:01 +03:00
Alexandru Ionut Tripon
dc39698c48
Merge pull request #1609 from Trial97/skin_selector
Skin management
2024-06-10 08:43:37 +03:00
Alexandru Ionut Tripon
12e04c412b
Merge pull request #1776 from Trial97/resource_size
feat:added size column
2024-06-10 08:42:29 +03:00
Alexandru Ionut Tripon
154f4811c0
Merge pull request #2166 from Trial97/ftb2
Updated ftb app import instance detection
2024-06-10 00:45:22 +03:00
Trial97
29d32f0d9a
Update size order for folders
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-10 00:18:21 +03:00
Trial97
242ddbb7e1
fix size column sorting
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-09 23:53:40 +03:00
Trial97
34e1a5e660
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into resource_size 2024-06-09 22:18:40 +03:00
Trial97
1e0db46728
add a more verbose error message in case user skin import fails
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-09 21:29:56 +03:00
Alexandru Ionut Tripon
6c76ba5163
Merge pull request #1032 from deadmeu/shorten-description
refactor: shorten desktop entry comment field
2024-06-09 20:59:23 +03:00
Trial97
04b2ac2efa
update fail url skin messagebox
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-09 20:48:49 +03:00
Trial97
689b76885c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector 2024-06-09 20:13:09 +03:00
Trial97
6a99312df5
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2024-06-09 19:57:16 +03:00
Trial97
ca369ac2b0
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-09 19:52:37 +03:00
Alexandru Ionut Tripon
9560f9ed98
Merge pull request #2474 from coolguy1842/develop
simple fix for resizing too small causing an index out of range crash
2024-06-09 16:10:57 +03:00
Alexandru Ionut Tripon
d6a03d3f2c
Merge pull request #1554 from Trial97/instance_copy_progress
updated instance copy
2024-06-09 16:05:11 +03:00
Alexandru Ionut Tripon
3af4c94612
Merge pull request #2390 from Trial97/delete_tmp
Delete instaces tmp diectory on startup
2024-06-09 16:03:51 +03:00
Alexandru Ionut Tripon
55b6490530
Merge pull request #1617 from cullvox/components-resource-pack-fix
added functionality for components in resource pack descriptions.
2024-06-09 16:03:19 +03:00
Alexandru Ionut Tripon
7e5db651fd
Merge pull request #1823 from Trial97/refresh_cats
Added button to refresh themes and catpacks
2024-06-09 16:02:26 +03:00
Alexandru Ionut Tripon
6f6ddc00c8
Merge pull request #2486 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-06-09 16:01:15 +03:00
Alexandru Ionut Tripon
0e996270b7
Merge pull request #2055 from Trial97/show_minecraft_version_modrinth
Display minecraft version if not mentioned for modrinth/curse packs
2024-06-09 15:59:24 +03:00
github-actions[bot]
24cf671370 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/6132b0f6e344ce2fe34fc051b72fb46e34f668e0?narHash=sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY%3D' (2024-05-30)
  → 'github:nixos/nixpkgs/d226935fd75012939397c83f6c385e4d6d832288?narHash=sha256-HV97wqUQv9wvptiHCb3Y0/YH0lJ60uZ8FYfEOIzYEqI%3D' (2024-06-07)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/0e8fcc54b842ad8428c9e705cb5994eaf05c26a0?narHash=sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA%3D' (2024-05-20)
  → 'github:cachix/pre-commit-hooks.nix/cc4d466cb1254af050ff7bdf47f6d404a7c646d1?narHash=sha256-7XfBuLULizXjXfBYy/VV%2BSpYMHreNRHk9nKMsm1bgb4%3D' (2024-06-06)
2024-06-09 00:22:00 +00:00
TheKodeToad
3ef5cd20f4
Merge pull request #2428 from Fourmisain/semeru
add detection for IBM Semeru Java runtime and fix x86 detection on 64 bit Windows
2024-06-07 20:17:20 +01:00
DioEgizio
052ee0d71c chore: update Qt to 6.7.1
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-06-07 15:48:19 +02:00
ZekeZ
39b8451130
Merge pull request #2383 from Trial97/scroll_new_instance
Made Custom New Instance scrollable
2024-06-07 16:37:21 +10:00
Trial97
8ff53e47e8
Merge branch 'develop' of github.com:Trial97/PrismLauncher into feature/java-downloader 2024-06-07 00:22:54 +03:00
Alexandru Ionut Tripon
6e5c41fc8e
Merge pull request #2471 from Trial97/replace_auth_ping
replace auth server ping
2024-06-07 00:18:48 +03:00
Alexandru Ionut Tripon
e961cab352
Merge pull request #1409 from Trial97/import_zip
feat: refactored Instance ImportTask
2024-06-07 00:11:37 +03:00
Trial97
b096ee6a0c
fix file permisions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-06 14:12:55 +03:00
coolguy1842
aeb174fc55 DCO Remediation Commit for coolguy1842 <kian.goslett@protonmail.com>
I, coolguy1842 <kian.goslett@protonmail.com>, hereby add my Signed-off-by to this commit: 448ded2387025b11d122d51b0abd907bec0452aa

Signed-off-by: coolguy1842 <kian.goslett@protonmail.com>
2024-06-06 16:58:12 +10:00
coolguy1842
71b2c4b1fd fix formatting
Signed-off-by: coolguy1842 <kian.goslett@protonmail.com>
2024-06-06 16:32:49 +10:00
coolguy1842
448ded2387 simple fix for resizing too small causing an index out of range crash
Signed-off-by: coolguy1842 <coolguy1842.deport391@passfwd.com>
2024-06-06 16:18:47 +10:00
Trial97
b7008d2880
replace auth server ping
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-06-06 00:09:08 +03:00
Trial97
45463dcd75
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip 2024-06-04 11:04:02 +03:00
renovate[bot]
3263a706b4
chore(deps): update determinatesystems/update-flake-lock action to v22 2024-06-03 18:39:15 +00:00
Alexandru Ionut Tripon
080e64faaf
Merge pull request #2346 from SabrePenguin/list-image-append-fix
List image append
2024-06-02 18:53:17 +03:00
Sefa Eyeoglu
a6788a92cf
Merge pull request #2459 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-06-02 08:23:23 +02:00
github-actions[bot]
bbff31bcc0 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/8dc45382d5206bd292f9c2768b8058a8fd8311d9?narHash=sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78%3D' (2024-05-16)
  → 'github:hercules-ci/flake-parts/2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8?narHash=sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw%3D' (2024-06-01)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/47e03a624662ce399e55c45a5f6da698fc72c797?narHash=sha256-9dUxZf8MOqJH3vjbhrz7LH4qTcnRsPSBU1Q50T7q/X8%3D' (2024-05-25)
  → 'github:nixos/nixpkgs/6132b0f6e344ce2fe34fc051b72fb46e34f668e0?narHash=sha256-7R2ZvOnvd9h8fDd65p0JnB7wXfUvreox3xFdYWd1BnY%3D' (2024-05-30)
2024-06-02 00:20:40 +00:00
TheKodeToad
a70aeeea2b
Merge branch 'develop' into list-image-append-fix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-06-01 15:20:21 +01:00
Trial97
83883cadf9
fix qt5 build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-31 19:30:10 +03:00
Trial97
f350918186
force initial size for the Add Instance dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-31 19:03:40 +03:00
Trial97
c9c39b8203
fix double borders
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-31 17:47:39 +03:00
Trial97
f7120a4f6f
Made Custom New Instance scrollable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-31 16:46:46 +03:00
Trial97
f4f0a61bf2
fix vanilla technic modpacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-31 16:15:12 +03:00
Trial97
817ff1ecbd
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into change_version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-31 10:20:48 +03:00
Alexandru Ionut Tripon
2145f9f0ac
Merge pull request #1847 from Trial97/move_export2
Improvements to modlist export
2024-05-31 09:58:32 +03:00
timoreo
7ab8f8ef54
Merge pull request #2423 from Trial97/fix_time3
fix incorrect launch time
2024-05-31 08:17:07 +02:00
timoreo
da76b72800
Merge pull request #2438 from KernelFreeze/develop
Added support for bcachefs
2024-05-31 08:12:28 +02:00
Trial97
2635d7c3be
replaced grid with vertical layout on all add modpack pages
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-31 09:07:51 +03:00
Trial97
d1286bbe90
add some comments
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-30 21:54:32 +03:00
Trial97
eaccdca02d
added error message for import skin from user
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-30 16:21:08 +03:00
Trial97
75fbdc2df5
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector 2024-05-30 14:25:51 +03:00
Trial97
44a16c1ca1
fix CI
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-30 14:20:35 +03:00
Trial97
a7a1b28765
improve invalid path name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-30 13:49:23 +03:00
Trial97
8704cd8402
remove duplicate proggress bar
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-30 11:49:09 +03:00
Trial97
e94243f99b
fix blocked mods api
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-30 09:56:55 +03:00
Trial97
a289e0c849
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_retry_dialog 2024-05-30 09:35:47 +03:00
Trial97
7fed5e9173
Capitalize the mod categories
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-30 08:51:36 +03:00
Trial97
5e36def18b
remove search button
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-30 00:36:02 +03:00
Trial97
469f051e30
remove search button
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-30 00:14:37 +03:00
Alexandru Ionut Tripon
6d60a6f4e3
Merge pull request #3 from TayouVR/filters
fix & clean ResourcePage.ui
2024-05-29 23:58:06 +03:00
Tayou
b8fe93efa3 fix & clean ResourcePage.ui
Qt is cursed.

Signed-off-by: Tayou <git@tayou.org>
2024-05-29 20:00:36 +02:00
Trial97
29444cfe0f
fix win combobox take#2
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-29 17:19:15 +03:00
Trial97
660772d4d7
swap buttons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-29 01:06:11 +03:00
Trial97
b256d325f7
fix win combobox
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-29 01:03:17 +03:00
Alexandru Ionut Tripon
f332503088
Apply suggestions from code review
Co-authored-by: Tayou <git@tayou.org>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-05-29 00:32:17 +03:00
Sefa Eyeoglu
f34c263964
Merge pull request #2441 from PrismLauncher/renovate/korthout-backport-action-3.x 2024-05-28 18:30:14 +02:00
renovate[bot]
4917287292
chore(deps): update korthout/backport-action action to v3 2024-05-28 14:35:10 +00:00
Trial97
5012178a98
trigger search on filter change
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-28 14:48:03 +03:00
Trial97
3f7847ad34
made ResourcePage elements resizable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-28 14:47:44 +03:00
Trial97
4b52c72629
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2024-05-27 22:35:38 +03:00
Trial97
59a8b91274
add spacing to retry modal
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-26 16:28:07 +03:00
Trial97
694ea65457
disable retry dialog for logo fetching
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-26 11:13:01 +03:00
Trial97
7a200a337f
update retry netjob dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-26 11:04:41 +03:00
Sefa Eyeoglu
764463ada7
Merge pull request #2436 from PrismLauncher/update_flake_lock_action 2024-05-26 09:29:18 +02:00
Celeste Peláez
f5f32e2c6e
Reformatted FileSystem.h
Signed-off-by: Celeste Peláez <KernelFreeze@users.noreply.github.com>
2024-05-26 01:40:31 -05:00
Celeste Peláez
a2b5ac73ff
Added support for bcachefs
Signed-off-by: Celeste Peláez <KernelFreeze@users.noreply.github.com>
2024-05-26 01:33:22 -05:00
github-actions[bot]
a8712f7126 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/02923630b89aa1ab36ef8e422501a6f4fd4b2016?narHash=sha256-OhysviwHQz4p2HZL4g7XGMLoUbWMjkMr/ogaR3VUYNA%3D' (2024-05-18)
  → 'github:nixos/nixpkgs/47e03a624662ce399e55c45a5f6da698fc72c797?narHash=sha256-9dUxZf8MOqJH3vjbhrz7LH4qTcnRsPSBU1Q50T7q/X8%3D' (2024-05-25)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/fa606cccd7b0ccebe2880051208e4a0f61bfc8c1?narHash=sha256-nacSOeXtUEM77Gn0G4bTdEOeFIrkCBXiyyFZtdGwuH0%3D' (2024-05-16)
  → 'github:cachix/pre-commit-hooks.nix/0e8fcc54b842ad8428c9e705cb5994eaf05c26a0?narHash=sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA%3D' (2024-05-20)
2024-05-26 00:20:28 +00:00
Trial97
eacd7758e9
fix pre-commit hook
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-22 22:49:28 +03:00
Trial97
2b949a8059
improve login account checking
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-22 10:53:24 +03:00
Richard-Rogalski
399071c717 Fix Java auto-detect so it finds Gentoo installed JDKs
Signed-off-by: Richard-Rogalski <rrogalski@tutanota.com>
2024-05-21 11:41:47 -05:00
Fourmisain
23095b70a4
please the pre-commit check
Signed-off-by: Fourmisain <8464472+Fourmisain@users.noreply.github.com>
2024-05-21 13:44:00 +02:00
Fourmisain
dbe4adc034
detect IBM Semeru Certified Edition on linux
Signed-off-by: Fourmisain <8464472+Fourmisain@users.noreply.github.com>
2024-05-21 10:51:37 +02:00
Trial97
f6a7fc215a
update java sorting by taking into consideration release time
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-21 08:33:26 +03:00
Fourmisain
af157c1613
fix x86 detection on 64 bit windows
Signed-off-by: Fourmisain <8464472+Fourmisain@users.noreply.github.com>
2024-05-20 23:13:44 +02:00
Fourmisain
08918be11e
add detection for IBM Semeru Java runtime
Signed-off-by: Fourmisain <8464472+Fourmisain@users.noreply.github.com>
2024-05-20 21:44:35 +02:00
Trial97
7a42fb284a
reverse java version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-20 18:33:40 +03:00
Trial97
0e239dfb2a
fix crash on first display with java downloader off
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-20 18:24:19 +03:00
Trial97
abb628edb3
remove OverrideJava
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-20 18:23:43 +03:00
Sefa Eyeoglu
0ecdceccd2
Merge pull request #2426 from Luk-ESC/develop 2024-05-20 17:18:25 +02:00
Lukas Eschbacher
201c4d2cc6 nix: replace mesa-demos with glxinfo
Signed-off-by: Lukas Eschbacher <eschbacher.lukas@gmail.com>
2024-05-20 14:39:24 +02:00
Alexandru Ionut Tripon
529dc7c6b7
Merge pull request #2412 from DioEgizio/update-upstreamflatpak
fix: update bundled flatpak to switch it to Qt 6
2024-05-19 22:54:35 +03:00
Trial97
428889a68d
removed + from bad chars in filenames
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-19 19:38:06 +03:00
Trial97
1b0e8260ac
fix zero launch time
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-19 15:36:39 +03:00
Sefa Eyeoglu
be66a91295
Merge pull request #2418 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-05-19 10:36:16 +02:00
Trial97
425a6e0919
Fix code format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-19 10:09:34 +03:00
Trial97
d9e2badf71
Rename timeout option
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-19 08:54:19 +03:00
github-actions[bot]
d21597cf89 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e?narHash=sha256-yzcRNDoyVP7%2BSCNX0wmuDju1NUCt8Dz9%2BlyUXEI0dbI%3D' (2024-05-02)
  → 'github:hercules-ci/flake-parts/8dc45382d5206bd292f9c2768b8058a8fd8311d9?narHash=sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78%3D' (2024-05-16)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e4e7a43a9db7e22613accfeb1005cca1b2b1ee0d?narHash=sha256-FCi3R1MeS5bVp0M0xTheveP6hhcCYfW/aghSTPebYL4%3D' (2024-05-11)
  → 'github:nixos/nixpkgs/02923630b89aa1ab36ef8e422501a6f4fd4b2016?narHash=sha256-OhysviwHQz4p2HZL4g7XGMLoUbWMjkMr/ogaR3VUYNA%3D' (2024-05-18)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/2849da033884f54822af194400f8dff435ada242?narHash=sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk%3D' (2024-04-30)
  → 'github:cachix/pre-commit-hooks.nix/fa606cccd7b0ccebe2880051208e4a0f61bfc8c1?narHash=sha256-nacSOeXtUEM77Gn0G4bTdEOeFIrkCBXiyyFZtdGwuH0%3D' (2024-05-16)
• Removed input 'pre-commit-hooks/flake-utils'
• Removed input 'pre-commit-hooks/flake-utils/systems'
2024-05-19 00:20:26 +00:00
Trial97
76a656a017
retry auth step on fail
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-18 22:44:17 +03:00
Trial97
6078a771c1
add config for transfer timeout
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-18 21:46:05 +03:00
Alexandru Ionut Tripon
5cf7466e4c
Merge pull request #2404 from PrismLauncher/renovate/cachix-install-nix-action-27.x
Update cachix/install-nix-action action to v27
2024-05-18 19:49:58 +03:00
Alexandru Ionut Tripon
74c2f2599f
Merge pull request #1365 from Trial97/netjob_retry
Ask user to retry if netjob fails
2024-05-18 17:54:12 +03:00
Trial97
5a598db608
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into disablemods 2024-05-18 17:40:54 +03:00
Trial97
5bd28e2cc8
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2024-05-18 17:11:41 +03:00
Trial97
e42dfbc391
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_duplicate_mod 2024-05-18 17:02:10 +03:00
Trial97
477d1408ad
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into resource_size 2024-05-18 16:53:14 +03:00
Trial97
83fdfe8091
fix regression
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-18 16:52:29 +03:00
Trial97
4d21f71ccf
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refresh_cats 2024-05-18 16:34:21 +03:00
Trial97
31d0cad377
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into demo 2024-05-18 16:24:22 +03:00
Trial97
c9c67ef79e
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into change_version 2024-05-18 15:27:02 +03:00
Trial97
d77d1f3be3
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into coremods 2024-05-18 14:44:33 +03:00
Trial97
b23b53d98d
Add missing header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-18 14:43:58 +03:00
Trial97
7a5348a179
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader 2024-05-18 14:14:31 +03:00
DioEgizio
3ba84cb844 fix: update bundled flatpak
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-05-18 12:57:09 +02:00
Trial97
633489884d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-18 13:27:31 +03:00
Alexandru Ionut Tripon
3887cfe5df
Merge pull request #1525 from Trial97/waitprofiler
Add wait profiler
2024-05-18 13:17:24 +03:00
Alexandru Ionut Tripon
7b39ec5048
Merge pull request #2377 from dqfan2012/AddSdkmanToMacOs
Adding sdkman java location to MacOs
2024-05-18 13:15:57 +03:00
Trial97
ba947993c2
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip 2024-05-18 12:47:01 +03:00
Tayou
acd23ff163
Merge pull request #2402 from Trial97/refactor_auth
Improve Microsoft login
2024-05-18 11:07:16 +02:00
Alexandru Ionut Tripon
c8ff768d64
Merge pull request #1827 from Trial97/shader
fixed shader packs detection
2024-05-18 12:02:13 +03:00
Trial97
b6d87fc090
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into instance_copy_progress 2024-05-18 11:57:41 +03:00
Trial97
6aaf3a3ed4
Merge branch 'skin_selector' of github.com:Trial97/PrismLauncher into skin_selector 2024-05-18 11:57:06 +03:00
Trial97
2ac6efaa4a
Fix reggresion
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-18 11:56:43 +03:00
Trial97
23134d4b72
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector 2024-05-18 11:38:18 +03:00
Trial97
318819afc6
Made recommended button default
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-18 11:36:46 +03:00
Alexandru Ionut Tripon
eb0d0450e3
Merge pull request #2382 from Trial97/neoforge_technic
Add neoforge support for technic packs and atlauncher packs
2024-05-18 10:40:45 +03:00
Alexandru Ionut Tripon
0f2736306e
Update launcher/ui/dialogs/skins/SkinManageDialog.ui
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-05-18 10:36:15 +03:00
Trial97
639c6e7f80
Add cancel to Add account dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-17 00:49:00 +03:00
Trial97
78804b26ee
Maybe fix nix
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-17 00:34:39 +03:00
Trial97
75a457ebfa
Add custom page to land after microsoft login
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-17 00:31:04 +03:00
Trial97
ce09f06bda
Fix CI3
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-16 22:16:42 +03:00
Trial97
09c0c11033
Add back device code flow
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-16 21:58:25 +03:00
Alexandru Ionut Tripon
ab5f628453
Update launcher/updater/prismupdater/PrismUpdater.cpp
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-05-16 19:45:43 +03:00
Alexandru Ionut Tripon
051e788683
Update launcher/updater/prismupdater/PrismUpdater.cpp
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-05-16 19:45:00 +03:00
Trial97
2a58fb0ac5
Remove cobrandid
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-16 17:31:25 +03:00
Trial97
c15f6fcd2a
Fix portable if manifest is missing
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-16 17:21:30 +03:00
Alexandru Ionut Tripon
898ee67a07
Update launcher/ui/dialogs/MSALoginDialog.cpp
Co-authored-by: Tayou <git@tayou.org>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-05-16 00:41:07 +03:00
renovate[bot]
1d384544d3
chore(deps): update cachix/install-nix-action action to v27 2024-05-15 19:40:15 +00:00
Trial97
8b051b97fd
Fix CI2
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-15 17:54:35 +03:00
Trial97
abedc6a23c
Improve login UI
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-15 17:25:15 +03:00
Trial97
849c3faeb4
Fix CI
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-15 14:07:03 +03:00
Trial97
80d8e3ee06
Remove katabasis
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-15 12:53:06 +03:00
Trial97
c2ed50627d
Added back qt version check
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-14 00:36:35 +03:00
Trial97
e285a85fe8
Removed AccountTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-14 00:21:51 +03:00
Trial97
3336f8107c
Removed AuthRequest and NetAction
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-14 00:21:45 +03:00
Sefa Eyeoglu
93da066aa2
Merge pull request #2398 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-05-12 09:24:48 +02:00
github-actions[bot]
d74926e60d chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/5fd8536a9a5932d4ae8de52b7dc08d92041237fc' (2024-05-03)
  → 'github:nixos/nixpkgs/e4e7a43a9db7e22613accfeb1005cca1b2b1ee0d' (2024-05-11)
2024-05-12 00:20:20 +00:00
Trial97
d795ba25e7
Delete instaces tmp diectory on startup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-10 20:55:26 +03:00
Alexandru Ionut Tripon
f15981d786
Merge pull request #2358 from DioEgizio/nosystem-portablewithqt
Remove prebuilt system tarballs on Linux, bundle Qt with Linux portable
2024-05-09 08:22:43 +03:00
Alexandru Ionut Tripon
c703babda9
Merge pull request #2379 from kthchew/fix/blocked-desc
Improve blocked mods dialog (permissions prompt, misc. fixes) on macOS
2024-05-09 08:17:03 +03:00
Alexandru Ionut Tripon
72e9d7b148
Merge pull request #2366 from Trial97/modrint_import2
Fix download packs with invalid characters
2024-05-09 08:16:16 +03:00
Alexandru Ionut Tripon
7bcb1777a1
Merge pull request #2341 from Trial97/image_size
Fix image width in project description
2024-05-09 08:15:35 +03:00
Alexandru Ionut Tripon
a4142573ac
Merge pull request #2311 from SolidStateDj/gen->ui
Rename object name "userInterfaceTab" from "generalTab"
2024-05-09 08:15:15 +03:00
Trial97
a95c1768a7
Add neoforge support for technic packs and atlauncher packs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-05-08 14:16:12 +03:00
Kenneth Chew
e7c95c9ccb
Fix bug where watched directories are not clickable on macOS
Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com>
2024-05-07 18:57:04 -04:00
Kenneth Chew
4787141698
Improved blocked mods dialog permissions prompt
Targeted to macOS (where `~/Downloads` is considered a sensitive location that the system protects behind a prompt even from non-sandboxed apps)

Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com>
2024-05-07 18:30:06 -04:00
Samuel Stidham
adf0cfdebf Fixed the code.
Signed-off-by: Samuel Stidham <dqfan2012@gmail.com>
2024-05-05 20:01:29 -04:00
Samuel Stidham
8e0af16de9 Add extra java locations for MacOs.
Signed-off-by: Samuel Stidham <dqfan2012@gmail.com>
2024-05-05 19:53:18 -04:00
Sefa Eyeoglu
5ce8cd6b84
Merge pull request #2375 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-05-05 08:09:00 +02:00
github-actions[bot]
5d36ed9cf9 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/9126214d0a59633752a136528f5f3b9aa8565b7d' (2024-04-01)
  → 'github:hercules-ci/flake-parts/e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e' (2024-05-02)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d6f6eb2a984f2ba9a366c31e4d36d65465683450' (2024-04-27)
  → 'github:nixos/nixpkgs/5fd8536a9a5932d4ae8de52b7dc08d92041237fc' (2024-05-03)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/6fb82e44254d6a0ece014ec423cb62d92435336f' (2024-04-24)
  → 'github:cachix/pre-commit-hooks.nix/2849da033884f54822af194400f8dff435ada242' (2024-04-30)
2024-05-05 00:19:38 +00:00
SabrePenguin
0c76e7ab20 Made Regex static and const, removed dist
Signed-off-by: SabrePenguin <lknofczynski@gmail.com>
2024-05-01 13:00:55 -04:00
SabrePenguin
ce873e4a0d
Regex correction
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: SabrePenguin <147069705+SabrePenguin@users.noreply.github.com>
2024-05-01 12:49:34 -04:00
SabrePenguin
814f84efab Fixed more clang formatting
Signed-off-by: SabrePenguin <lknofczynski@gmail.com>
2024-05-01 00:21:32 -04:00
SabrePenguin
51f4ede797 Fixing CI format issues
Signed-off-by: SabrePenguin <lknofczynski@gmail.com>
2024-05-01 00:11:53 -04:00
SabrePenguin
b9c010ffb2 Added patch to all setHtml calls
Signed-off-by: SabrePenguin <lknofczynski@gmail.com>
2024-04-30 23:43:36 -04:00
SabrePenguin
e3d64608b9 Switched </ul> to a Regex expression
Signed-off-by: SabrePenguin <lknofczynski@gmail.com>
2024-04-30 23:28:50 -04:00
SabrePenguin
cec27fd014 Moved html patch to StringUtils
Signed-off-by: SabrePenguin <lknofczynski@gmail.com>
2024-04-30 23:14:26 -04:00
Trial97
30ce8ecb5f
Fixed imports
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-30 23:20:24 +03:00
Trial97
5400c24c73
Ensure valid file names for resource names
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-30 23:04:50 +03:00
Trial97
e068120375
Fix invalid characters filename download on windows
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-30 22:56:40 +03:00
Trial97
48f3ca56ba
Fixed NetRequest not failing on sink init
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-30 22:38:01 +03:00
Sefa Eyeoglu
bfac12604e
Merge pull request #2348 from TheKodeToad/single-click-hint 2024-04-30 07:55:48 +02:00
Sefa Eyeoglu
4dddf62e5e
Merge pull request #2345 from Jan200101/PR/ssdfixmegamescope 2024-04-30 07:54:17 +02:00
Sefa Eyeoglu
603d196dac
Merge pull request #2292 from ColonelGerdauf/develop 2024-04-30 07:53:32 +02:00
TheKodeToad
d2568333ed
Merge pull request #2048 from erikLundstedt/develop
fix a minor spelling error in Mod.cpp
2024-04-29 18:22:22 +01:00
Alexandru Ionut Tripon
9b70606d7e
Merge pull request #2353 from Trial97/fix_curseforge4
Fix CurseForge export caused by utf8 enabled
2024-04-29 19:30:01 +03:00
DioEgizio
cb9a83320c chore: make Qt 5 Linux use official Qt builds
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-04-29 15:51:31 +02:00
DioEgizio
be8ac0b5bb fix: make portable builds bundle Qt
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-04-29 15:08:10 +02:00
Trial97
a5b059ebad
Fixed curseforge export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-29 00:27:15 +03:00
Sefa Eyeoglu
23a38b19f2
Merge pull request #2351 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-04-28 10:42:34 +02:00
github-actions[bot]
890fd0b09c chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/fd16bb6d3bcca96039b11aa52038fafeb6e4f4be' (2024-04-20)
  → 'github:nixos/nixpkgs/d6f6eb2a984f2ba9a366c31e4d36d65465683450' (2024-04-27)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/40e6053ecb65fcbf12863338a6dcefb3f55f1bf8' (2024-04-12)
  → 'github:cachix/pre-commit-hooks.nix/6fb82e44254d6a0ece014ec423cb62d92435336f' (2024-04-24)
2024-04-28 00:20:12 +00:00
Alexandru Ionut Tripon
c14e6a67a8
Merge pull request #2349 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x
chore(deps): update hendrikmuhs/ccache-action action to v1.2.13
2024-04-27 13:11:07 +03:00
DioEgizio
ccf0b01de7 chore!: make install_bundle work on linux, removed prebuilt tarballs
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-04-27 11:06:08 +02:00
renovate[bot]
46b291d02e
chore(deps): update hendrikmuhs/ccache-action action to v1.2.13 2024-04-27 07:16:54 +00:00
SabrePenguin
5348a90a15
Fix img tag allowing img....
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: SabrePenguin <147069705+SabrePenguin@users.noreply.github.com>
2024-04-26 18:21:17 -04:00
TheKodeToad
e3f55f6865
Use proxy style to force ActivateItemOnSingleClick off
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-26 22:08:45 +01:00
SabrePenguin
a988415028
Pleasing the format check
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: SabrePenguin <147069705+SabrePenguin@users.noreply.github.com>
2024-04-26 16:59:51 -04:00
SabrePenguin
6ecd2c7f31
Update launcher/Markdown.cpp
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: SabrePenguin <147069705+SabrePenguin@users.noreply.github.com>
2024-04-26 16:51:23 -04:00
Alexandru Ionut Tripon
3c9a207192
Update launcher/ui/widgets/VariableSizedImageObject.cpp
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-04-26 22:04:50 +03:00
TheKodeToad
60bd8104c4
Merge remote-tracking branch 'upstream/develop' into resource-meta
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-26 01:53:51 +01:00
TheKodeToad
9ce10231ed
Remove redundant event handler
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-26 01:44:43 +01:00
TheKodeToad
803e26a401
Make actions more consistent
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-26 01:40:18 +01:00
Trial97
e1ed317c13
Updated CheckComboBox to look more like QComboBox
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-26 00:16:48 +03:00
SabrePenguin
2cfe482298 Formatting and fixed img_pos allowed as negative
Signed-off-by: SabrePenguin <lknofczynski@gmail.com>
2024-04-25 16:38:14 -04:00
SabrePenguin
dedea2c05d Added a naive implementation of a <br> inserter
Signed-off-by: SabrePenguin <lknofczynski@gmail.com>
2024-04-25 16:38:14 -04:00
Jan200101
a30c7193a2
remove server side decorations FIXME and document why its needed
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
2024-04-25 17:00:03 +02:00
Trial97
1961e2081f
Removed scroll from version checkbox
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-25 00:48:40 +03:00
Trial97
e07e182e95
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2024-04-24 23:51:43 +03:00
Trial97
e33ddbadd2
Merge branch 'filters' of github.com:Trial97/PrismLauncher into filters 2024-04-24 23:51:33 +03:00
Alexandru Ionut Tripon
be15abda90
Merge pull request #2 from TheKodeToad/better-filters
Rework filter widget
2024-04-24 23:52:08 +03:00
Trial97
c902da4461
Fix image width in project description
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-24 22:02:55 +03:00
Sefa Eyeoglu
e777201187
Merge pull request #2337 from Trial97/java_path 2024-04-24 17:46:08 +02:00
Trial97
5ae98f4f90
Fixed windows bundled java path
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-24 15:49:05 +03:00
Trial97
3a4f82ffd1
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-24 00:21:39 +03:00
TheKodeToad
f6f0f3b08d
Merge pull request #2333 from Trial97/fix_bundled_java_mac
Fix Minecraft Launcher runtime detection on Windows and macOS
2024-04-23 17:19:37 +01:00
Trial97
10d1720da5
Removed duplicate local
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-23 19:08:14 +03:00
Trial97
73c3794c1b
Changed env variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-23 19:03:19 +03:00
Trial97
dac7027846
Fixed windows appdata path
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-23 18:59:31 +03:00
Trial97
dbfd535b38
Fix bundled java detection on mac
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-23 08:52:17 +03:00
Tayou
5eeb3b7768
Merge pull request #2328 from Trial97/appimage
Removed java from appimage
2024-04-22 22:51:57 +02:00
Tayou
8e8877cf8c
Merge pull request #2327 from wagyourtail/patch-1
Add Gradle Toolchains to java scan list
2024-04-21 19:45:02 +02:00
Trial97
1c8d333bfd
Fixed build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-21 15:07:10 +03:00
Trial97
a96f957b02
Removed java from appimage
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-21 14:48:27 +03:00
William Gray
9f4654ede9
Update JavaUtils.cpp
Signed-off-by: William Gray <ruwagray@gmail.com>
2024-04-21 03:35:27 -05:00
Sefa Eyeoglu
de5de6f88f
Merge pull request #2325 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-04-21 09:49:14 +02:00
github-actions[bot]
210841606c chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9' (2024-04-12)
  → 'github:nixos/nixpkgs/fd16bb6d3bcca96039b11aa52038fafeb6e4f4be' (2024-04-20)
2024-04-21 00:19:37 +00:00
Trial97
89230c4f8a
Moved the export modlist out of the sub-menu
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-20 18:01:25 +03:00
Trial97
d88fb266a5
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into move_export2 2024-04-20 17:42:58 +03:00
Sefa Eyeoglu
d185f6b856
Merge pull request #2319 from TheKodeToad/neoforge-mods-toml
Support mod info for NeoForge 20.5
2024-04-20 09:49:47 +02:00
TheKodeToad
252406ba3e
Support neoforge.mods.toml
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-19 21:19:36 +01:00
Alexandru Ionut Tripon
a8a234b666
Merge pull request #2294 from Trial97/import_crash
Fixed application close on open file dialog
2024-04-19 00:12:47 +03:00
Alexandru Ionut Tripon
0cae155380
Merge pull request #2304 from Trial97/modrint_import
Fixed modrinth pack update
2024-04-18 23:42:07 +03:00
DylanJOrr
77aead6470 Rename object name "userInterfaceTab" from "generalTab"
The "User Interface" tab was innacurately named "General" which I just
went in and fixed.

This also renamed the object for respective vertical spacers.

Signed-off-by: SolidStateDj <solidstatedj@proton.me>
2024-04-16 16:01:34 -04:00
seth
ef230b7ae4
Merge pull request #2305 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-04-15 18:24:42 +00:00
github-actions[bot]
cb8936ed68 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/9e7f26f82acb057498335362905fde6fea4ca50a' (2024-04-06)
  → 'github:nixos/nixpkgs/a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9' (2024-04-12)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/e35aed5fda3cc79f88ed7f1795021e559582093a' (2024-04-02)
  → 'github:cachix/pre-commit-hooks.nix/40e6053ecb65fcbf12863338a6dcefb3f55f1bf8' (2024-04-12)
2024-04-14 00:21:24 +00:00
Trial97
8121a6536b
Fixed pack update
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-12 23:45:31 +03:00
Trial97
9f48694eb2
Fixed application close on open file dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-09 08:28:09 +03:00
Alexandru Ionut Tripon
1a994e8aed
Merge pull request #2291 from Trial97/import_crash
Fixed crash on invalid curseforge link on import
2024-04-09 00:19:55 +03:00
ColonelGerdauf
a877f9146d
Change of parameters
To help deal with adjustments

Signed-off-by: ColonelGerdauf <ColonelGerdauf@users.noreply.github.com>
2024-04-07 16:53:53 -04:00
ColonelGerdauf
f91f97e56d
Renaming and removing redundancies
old's do not make sense here

Signed-off-by: ColonelGerdauf <ColonelGerdauf@users.noreply.github.com>
2024-04-07 16:49:39 -04:00
Trial97
9cc58fe62c
Fixed crash on invalid curseforge link on import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-07 21:25:08 +03:00
Trial97
1c3c9d2457
Added the new ftb settings path
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-07 13:48:34 +03:00
Sefa Eyeoglu
70f7e0878e
Merge pull request #2287 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-04-07 10:49:43 +02:00
github-actions[bot]
74fcfbae32 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2' (2024-03-01)
  → 'github:hercules-ci/flake-parts/9126214d0a59633752a136528f5f3b9aa8565b7d' (2024-04-01)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/807c549feabce7eddbf259dbdcec9e0600a0660d' (2024-03-29)
  → 'github:nixos/nixpkgs/9e7f26f82acb057498335362905fde6fea4ca50a' (2024-04-06)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/c11e43aed6f17336c25cd120eac886b96c455731' (2024-03-30)
  → 'github:cachix/pre-commit-hooks.nix/e35aed5fda3cc79f88ed7f1795021e559582093a' (2024-04-02)
2024-04-07 00:20:19 +00:00
timoreo
5bc415d512
Merge pull request #2225 from TheKodeToad/zip-utf8 2024-04-06 14:43:35 +02:00
Alexandru Ionut Tripon
a88cc2133c
Merge pull request #2277 from TheKodeToad/invalid-zip-files
Fix unicode characters being invalid in filenames
2024-04-06 15:41:51 +03:00
timoreo
9323dcb9dc
Merge pull request #2247 from Trial97/names 2024-04-06 14:35:06 +02:00
TheKodeToad
9986fe4c45
Fix unicode characters being invalid in filenames
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-06 13:33:13 +01:00
timoreo
363273a17b
Merge pull request #2275 from TheKodeToad/invalid-zip-files 2024-04-06 14:18:13 +02:00
TheKodeToad
8056a2fa46
Replace invalid characters when extracting ZIP
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-05 23:31:18 +01:00
Alexandru Ionut Tripon
44ea8cd885
Merge pull request #2268 from Scrumplex/fix/nix/jdk21
[Linux] Add jdk21 to Nix packages
2024-04-04 20:38:35 +03:00
TheKodeToad
df209c7b44
Merge pull request #2272 from DioEgizio/flatpakupdate
fix: update flatpak manifest for java 21
2024-04-04 17:38:07 +01:00
DioEgizio
e704fbbcec fix: update flatpak manifest for java 21
backport of https://github.com/flathub/org.prismlauncher.PrismLauncher/pull/54 for our CI builds

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-04-04 17:53:30 +02:00
Trial97
3ddcadcdd1
Moved getPathNameInLocal8bit inside FileSystem namespace
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-04 18:01:24 +03:00
Trial97
8ecab305ac
Moved the creation of natives folder in ExtractNatives task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-04 13:49:27 +03:00
Sefa Eyeoglu
0d372d2fbf
fix(nix): add jdk21
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2024-04-03 21:04:26 +02:00
Trial97
450b73328e
Fixed crash on non-latin instance name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-04-03 19:34:35 +03:00
Sefa Eyeoglu
90097f1309
Merge pull request #2263 from DioEgizio/update-qt670 2024-04-02 21:49:35 +02:00
DioEgizio
5f11b2e77f
chore: update to Qt 6.7.0
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-04-02 19:10:40 +02:00
TheKodeToad
186a6d0c52
Make filters vertical
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-01 17:00:10 +01:00
TheKodeToad
71904b52c1
Make option groups plural
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-01 15:31:18 +01:00
TheKodeToad
71998cb7d9
Rework filter widget
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-04-01 15:22:27 +01:00
Trial97
a0eba1ace6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2024-03-31 21:15:49 +03:00
Sefa Eyeoglu
a2d28f6872
Merge pull request #2257 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-03-31 11:23:57 +02:00
github-actions[bot]
f1351a143e chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/20bc93ca7b2158ebc99b8cef987a2173a81cde35' (2024-03-23)
  → 'github:nixos/nixpkgs/807c549feabce7eddbf259dbdcec9e0600a0660d' (2024-03-29)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/e611897ddfdde3ed3eaac4758635d7177ff78673' (2024-03-20)
  → 'github:cachix/pre-commit-hooks.nix/c11e43aed6f17336c25cd120eac886b96c455731' (2024-03-30)
2024-03-31 00:20:10 +00:00
Alexandru Ionut Tripon
b7835036d4
Merge pull request #2255 from PrismLauncher/renovate/korthout-backport-action-2.x
chore(deps): update korthout/backport-action action to v2.5.0
2024-03-30 13:03:21 +02:00
renovate[bot]
e6a9badb73
chore(deps): update korthout/backport-action action to v2.5.0 2024-03-30 10:42:48 +00:00
Trial97
28cfd31269
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into disablemods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-29 10:30:42 +02:00
Trial97
1930689a27
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into dependency_removal
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-29 10:12:02 +02:00
Trial97
81874f22f7
Fixed tar extract
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-29 00:10:59 +02:00
Trial97
45028ddc61
Added java downloader to CI build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-28 14:58:05 +02:00
Alexandru Ionut Tripon
2012b2c243
Merge pull request #1977 from Trial97/resource_clear
Force clear the resource selection
2024-03-28 14:49:03 +02:00
Alexandru Ionut Tripon
b3abc052b5
Merge pull request #1529 from Trial97/portabledatadir
Added UserData as another posible path for portable builds
2024-03-28 14:48:34 +02:00
Alexandru Ionut Tripon
6b967d3f76
Merge pull request #1822 from Trial97/new_cats
Add random and slideshow modes to Catpacks
2024-03-28 14:48:18 +02:00
timoreo
e4742fdb3d
Merge pull request #2221 from Trial97/fix_curseforge3
Set Forge version correctly when exporting to CurseForge
2024-03-28 09:41:11 +01:00
Tayou
0f178270be
Merge pull request #1786 from Trial97/deps_improve
Make dependency checking more lax
2024-03-27 20:42:26 +01:00
Alexandru Ionut Tripon
93f6315b16
Update CMakeLists.txt
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-03-27 19:34:04 +02:00
Tayou
0e5727315b
Merge pull request #2243 from Trial97/quick-play2
Allow joining servers to work on 1.20 take 2
2024-03-27 18:20:22 +01:00
Trial97
f6572c1244
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into shader 2024-03-27 18:55:34 +02:00
Alexandru Ionut Tripon
e212c019a0
Merge pull request #2209 from chouzz/add-totalPlayTime-ftb-import
Add totalTimePlayed for FTBApp import
2024-03-27 16:20:21 +02:00
Alexandru Ionut Tripon
ccf3a1582d
Merge pull request #2231 from DioEgizio/bzip2-fix
fix: include libbz2.so.1.0
2024-03-27 16:19:53 +02:00
Alexandru Ionut Tripon
5117b21262
Merge pull request #1769 from Trial97/error_codes
added more microsoft error codes
2024-03-27 16:19:31 +02:00
Sefa Eyeoglu
5d72ee1c4f
Merge pull request #1837 from Trial97/import_ok 2024-03-27 10:50:58 +01:00
Trial97
765bdf67c9
Changed the trait name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-27 00:56:12 +02:00
Trial97
23bdccc91d
Merge branch 'develop' of github.com:Trial97/PrismLauncher into quick-play 2024-03-26 23:58:56 +02:00
Sefa Eyeoglu
df0280f52b
Merge pull request #2237 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-03-24 09:35:07 +01:00
github-actions[bot]
3a833b659a chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/9af9c1c87ed3e3ed271934cb896e0cdd33dae212' (2024-03-15)
  → 'github:nixos/nixpkgs/20bc93ca7b2158ebc99b8cef987a2173a81cde35' (2024-03-23)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/5df5a70ad7575f6601d91f0efec95dd9bc619431' (2024-02-15)
  → 'github:cachix/pre-commit-hooks.nix/e611897ddfdde3ed3eaac4758635d7177ff78673' (2024-03-20)
• Updated input 'pre-commit-hooks/flake-utils':
    'github:numtide/flake-utils/4022d587cbbfd70fe950c1e2083a02621806a725' (2023-12-04)
  → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a' (2024-03-11)
• Updated input 'pre-commit-hooks/gitignore':
    'github:hercules-ci/gitignore.nix/43e1aa1308018f37118e34d3a9cb4f5e75dc11d5' (2023-12-29)
  → 'github:hercules-ci/gitignore.nix/637db329424fd7e46cf4185293b9cc8c88c95394' (2024-02-28)
2024-03-24 00:19:57 +00:00
Trial97
3c12e27226
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2024-03-23 23:53:25 +02:00
Trial97
c0754b80a2
Add resize to last column
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-22 22:17:58 +02:00
Trial97
0b87e4c03b
Fiexed codeql warning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-22 12:29:15 +02:00
Trial97
a7029a9e53
Fixed qMin
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-21 20:01:40 +02:00
Trial97
3046822272
Fixed buid
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-21 19:53:52 +02:00
Trial97
1a6dfd04d6
Made tar.gz parser
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-21 19:46:57 +02:00
DioEgizio
37d348e60e fix: include libbz2.so.1.0
fixes portable installs not working on fedora anymore

i did this only on portable builds and not system installs so that it doesn't create problems to people packaging them, as to fix system installs i would have to put it in bin/

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-03-21 10:39:12 +01:00
txtsd
794a60b684
Merge pull request #2224 from PrismLauncher/renovate/actions-cache-4.x
chore(deps): update actions/cache action to v4.0.2
2024-03-21 05:51:22 +00:00
Trial97
ab7fc2e46c
Fixed archive java download
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-21 00:42:04 +02:00
Alexandru Ionut Tripon
93f19bda6e
Update launcher/minecraft/auth/steps/XboxAuthorizationStep.cpp
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-03-21 00:07:06 +02:00
Trial97
1c809f0fb1
Added more logs for auto java install
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-20 17:39:10 +02:00
Trial97
703470e57d
Hopefully fix codeql
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-20 08:24:40 +02:00
Trial97
5f8269f5e1
Small class rename
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-20 00:29:46 +02:00
Trial97
09c2c6793b
Improve UI
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-20 00:15:02 +02:00
TheKodeToad
d72bd70c05
Use UTF-8 for ZIP creation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-03-19 20:34:55 +00:00
renovate[bot]
7ffebcad72
chore(deps): update actions/cache action to v4.0.2 2024-03-19 17:41:32 +00:00
Trial97
ef4e5eb3cf
fixed java build option
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-18 19:15:36 +02:00
Trial97
1322277ae6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader 2024-03-17 20:57:53 +02:00
Trial97
05487152fe
Fixed curesforge export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-17 20:53:26 +02:00
Sefa Eyeoglu
46616d1c5d
Merge pull request #2219 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-03-17 09:33:55 +01:00
github-actions[bot]
95c3daca59 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/0e7f98a5f30166cbed344569426850b21e4091d4' (2024-03-09)
  → 'github:nixos/nixpkgs/9af9c1c87ed3e3ed271934cb896e0cdd33dae212' (2024-03-15)
2024-03-17 00:19:13 +00:00
Sefa Eyeoglu
e288ee6ddd
Merge pull request #2217 from AtomHare/develop 2024-03-16 13:04:18 +01:00
AtomHare
853e4a13ab
fix: Compressing typo
Signed-off-by: AtomHare <29772841+AtomHare@users.noreply.github.com>
2024-03-16 12:44:55 +01:00
Sefa Eyeoglu
3b0564f098
Merge pull request #2183 from PrismLauncher/update_flake_lock_action 2024-03-10 02:45:42 +01:00
github-actions[bot]
75628bf81e chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/b253292d9c0a5ead9bc98c4e9a26c6312e27d69f' (2024-02-01)
  → 'github:hercules-ci/flake-parts/f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2' (2024-03-01)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/f63ce824cd2f036216eb5f637dfef31e1a03ee89' (2024-02-24)
  → 'github:nixos/nixpkgs/0e7f98a5f30166cbed344569426850b21e4091d4' (2024-03-09)
2024-03-10 00:19:11 +00:00
chouzz
92113e233a Add totalTimePlayed for FTBApp import
Signed-off-by: chouzz <zhouhua852@gmail.com>
2024-03-09 19:36:40 +08:00
Sefa Eyeoglu
51443fce8b
Merge pull request #2206 from PrismLauncher/renovate/softprops-action-gh-release-2.x 2024-03-08 22:41:23 +01:00
renovate[bot]
03def913ad
chore(deps): update softprops/action-gh-release action to v2 2024-03-08 21:26:24 +00:00
Alexandru Ionut Tripon
634ab279b0
Merge pull request #2204 from PrismLauncher/renovate/cachix-install-nix-action-26.x
chore(deps): update cachix/install-nix-action action to v26
2024-03-08 10:08:00 +02:00
renovate[bot]
6591379a8a
chore(deps): update cachix/install-nix-action action to v26 2024-03-08 07:47:18 +00:00
Trial97
9120848278
Made java downloader as a build option
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-03-06 19:33:14 +02:00
Alexandru Ionut Tripon
a0311780c1
Merge pull request #1866 from Trial97/supported_files
Added all supported files filter
2024-03-06 17:21:56 +02:00
TheKodeToad
27780cc7ae
Add update UI for all resource types
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-03-06 14:56:04 +00:00
Alexandru Ionut Tripon
fd9a4eed9e
Merge pull request #2196 from DioEgizio/bump-9.0
chore: bump develop to 9.0
2024-03-04 17:45:22 +02:00
DioEgizio
d6abcb73c5 chore: bump develop to 9.0
until it's too late lol

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-03-04 16:32:45 +01:00
Tayou
1627f3c63b
Merge pull request #2178 from TheKodeToad/mrpack-fixes
(More) mrpack fixes
2024-03-03 16:30:40 +01:00
Sefa Eyeoglu
0dc2bf2681
Merge pull request #2160 from TheKodeToad/temp_folder 2024-03-03 15:06:52 +01:00
txtsd
ad8c3ca54b
Merge pull request #2177 from PrismLauncher/renovate/actions-cache-4.x
chore(deps): update actions/cache action to v4.0.1
2024-03-03 07:52:47 +00:00
TheKodeToad
4101fbb634
Allow multiline description
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-03-01 01:05:03 +00:00
TheKodeToad
138df66355
Fix server side mods being marked as unsupported on client
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-03-01 00:03:20 +00:00
renovate[bot]
e1146455a3
chore(deps): update actions/cache action to v4.0.1 2024-02-29 23:16:59 +00:00
Sefa Eyeoglu
850e48ec67
Merge pull request #2176 from PrismLauncher/renovate/determinatesystems-update-flake-lock-21.x 2024-02-29 19:06:29 +01:00
renovate[bot]
322a8899ed
chore(deps): update determinatesystems/update-flake-lock action to v21 2024-02-29 17:19:39 +00:00
Trial97
41d52dc347
Remove dependencies if review mods is rejected
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-29 00:06:28 +02:00
Trial97
27e76d0dcb
Removed static path
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-27 17:11:19 +02:00
Trial97
24fd07861b
format code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-26 22:25:14 +02:00
Alexandru Ionut Tripon
da96172b0b
Apply suggestions from code review
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-02-26 22:00:40 +02:00
Trial97
344398f238
Updated ftb app import instance detection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-26 21:20:14 +02:00
Alexandru Ionut Tripon
fba2ce3c9f
Merge pull request #2161 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-02-25 12:46:12 +02:00
github-actions[bot]
1b89c63ad4 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/6e2f00c83911461438301db0dba5281197fe4b3a' (2024-02-17)
  → 'github:nixos/nixpkgs/f63ce824cd2f036216eb5f637dfef31e1a03ee89' (2024-02-24)
2024-02-25 00:18:54 +00:00
TheKodeToad
c0eb80947d
Fix build on Windows and formatting
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-24 21:50:51 +00:00
TheKodeToad
fccf857d8e
Fix a mistake
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-24 19:16:39 +00:00
TheKodeToad
bd0cd82826
Add upper-bound for randomisation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-24 18:41:45 +00:00
TheKodeToad
df60f5cc96
Add error when staging folder could not be created
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-24 18:41:35 +00:00
TheKodeToad
9574ebe480
Delete staging on abort
Previously instances would get "stuck" in the folder

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-24 18:41:35 +00:00
TheKodeToad
6a9f5540d3
Re-randomise key until it does not collide
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-24 13:38:19 +00:00
Trial97
aac6fea724
Updated application manifest
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-22 20:34:34 +02:00
Trial97
726b0ffb3b
Reduced temporary instance folder name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-22 19:40:24 +02:00
Sefa Eyeoglu
1cdb9bd5af
Merge pull request #2141 from crpz1/welcome_label_consistency 2024-02-22 12:36:00 +01:00
seth
02340f19a5
Merge pull request #2152 from PrismLauncher/getchoo-patch-1
ci: fix permissions for backport workflow
2024-02-22 06:15:57 -05:00
seth
f747ae949c
ci: fix permissions for backport workflow
Signed-off-by: seth <getchoo@tuta.io>
2024-02-22 06:13:27 -05:00
Sefa Eyeoglu
bff8d7220d
Merge pull request #2150 from DioEgizio/fix-ghactions-macos 2024-02-22 11:02:09 +01:00
DioEgizio
4421746c0e fix: fix sparkle signing
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-02-22 10:00:21 +01:00
DioEgizio
01c4e6a65c
Merge pull request #2137 from DioEgizio/zink 2024-02-21 17:42:11 +01:00
crpz1
9aa81cf005 Use empty list label code for welcome screen
Signed-off-by: crpz1 <8588315+crpz1@users.noreply.github.com>
2024-02-20 00:21:37 +11:00
Trial97
1c96ae5807
Fixed java refresh button
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-18 22:32:54 +02:00
Trial97
889f604a41
Removed JavaExtraSearchPaths
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-18 21:38:31 +02:00
Trial97
a288779790
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader 2024-02-18 16:49:35 +02:00
Trial97
038d3e4596
Fixed asan complains
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-18 16:49:10 +02:00
DioEgizio
44327980db feat: add "use zink" button
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-02-18 13:30:55 +01:00
Trial97
b4f3a969b3
Updated strings that are displayed to user
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-18 14:30:38 +02:00
DioEgizio
99cbb5d0b2
Merge pull request #2110 from Trial97/fix_curseforge 2024-02-18 12:42:09 +01:00
DioEgizio
dbdd96edc3
Merge pull request #2130 from DioEgizio/updates 2024-02-18 12:41:49 +01:00
Trial97
4aafa98852
Improved the message boxes for java wizzard
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-18 12:58:34 +02:00
Trial97
2f489d1aec
Added auto java options to the java wizzard page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-18 11:34:54 +02:00
Sefa Eyeoglu
976f5f10cf
Merge pull request #2132 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-02-18 09:38:24 +01:00
Trial97
4c76f7afe0
Made auto java checkbox dependent
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-18 09:46:44 +02:00
Trial97
a7dad96a70
Added refresh button on managed java list
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-18 09:32:31 +02:00
github-actions[bot]
54bfbe562e chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/442d407992384ed9c0e6d352de75b69079904e4e' (2024-02-09)
  → 'github:nixos/nixpkgs/6e2f00c83911461438301db0dba5281197fe4b3a' (2024-02-17)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/0db2e67ee49910adfa13010e7f012149660af7f0' (2024-02-07)
  → 'github:cachix/pre-commit-hooks.nix/5df5a70ad7575f6601d91f0efec95dd9bc619431' (2024-02-15)
2024-02-18 00:18:59 +00:00
Trial97
5232b3cd89
Added some logs and fixed natives extraction
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-17 12:17:00 +02:00
Trial97
ea2adf909d
Added progeess dialog to autodownload java
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-17 11:14:32 +02:00
seth
599a08d309
Merge pull request #2126 from TheComputerGuy96/mr/mangohud-fix
Use absolute path to load MangoHUD library
2024-02-16 19:57:12 -05:00
Trial97
2941307581
Added basic java auto-detect and auto-download
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-16 23:42:39 +02:00
DioEgizio
25b69b4c0d fix: fix sparkle hash
:/ oops

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-02-16 17:29:49 +01:00
DioEgizio
94b48e9702 fix: remove cmark_static
cmark 0.31 removed CMARK_STATIC/CMARK_SHARED and replaced it with the native cmake BUILD_SHARED_LIBS

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-02-16 17:06:28 +01:00
DioEgizio
5d36067c74 chore: update libraries
updated qt to 6.6.2
updated some submodules
updated sparkle framework to the latest version

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-02-16 16:21:53 +01:00
Echo J
01180c20e1 Use absolute path to load MangoHUD library
This should finally fix the Arch Linux Java symbol issue with MangoHUD
enabled: https://bugs.archlinux.org/task/77183

Signed-off-by: Echo J <tcg96nougat@gmail.com>
2024-02-14 10:11:49 +02:00
Sefa Eyeoglu
e738b78044
Merge pull request #2112 from TheKodeToad/log-performance 2024-02-13 09:15:47 +01:00
Sefa Eyeoglu
b02eef9358
Merge pull request #2116 from TheKodeToad/use-after-free 2024-02-13 09:14:34 +01:00
TheKodeToad
8cf2a04f31
Fix formatting issues
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-12 15:24:56 +00:00
TheKodeToad
7f4c74ffbe
Fix immediate free in Exception.h
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-11 22:16:03 +00:00
Trial97
fdaaee64d1
Fixed curseforge neoforge export for 1.20.1
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-11 21:49:28 +02:00
TheKodeToad
ff989b4305
Fix ResourceModel error display
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-11 15:43:36 +00:00
TheKodeToad
ded77e6183
Fix NetJob use-after-free
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-11 15:43:36 +00:00
Sefa Eyeoglu
b0b77c2178
Merge pull request #2114 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-02-11 09:57:06 +01:00
github-actions[bot]
0f254c8425 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/79a13f1437e149dc7be2d1290c74d378dad60814' (2024-02-03)
  → 'github:nixos/nixpkgs/442d407992384ed9c0e6d352de75b69079904e4e' (2024-02-09)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf' (2024-01-28)
  → 'github:cachix/pre-commit-hooks.nix/0db2e67ee49910adfa13010e7f012149660af7f0' (2024-02-07)
2024-02-11 00:19:31 +00:00
Alexandru Ionut Tripon
29bf6cc68c
Update launcher/modplatform/flame/FlameInstanceCreationTask.cpp
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-02-10 23:15:26 +02:00
Trial97
830ce246e1
Fixed curseforge neoforge import for 1.20.1 versions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-10 13:48:02 +02:00
Trial97
f3600972a0
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into instance_copy_progress
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-10 11:09:45 +02:00
Trial97
031a9f4738
Replaced QFile::remove with FS::deletePath
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-10 11:03:51 +02:00
Trial97
5099061a5c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-10 11:02:29 +02:00
Trial97
c0fb053ccc
Added warning for x86 java
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-09 23:14:49 +02:00
Trial97
27d662e642
Added management for downloaded javas from prism
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-09 22:47:39 +02:00
Trial97
0a3303bcbd
Added button to add extra java path to the Java Wizzard
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-09 21:07:12 +02:00
Trial97
379f1a70e9
Leave headers alone
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-08 22:37:57 +02:00
Trial97
b3fc07d444
Added extra java search paths
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-08 21:47:59 +02:00
Trial97
3d29da916d
Made Java path configurable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-08 20:15:19 +02:00
Trial97
ba990e075b
Added JavaPath function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-08 19:45:46 +02:00
TheKodeToad
7cac8ad2b4
Use QTextFragment for inserting log lines
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-02-06 20:42:18 +00:00
Sefa Eyeoglu
6935c0dc3b
Merge pull request #2089 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-02-04 10:01:20 +01:00
github-actions[bot]
15670cc27b chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/07f6395285469419cf9d078f59b5b49993198c00' (2024-01-11)
  → 'github:hercules-ci/flake-parts/b253292d9c0a5ead9bc98c4e9a26c6312e27d69f' (2024-02-01)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/4fddc9be4eaf195d631333908f2a454b03628ee5' (2024-01-25)
  → 'github:nixos/nixpkgs/79a13f1437e149dc7be2d1290c74d378dad60814' (2024-02-03)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/f56597d53fd174f796b5a7d3ee0b494f9e2285cc' (2024-01-20)
  → 'github:cachix/pre-commit-hooks.nix/7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf' (2024-01-28)
2024-02-04 00:19:10 +00:00
Trial97
82b15268bc
preparing java autodownload
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-03 00:11:05 +02:00
Trial97
0384e652fb
Finished up the download dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-02 22:42:42 +02:00
Trial97
3c58fb0677
Moving files around
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-02-02 15:51:32 +02:00
Tayou
5d223f6f93
Merge pull request #2050 from TheKodeToad/default-game-dir
Use `minecraft` instead of `.minecraft` for better accessibility
2024-02-01 18:16:14 +01:00
Trial97
6c5bb3817b
Cleaned some code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-31 18:07:28 +02:00
Trial97
5afe75e821
Fixed some codeql warnings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-30 12:37:34 +02:00
seth
b0a473a5ce
Merge pull request #2073 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-01-27 23:34:12 -05:00
github-actions[bot]
901cc4e4dd chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e5d1c87f5813afde2dda384ac807c57a105721cc' (2024-01-19)
  → 'github:nixos/nixpkgs/4fddc9be4eaf195d631333908f2a454b03628ee5' (2024-01-25)
2024-01-28 00:19:08 +00:00
Trial97
7317105e4d
Code spaghetti and more chaos
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-27 22:47:28 +02:00
Trial97
b54410b48c
Added gameVersion for curseforge mod packs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-26 19:10:39 +02:00
Trial97
ad98f600d5
corecly display core mods tab
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-26 18:36:31 +02:00
Alexandru Ionut Tripon
cff2f4b6ff
Merge pull request #2070 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x
chore(deps): update hendrikmuhs/ccache-action action to v1.2.12
2024-01-26 09:57:49 +02:00
renovate[bot]
ab4974629c
chore(deps): update hendrikmuhs/ccache-action action to v1.2.12 2024-01-26 07:12:13 +00:00
TheKodeToad
82d0f204e2
De-OOP ProviderCapabilities
There was no reason for it to be a class, and imo it created quite a code-smell needing to initialise it everywhere.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-01-26 03:06:05 +00:00
TheKodeToad
97ee0a19b5
Refactor updating mechanisms to work with all resources
Summary:
- It compiles
- I need to go to bed

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-01-26 02:53:57 +00:00
Trial97
4cd236ed80
missing header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-26 00:31:43 +02:00
Trial97
81282bf7e0
Autodetect Java?
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-26 00:22:05 +02:00
Trial97
f36be3f0e3
Cleanup downloaders
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-25 22:58:12 +02:00
Trial97
e897032383
Added java metadata
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-25 22:22:21 +02:00
TheKodeToad
2c18d0f1a5
Store current version in packwiz metadata (temporarily using x-prismlauncher-version-number)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-01-25 15:41:34 +00:00
Trial97
25bca28707
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader 2024-01-24 18:26:48 +02:00
Trial97
a0e7729aa6
Started workin on stuff
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-24 18:26:43 +02:00
Alexandru Ionut Tripon
1c3d63981b
Merge pull request #2063 from DioEgizio/no-alpha-mr
fix: remove alpha notice on modrinth packs
2024-01-24 18:13:15 +02:00
DioEgizio
8de1060bfb fix: remove alpha notice on modrinth packs
with the modrinth app being released for quite a while now it's weird to still have this (tbh they've never been truly alpha)

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2024-01-24 16:43:38 +01:00
seth
1075a94034
Merge pull request #2040 from getchoo/nix/filesets
[Linux/MacOS] Replace nix-filter with lib.fileset
2024-01-24 03:05:30 -05:00
TheKodeToad
35b5c8097c
Merge branch 'develop' into resource-meta
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-01-23 23:20:40 +00:00
seth
8312713dc2
refactor(nix): nix-filter -> lib.fileset
with our own use of `map`, this is basically a drop-in replacement for
nix-filter, but already in nixpkgs!

Signed-off-by: seth <getchoo@tuta.io>
2024-01-23 16:10:41 -05:00
Sefa Eyeoglu
7bce88e83e
Merge pull request #2060 from PrismLauncher/renovate/korthout-backport-action-2.x 2024-01-23 20:45:36 +01:00
renovate[bot]
72e6218df9
chore(deps): update korthout/backport-action action to v2.4.1 2024-01-23 19:21:30 +00:00
Sefa Eyeoglu
e60235cb88
Merge pull request #2053 from Trial97/fix_open_path_take_two 2024-01-23 09:29:57 +01:00
Sefa Eyeoglu
913f6d8563
Merge pull request #2052 from PrismLauncher/renovate/korthout-backport-action-2.x 2024-01-22 22:32:38 +01:00
Trial97
6b637a8797
Display minecraft version if not mentioned for modrinth packs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-22 22:32:42 +02:00
Trial97
9bbeb5ef3a
Made updater interval configurable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-22 21:26:46 +02:00
Trial97
12bf913764
Fixed open path a second time
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-22 20:36:57 +02:00
renovate[bot]
0dc4a10f48
chore(deps): update korthout/backport-action action to v2.4.0 2024-01-22 17:26:37 +00:00
Trial97
f77749e448
Resized Refresh theme button
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-21 21:24:47 +02:00
Sefa Eyeoglu
78482d0d3e
Merge pull request #2049 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-01-21 08:28:49 +01:00
Alexandru Ionut Tripon
e4306d5cb6
Update launcher/ui/themes/CatPack.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2024-01-21 08:52:49 +02:00
TheKodeToad
f54ac25614
Use minecraft instead of .minecraft for better accessibility
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-01-21 02:28:55 +00:00
github-actions[bot]
c7cd8b7877 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/c843418ecfd0344ecb85844b082ff5675e02c443' (2023-12-04)
  → 'github:numtide/nix-filter/3449dc925982ad46246cfc36469baf66e1b64f17' (2024-01-15)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/eabe8d3eface69f5bb16c18f8662a702f50c20d5' (2024-01-09)
  → 'github:nixos/nixpkgs/e5d1c87f5813afde2dda384ac807c57a105721cc' (2024-01-19)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/274ae3979a0eacae422e1bbcf63b8b7a335e1114' (2024-01-12)
  → 'github:cachix/pre-commit-hooks.nix/f56597d53fd174f796b5a7d3ee0b494f9e2285cc' (2024-01-20)
• Updated input 'pre-commit-hooks/flake-utils':
    'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31)
  → 'github:numtide/flake-utils/4022d587cbbfd70fe950c1e2083a02621806a725' (2023-12-04)
• Updated input 'pre-commit-hooks/gitignore':
    'github:hercules-ci/gitignore.nix/a20de23b925fd8264fd7fad6454652e142fd7f73' (2022-08-14)
  → 'github:hercules-ci/gitignore.nix/43e1aa1308018f37118e34d3a9cb4f5e75dc11d5' (2023-12-29)
2024-01-21 00:20:26 +00:00
erik.lundstedt
30913fdb2b fix a minor spelling misstake in Mod.cpp
closes https://github.com/PrismLauncher/PrismLauncher/issues/2047

Signed-off-by: erik.lundstedt <erik@lundstedt.it>
2024-01-21 00:31:00 +01:00
Trial97
0303b1cc7f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refresh_cats 2024-01-20 00:27:30 +02:00
Alexandru Ionut Tripon
4cda04271f
Merge pull request #1913 from Trial97/dialog
Fixed askIfShouldUpdate dialog on mac
2024-01-18 22:02:04 +02:00
Sefa Eyeoglu
bc75bcdcca
Merge pull request #1768 from Trial97/toggle_deps2 2024-01-18 18:18:31 +01:00
Sefa Eyeoglu
a62eaba702
Merge pull request #1825 from Trial97/ftb_import 2024-01-18 18:18:17 +01:00
Sefa Eyeoglu
2c0274159f
Merge pull request #2034 from Scrumplex/feat/macos-signing 2024-01-18 16:56:39 +01:00
Sefa Eyeoglu
b2c2bf1460
Merge pull request #2039 from PrismLauncher/renovate/actions-cache-4.x
chore(deps): update actions/cache action to v4
2024-01-17 23:48:16 +01:00
renovate[bot]
bfd1262c14
chore(deps): update actions/cache action to v4 2024-01-17 20:29:50 +00:00
Sefa Eyeoglu
0b3e91ac62
Merge pull request #1954 from Scrumplex/fix/open-paths-immediately 2024-01-17 15:18:46 +01:00
Sefa Eyeoglu
de9232783e
chore: remove cachix auth token secret
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2024-01-17 13:12:38 +01:00
Sefa Eyeoglu
27c52eff8b
feat: add macOS notarization
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2024-01-17 13:12:36 +01:00
Sefa Eyeoglu
baebef982e
feat: add macOS code signing
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2024-01-17 13:10:14 +01:00
Sefa Eyeoglu
67d088dc53
fix: simplify openPath calls
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2024-01-14 11:36:17 +01:00
Sefa Eyeoglu
5a0240e709
Merge pull request #2030 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-01-14 09:50:59 +01:00
github-actions[bot]
96c714de6e chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/88a2cd8166694ba0b6cb374700799cec53aef527' (2024-01-01)
  → 'github:hercules-ci/flake-parts/07f6395285469419cf9d078f59b5b49993198c00' (2024-01-11)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/63143ac2c9186be6d9da6035fa22620018c85932' (2024-01-02)
  → 'github:nixos/nixpkgs/eabe8d3eface69f5bb16c18f8662a702f50c20d5' (2024-01-09)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/9d3d7e18c6bc4473d7520200d4ddab12f8402d38' (2023-12-30)
  → 'github:cachix/pre-commit-hooks.nix/274ae3979a0eacae422e1bbcf63b8b7a335e1114' (2024-01-12)
2024-01-14 00:20:26 +00:00
Sefa Eyeoglu
f931890e95
Merge pull request #2029 from PrismLauncher/renovate/cachix-install-nix-action-25.x 2024-01-12 19:14:02 +01:00
renovate[bot]
9c610b616a
chore(deps): update cachix/install-nix-action action to v25 2024-01-12 18:02:43 +00:00
Sefa Eyeoglu
c38f584fe9
Merge pull request #2026 from PrismLauncher/renovate/actions-cache-3.x
chore(deps): update actions/cache action to v3.3.3
2024-01-11 23:22:42 +01:00
renovate[bot]
b0f65476d9
chore(deps): update actions/cache action to v3.3.3 2024-01-11 18:59:17 +00:00
Sefa Eyeoglu
7549bf7da6
Merge pull request #2024 from getchoo/flake-fixups 2024-01-11 09:43:58 +01:00
seth
839adfc90b
nix: add garnix cache to nixConfig
Signed-off-by: seth <getchoo@tuta.io>
2024-01-11 03:20:20 -05:00
seth
26474d1374
nix: deduplicate nixpkgs input
Signed-off-by: seth <getchoo@tuta.io>
2024-01-11 03:06:37 -05:00
Alexandru Ionut Tripon
dbdec15ddb
Merge pull request #1771 from Trial97/account
Try refreshing account on launch if needed
2024-01-10 16:07:09 +02:00
Trial97
a7d293b3f2
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into deps_improve
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-10 09:17:52 +02:00
Trial97
a0ebd0714d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refresh_cats 2024-01-10 09:09:19 +02:00
Trial97
57913f1943
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into demo 2024-01-07 22:31:25 +02:00
Trial97
d94e641900
Load versions on first edit
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-07 22:00:31 +02:00
Sefa Eyeoglu
43dd929214
Merge pull request #2016 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2024-01-07 09:43:56 +01:00
github-actions[bot]
2cb07d3e38 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5' (2023-12-01)
  → 'github:hercules-ci/flake-parts/88a2cd8166694ba0b6cb374700799cec53aef527' (2024-01-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:NixOS/nixpkgs/e92039b55bcd58469325ded85d4f58dd5a4eaf58?dir=lib' (2023-11-29)
  → 'github:NixOS/nixpkgs/b0d36bd0a420ecee3bc916c91886caca87c894e9?dir=lib' (2023-12-30)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870' (2023-12-25)
  → 'github:nixos/nixpkgs/63143ac2c9186be6d9da6035fa22620018c85932' (2024-01-02)
2024-01-07 00:20:13 +00:00
Tayou
35ad4448d9
Merge pull request #2012 from Trial97/openal_settings
Fixed openAL placeholder
2024-01-07 00:21:21 +01:00
TheKodeToad
f285c3fe13
Merge pull request #1972 from lumiscosity/feature/cat_opacity
Add a cat opacity option
2024-01-06 19:42:17 +00:00
Trial97
219e2862f9
Fixed openAL placeholder
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-05 23:02:42 +02:00
TheKodeToad
d56d21f928
Merge pull request #1983 from tildejustin/develop
remove legacy processArguments code
2024-01-05 12:26:58 +00:00
seth
7783ef9285
Merge pull request #2005 from Trial97/develop
Format java code
2024-01-04 15:18:40 -05:00
Alexandru Ionut Tripon
b76c413936
Merge pull request #1 from theMackabu/refresh_cats
add: refresh on load
2024-01-03 22:56:43 +02:00
Trial97
048d34dc9d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refresh_cats 2024-01-03 22:53:36 +02:00
Trial97
786e03571b
Format java code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2024-01-03 22:50:55 +02:00
Alexandru Ionut Tripon
57a589367f
Merge pull request #1979 from lumiscosity/feature/mod_page_improvements
Mod downloader page improvements
2024-01-03 22:43:18 +02:00
Sefa Eyeoglu
9523a2d77b
Merge pull request #1999 from TheKodeToad/more-legacy-fixes 2024-01-03 18:16:41 +01:00
Sefa Eyeoglu
e5b608447a
chore: improve param name
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2024-01-03 18:15:03 +01:00
Sefa Eyeoglu
f454333cc5
Merge pull request #1998 from TheKodeToad/happy-new-year 2024-01-03 18:13:14 +01:00
TheKodeToad
345cdf5c9d
Pass proxy
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-01-02 19:10:41 +00:00
TheKodeToad
05e4533096
Add online mode fix for legacy versions; minor refactors in legacy
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-01-02 18:11:54 +00:00
TheKodeToad
1130fe8510
Happy new year :D
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2024-01-02 18:04:42 +00:00
Alexandru Ionut Tripon
0cf9b6537b
Merge pull request #1996 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x
chore(deps): update hendrikmuhs/ccache-action action to v1.2.11
2024-01-02 13:28:27 +02:00
renovate[bot]
73f956c897
chore(deps): update hendrikmuhs/ccache-action action to v1.2.11 2024-01-02 07:30:12 +00:00
Sefa Eyeoglu
b280a6d36d
Merge pull request #1991 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-12-31 12:28:20 +01:00
github-actions[bot]
ad01102bad chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d6863cbcbbb80e71cecfc03356db1cda38919523' (2023-12-21)
  → 'github:nixos/nixpkgs/e1fa12d4f6c6fe19ccb59cac54b5b3f25e160870' (2023-12-25)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/007a45d064c1c32d04e1b8a0de5ef00984c419bc' (2023-12-13)
  → 'github:cachix/pre-commit-hooks.nix/9d3d7e18c6bc4473d7520200d4ddab12f8402d38' (2023-12-30)
2023-12-31 00:20:06 +00:00
timoreo
0ce0769842
Merge pull request #1978 from Trial97/double_links 2023-12-28 19:48:34 +01:00
tildejustin
eca5d88576 remove legacy processArguments code
Signed-off-by: tildejustin <spacepepper3.14@gmail.com>
2023-12-24 22:20:06 -05:00
Sajjaad Farzad
b0a4af7412
Merge branch 'PrismLauncher:develop' into refresh_cats 2023-12-24 16:03:13 -08:00
Sefa Eyeoglu
dbbbf5aa93
Merge pull request #1980 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-12-24 11:22:58 +01:00
github-actions[bot]
ea38f8168a chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/aa9d4729cbc99dabacb50e3994dcefb3ea0f7447' (2023-12-14)
  → 'github:nixos/nixpkgs/d6863cbcbbb80e71cecfc03356db1cda38919523' (2023-12-21)
2023-12-24 00:19:31 +00:00
lumiscosity
c29af83dc3 fix styling
Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2023-12-23 14:16:29 +01:00
lumiscosity
1e48bf838d move simplify call to drawing
Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2023-12-23 12:05:07 +01:00
lumiscosity
1bf386603d Strip newlines in mod descriptions
Mirrors Modrinth page behaviour.

Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2023-12-23 11:27:19 +01:00
Trial97
9a33bdcf50
Fixed openURL cast for resource
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-23 01:02:04 +02:00
Trial97
526e580fbb
Force clear the resource selection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-23 00:33:38 +02:00
Trial97
13d29ac6f4
Updated the size sort code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-22 23:35:48 +02:00
lumiscosity
358cf5b348 add archived project warning
Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2023-12-22 22:04:33 +01:00
lumiscosity
43306350e0 Add cat opacity
Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2023-12-22 15:02:41 +01:00
TheKodeToad
e39a03421a
Merge pull request #1964 from Scrumplex/fix/dont-log-katabasis
Don't log Microsoft refresh tokens
2023-12-19 11:24:45 +00:00
Sefa Eyeoglu
a1e3901b3f
fix: don't log katabasis by default
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-12-17 12:39:17 +01:00
Sefa Eyeoglu
2993306226
Merge pull request #1963 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-12-17 10:19:15 +01:00
github-actions[bot]
74e2e49134 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/09dc04054ba2ff1f861357d0e7e76d021b273cd7' (2023-12-08)
  → 'github:nixos/nixpkgs/aa9d4729cbc99dabacb50e3994dcefb3ea0f7447' (2023-12-14)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/e5ee5c5f3844550c01d2131096c7271cec5e9b78' (2023-11-25)
  → 'github:cachix/pre-commit-hooks.nix/007a45d064c1c32d04e1b8a0de5ef00984c419bc' (2023-12-13)
2023-12-17 00:20:10 +00:00
Sefa Eyeoglu
e227826a90
Merge pull request #1955 from PrismLauncher/renovate/actions-download-artifact-4.x
chore(deps): update actions/download-artifact action to v4
2023-12-16 17:27:02 +01:00
Sefa Eyeoglu
211e62cedb
Merge pull request #1956 from PrismLauncher/renovate/actions-upload-artifact-4.x
chore(deps): update actions/upload-artifact action to v4
2023-12-16 17:26:28 +01:00
Sefa Eyeoglu
7382d33430
Merge pull request #1961 from PrismLauncher/renovate/korthout-backport-action-2.x
chore(deps): update korthout/backport-action action to v2.3.0
2023-12-16 17:25:53 +01:00
Tayou
1fcf405c88
Merge pull request #1960 from lumiscosity/fix/minor_spelling
Minor spelling fixes
2023-12-16 16:34:21 +01:00
renovate[bot]
8f29cdf195
chore(deps): update korthout/backport-action action to v2.3.0 2023-12-16 15:27:48 +00:00
Sefa Eyeoglu
a8220cd296
chore: remove unused methods
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-12-16 13:12:12 +01:00
Sefa Eyeoglu
213963257c
chore: remove maybe_unused
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-12-16 13:11:24 +01:00
lumiscosity
eb8e150fa8
one more
Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2023-12-16 13:00:22 +01:00
lumiscosity
56397446db
Update ModFolderPage.cpp
Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2023-12-16 12:53:59 +01:00
lumiscosity
8cbdecc454
Update GetModDependenciesTask.cpp
Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2023-12-16 12:52:59 +01:00
renovate[bot]
317d52b44a
chore(deps): update actions/upload-artifact action to v4 2023-12-14 20:23:30 +00:00
renovate[bot]
d0fe700b53
chore(deps): update actions/download-artifact action to v4 2023-12-14 20:23:26 +00:00
Sefa Eyeoglu
0ccdcd23e3
fix: open paths directly
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-12-14 13:02:29 +01:00
Trial97
f33110ee0c
Renamed function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-14 00:19:22 +02:00
Trial97
9580f16c33
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into netjob_retry
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-14 00:16:29 +02:00
Trial97
400b518bc2
Removed auto reauthenticate
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-14 00:02:15 +02:00
Sefa Eyeoglu
32a9c37ecd
Merge pull request #1951 from guihkx/sync-flatpak 2023-12-13 19:32:56 +01:00
guihkx
3d50bef10c
chore: sync nightly flatpak manifest with flathub's
Signed-off-by: guihkx <626206+guihkx@users.noreply.github.com>
2023-12-13 15:17:19 -03:00
Sefa Eyeoglu
608a09d211
Merge pull request #1950 from PrismLauncher/renovate/github-codeql-action-3.x 2023-12-13 18:25:59 +01:00
renovate[bot]
469aaf6051
chore(deps): update github/codeql-action action to v3 2023-12-13 16:16:06 +00:00
Trial97
6a61900328
Fixed curseforge version filter
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-13 17:48:11 +02:00
Trial97
763eab6b96
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2023-12-13 14:48:31 +02:00
Trial97
4498d32cc0
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into move_export2 2023-12-13 14:37:02 +02:00
Trial97
d10b075677
Sort mods before export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-13 14:36:58 +02:00
timoreo
a382754b1e
Merge pull request #1947 from theMackabu/patch-minimized 2023-12-13 11:10:39 +01:00
TheKodeToad
2391ad200f
Revert change to .gitignore
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-12-12 23:21:34 +00:00
theMackabu
648aa18e6f
add: refresh on load
Signed-off-by: theMackabu <theMackabu@gmail.com>
2023-12-12 14:26:45 -08:00
theMackabu
7c33a8e448
remove: maidfile.toml (local build tool)
Signed-off-by: theMackabu <theMackabu@gmail.com>
2023-12-12 13:37:24 -08:00
theMackabu
201c9783d5
clang-format: fix formatting
Signed-off-by: theMackabu <theMackabu@gmail.com>
2023-12-12 13:31:18 -08:00
theMackabu
836f74cd46
#1945 resolve issue on windows
Signed-off-by: theMackabu <theMackabu@gmail.com>
2023-12-12 13:26:44 -08:00
theMackabu
3567369d44
#1945 resolve minimized windows pull from dock
Signed-off-by: theMackabu <theMackabu@gmail.com>
2023-12-12 13:26:44 -08:00
timoreo
4612607803
Merge pull request #1712 from Trial97/current_time 2023-12-11 15:40:06 +01:00
Sefa Eyeoglu
a39e2a1145
Merge pull request #1916 from PrismLauncher/renovate/korthout-backport-action-2.x 2023-12-11 11:10:04 +01:00
Sefa Eyeoglu
79218cf13b
Merge pull request #1738 from Trial97/some_removals 2023-12-11 11:08:26 +01:00
Sefa Eyeoglu
f8a6a099c7
Merge pull request #1732 from Trial97/update_file2 2023-12-11 11:08:07 +01:00
Sefa Eyeoglu
9467b11897
Merge pull request #1694 from Trial97/concurrent 2023-12-11 11:07:03 +01:00
Sefa Eyeoglu
bcaeab1ddc
Merge pull request #1857 from Trial97/copy_time 2023-12-11 10:58:21 +01:00
Sefa Eyeoglu
f8db991727
Merge pull request #1908 from DioEgizio/update-qt661 2023-12-11 10:57:56 +01:00
Sefa Eyeoglu
ad6ca1c6ea
Merge pull request #1931 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-12-10 10:16:00 +01:00
github-actions[bot]
d7cb139235 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/41fd48e00c22b4ced525af521ead8792402de0ea' (2023-09-16)
  → 'github:numtide/nix-filter/c843418ecfd0344ecb85844b082ff5675e02c443' (2023-12-04)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/f5c27c6136db4d76c30e533c20517df6864c46ee' (2023-11-30)
  → 'github:nixos/nixpkgs/09dc04054ba2ff1f861357d0e7e76d021b273cd7' (2023-12-08)
2023-12-10 00:20:06 +00:00
TheKodeToad
4db00897c6
Merge pull request #1922 from IceCryptonym/togglable-status-bar
Add togglable status bar
2023-12-07 20:37:36 +00:00
Sefa Eyeoglu
e408a047ed
Merge pull request #1923 from TayouVR/more-instance-group-seperator 2023-12-07 21:34:41 +01:00
Tayou
877eb4172a
add line back to group separator
Signed-off-by: Tayou <git@tayou.org>
2023-12-07 17:26:47 +01:00
Archy
faedd0fd65 Add togglable status bar
Signed-off-by: Archy <59789660+IceCryptonym@users.noreply.github.com>
2023-12-06 23:40:22 +10:00
renovate[bot]
132344df1c
chore(deps): update korthout/backport-action action to v2.2.0 2023-12-04 12:06:39 +00:00
Trial97
657416fe30
Removed header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-03 21:29:02 +02:00
Trial97
577c737d68
Fixed askIfShouldUpdate dialog on mac
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-12-03 20:00:50 +02:00
Sefa Eyeoglu
c721fa795d
Merge pull request #1912 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-12-03 10:51:26 +01:00
github-actions[bot]
8b4b0f2f01 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/8c9fa2545007b49a5db5f650ae91f227672c3877' (2023-11-01)
  → 'github:hercules-ci/flake-parts/34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5' (2023-12-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:NixOS/nixpkgs/0cbe9f69c234a7700596e943bfae7ef27a31b735?dir=lib' (2023-10-29)
  → 'github:NixOS/nixpkgs/e92039b55bcd58469325ded85d4f58dd5a4eaf58?dir=lib' (2023-11-29)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/0bd59c54ef06bc34eca01e37d689f5e46b3fe2f1' (2023-11-24)
  → 'github:nixos/nixpkgs/f5c27c6136db4d76c30e533c20517df6864c46ee' (2023-11-30)
2023-12-03 00:19:28 +00:00
DioEgizio
eb011e6729 chore: update qt to qt 6.6.1
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-12-02 17:42:24 +01:00
Trial97
463ff4c6ae
Removed assert permanantly
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-27 11:30:07 +02:00
Trial97
6f6b6312a5
Moved the button up
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-27 09:39:31 +02:00
Trial97
2d91bd09d4
Fixed crash on abort function not initialized
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-26 23:49:56 +02:00
Trial97
f4e098f7f5
Formated file
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-25 09:36:55 +02:00
Trial97
1a0fd5f993
Added mod reinstall dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-25 00:18:10 +02:00
Trial97
20e0cb43b9
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into concurrent 2023-11-23 23:58:47 +02:00
Trial97
2db5677281
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2023-11-23 23:57:44 +02:00
Trial97
ff5a968de0
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into update_file2 2023-11-23 23:57:20 +02:00
Trial97
1650237c8f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into some_removals 2023-11-23 23:37:13 +02:00
Trial97
e0d776e551
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fix_duplicate_mod 2023-11-23 23:29:10 +02:00
Trial97
403a7f5d46
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into toggle_deps2 2023-11-23 23:21:11 +02:00
Trial97
af628be648
Merge branch 'error_codes' of github.com:Trial97/PrismLauncher into error_codes 2023-11-23 23:20:27 +02:00
Trial97
3c75d761a2
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into error_codes 2023-11-23 23:11:11 +02:00
Trial97
b47ec7f2dc
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into resource_size 2023-11-23 17:14:50 +02:00
Trial97
3234bb5a8c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into deps_improve 2023-11-23 17:05:37 +02:00
Trial97
bb9df1684b
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into new_cats 2023-11-23 16:58:42 +02:00
Trial97
0d44c0df1d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refresh_cats 2023-11-23 16:50:53 +02:00
Trial97
c5cdebb42f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into ftb_import 2023-11-23 16:43:33 +02:00
Trial97
2318a83881
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into shader 2023-11-23 16:33:57 +02:00
Trial97
be67067fa2
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into demo 2023-11-23 16:23:56 +02:00
Trial97
9c13504b06
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_ok 2023-11-23 16:13:09 +02:00
deadmeu
ac223a29ef
refactor: shorten desktop entry comment field
Signed-off-by: deadmeu <dmu@duck.com>
2023-11-24 00:03:33 +10:00
Trial97
afcdb7595c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into move_export2 2023-11-23 16:01:54 +02:00
Trial97
f71e622f71
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into copy_time 2023-11-23 15:51:54 +02:00
Trial97
4f49a56e4d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into supported_files 2023-11-23 15:40:31 +02:00
Trial97
944ed48a61
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into time4 2023-11-23 14:58:05 +02:00
Trial97
e503d44c54
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into current_time 2023-11-23 14:47:47 +02:00
Trial97
908072710a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-23 14:34:56 +02:00
Trial97
e43a557a0b
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into instance_copy_progress 2023-11-23 14:08:49 +02:00
Trial97
7d4778ffd6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into portabledatadir 2023-11-23 13:54:36 +02:00
Trial97
80383d237a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into disablemods 2023-11-23 13:38:11 +02:00
Trial97
1095d0698a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into waitprofiler 2023-11-23 13:25:12 +02:00
Trial97
c2fc2d330b
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip 2023-11-23 12:57:31 +02:00
Trial97
f16f0ed93e
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into netjob_retry 2023-11-23 12:47:52 +02:00
Trial97
9345416361
Fixed localization stuff
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-23 12:36:40 +02:00
Trial97
2268e46b91
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into account 2023-11-23 12:22:41 +02:00
Trial97
ceb88a170e
Extracted reauthenticateCurrentAccount as a separate function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-23 12:22:31 +02:00
Trial97
d8c5ed55c2
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into update_file2 2023-11-23 12:00:18 +02:00
Trial97
6169af70db
Added back the FIXME comment
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-23 11:59:35 +02:00
Trial97
e11b7e3770
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2023-11-23 10:46:27 +02:00
Trial97
670a0c1442
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into resource_size 2023-11-23 10:46:03 +02:00
Trial97
d5d8b7be8d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into move_export2 2023-11-23 10:45:35 +02:00
Trial97
721a08462c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into copy_time 2023-11-23 10:44:26 +02:00
Trial97
f0cff15d56
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into supported_files 2023-11-23 10:43:43 +02:00
Trial97
a7be21733f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector 2023-11-23 10:41:55 +02:00
Trial97
66decbb180
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into current_time 2023-11-23 10:41:06 +02:00
Trial97
4ef626dab3
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into time4 2023-11-23 10:40:30 +02:00
Trial97
e3af4f9a78
Fixed playtime recording
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-22 20:34:12 +02:00
Trial97
85b4e1f24f
Made column hidden by default
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-22 19:23:24 +02:00
Trial97
140a55810d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2023-11-22 14:20:30 +02:00
Trial97
54c308e5b5
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-19 21:15:12 +02:00
Trial97
26931475ae
made folder size reflect the number of elements
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-19 15:58:30 +02:00
Trial97
80c85aef99
fixed const stuff
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-19 15:37:18 +02:00
Alexandru Ionut Tripon
76216335b1
Update launcher/ui/pages/modplatform/ImportPage.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-11-19 15:26:47 +02:00
Trial97
f7e478c755
Added all supported files filter
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-19 02:02:02 +02:00
Trial97
9f39e45b28
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into current_time 2023-11-18 10:45:24 +02:00
Trial97
4e3132e8b2
reseted the setting
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-17 22:40:36 +02:00
Trial97
6b777653a5
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into resource_size
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-17 22:38:17 +02:00
Trial97
2bfb5fc138
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-17 22:26:17 +02:00
Trial97
53c6493b9a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into move_export2 2023-11-17 21:56:23 +02:00
Trial97
a531f32b69
fixed settings saving
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-16 13:26:29 +02:00
Trial97
215465e833
added subdirectories to iteration
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-15 14:11:34 +02:00
Trial97
4d93f4adb1
Fixed folder size
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-15 12:10:47 +02:00
Trial97
bedb4da869
Added filename to the modlist export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-14 19:37:23 +02:00
Trial97
6804e2ba59
moved export to list to the mods page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-14 18:40:45 +02:00
Trial97
99fbcbee4c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into move_export2 2023-11-14 18:12:48 +02:00
TheKodeToad
f4940e26c6
Merge remote-tracking branch 'upstream/develop' into resource-meta
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-11-12 19:02:14 +00:00
Trial97
17916dbd24
Fixed inconsistent Ok in instance import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-12 20:27:55 +02:00
Trial97
50a4d61ded
Fixed demo mode
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-10 23:26:41 +02:00
Trial97
463608b289
fixed shader packs detection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-10 19:37:11 +02:00
Trial97
5e2eb7bbbb
Added button to select the FTBApp instances directory
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-09 23:30:30 +02:00
Trial97
b4bfc03e8b
Added button to refresh themes and catpacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-09 21:48:46 +02:00
Trial97
7532a41043
Improvements to catpack
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-09 21:38:38 +02:00
Trial97
7a0b2a316a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-06 23:19:58 +02:00
Trial97
1d67fc6646
added special case for windows
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-05 17:35:49 +02:00
Trial97
5afe6600ee
use fs::move instead of qt rename
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-04 16:49:35 +02:00
Trial97
f828ea8929
updated the texture pack tooltips
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-04 11:49:05 +02:00
Trial97
79e299123c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip 2023-11-04 00:15:09 +02:00
Trial97
a4978946d5
disabled lax deps
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-04 00:07:51 +02:00
Trial97
2b6d8b8a2d
updated tooltip messages
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-03 23:02:17 +02:00
Trial97
cbb453a0ed
minimize the permisions for extracted files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-03 22:55:10 +02:00
Trial97
1b2654bfa6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip 2023-11-03 12:53:23 +02:00
Trial97
4081c51573
made dependency check more lax
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-02 23:52:12 +02:00
Trial97
3cbc63bb9f
added size column
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-02 12:18:24 +02:00
Trial97
2863a691ef
moved refresh out of the loop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-31 08:45:08 +02:00
Alexandru Ionut Tripon
60fd7f0ae6
Update launcher/minecraft/auth/steps/XboxAuthorizationStep.cpp
Co-authored-by: Tayou <git@tayou.org>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-10-31 08:43:26 +02:00
Trial97
7166d68736
fixed account refresh after sleep
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-31 00:45:18 +02:00
Trial97
e42a2404a9
added more microsoft error codes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-30 22:55:23 +02:00
Trial97
1490193402
added button to disable dependencies on the mod review
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-30 22:14:26 +02:00
Trial97
33cf7066b4
formated the code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-27 21:51:35 +03:00
Trial97
2256850cb6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feature/java-downloader
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-27 00:12:50 +03:00
Trial97
60a7628dbb
delete duplicate mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-26 20:43:26 +03:00
Trial97
3d84635b24
Remove file on mod duplication
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-26 20:09:12 +03:00
Trial97
321bbf1fa8
fixed asan stuff
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-26 19:06:38 +03:00
Trial97
dba54332fb
fixed some asan stuf
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-26 18:31:52 +03:00
Trial97
04acd27dab
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into concurrent 2023-10-26 13:45:47 +03:00
Trial97
8b8ea2d270
ensured that the variant is allways uppercase
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-26 13:37:25 +03:00
Trial97
44cdf3f697
Fixed skin variant
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-26 13:33:00 +03:00
Trial97
263dc5af67
Fixed remane and delete of selected skin
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-25 19:56:26 +03:00
Trial97
a5938a7de9
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-25 19:26:05 +03:00
Trial97
6a19f2dae8
fixed icon import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-24 11:19:19 +03:00
Trial97
694840937b
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip 2023-10-24 10:32:09 +03:00
Trial97
2aeb829176
removed the concurent task destructor behaivior
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-22 19:58:10 +03:00
Trial97
0ca3873f1c
small fix
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-22 17:48:19 +03:00
Trial97
a748f49362
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into concurrent 2023-10-22 11:34:55 +03:00
Trial97
932cd9e262
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-22 11:32:05 +03:00
Trial97
10ae808da9
fixed codeql
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-22 00:06:08 +03:00
Trial97
d151e97e3a
Fixed some headers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-21 22:40:37 +03:00
Trial97
41c9ca4f8a
Added categories filter
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-21 22:15:07 +03:00
Trial97
35d62cc5f2
Updated dependencies
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-21 19:05:31 +03:00
Trial97
9aac8e389f
made release type visible
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-21 18:48:55 +03:00
Trial97
9e85297f7a
Connected filters
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-21 18:28:33 +03:00
Trial97
4850434c67
added releaseType?
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-21 12:16:02 +03:00
Trial97
a9d7af9096
removed some unused stuff
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-20 16:44:37 +03:00
TheKodeToad
db4a7ce239
Fix code style
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-20 13:11:17 +01:00
Trial97
35a8ab2393
Removed processEvents
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-20 10:32:45 +03:00
Trial97
6883c19579
Fixed the version combobox
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-20 00:44:36 +03:00
Trial97
55946c8923
first attempt at a combobox
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-19 23:53:26 +03:00
Trial97
1ac9757a86
Added back the processEvents
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-19 21:51:51 +03:00
Trial97
03a27d5b5a
Updated Managed Packs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-19 19:47:48 +03:00
Trial97
8d4f508cc6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into concurrent 2023-10-18 18:08:48 +03:00
Trial97
30f73a0696
Merge branch 'fail_concurrent_task' of github.com:Trial97/PrismLauncher into concurrent
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-18 18:08:31 +03:00
Trial97
fea4c4eba8
Updated filters
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-18 09:00:45 +03:00
Trial97
b54376062e
Added mcVersion column
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-17 19:25:01 +03:00
Trial97
9001d9eb75
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into filters 2023-10-17 18:32:18 +03:00
Trial97
cc66350286
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into concurrent
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-16 23:42:19 +03:00
Trial97
9400879242
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-16 23:32:24 +03:00
Trial97
b6f48f6fe0
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into netjob_retry
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-16 23:13:53 +03:00
Trial97
869f654a10
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-16 22:46:11 +03:00
Trial97
0ff98c5876
allways enable dependencies
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-15 21:22:59 +03:00
Trial97
fe14e48d72
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into disablemods 2023-10-15 21:06:40 +03:00
Trial97
52c94eb568
reset the setting if is under 0
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-15 16:47:23 +03:00
Trial97
b075711be0
ensured totalTimePlayed is allways greater than 0
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-15 16:03:14 +03:00
Trial97
749975e8ef
made side and loaders visible to user
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-15 12:46:23 +03:00
Trial97
ab725eeb18
corected side and added loaders
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-15 11:52:28 +03:00
Trial97
5d56ac7cf2
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip 2023-10-10 21:15:31 +03:00
Trial97
5f7513d61c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into disablemods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-10 19:49:40 +03:00
Trial97
0b6373e4df
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-10 19:46:27 +03:00
Trial97
8dd640819d
removed processEvents from ConcurrentTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-09 01:50:14 +03:00
Trial97
47dbb09115
Improvements to concurrent task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-07 00:21:40 +03:00
cullvox
87f34f07d7
Merge branch 'develop' into components-resource-pack-fix
Signed-off-by: cullvox <68567525+cadenmiller@users.noreply.github.com>
2023-10-01 11:58:44 -04:00
Trial97
2e4fcd6aa3
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 23:26:15 +03:00
Trial97
09a10a916b
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into netjob_retry
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 23:23:42 +03:00
Trial97
0e41ceffc4
removed missed header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-16 19:18:58 +03:00
Trial97
01e98a6ce8
simplify the raw json parsing
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>

Fixed Tests

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-16 19:12:09 +03:00
cullvox
4053229544 DCO Remediation Commit for cullvox <cullvox@outlook.com>
I, cullvox <cullvox@outlook.com>, hereby add my Signed-off-by to this commit: c81689d39322d5ea5c7ed0073d73e4d8d2446b33

Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-15 20:55:34 -04:00
cullvox
07645984b5 Merge branch 'components-resource-pack-fix' of https://github.com/cadenmiller/PrismLauncher into components-resource-pack-fix 2023-09-15 20:41:27 -04:00
cullvox
c81689d393 fixes html elide issue with InfoFrame 2023-09-15 20:41:21 -04:00
cullvox
e96d0b6caf DCO Remediation Commit for cullvox <cullvox@outlook.com>
I, cullvox <cullvox@outlook.com>, hereby add my Signed-off-by to this commit: ee7016fa542e3ca92bdd691bd2e168d9d43a02c2

Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-13 14:31:04 -04:00
cullvox
ee7016fa54 use clang-format
Signed-off-by: cullvox <cullvox@outlook.com
2023-09-13 14:28:56 -04:00
cullvox
e1dda6c005 DCO Remediation Commit for cullvox <cullvox@outlook.com>
I, cullvox <cullvox@outlook.com>, hereby add my Signed-off-by to this commit: ddf0c28b1b0b6617b0308405b4d5eefd20ff48b2

Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-12 21:50:33 -04:00
cullvox
ddf0c28b1b clang-format fixes 2023-09-12 21:45:29 -04:00
cullvox
a4e6530513 added tests, fixed issues with overriding/format
In the documentation it states that child values can override the parent
values. Originally this code did not support that but now it does. Also
added in testing inspired by the previous tests.

Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-12 21:34:42 -04:00
cullvox
df88ccd419 clean up and add review suggestions, links open
Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-11 15:49:01 -04:00
cullvox
b16085f66c attempt to fix clang-format and ubuntu build.
Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-11 02:05:05 -04:00
cullvox
fbe4043651 fix formatting and add more proper errors.
Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-11 01:34:53 -04:00
cullvox
58bd6d929f added formatting with colors.
This is somewhat dirty implementation and I will clean it up soon.
Using the HTML rich text features of Qt, made it much easier to
understand what was needed.

Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-10 23:37:26 -04:00
cullvox
7a7c3015f4 fix not properly reading json text.
The text now displays properly in the GUI of Prism.

Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-09 20:25:49 -04:00
cullvox
1261908ef7 remove space for clang-format
Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-09 19:55:55 -04:00
cullvox
ef1dc2afac DCO Remediation Commit for cullvox <cullvox@outlook.com>
I, cullvox <cullvox@outlook.com>, hereby add my Signed-off-by to this commit: 05f4214cc5d3a9005c0d259ca185303792aa2fa7

Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-09 19:50:59 -04:00
cullvox
05f4214cc5 fix clang-format failing 2023-09-09 19:50:13 -04:00
cullvox
04aa0155bf DCO Remediation Commit for cullvox <cullvox@outlook.com>
I, cullvox <cullvox@outlook.com>, hereby add my Signed-off-by to this commit: d2e662ddbb518b147de76ca3f613e046d2912db5

Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-09 19:45:30 -04:00
cullvox
093d09efe3 fix style, and use qWarning instead of throw.
Signed-off-by: cullvox <cullvox@outlook.com>
2023-09-09 19:03:33 -04:00
cullvox
d2e662ddbb added support for components in resource pack descriptions.
Signed-off-by: Caden Miller <me@cadenmiller.dev>
2023-09-09 12:35:34 -04:00
Trial97
6ec1cf6e49
made skin upload more generic
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-08 19:50:46 +03:00
Trial97
8c8e4329d7
fix codeql
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-05 23:45:32 +03:00
Trial97
8bad255a91
added more import options
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-05 20:13:16 +03:00
Trial97
ab648e58ce
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into skin_selector 2023-09-05 00:18:45 +03:00
Trial97
c86b8b0f70
added skin manage dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-05 00:18:36 +03:00
TheKodeToad
179abfa03e
Resource provider column
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-01 22:05:44 +01:00
Trial97
9ad029e028
added skins directory
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-01 23:10:33 +03:00
Trial97
abbac5c26c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fail_concurrent_task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-01 22:28:59 +03:00
Trial97
609eaa67ab
refactored skin apis
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-01 21:23:51 +03:00
TheKodeToad
ad16d61208
Resource metadata writing
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-01 17:42:05 +01:00
TheKodeToad
6aecbfc38f
Fix crashes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-01 12:50:20 +01:00
TheKodeToad
ee48766996
More generalistaion for ResourceFolderModels
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-01 00:27:05 +01:00
TheKodeToad
93876e27f8
Generalise resource metadata
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-31 17:54:22 +01:00
Trial97
bf810053b7
updated instance copy
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 17:54:16 +03:00
Trial97
907c2fd19c
added missing header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 09:16:17 +03:00
Trial97
42b06674bb
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-17 15:29:11 +03:00
Trial97
71fd02e50e
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into netjob_retry 2023-08-17 15:22:45 +03:00
Trial97
8fbc665acb
Added UserData as another posible path for portable builds
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-16 18:28:46 +03:00
TheKodeToad
f3baa420b2
Fix broken tab order
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-16 13:45:22 +01:00
TheKodeToad
8778313170
Merge remote-tracking branch 'upstream/develop' into feature/java-downloader
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-16 13:39:14 +01:00
Trial97
c41c39b5d8
cleanup the mod name checking
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 23:55:09 +03:00
Trial97
fa164aa081
rename to GenericProfiler
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 22:18:28 +03:00
Trial97
f7f7bc6865
Removed update disabled warning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 20:52:17 +03:00
Trial97
c28d9161cf
added unused
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 18:54:22 +03:00
Trial97
748a644e2c
added wait profiler
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 18:50:32 +03:00
Trial97
38d92bbcf1
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 12:59:25 +03:00
Trial97
42a6c670c7
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fail_concurrent_task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 12:52:59 +03:00
TheKodeToad
983c943eef
Merge branch 'develop' into quick-play
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-12 21:48:41 +01:00
Trial97
57692d6ce6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 19:13:08 +03:00
Trial97
24b47e4ec6
Merge branch 'fail_concurrent_task' of github.com:Trial97/PrismLauncher into fail_concurrent_task 2023-08-05 19:06:26 +03:00
Trial97
5981e7815a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fail_concurrent_task 2023-08-05 19:06:01 +03:00
TheKodeToad
5538c1d0af
Fix compilation (actually this time!), incorporating new changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-28 15:11:24 +01:00
TheKodeToad
d4ea9c2717
Merge branch 'develop' into feature/java-downloader
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-28 14:50:59 +01:00
TheKodeToad
ce6a36c8b5
Deduplicate fix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-28 14:31:58 +01:00
Trial97
6768501db1
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import_zip
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-27 00:09:18 +03:00
Trial97
43cc04433d
feat: refactored Instance ImportTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-19 11:58:27 +03:00
TheKodeToad
5f37e339fb
Merge branch 'develop' into feature/java-downloader
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-16 12:32:31 +01:00
Alexandru Ionut Tripon
f42514a1a3
Update launcher/tasks/ConcurrentTask.cpp
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-07-16 00:38:39 +03:00
Trial97
6cf7c0a647
Connected last fail signals
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 20:17:16 +03:00
Trial97
a7e0c9db96
connected failed event for some tasks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 12:01:07 +03:00
Trial97
0880d4d37b
made sure abort signal is catched in cocurent task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 09:16:37 +03:00
Trial97
b54e093313
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into fail_concurrent_task 2023-07-15 09:04:22 +03:00
Trial97
68b5fdf748
Ask user to retry if netjob fails
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 00:03:11 +03:00
Trial97
d3dc00dcab
made concurent task fail
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 21:07:53 +03:00
Trial97
7f4665e3cc
format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 21:07:34 +03:00
TheKodeToad
aaab95ba55 Basic Quick Play support
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-12 12:08:57 +01:00
timoreo
6a5db12c6a
Apply some more suggestions from @flowln
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 15:00:33 +02:00
timoreo
dcbd6cc1af
More Json:: everywhere !
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:28 +02:00
timoreo
a65f20a789
Fix a tiny formatting issue
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:28 +02:00
timoreo
86e3518430
Apply most of the suggestions from @flowln
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:28 +02:00
timoreo
89f1b60538
Delete out non-needed functions from SysInfo
Delete LaunchContext

Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:28 +02:00
timoreo
dc84a61999
Added failed and aborted handlers
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:28 +02:00
timoreo
a902f29ccf
Changed to a temporary file
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:28 +02:00
timoreo
24dc154856
Add download button to more pages + UI fixes
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:27 +02:00
timoreo
68446c2a54
Obligatory formatting fix commit
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:27 +02:00
timoreo
f946964490
Regrab a few changes on SysInfo
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:27 +02:00
timoreo
53ddba8077
Made JavaDownloader a task and added some quick UI
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:27 +02:00
timoreo
54ad91c3b7
Anti-scrumped
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:27 +02:00
timoreo
89ce80b279
Fix Java downloader bugs + Add a test button in JavaPage
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:27 +02:00
timoreo
98a82cd484
Fix MMCZip bugs
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:27 +02:00
timoreo
a97387b692
Cherry-pick SysInfo from #680
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:26 +02:00
timoreo
9a4a92de4f
Clang format
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:26 +02:00
timoreo
3433c102b7
Remove old comment and change to piston-meta
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:26 +02:00
timoreo
f95856d062
Add the base of java downloading
Signed-off-by: timoreo <contact@timoreo.fr>
2022-10-24 08:02:18 +02:00
1008 changed files with 33523 additions and 17089 deletions

View File

@ -1,5 +1,23 @@
Checks:
- modernize-use-using
- readability-avoid-const-params-in-decls
- misc-unused-parameters,
- readability-identifier-naming
SystemHeaders: false
# ^ 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.ProtectedStaticMemberPrefix, value: s_ }
- { key: readability-identifier-naming.PublicStaticConstantCase, value: SCREAMING_SNAKE_CASE }
- { key: readability-identifier-naming.EnumConstantCase, value: SCREAMING_SNAKE_CASE }

2
.envrc
View File

@ -1,2 +1,2 @@
use flake
use nix
watch_file nix/*.nix

View File

@ -2,3 +2,12 @@
# tabs -> spaces
bbb3b3e6f6e3c0f95873f22e6d0a4aaf350f49d9
# (nix) alejandra -> nixfmt
4c81d8c53d09196426568c4a31a4e752ed05397a
# reformat codebase
1d468ac35ad88d8c77cc83f25e3704d9bd7df01b
# format a part of codebase
5c8481a118c8fefbfe901001d7828eaf6866eac4

View File

@ -0,0 +1,103 @@
# This file incorporates work covered by the following copyright and
# permission notice
#
# Copyright (c) 2003-2025 Eelco Dolstra and the Nixpkgs/NixOS contributors
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
name: Get merge commit
description: Get a merge commit of a given pull request
inputs:
repository:
description: Repository containing the pull request
required: false
pull-request-id:
description: ID of a pull request
required: true
outputs:
merge-commit-sha:
description: Git SHA of a merge commit
value: ${{ steps.query.outputs.merge-commit-sha }}
runs:
using: composite
steps:
- name: Wait for GitHub to report merge commit
id: query
shell: bash
env:
GITHUB_REPO: ${{ inputs.repository || github.repository }}
PR_ID: ${{ inputs.pull-request-id }}
# https://github.com/NixOS/nixpkgs/blob/8f77f3600f1ee775b85dc2c72fd842768e486ec9/ci/get-merge-commit.sh
run: |
set -euo pipefail
log() {
echo "$@" >&2
}
# Retry the API query this many times
retryCount=5
# Start with 5 seconds, but double every retry
retryInterval=5
while true; do
log "Checking whether the pull request can be merged"
prInfo=$(gh api \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$GITHUB_REPO/pulls/$PR_ID")
# Non-open PRs won't have their mergeability computed no matter what
state=$(jq -r .state <<<"$prInfo")
if [[ "$state" != open ]]; then
log "PR is not open anymore"
exit 1
fi
mergeable=$(jq -r .mergeable <<<"$prInfo")
if [[ "$mergeable" == "null" ]]; then
if ((retryCount == 0)); then
log "Not retrying anymore. It's likely that GitHub is having internal issues: check https://www.githubstatus.com/"
exit 3
else
((retryCount -= 1)) || true
# null indicates that GitHub is still computing whether it's mergeable
# Wait a couple seconds before trying again
log "GitHub is still computing whether this PR can be merged, waiting $retryInterval seconds before trying again ($retryCount retries left)"
sleep "$retryInterval"
((retryInterval *= 2)) || true
fi
else
break
fi
done
if [[ "$mergeable" == "true" ]]; then
echo "merge-commit-sha=$(jq -r .merge_commit_sha <<<"$prInfo")" >> "$GITHUB_OUTPUT"
else
echo "# 🚨 The PR has a merge conflict!" >> "$GITHUB_STEP_SUMMARY"
exit 2
fi

View File

@ -1,41 +0,0 @@
#!/usr/bin/env bash
URL_JDK8="https://api.adoptium.net/v3/binary/version/jdk8u312-b07/linux/x64/jre/hotspot/normal/eclipse"
URL_JDK17="https://api.adoptium.net/v3/binary/latest/17/ga/linux/x64/jre/hotspot/normal/eclipse"
mkdir -p JREs
pushd JREs
wget --content-disposition "$URL_JDK8"
wget --content-disposition "$URL_JDK17"
for file in *;
do
mkdir temp
re='(OpenJDK([[:digit:]]+)U-jre_x64_linux_hotspot_([[:digit:]]+)(.*).tar.gz)'
if [[ $file =~ $re ]];
then
version_major=${BASH_REMATCH[2]}
version_trailing=${BASH_REMATCH[4]}
if [ $version_major = 17 ];
then
hyphen='-'
else
hyphen=''
fi
version_edit=$(echo $version_trailing | sed -e 's/_/+/g' | sed -e 's/b/-b/g')
dir_name=jdk$hyphen$version_major$version_edit-jre
mkdir jre$version_major
tar -xzf $file -C temp
pushd temp/$dir_name
cp -r . ../../jre$version_major
popd
fi
rm -rf temp
done
popd

View File

@ -16,6 +16,7 @@ jobs:
permissions:
contents: write # for korthout/backport-action to create branch
pull-requests: write # for korthout/backport-action to create PR to backport
actions: write # for korthout/backport-action to create PR with workflow changes
name: Backport Pull Request
if: github.repository_owner == 'PrismLauncher' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name))
runs-on: ubuntu-latest
@ -24,7 +25,7 @@ jobs:
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Create backport PRs
uses: korthout/backport-action@v2.1.1
uses: korthout/backport-action@v3.2.0
with:
# Config README: https://github.com/korthout/backport-action#backport-action
pull_description: |-

239
.github/workflows/blocked-prs.yml vendored Normal file
View File

@ -0,0 +1,239 @@
name: Blocked/Stacked Pull Requests Automation
on:
pull_request_target:
types:
- opened
- reopened
- edited
- synchronize
workflow_dispatch:
inputs:
pr_id:
description: Local Pull Request number to work on
required: true
type: number
jobs:
blocked_status:
name: Check Blocked Status
runs-on: ubuntu-latest
steps:
- name: Generate token
id: generate-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.PULL_REQUEST_APP_ID }}
private-key: ${{ secrets.PULL_REQUEST_APP_PRIVATE_KEY }}
- name: Setup From Dispatch Event
if: github.event_name == 'workflow_dispatch'
id: dispatch_event_setup
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
PR_NUMBER: ${{ inputs.pr_id }}
run: |
# setup env for the rest of the workflow
OWNER=$(dirname "${{ github.repository }}")
REPO=$(basename "${{ github.repository }}")
PR_JSON=$(
gh api \
-H "Accept: application/vnd.github.raw+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$OWNER/$REPO/pulls/$PR_NUMBER"
)
echo "PR_JSON=$PR_JSON" >> "$GITHUB_ENV"
- name: Setup Environment
id: env_setup
env:
EVENT_PR_JSON: ${{ toJSON(github.event.pull_request) }}
run: |
# setup env for the rest of the workflow
PR_JSON=${PR_JSON:-"$EVENT_PR_JSON"}
{
echo "REPO=$(jq -r '.base.repo.name' <<< "$PR_JSON")"
echo "OWNER=$(jq -r '.base.repo.owner.login' <<< "$PR_JSON")"
echo "PR_NUMBER=$(jq -r '.number' <<< "$PR_JSON")"
echo "JOB_DATA=$(jq -c '
{
"repo": .base.repo.name,
"owner": .base.repo.owner.login,
"repoUrl": .base.repo.html_url,
"prNumber": .number,
"prHeadSha": .head.sha,
"prHeadLabel": .head.label,
"prBody": .body,
"prLabels": (reduce .labels[].name as $l ([]; . + [$l]))
}
' <<< "$PR_JSON")"
} >> "$GITHUB_ENV"
- name: Find Blocked/Stacked PRs in body
id: pr_ids
run: |
prs=$(
jq -c '
.prBody as $body
| (
$body |
reduce (
. | scan("blocked (?:by|on):? #([0-9]+)")
| map({
"type": "Blocked on",
"number": ( . | tonumber )
})
) as $i ([]; . + [$i[]])
) as $bprs
| (
$body |
reduce (
. | scan("stacked on:? #([0-9]+)")
| map({
"type": "Stacked on",
"number": ( . | tonumber )
})
) as $i ([]; . + [$i[]])
) as $sprs
| ($bprs + $sprs) as $prs
| {
"blocking": $prs,
"numBlocking": ( $prs | length),
}
' <<< "$JOB_DATA"
)
echo "prs=$prs" >> "$GITHUB_OUTPUT"
- name: Collect Blocked PR Data
id: blocking_data
if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
BLOCKING_PRS: ${{ steps.pr_ids.outputs.prs }}
run: |
blocked_pr_data=$(
while read -r pr_data ; do
gh api \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/$OWNER/$REPO/pulls/$(jq -r '.number' <<< "$pr_data")" \
| jq -c --arg type "$(jq -r '.type' <<< "$pr_data")" \
'
. | {
"type": $type,
"number": .number,
"merged": .merged,
"labels": (reduce .labels[].name as $l ([]; . + [$l])),
"basePrUrl": .html_url,
"baseRepoName": .head.repo.name,
"baseRepoOwner": .head.repo.owner.login,
"baseRepoUrl": .head.repo.html_url,
"baseSha": .head.sha,
"baseRefName": .head.ref,
}
'
done < <(jq -c '.blocking[]' <<< "$BLOCKING_PRS") | jq -c -s
)
{
echo "data=$blocked_pr_data";
echo "all_merged=$(jq -r 'all(.[].merged; .)' <<< "$blocked_pr_data")";
echo "current_blocking=$(jq -c 'map( select( .merged | not ) | .number )' <<< "$blocked_pr_data" )";
} >> "$GITHUB_OUTPUT"
- name: Add 'blocked' Label is Missing
id: label_blocked
if: (fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0) && !contains(fromJSON(env.JOB_DATA).prLabels, 'blocked') && !fromJSON(steps.blocking_data.outputs.all_merged)
continue-on-error: true
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh -R ${{ github.repository }} issue edit --add-label 'blocked' "$PR_NUMBER"
- name: Remove 'blocked' Label if All Dependencies Are Merged
id: unlabel_blocked
if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0 && fromJSON(steps.blocking_data.outputs.all_merged)
continue-on-error: true
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
run: |
gh -R ${{ github.repository }} issue edit --remove-label 'blocked' "$PR_NUMBER"
- name: Apply 'blocking' Label to Unmerged Dependencies
id: label_blocking
if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0
continue-on-error: true
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
BLOCKING_ISSUES: ${{ steps.blocking_data.outputs.current_blocking }}
run: |
while read -r pr ; do
gh -R ${{ github.repository }} issue edit --add-label 'blocking' "$pr" || true
done < <(jq -c '.[]' <<< "$BLOCKING_ISSUES")
- name: Apply Blocking PR Status Check
id: blocked_check
if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0
continue-on-error: true
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
BLOCKING_DATA: ${{ steps.blocking_data.outputs.data }}
run: |
pr_head_sha=$(jq -r '.prHeadSha' <<< "$JOB_DATA")
# create commit Status, overwrites previous identical context
while read -r pr_data ; do
DESC=$(
jq -r ' "Blocking PR #" + (.number | tostring) + " is " + (if .merged then "" else "not yet " end) + "merged"' <<< "$pr_data"
)
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"/repos/${OWNER}/${REPO}/statuses/${pr_head_sha}" \
-f "state=$(jq -r 'if .merged then "success" else "failure" end' <<< "$pr_data")" \
-f "target_url=$(jq -r '.basePrUrl' <<< "$pr_data" )" \
-f "description=$DESC" \
-f "context=ci/blocking-pr-check:$(jq '.number' <<< "$pr_data")"
done < <(jq -c '.[]' <<< "$BLOCKING_DATA")
- name: Context Comment
id: generate-comment
if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0
continue-on-error: true
env:
BLOCKING_DATA: ${{ steps.blocking_data.outputs.data }}
run: |
COMMENT_PATH="$(pwd)/temp_comment_file.txt"
echo '<h3>PR Dependencies :pushpin:</h3>' > "$COMMENT_PATH"
echo >> "$COMMENT_PATH"
pr_head_label=$(jq -r '.prHeadLabel' <<< "$JOB_DATA")
while read -r pr_data ; do
base_pr=$(jq -r '.number' <<< "$pr_data")
base_ref_name=$(jq -r '.baseRefName' <<< "$pr_data")
base_repo_owner=$(jq -r '.baseRepoOwner' <<< "$pr_data")
base_repo_name=$(jq -r '.baseRepoName' <<< "$pr_data")
compare_url="https://github.com/$base_repo_owner/$base_repo_name/compare/$base_ref_name...$pr_head_label"
status=$(jq -r 'if .merged then ":heavy_check_mark: Merged" else ":x: Not Merged" end' <<< "$pr_data")
type=$(jq -r '.type' <<< "$pr_data")
echo " - $type #$base_pr $status [(compare)]($compare_url)" >> "$COMMENT_PATH"
done < <(jq -c '.[]' <<< "$BLOCKING_DATA")
{
echo 'body<<EOF';
cat "${COMMENT_PATH}";
echo 'EOF';
} >> "$GITHUB_OUTPUT"
- name: 💬 PR Comment
if: fromJSON(steps.pr_ids.outputs.prs).numBlocking > 0
continue-on-error: true
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
COMMENT_BODY: ${{ steps.generate-comment.outputs.body }}
run: |
gh -R ${{ github.repository }} issue comment "$PR_NUMBER" \
--body "$COMMENT_BODY" \
--create-if-none \
--edit-last

View File

@ -21,8 +21,23 @@ on:
WINDOWS_CODESIGN_PASSWORD:
description: Password for signing Windows builds
required: false
CACHIX_AUTH_TOKEN:
description: Private token for authenticating against Cachix cache
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
GPG_PRIVATE_KEY:
description: Private key for AppImage signing
@ -37,16 +52,15 @@ jobs:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
qt_ver: 5
- os: ubuntu-20.04
- os: ubuntu-22.04
qt_ver: 6
qt_host: linux
qt_arch: ""
qt_version: "6.2.4"
qt_modules: "qt5compat qtimageformats"
qt_tools: ""
qt_version: "6.8.1"
qt_modules: "qt5compat qtimageformats qtnetworkauth"
linuxdeploy_hash: "4648f278ab3ef31f819e67c30d50f462640e5365a77637d7e6f2ad9fd0b4522a linuxdeploy-x86_64.AppImage"
linuxdeploy_qt_hash: "15106be885c1c48a021198e7e1e9a48ce9d02a86dd0a1848f00bdbf3c1c92724 linuxdeploy-plugin-qt-x86_64.AppImage"
appimageupdate_hash: "f1747cf60058e99f1bb9099ee9787d16c10241313b7acec81810ea1b1e568c11 AppImageUpdate-x86_64.AppImage"
- os: windows-2022
name: "Windows-MinGW-w64"
@ -59,11 +73,12 @@ jobs:
architecture: "x64"
vcvars_arch: "amd64"
qt_ver: 6
qt_host: windows
qt_arch: ''
qt_version: '6.6.0'
qt_modules: 'qt5compat qtimageformats'
qt_tools: ''
qt_host: "windows"
qt_arch: "win64_msvc2022_64"
qt_version: "6.8.1"
qt_modules: "qt5compat qtimageformats qtnetworkauth"
nscurl_tag: "v24.9.26.122"
nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0"
- os: windows-2022
name: "Windows-MSVC-arm64"
@ -71,30 +86,21 @@ jobs:
architecture: "arm64"
vcvars_arch: "amd64_arm64"
qt_ver: 6
qt_host: windows
qt_arch: 'win64_msvc2019_arm64'
qt_version: '6.6.0'
qt_modules: 'qt5compat qtimageformats'
qt_tools: ''
qt_host: "windows"
qt_arch: "win64_msvc2022_arm64_cross_compiled"
qt_version: "6.8.1"
qt_modules: "qt5compat qtimageformats qtnetworkauth"
nscurl_tag: "v24.9.26.122"
nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0"
- os: macos-12
- os: macos-14
name: macOS
macosx_deployment_target: 11.0
qt_ver: 6
qt_host: mac
qt_arch: ''
qt_version: '6.6.0'
qt_modules: 'qt5compat qtimageformats'
qt_tools: ''
- os: macos-12
name: macOS-Legacy
macosx_deployment_target: 10.13
qt_ver: 5
qt_host: mac
qt_version: "5.15.2"
qt_modules: ""
qt_tools: ""
qt_arch: ""
qt_version: "6.8.1"
qt_modules: "qt5compat qtimageformats qtnetworkauth"
runs-on: ${{ matrix.os }}
@ -136,6 +142,7 @@ jobs:
quazip-qt6:p
ccache:p
qt6-5compat:p
qt6-networkauth:p
cmark:p
- name: Force newer ccache
@ -145,13 +152,19 @@ jobs:
- name: Setup ccache
if: (runner.os != 'Windows' || matrix.msystem == '') && inputs.build_type == 'Debug'
uses: hendrikmuhs/ccache-action@v1.2.10
uses: hendrikmuhs/ccache-action@v1.2.18
with:
key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}-${{ matrix.architecture }}
- name: Use ccache on Debug builds only
if: inputs.build_type == 'Debug'
shell: bash
run: |
echo "CCACHE_VAR=ccache" >> $GITHUB_ENV
- name: Retrieve ccache cache (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug'
uses: actions/cache@v3.3.2
uses: actions/cache@v4.2.3
with:
path: '${{ github.workspace }}\.ccache'
key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }}
@ -168,11 +181,16 @@ jobs:
ccache -p # Show config
ccache -z # Zero stats
- name: Use ccache on Debug builds only
if: inputs.build_type == 'Debug'
shell: bash
- name: Configure ccache (Windows MSVC)
if: ${{ runner.os == 'Windows' && matrix.msystem == '' && inputs.build_type == 'Debug' }}
run: |
echo "CCACHE_VAR=ccache" >> $GITHUB_ENV
# https://github.com/ccache/ccache/wiki/MS-Visual-Studio (I coudn't figure out the compiler prefix)
Copy-Item C:/ProgramData/chocolatey/lib/ccache/tools/ccache-4.7.1-windows-x86_64/ccache.exe -Destination C:/ProgramData/chocolatey/lib/ccache/tools/ccache-4.7.1-windows-x86_64/cl.exe
echo "CLToolExe=cl.exe" >> $env:GITHUB_ENV
echo "CLToolPath=C:/ProgramData/chocolatey/lib/ccache/tools/ccache-4.7.1-windows-x86_64/" >> $env:GITHUB_ENV
echo "TrackFileAccess=false" >> $env:GITHUB_ENV
# Needed for ccache, but also speeds up compile
echo "UseMultiToolTask=true" >> $env:GITHUB_ENV
- name: Set short version
shell: bash
@ -184,7 +202,7 @@ jobs:
if: runner.os == 'Linux'
run: |
sudo apt-get -y update
sudo apt-get -y install ninja-build extra-cmake-modules scdoc appstream
sudo apt-get -y install ninja-build extra-cmake-modules scdoc appstream libxcb-cursor-dev
- name: Install Dependencies (macOS)
if: runner.os == 'macOS'
@ -192,36 +210,29 @@ jobs:
brew update
brew install ninja extra-cmake-modules
- name: Install Qt (Linux)
if: runner.os == 'Linux' && matrix.qt_ver != 6
run: |
sudo apt-get -y install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5
- name: Install host Qt (Windows MSVC arm64)
if: runner.os == 'Windows' && matrix.architecture == 'arm64'
uses: jurplel/install-qt-action@v3
uses: jurplel/install-qt-action@v4
with:
aqtversion: "==3.1.*"
py7zrversion: ">=0.20.2"
version: ${{ matrix.qt_version }}
host: "windows"
target: "desktop"
arch: ""
arch: ${{ matrix.qt_arch }}
modules: ${{ matrix.qt_modules }}
tools: ${{ matrix.qt_tools }}
cache: ${{ inputs.is_qt_cached }}
cache-key-prefix: host-qt-arm64-windows
dir: ${{ github.workspace }}\HostQt
set-env: false
- name: Install Qt (macOS, Linux, Qt 6 & Windows MSVC)
if: runner.os == 'Linux' && matrix.qt_ver == 6 || runner.os == 'macOS' || (runner.os == 'Windows' && matrix.msystem == '')
uses: jurplel/install-qt-action@v3
- name: Install Qt (macOS, Linux & Windows MSVC)
if: matrix.msystem == ''
uses: jurplel/install-qt-action@v4
with:
aqtversion: "==3.1.*"
py7zrversion: ">=0.20.2"
version: ${{ matrix.qt_version }}
host: ${{ matrix.qt_host }}
target: "desktop"
arch: ${{ matrix.qt_arch }}
modules: ${{ matrix.qt_modules }}
@ -236,61 +247,63 @@ jobs:
arch: ${{ matrix.vcvars_arch }}
- name: Prepare AppImage (Linux)
if: runner.os == 'Linux' && matrix.qt_ver != 5
if: runner.os == 'Linux'
env:
APPIMAGEUPDATE_HASH: ${{ matrix.appimageupdate_hash }}
LINUXDEPLOY_HASH: ${{ matrix.linuxdeploy_hash }}
LINUXDEPLOY_QT_HASH: ${{ matrix.linuxdeploy_qt_hash }}
run: |
wget "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
wget "https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage"
wget "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage"
wget "https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20250213-2/linuxdeploy-x86_64.AppImage"
wget "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/1-alpha-20250213-1/linuxdeploy-plugin-qt-x86_64.AppImage"
wget "https://github.com/AppImageCommunity/AppImageUpdate/releases/download/continuous/AppImageUpdate-x86_64.AppImage"
wget "https://github.com/AppImageCommunity/AppImageUpdate/releases/download/2.0.0-alpha-1-20241225/AppImageUpdate-x86_64.AppImage"
sha256sum -c - <<< "$LINUXDEPLOY_HASH"
sha256sum -c - <<< "$LINUXDEPLOY_QT_HASH"
sha256sum -c - <<< "$APPIMAGEUPDATE_HASH"
${{ github.workspace }}/.github/scripts/prepare_JREs.sh
sudo apt install libopengl0
- name: Add QT_HOST_PATH var (Windows MSVC arm64)
if: runner.os == 'Windows' && matrix.architecture == 'arm64'
run: |
echo "QT_HOST_PATH=${{ github.workspace }}\HostQt\Qt\${{ matrix.qt_version }}\msvc2019_64" >> $env:GITHUB_ENV
echo "QT_HOST_PATH=${{ github.workspace }}\HostQt\Qt\${{ matrix.qt_version }}\msvc2022_64" >> $env:GITHUB_ENV
- name: Setup java (macOS)
if: runner.os == 'macOS'
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
##
# CONFIGURE
##
- name: Configure CMake (macOS)
if: runner.os == 'macOS' && matrix.qt_ver == 6
if: runner.os == 'macOS'
run: |
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -G Ninja
- name: Configure CMake (macOS-Legacy)
if: runner.os == 'macOS' && matrix.qt_ver == 5
run: |
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DMACOSX_SPARKLE_UPDATE_PUBLIC_KEY="" -DMACOSX_SPARKLE_UPDATE_FEED_URL="" -G Ninja
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -G Ninja
- name: Configure CMake (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != ''
shell: msys2 {0}
run: |
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=6 -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} -G Ninja
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=6 -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} -G Ninja
- name: Configure CMake (Windows MSVC)
if: runner.os == 'Windows' && matrix.msystem == ''
if: runner.os == 'Windows' && matrix.msystem == '' && matrix.architecture != 'arm64'
run: |
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -A${{ matrix.architecture}} -DLauncher_FORCE_BUNDLED_LIBS=ON -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }}
# https://github.com/ccache/ccache/wiki/MS-Visual-Studio (I coudn't figure out the compiler prefix)
if ("${{ env.CCACHE_VAR }}")
{
Copy-Item C:/ProgramData/chocolatey/lib/ccache/tools/ccache-4.7.1-windows-x86_64/ccache.exe -Destination C:/ProgramData/chocolatey/lib/ccache/tools/ccache-4.7.1-windows-x86_64/cl.exe
echo "CLToolExe=cl.exe" >> $env:GITHUB_ENV
echo "CLToolPath=C:/ProgramData/chocolatey/lib/ccache/tools/ccache-4.7.1-windows-x86_64/" >> $env:GITHUB_ENV
echo "TrackFileAccess=false" >> $env:GITHUB_ENV
}
# Needed for ccache, but also speeds up compile
echo "UseMultiToolTask=true" >> $env:GITHUB_ENV
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -DLauncher_FORCE_BUNDLED_LIBS=ON -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} -G Ninja
- name: Configure CMake (Windows MSVC arm64)
if: runner.os == 'Windows' && matrix.msystem == '' && matrix.architecture == 'arm64'
run: |
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -A${{ matrix.architecture}} -DLauncher_FORCE_BUNDLED_LIBS=ON -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }}
- name: Configure CMake (Linux)
if: runner.os == 'Linux'
run: |
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -G Ninja
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -G Ninja
##
# BUILD
@ -336,6 +349,20 @@ jobs:
# PACKAGE BUILDS
##
- name: Fetch codesign certificate (macOS)
if: runner.os == 'macOS'
run: |
echo '${{ secrets.APPLE_CODESIGN_CERT }}' | base64 --decode > codesign.p12
if [ -n '${{ secrets.APPLE_CODESIGN_ID }}' ]; then
security create-keychain -p '${{ secrets.APPLE_CODESIGN_PASSWORD }}' build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p '${{ secrets.APPLE_CODESIGN_PASSWORD }}' build.keychain
security import codesign.p12 -k build.keychain -P '${{ secrets.APPLE_CODESIGN_PASSWORD }}' -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k '${{ secrets.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 (macOS)
if: runner.os == 'macOS'
run: |
@ -343,17 +370,43 @@ jobs:
cd ${{ env.INSTALL_DIR }}
chmod +x "PrismLauncher.app/Contents/MacOS/prismlauncher"
sudo codesign --sign - --deep --force --entitlements "../program_info/App.entitlements" --options runtime "PrismLauncher.app/Contents/MacOS/prismlauncher"
if [ -n '${{ secrets.APPLE_CODESIGN_ID }}' ]; then
APPLE_CODESIGN_ID='${{ secrets.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 "PrismLauncher.app/Contents/MacOS/prismlauncher"
mv "PrismLauncher.app" "Prism Launcher.app"
tar -czf ../PrismLauncher.tar.gz *
- name: Notarize (macOS)
if: runner.os == 'macOS'
run: |
cd ${{ env.INSTALL_DIR }}
if [ -n '${{ secrets.APPLE_NOTARIZE_PASSWORD }}' ]; then
ditto -c -k --sequesterRsrc --keepParent "Prism Launcher.app" ../PrismLauncher.zip
xcrun notarytool submit ../PrismLauncher.zip \
--wait --progress \
--apple-id '${{ secrets.APPLE_NOTARIZE_APPLE_ID }}' \
--team-id '${{ secrets.APPLE_NOTARIZE_TEAM_ID }}' \
--password '${{ secrets.APPLE_NOTARIZE_PASSWORD }}'
xcrun stapler staple "Prism Launcher.app"
else
echo ":warning: Skipping notarization as credentials are not present." >> $GITHUB_STEP_SUMMARY
fi
ditto -c -k --sequesterRsrc --keepParent "Prism Launcher.app" ../PrismLauncher.zip
- name: Make Sparkle signature (macOS)
if: matrix.name == 'macOS'
run: |
if [ '${{ secrets.SPARKLE_ED25519_KEY }}' != '' ]; then
brew install openssl@3
echo '${{ secrets.SPARKLE_ED25519_KEY }}' > ed25519-priv.pem
signature=$(/usr/local/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.tar.gz -inkey ed25519-priv.pem | openssl base64 | tr -d \\n)
signature=$(/opt/homebrew/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.zip -inkey ed25519-priv.pem | openssl base64 | tr -d \\n)
rm ed25519-priv.pem
cat >> $GITHUB_STEP_SUMMARY << EOF
### Artifact Information :information_source:
@ -379,12 +432,6 @@ jobs:
run: |
cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build_type }}
cd ${{ env.INSTALL_DIR }}
if ("${{ matrix.qt_ver }}" -eq "5")
{
Copy-Item ${{ runner.workspace }}/Qt/Tools/OpenSSL/Win_x86/bin/libcrypto-1_1.dll -Destination libcrypto-1_1.dll
Copy-Item ${{ runner.workspace }}/Qt/Tools/OpenSSL/Win_x86/bin/libssl-1_1.dll -Destination libssl-1_1.dll
}
cd ${{ github.workspace }}
Get-ChildItem ${{ env.INSTALL_DIR }} -Recurse | ForEach FullName | Resolve-Path -Relative | %{ $_.TrimStart('.\') } | %{ $_.TrimStart('${{ env.INSTALL_DIR }}') } | %{ $_.TrimStart('\') } | Out-File -FilePath ${{ env.INSTALL_DIR }}/manifest.txt
@ -425,6 +472,16 @@ jobs:
- name: Package (Windows, installer)
if: runner.os == 'Windows'
run: |
if ('${{ matrix.nscurl_tag }}') {
New-Item -Name NSISPlugins -ItemType Directory
Invoke-Webrequest https://github.com/negrutiu/nsis-nscurl/releases/download/${{ matrix.nscurl_tag }}/NScurl.zip -OutFile NSISPlugins\NScurl.zip
$nscurl_hash = Get-FileHash NSISPlugins\NScurl.zip -Algorithm Sha256 | Select-Object -ExpandProperty Hash
if ( $nscurl_hash -ne "${{ matrix.nscurl_sha256 }}") {
echo "::error:: NSCurl.zip sha256 mismatch"
exit 1
}
Expand-Archive -Path NSISPlugins\NScurl.zip -DestinationPath NSISPlugins\NScurl
}
cd ${{ env.INSTALL_DIR }}
makensis -NOCD "${{ github.workspace }}/${{ env.BUILD_DIR }}/program_info/win_install.nsi"
@ -437,28 +494,8 @@ jobs:
":warning: Skipped code signing for Windows, as certificate was not present." >> $env:GITHUB_STEP_SUMMARY
}
- name: Package (Linux)
if: runner.os == 'Linux'
run: |
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_DIR }}
for l in $(find ${{ env.INSTALL_DIR }} -type f); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_DIR }}/manifest.txt
cd ${{ env.INSTALL_DIR }}
tar --owner root --group root -czf ../PrismLauncher.tar.gz *
- name: Package (Linux, portable)
if: runner.os == 'Linux'
run: |
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_PORTABLE_DIR }}
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} --component portable
for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); 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 ../PrismLauncher-portable.tar.gz *
- name: Package AppImage (Linux)
if: runner.os == 'Linux' && matrix.qt_ver != 5
if: runner.os == 'Linux'
shell: bash
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
@ -472,24 +509,16 @@ jobs:
chmod +x linuxdeploy-*.AppImage
mkdir -p ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-{8,17}-openjdk
mkdir -p ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib
mkdir -p ${{ env.INSTALL_APPIMAGE_DIR }}/usr/plugins/iconengines
cp -r ${{ github.workspace }}/JREs/jre8/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-8-openjdk
cp -r ${{ github.workspace }}/JREs/jre17/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-17-openjdk
cp -r ${{ runner.workspace }}/Qt/${{ matrix.qt_version }}/gcc_64/plugins/iconengines/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/plugins/iconengines
cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
cp /usr/lib/x86_64-linux-gnu/libcrypto.so.* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
cp /usr/lib/x86_64-linux-gnu/libssl.so.* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
cp /usr/lib/x86_64-linux-gnu/libOpenGL.so.0* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib"
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-8-openjdk/lib/amd64/server"
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-8-openjdk/lib/amd64"
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-17-openjdk/lib/server"
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-17-openjdk/lib"
export LD_LIBRARY_PATH
chmod +x AppImageUpdate-x86_64.AppImage
@ -511,76 +540,74 @@ jobs:
mv "PrismLauncher-Linux-x86_64.AppImage" "PrismLauncher-Linux-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage"
- name: Package (Linux, portable)
if: runner.os == 'Linux'
run: |
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_PORTABLE_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -DINSTALL_BUNDLE=full -G Ninja
cmake --install ${{ env.BUILD_DIR }}
cmake --install ${{ env.BUILD_DIR }} --component portable
mkdir ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /lib/x86_64-linux-gnu/libbz2.so.1.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libcrypto.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libssl.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libffi.so.*.* ${{ env.INSTALL_PORTABLE_DIR }}/lib
mv ${{ env.INSTALL_PORTABLE_DIR }}/bin/*.so* ${{ env.INSTALL_PORTABLE_DIR }}/lib
for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); 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 ../PrismLauncher-portable.tar.gz *
##
# UPLOAD BUILDS
##
- name: Upload binary tarball (macOS)
if: runner.os == 'macOS'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: PrismLauncher-${{ matrix.name }}-${{ env.VERSION }}-${{ inputs.build_type }}
path: PrismLauncher.tar.gz
path: PrismLauncher.zip
- name: Upload binary zip (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: PrismLauncher-${{ matrix.name }}-${{ env.VERSION }}-${{ inputs.build_type }}
path: ${{ env.INSTALL_DIR }}/**
- name: Upload binary zip (Windows, portable)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: PrismLauncher-${{ matrix.name }}-Portable-${{ env.VERSION }}-${{ inputs.build_type }}
path: ${{ env.INSTALL_PORTABLE_DIR }}/**
- name: Upload installer (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: PrismLauncher-${{ matrix.name }}-Setup-${{ env.VERSION }}-${{ inputs.build_type }}
path: PrismLauncher-Setup.exe
- name: Upload binary tarball (Linux, Qt 5)
if: runner.os == 'Linux' && matrix.qt_ver != 6
uses: actions/upload-artifact@v3
with:
name: PrismLauncher-${{ runner.os }}-Qt5-${{ env.VERSION }}-${{ inputs.build_type }}
path: PrismLauncher.tar.gz
- name: Upload binary tarball (Linux, portable, Qt 5)
if: runner.os == 'Linux' && matrix.qt_ver != 6
uses: actions/upload-artifact@v3
with:
name: PrismLauncher-${{ runner.os }}-Qt5-Portable-${{ env.VERSION }}-${{ inputs.build_type }}
path: PrismLauncher-portable.tar.gz
- name: Upload binary tarball (Linux, Qt 6)
if: runner.os == 'Linux' && matrix.qt_ver !=5
uses: actions/upload-artifact@v3
with:
name: PrismLauncher-${{ runner.os }}-Qt6-${{ env.VERSION }}-${{ inputs.build_type }}
path: PrismLauncher.tar.gz
- name: Upload binary tarball (Linux, portable, Qt 6)
if: runner.os == 'Linux' && matrix.qt_ver != 5
uses: actions/upload-artifact@v3
- name: Upload binary tarball (Linux, portable)
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: PrismLauncher-${{ runner.os }}-Qt6-Portable-${{ env.VERSION }}-${{ inputs.build_type }}
path: PrismLauncher-portable.tar.gz
- name: Upload AppImage (Linux)
if: runner.os == 'Linux' && matrix.qt_ver != 5
uses: actions/upload-artifact@v3
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage
path: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage
- name: Upload AppImage Zsync (Linux)
if: runner.os == 'Linux' && matrix.qt_ver != 5
uses: actions/upload-artifact@v3
if: runner.os == 'Linux'
uses: actions/upload-artifact@v4
with:
name: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage.zsync
path: PrismLauncher-Linux-x86_64.AppImage.zsync
@ -590,21 +617,3 @@ jobs:
shell: msys2 {0}
run: |
ccache -s
flatpak:
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-23.08
options: --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
if: inputs.build_type == 'Debug'
with:
submodules: "true"
- name: Build Flatpak (Linux)
if: inputs.build_type == 'Debug'
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: "Prism Launcher.flatpak"
manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml

View File

@ -1,35 +1,79 @@
name: "CodeQL Code Scanning"
on: [ push, pull_request, workflow_dispatch ]
on:
push:
# NOTE: `!` doesn't work with `paths-ignore` :(
# So we a catch-all glob instead
# https://github.com/orgs/community/discussions/25369#discussioncomment-3247674
paths:
- "**"
- "!.github/**"
- ".github/workflows/codeql.yml"
- "!flatpak/"
- "!nix/"
- "!scripts/"
- "!.git*"
- "!.envrc"
- "!**.md"
- "COPYING.md"
- "!renovate.json"
pull_request:
# See above
paths:
- "**"
- "!.github/**"
- ".github/workflows/codeql.yml"
- "!flatpak/"
- "!nix/"
- "!scripts/"
- "!.git*"
- "!.envrc"
- "!**.md"
- "COPYING.md"
- "!renovate.json"
workflow_dispatch:
jobs:
CodeQL:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: 'true'
submodules: "true"
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v3
with:
config-file: ./.github/codeql/codeql-config.yml
queries: security-and-quality
languages: cpp, java
- name: Install Dependencies
run:
sudo apt-get -y update
run: sudo apt-get -y update
sudo apt-get -y install ninja-build extra-cmake-modules scdoc qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5
sudo apt-get -y install ninja-build extra-cmake-modules scdoc
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
aqtversion: "==3.1.*"
py7zrversion: ">=0.20.2"
version: "6.8.1"
host: "linux"
target: "desktop"
arch: ""
modules: "qt5compat qtimageformats qtnetworkauth"
tools: ""
- name: Configure and Build
run: |
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DLauncher_QT_VERSION_MAJOR=5 -G Ninja
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -G Ninja
cmake --build build
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v3

78
.github/workflows/flatpak.yml vendored Normal file
View File

@ -0,0 +1,78 @@
name: Flatpak
on:
push:
# We don't do anything with these artifacts on releases. They go to Flathub
tags-ignore:
- "*"
# NOTE: `!` doesn't work with `paths-ignore` :(
# So we a catch-all glob instead
# https://github.com/orgs/community/discussions/25369#discussioncomment-3247674
paths:
- "**"
- "!.github/**"
- ".github/workflows/flatpak.yml"
- "!nix/"
- "!scripts/"
- "!.git*"
- "!.envrc"
- "!**.md"
- "COPYING.md"
- "!renovate.json"
pull_request:
# See above
paths:
- "**"
- "!.github/**"
- ".github/workflows/flatpak.yml"
- "!nix/"
- "!scripts/"
- "!.git*"
- "!.envrc"
- "!**.md"
- "COPYING.md"
- "!renovate.json"
workflow_dispatch:
permissions:
contents: read
jobs:
build:
name: Build (${{ matrix.arch }})
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
arch: x86_64
- os: ubuntu-22.04-arm
arch: aarch64
runs-on: ${{ matrix.os }}
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.8
options: --privileged
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: true
- name: Set short version
shell: bash
run: |
echo "VERSION=${GITHUB_SHA::7}" >> "$GITHUB_ENV"
- name: Build Flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-Flatpak.flatpak
manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml
arch: ${{ matrix.arch }}

62
.github/workflows/merge-blocking-pr.yml vendored Normal file
View File

@ -0,0 +1,62 @@
name: Merged Blocking Pull Request Automation
on:
pull_request_target:
types:
- closed
workflow_dispatch:
inputs:
pr_id:
description: Local Pull Request number to work on
required: true
type: number
jobs:
update-blocked-status:
name: Update Blocked Status
runs-on: ubuntu-latest
# a pr that was a `blocking:<id>` label was merged.
# find the open pr's it was blocked by and trigger a refresh of their state
if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'blocking') }}
steps:
- name: Generate token
id: generate-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.PULL_REQUEST_APP_ID }}
private-key: ${{ secrets.PULL_REQUEST_APP_PRIVATE_KEY }}
- name: Gather Dependent PRs
id: gather_deps
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
PR_NUMBER: ${{ inputs.pr_id || github.event.pull_request.number }}
run: |
blocked_prs=$(
gh -R ${{ github.repository }} pr list --label 'blocked' --json 'number,body' \
| jq -c --argjson pr "$PR_NUMBER" '
reduce ( .[] | select(
.body |
scan("(?:blocked (?:by|on)|stacked on):? #([0-9]+)") |
map(tonumber) |
any(.[]; . == $pr)
)) as $i ([]; . + [$i])
'
)
{
echo "deps=$blocked_prs"
echo "numdeps=$(jq -r '. | length' <<< "$blocked_prs")"
} >> "$GITHUB_OUTPUT"
- name: Trigger Blocked PR Workflows for Dependants
if: fromJSON(steps.gather_deps.outputs.numdeps) > 0
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
DEPS: ${{ steps.gather_deps.outputs.deps }}
run: |
while read -r pr ; do
gh -R ${{ github.repository }} workflow run 'blocked-prs.yml' -r "${{ github.ref_name }}" -f pr_id="$pr"
done < <(jq -c '.[].number' <<< "$DEPS")

121
.github/workflows/nix.yml vendored Normal file
View File

@ -0,0 +1,121 @@
name: Nix
on:
push:
tags:
- "*"
# NOTE: `!` doesn't work with `paths-ignore` :(
# So we a catch-all glob instead
# https://github.com/orgs/community/discussions/25369#discussioncomment-3247674
paths:
- "**"
- "!.github/**"
- ".github/workflows/nix.yml"
- "!flatpak/"
- "!scripts/"
- "!.git*"
- "!.envrc"
- "!**.md"
- "COPYING.md"
- "!renovate.json"
pull_request_target:
paths:
- "**"
- "!.github/**"
- ".github/workflows/nix.yml"
- "!flatpak/"
- "!scripts/"
- "!.git*"
- "!.envrc"
- "!**.md"
- "COPYING.md"
- "!renovate.json"
workflow_dispatch:
permissions:
contents: read
env:
DEBUG: ${{ github.ref_type != 'tag' }}
USE_DETERMINATE: ${{ github.event_name == 'pull_request' }}
jobs:
build:
name: Build (${{ matrix.system }})
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
system: x86_64-linux
- os: ubuntu-22.04-arm
system: aarch64-linux
- os: macos-13
system: x86_64-darwin
- os: macos-14
system: aarch64-darwin
runs-on: ${{ matrix.os }}
permissions:
id-token: write
steps:
- name: Get merge commit
if: ${{ github.event_name == 'pull_request_target' }}
id: merge-commit
uses: PrismLauncher/PrismLauncher/.github/actions/get-merge-commit@develop
with:
pull-request-id: ${{ github.event.number }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ steps.merge-commit.outputs.merge-commit-sha || github.sha }}
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v17
with:
determinate: ${{ env.USE_DETERMINATE }}
# For PRs
- name: Setup Nix Magic Cache
if: ${{ env.USE_DETERMINATE == 'true' }}
uses: DeterminateSystems/flakehub-cache-action@v1
# For in-tree builds
- name: Setup Cachix
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
uses: cachix/cachix-action@v16
with:
name: prismlauncher
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Run Flake checks
run: |
nix flake check --print-build-logs --show-trace
- name: Build debug package
if: ${{ env.DEBUG == 'true' }}
run: |
nix build \
--no-link --print-build-logs --print-out-paths \
.#prismlauncher-debug >> "$GITHUB_STEP_SUMMARY"
- name: Build release package
if: ${{ env.DEBUG == 'false' }}
env:
TAG: ${{ github.ref_name }}
SYSTEM: ${{ matrix.system }}
run: |
nix build --no-link --print-out-paths .#prismlauncher \
| tee -a "$GITHUB_STEP_SUMMARY" \
| xargs cachix pin prismlauncher "$TAG"-"$SYSTEM"

View File

@ -1,13 +1,21 @@
name: Publish to WinGet
name: Publish
on:
release:
types: [released]
types: [ released ]
permissions:
contents: read
jobs:
publish:
winget:
name: Winget
runs-on: windows-latest
steps:
- uses: vedantmgoyal2009/winget-releaser@v2
- name: Publish on Winget
uses: vedantmgoyal2009/winget-releaser@v2
with:
identifier: PrismLauncher.PrismLauncher
version: ${{ github.event.release.tag_name }}

29
.github/workflows/stale.yml vendored Normal file
View File

@ -0,0 +1,29 @@
name: Stale
on:
schedule:
# run weekly on sunday
- cron: "0 0 * * 0"
workflow_dispatch:
jobs:
label:
name: Label issues and PRs
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v9
with:
days-before-stale: 60
days-before-close: -1 # Don't close anything
exempt-issue-labels: rfc,nostale,help wanted
exempt-all-milestones: true
exempt-all-assignees: true
operations-per-run: 1000
stale-issue-label: inactive
stale-pr-label: inactive

View File

@ -4,21 +4,39 @@ on:
push:
branches-ignore:
- "renovate/**"
paths-ignore:
- "**.md"
- "**/LICENSE"
- "flake.lock"
- "packages/**"
- ".github/ISSUE_TEMPLATE/**"
- ".markdownlint**"
# NOTE: `!` doesn't work with `paths-ignore` :(
# So we a catch-all glob instead
# https://github.com/orgs/community/discussions/25369#discussioncomment-3247674
paths:
- "**"
- "!.github/**"
- ".github/workflows/build.yml"
- ".github/workflows/trigger_builds.yml"
- "!flatpak/"
- "!nix/"
- "!scripts/"
- "!.git*"
- "!.envrc"
- "!**.md"
- "COPYING.md"
- "!renovate.json"
pull_request:
paths-ignore:
- "**.md"
- "**/LICENSE"
- "flake.lock"
- "packages/**"
- ".github/ISSUE_TEMPLATE/**"
- ".markdownlint**"
# See above
paths:
- "**"
- "!.github/**"
- ".github/workflows/build.yml"
- ".github/workflows/trigger_builds.yml"
- "!flatpak/"
- "!nix/"
- "!scripts/"
- "!.git*"
- "!.envrc"
- "!**.md"
- "COPYING.md"
- "!renovate.json"
workflow_dispatch:
jobs:
@ -32,6 +50,11 @@ jobs:
SPARKLE_ED25519_KEY: ${{ secrets.SPARKLE_ED25519_KEY }}
WINDOWS_CODESIGN_CERT: ${{ secrets.WINDOWS_CODESIGN_CERT }}
WINDOWS_CODESIGN_PASSWORD: ${{ secrets.WINDOWS_CODESIGN_PASSWORD }}
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
APPLE_CODESIGN_CERT: ${{ secrets.APPLE_CODESIGN_CERT }}
APPLE_CODESIGN_PASSWORD: ${{ secrets.APPLE_CODESIGN_PASSWORD }}
APPLE_CODESIGN_ID: ${{ secrets.APPLE_CODESIGN_ID }}
APPLE_NOTARIZE_APPLE_ID: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }}
APPLE_NOTARIZE_TEAM_ID: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }}
APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_PRIVATE_KEY_ID: ${{ secrets.GPG_PRIVATE_KEY_ID }}

View File

@ -16,7 +16,12 @@ jobs:
SPARKLE_ED25519_KEY: ${{ secrets.SPARKLE_ED25519_KEY }}
WINDOWS_CODESIGN_CERT: ${{ secrets.WINDOWS_CODESIGN_CERT }}
WINDOWS_CODESIGN_PASSWORD: ${{ secrets.WINDOWS_CODESIGN_PASSWORD }}
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
APPLE_CODESIGN_CERT: ${{ secrets.APPLE_CODESIGN_CERT }}
APPLE_CODESIGN_PASSWORD: ${{ secrets.APPLE_CODESIGN_PASSWORD }}
APPLE_CODESIGN_ID: ${{ secrets.APPLE_CODESIGN_ID }}
APPLE_NOTARIZE_APPLE_ID: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }}
APPLE_NOTARIZE_TEAM_ID: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }}
APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_PRIVATE_KEY_ID: ${{ secrets.GPG_PRIVATE_KEY_ID }}
@ -32,7 +37,7 @@ jobs:
submodules: "true"
path: "PrismLauncher-source"
- name: Download artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
- name: Grab and store version
run: |
tag_name=$(echo ${{ github.ref }} | grep -oE "[^/]+$")
@ -41,13 +46,9 @@ jobs:
run: |
mv ${{ github.workspace }}/PrismLauncher-source PrismLauncher-${{ env.VERSION }}
mv PrismLauncher-Linux-Qt6-Portable*/PrismLauncher-portable.tar.gz PrismLauncher-Linux-Qt6-Portable-${{ env.VERSION }}.tar.gz
mv PrismLauncher-Linux-Qt6*/PrismLauncher.tar.gz PrismLauncher-Linux-Qt6-${{ env.VERSION }}.tar.gz
mv PrismLauncher-Linux-Qt5-Portable*/PrismLauncher-portable.tar.gz PrismLauncher-Linux-Qt5-Portable-${{ env.VERSION }}.tar.gz
mv PrismLauncher-Linux-Qt5*/PrismLauncher.tar.gz PrismLauncher-Linux-Qt5-${{ env.VERSION }}.tar.gz
mv PrismLauncher-*.AppImage/PrismLauncher-*.AppImage PrismLauncher-Linux-x86_64.AppImage
mv PrismLauncher-*.AppImage.zsync/PrismLauncher-*.AppImage.zsync PrismLauncher-Linux-x86_64.AppImage.zsync
mv PrismLauncher-macOS-Legacy*/PrismLauncher.tar.gz PrismLauncher-macOS-Legacy-${{ env.VERSION }}.tar.gz
mv PrismLauncher-macOS*/PrismLauncher.tar.gz PrismLauncher-macOS-${{ env.VERSION }}.tar.gz
mv PrismLauncher-macOS*/PrismLauncher.zip PrismLauncher-macOS-${{ env.VERSION }}.zip
tar --exclude='.git' -czf PrismLauncher-${{ env.VERSION }}.tar.gz PrismLauncher-${{ env.VERSION }}
@ -79,7 +80,7 @@ jobs:
- name: Create release
id: create_release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ github.ref }}
@ -87,11 +88,8 @@ jobs:
draft: true
prerelease: false
files: |
PrismLauncher-Linux-Qt5-${{ env.VERSION }}.tar.gz
PrismLauncher-Linux-Qt5-Portable-${{ env.VERSION }}.tar.gz
PrismLauncher-Linux-x86_64.AppImage
PrismLauncher-Linux-x86_64.AppImage.zsync
PrismLauncher-Linux-Qt6-${{ env.VERSION }}.tar.gz
PrismLauncher-Linux-Qt6-Portable-${{ env.VERSION }}.tar.gz
PrismLauncher-Windows-MinGW-w64-${{ env.VERSION }}.zip
PrismLauncher-Windows-MinGW-w64-Portable-${{ env.VERSION }}.zip
@ -102,6 +100,5 @@ jobs:
PrismLauncher-Windows-MSVC-${{ env.VERSION }}.zip
PrismLauncher-Windows-MSVC-Portable-${{ env.VERSION }}.zip
PrismLauncher-Windows-MSVC-Setup-${{ env.VERSION }}.exe
PrismLauncher-macOS-${{ env.VERSION }}.tar.gz
PrismLauncher-macOS-Legacy-${{ env.VERSION }}.tar.gz
PrismLauncher-macOS-${{ env.VERSION }}.zip
PrismLauncher-${{ env.VERSION }}.tar.gz

View File

@ -17,9 +17,9 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@7ac1ec25491415c381d9b62f0657c7a028df52a7 # v24
- uses: cachix/install-nix-action@754537aaedb35f72ab11a60cc162c49ef3016495 # v31
- uses: DeterminateSystems/update-flake-lock@v20
- uses: DeterminateSystems/update-flake-lock@v24
with:
commit-msg: "chore(nix): update lockfile"
pr-title: "chore(nix): update lockfile"

7
.gitignore vendored
View File

@ -21,6 +21,7 @@ CMakeCache.txt
/.vs
cmake-build-*/
Debug
compile_commands.json
# Build dirs
build
@ -47,8 +48,12 @@ run/
# Nix/NixOS
.direnv/
.pre-commit-config.yaml
## Used when manually invoking stdenv phases
outputs/
## Regular artifacts
result
result-*
repl-result-*
# Flatpak
.flatpak-builder

6
.gitmodules vendored
View File

@ -4,9 +4,6 @@
[submodule "libraries/tomlplusplus"]
path = libraries/tomlplusplus
url = https://github.com/marzer/tomlplusplus.git
[submodule "libraries/filesystem"]
path = libraries/filesystem
url = https://github.com/gulrak/filesystem
[submodule "libraries/libnbtplusplus"]
path = libraries/libnbtplusplus
url = https://github.com/PrismLauncher/libnbtplusplus.git
@ -22,3 +19,6 @@
[submodule "flatpak/shared-modules"]
path = flatpak/shared-modules
url = https://github.com/flathub/shared-modules.git
[submodule "libraries/qt-qrcodegenerator/QR-Code-generator"]
path = libraries/qt-qrcodegenerator/QR-Code-generator
url = https://github.com/nayuki/QR-Code-generator

View File

@ -1,3 +0,0 @@
# Build Instructions
Full build instructions are available on [the website](https://prismlauncher.org/wiki/development/build-instructions/).

View File

@ -78,13 +78,18 @@ else()
# ATL's pack list needs more than the default 1 Mib stack on windows
if(WIN32)
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack,8388608 ${CMAKE_EXE_LINKER_FLAGS}")
# -ffunction-sections and -fdata-sections help reduce binary size
# -mguard=cf enables Control Flow Guard
# TODO: Look into -gc-sections to further reduce binary size
foreach(lang C CXX)
set("CMAKE_${lang}_FLAGS_RELEASE" "-ffunction-sections -fdata-sections -mguard=cf")
endforeach()
endif()
endif()
# Fix build with Qt 5.13
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_DEPRECATED_WARNINGS=Y")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_DISABLE_DEPRECATED_BEFORE=0x050C00")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_WARN_DEPRECATED_UP_TO=0x060200")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_DISABLE_DEPRECATED_UP_TO=0x060000")
# Fix aarch64 build for toml++
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTOML_ENABLE_FLOAT16=0")
@ -92,6 +97,12 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTOML_ENABLE_FLOAT16=0")
# set CXXFLAGS for build targets
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -D_FORTIFY_SOURCE=2 ${CMAKE_CXX_FLAGS_RELEASE}")
# Export compile commands for debug builds if we can (useful in LSPs like clangd)
# https://cmake.org/cmake/help/v3.31/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html
if(CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL "Ninja" AND CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
endif()
option(DEBUG_ADDRESS_SANITIZER "Enable Address Sanitizer in Debug builds" OFF)
# If this is a Debug build turn on address sanitiser
@ -99,21 +110,21 @@ if ((CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI
message(STATUS "Address Sanitizer enabled for Debug builds, Turn it off with -DDEBUG_ADDRESS_SANITIZER=off")
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
# using clang with clang-cl front end
# using clang with clang-cl front end
message(STATUS "Address Sanitizer available on Clang MSVC frontend")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fsanitize=address /Oy-")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fsanitize=address /Oy-")
else()
# AppleClang and Clang
message(STATUS "Address Sanitizer available on Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=null")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=null")
endif()
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# GCC
message(STATUS "Address Sanitizer available on GCC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover")
link_libraries("asan")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
message(STATUS "Address Sanitizer available on MSVC")
@ -176,14 +187,17 @@ endif()
set(Launcher_NEWS_RSS_URL "https://prismlauncher.org/feed/feed.xml" CACHE STRING "URL to fetch Prism Launcher's news RSS feed from.")
set(Launcher_NEWS_OPEN_URL "https://prismlauncher.org/news" CACHE STRING "URL that gets opened when the user clicks 'More News'")
set(Launcher_HELP_URL "https://prismlauncher.org/wiki/help-pages/%1" CACHE STRING "URL (with arg %1 to be substituted with page-id) that gets opened when the user requests help")
set(Launcher_LOGIN_CALLBACK_URL "https://prismlauncher.org/successful-login" CACHE STRING "URL that gets opened when the user successfully logins.")
set(Launcher_FMLLIBS_BASE_URL "https://files.prismlauncher.org/fmllibs/" CACHE STRING "URL for FML Libraries.")
######## Set version numbers ########
set(Launcher_VERSION_MAJOR 8)
set(Launcher_VERSION_MAJOR 10)
set(Launcher_VERSION_MINOR 0)
set(Launcher_VERSION_PATCH 0)
set(Launcher_VERSION_NAME "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}")
set(Launcher_VERSION_NAME4 "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.0.0")
set(Launcher_VERSION_NAME4_COMMA "${Launcher_VERSION_MAJOR},${Launcher_VERSION_MINOR},0,0")
set(Launcher_VERSION_NAME "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_PATCH}")
set(Launcher_VERSION_NAME4 "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_PATCH}.0")
set(Launcher_VERSION_NAME4_COMMA "${Launcher_VERSION_MAJOR},${Launcher_VERSION_MINOR},${Launcher_VERSION_PATCH},0")
# Build platform.
set(Launcher_BUILD_PLATFORM "unknown" CACHE STRING "A short string identifying the platform that this build was built for. Only used to display in the about dialog.")
@ -205,6 +219,7 @@ set(Launcher_BUG_TRACKER_URL "https://github.com/PrismLauncher/PrismLauncher/iss
# Translations Platform URL
set(Launcher_TRANSLATIONS_URL "https://hosted.weblate.org/projects/prismlauncher/launcher/" CACHE STRING "URL for the translations platform.")
set(Launcher_TRANSLATION_FILES_URL "https://i18n.prismlauncher.org/" CACHE STRING "URL for the translations files.")
# Matrix Space
set(Launcher_MATRIX_URL "https://prismlauncher.org/matrix" CACHE STRING "URL to the Matrix Space")
@ -219,6 +234,19 @@ set(Launcher_SUBREDDIT_URL "https://prismlauncher.org/reddit" CACHE STRING "URL
set(Launcher_FORCE_BUNDLED_LIBS OFF CACHE BOOL "Prevent using system libraries, if they are available as submodules")
set(Launcher_QT_VERSION_MAJOR "6" CACHE STRING "Major Qt version to build against")
# Java downloader
set(Launcher_ENABLE_JAVA_DOWNLOADER_DEFAULT ON)
# Although we recommend enabling this, we cannot guarantee binary compatibility on
# differing Linux/BSD/etc distributions. Downstream packagers should be explicitly opt-ing into this
# feature if they know it will work with their distribution.
if(UNIX AND NOT APPLE)
set(Launcher_ENABLE_JAVA_DOWNLOADER_DEFAULT OFF)
endif()
# Java downloader
option(Launcher_ENABLE_JAVA_DOWNLOADER "Build the java downloader feature" ${Launcher_ENABLE_JAVA_DOWNLOADER_DEFAULT})
# Native libraries
if(UNIX AND APPLE)
set(Launcher_GLFW_LIBRARY_NAME "libglfw.dylib" CACHE STRING "Name of native glfw library")
@ -280,23 +308,11 @@ endif()
# Find the required Qt parts
include(QtVersionlessBackport)
if(Launcher_QT_VERSION_MAJOR EQUAL 5)
set(QT_VERSION_MAJOR 5)
find_package(Qt5 REQUIRED COMPONENTS Core Widgets Concurrent Network Test Xml)
if(NOT Launcher_FORCE_BUNDLED_LIBS)
find_package(QuaZip-Qt5 1.3 QUIET)
endif()
if (NOT QuaZip-Qt5_FOUND)
set(QUAZIP_QT_MAJOR_VERSION ${QT_VERSION_MAJOR} CACHE STRING "Qt version to use (4, 5 or 6), defaults to ${QT_VERSION_MAJOR}" FORCE)
set(FORCE_BUNDLED_QUAZIP 1)
endif()
# Qt 6 sets these by default. Notably causes Windows APIs to use UNICODE strings.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUNICODE -D_UNICODE")
elseif(Launcher_QT_VERSION_MAJOR EQUAL 6)
if(Launcher_QT_VERSION_MAJOR EQUAL 6)
set(QT_VERSION_MAJOR 6)
find_package(Qt6 REQUIRED COMPONENTS Core CoreTools Widgets Concurrent Network Test Xml Core5Compat)
find_package(Qt6 REQUIRED COMPONENTS Core CoreTools Widgets Concurrent Network Test Xml Core5Compat NetworkAuth OpenGL)
find_package(Qt6 COMPONENTS DBus)
list(APPEND Launcher_QT_DBUS Qt6::DBus)
list(APPEND Launcher_QT_LIBS Qt6::Core5Compat)
if(NOT Launcher_FORCE_BUNDLED_LIBS)
@ -310,29 +326,16 @@ else()
message(FATAL_ERROR "Qt version ${Launcher_QT_VERSION_MAJOR} is not supported")
endif()
if(Launcher_QT_VERSION_MAJOR EQUAL 5)
include(ECMQueryQt)
ecm_query_qt(QT_PLUGINS_DIR QT_INSTALL_PLUGINS)
ecm_query_qt(QT_LIBS_DIR QT_INSTALL_LIBS)
ecm_query_qt(QT_LIBEXECS_DIR QT_INSTALL_LIBEXECS)
else()
if(Launcher_QT_VERSION_MAJOR EQUAL 6)
set(QT_PLUGINS_DIR ${QT${QT_VERSION_MAJOR}_INSTALL_PREFIX}/${QT${QT_VERSION_MAJOR}_INSTALL_PLUGINS})
set(QT_LIBS_DIR ${QT${QT_VERSION_MAJOR}_INSTALL_PREFIX}/${QT${QT_VERSION_MAJOR}_INSTALL_LIBS})
set(QT_LIBEXECS_DIR ${QT${QT_VERSION_MAJOR}_INSTALL_PREFIX}/${QT${QT_VERSION_MAJOR}_INSTALL_LIBEXECS})
endif()
# NOTE: Qt 6 already sets this by default
if (Qt5_POSITION_INDEPENDENT_CODE)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
if(NOT Launcher_FORCE_BUNDLED_LIBS)
# Find toml++
find_package(tomlplusplus 3.2.0 QUIET)
# Find ghc_filesystem
find_package(ghc_filesystem QUIET)
# Find cmark
find_package(cmark QUIET)
endif()
@ -350,7 +353,7 @@ set(Launcher_ENABLE_UPDATER NO)
set(Launcher_BUILD_UPDATER NO)
if (NOT APPLE AND (NOT Launcher_UPDATER_GITHUB_REPO STREQUAL "" AND NOT Launcher_BUILD_ARTIFACT STREQUAL ""))
set(Launcher_BUILD_UPDATER YES)
set(Launcher_BUILD_UPDATER YES)
endif()
if(NOT (UNIX AND APPLE))
@ -377,12 +380,12 @@ if(UNIX AND APPLE)
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${Launcher_VERSION_NAME}")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${Launcher_VERSION_NAME}")
set(MACOSX_BUNDLE_ICON_FILE ${Launcher_Name}.icns)
set(MACOSX_BUNDLE_COPYRIGHT "© 2022-2023 ${Launcher_Copyright_Mac}")
set(MACOSX_BUNDLE_COPYRIGHT "${Launcher_Copyright_Mac}")
set(MACOSX_SPARKLE_UPDATE_PUBLIC_KEY "v55ZWWD6QlPoXGV6VLzOTZxZUggWeE51X8cRQyQh6vA=" CACHE STRING "Public key for Sparkle update feed")
set(MACOSX_SPARKLE_UPDATE_FEED_URL "https://prismlauncher.org/feed/appcast.xml" CACHE STRING "URL for Sparkle update feed")
set(MACOSX_SPARKLE_DOWNLOAD_URL "https://github.com/sparkle-project/Sparkle/releases/download/2.1.0/Sparkle-2.1.0.tar.xz" CACHE STRING "URL to Sparkle release archive")
set(MACOSX_SPARKLE_SHA256 "bf6ac1caa9f8d321d5784859c88da874f28412f37fb327bc21b7b14c5d61ef94" CACHE STRING "SHA256 checksum for Sparkle release archive")
set(MACOSX_SPARKLE_DOWNLOAD_URL "https://github.com/sparkle-project/Sparkle/releases/download/2.6.4/Sparkle-2.6.4.tar.xz" CACHE STRING "URL to Sparkle release archive")
set(MACOSX_SPARKLE_SHA256 "50612a06038abc931f16011d7903b8326a362c1074dabccb718404ce8e585f0b" CACHE STRING "SHA256 checksum for Sparkle release archive")
set(MACOSX_SPARKLE_DIR "${CMAKE_BINARY_DIR}/frameworks/Sparkle")
# directories to look for dependencies
@ -417,7 +420,19 @@ elseif(UNIX)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${Launcher_mrpack_MIMEInfo} DESTINATION ${KDE_INSTALL_MIMEDIR})
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/launcher/qtlogging.ini" DESTINATION "share/${Launcher_Name}")
if (INSTALL_BUNDLE STREQUAL full)
set(PLUGIN_DEST_DIR "plugins")
set(BUNDLE_DEST_DIR ".")
set(RESOURCES_DEST_DIR ".")
# Apps to bundle
set(APPS "\${CMAKE_INSTALL_PREFIX}/bin/${Launcher_APP_BINARY_NAME}")
# directories to look for dependencies
set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endif()
if(Launcher_ManPage)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${Launcher_ManPage} DESTINATION "${KDE_INSTALL_MANDIR}/man6")
endif()
@ -460,6 +475,7 @@ add_subdirectory(libraries/libnbtplusplus)
add_subdirectory(libraries/systeminfo) # system information library
add_subdirectory(libraries/launcher) # java based launcher part for Minecraft
add_subdirectory(libraries/javacheck) # java compatibility checker
add_subdirectory(libraries/qt-qrcodegenerator) # qr code generator
if(FORCE_BUNDLED_ZLIB)
message(STATUS "Using bundled zlib")
@ -467,7 +483,7 @@ if(FORCE_BUNDLED_ZLIB)
set(SKIP_INSTALL_ALL ON)
add_subdirectory(libraries/zlib EXCLUDE_FROM_ALL)
# On OS where unistd.h exists, zlib's generated header defines `Z_HAVE_UNISTD_H`, while the included header does not.
# On OS where unistd.h exists, zlib's generated header defines `Z_HAVE_UNISTD_H`, while the included header does not.
# We cannot safely undo the rename on those systems, and they generally have packages for zlib anyway.
check_include_file(unistd.h NEED_GENERATED_ZCONF)
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/libraries/zlib/zconf.h.included" AND NOT NEED_GENERATED_ZCONF)
@ -504,23 +520,17 @@ else()
endif()
if(NOT cmark_FOUND)
message(STATUS "Using bundled cmark")
set(CMARK_STATIC ON CACHE BOOL "Build static libcmark library" FORCE)
set(CMARK_SHARED OFF CACHE BOOL "Build shared libcmark library" FORCE)
set(CMARK_TESTS OFF CACHE BOOL "Build cmark tests and enable testing" FORCE)
set(ORIGINAL_BUILD_TESTING ${BUILD_TESTING})
set(BUILD_TESTING 0)
set(BUILD_SHARED_LIBS 0)
add_subdirectory(libraries/cmark EXCLUDE_FROM_ALL) # Markdown parser
add_library(cmark::cmark ALIAS cmark_static)
add_library(cmark::cmark ALIAS cmark)
set(BUILD_TESTING ${ORIGINAL_BUILD_TESTING})
else()
message(STATUS "Using system cmark")
endif()
add_subdirectory(libraries/katabasis) # An OAuth2 library that tried to do too much
add_subdirectory(libraries/gamemode)
add_subdirectory(libraries/murmur2) # Hash for usage with the CurseForge API
if (NOT ghc_filesystem_FOUND)
message(STATUS "Using bundled ghc_filesystem")
add_subdirectory(libraries/filesystem) # Implementation of std::filesystem for old C++, for usage in old macOS
else()
message(STATUS "Using system ghc_filesystem")
endif()
add_subdirectory(libraries/qdcss) # css parser
############################### Built Artifacts ###############################

View File

@ -2,16 +2,59 @@
## Code formatting
Try to follow the existing formatting.
If there is no existing formatting, you may use `clang-format` with our included `.clang-format` configuration.
All files are formatted with `clang-format` using the configuration in `.clang-format`. Ensure it is run on changed files before committing!
In general, in order of importance:
Please also follow the project's conventions for C++:
- Make sure your IDE is not messing up line endings or whitespace and avoid using linters.
- Prefer readability over dogma.
- Keep to the existing formatting.
- Indent with 4 space unless it's in a submodule.
- Keep lists (of arguments, parameters, initializers...) as lists, not paragraphs. It should either read from top to bottom, or left to right. Not both.
- Class and type names should be formatted as `PascalCase`: `MyClass`.
- Private or protected class data members should be formatted as `camelCase` prefixed with `m_`: `m_myCounter`.
- Private or protected `static` class data members should be formatted as `camelCase` prefixed with `s_`: `s_instance`.
- Public class data members should be formatted as `camelCase` without the prefix: `dateOfBirth`.
- Public, private or protected `static const` class data members should be formatted as `SCREAMING_SNAKE_CASE`: `MAX_VALUE`.
- Class function members should be formatted as `camelCase` without a prefix: `incrementCounter`.
- Global functions and non-`const` global variables should be formatted as `camelCase` without a prefix: `globalData`.
- `const` global variables, macros, and enum constants should be formatted as `SCREAMING_SNAKE_CASE`: `LIGHT_GRAY`.
- Avoid inventing acronyms or abbreviations especially for a name of multiple words - like `tp` for `texturePack`.
Most of these rules are included in the `.clang-tidy` file, so you can run `clang-tidy` to check for any violations.
Here is what these conventions with the formatting configuration look like:
```c++
#define AWESOMENESS 10
constexpr double PI = 3.14159;
enum class PizzaToppings { HAM_AND_PINEAPPLE, OREO_AND_KETCHUP };
struct Person {
QString name;
QDateTime dateOfBirth;
long daysOld() const { return dateOfBirth.daysTo(QDateTime::currentDateTime()); }
};
class ImportantClass {
public:
void incrementCounter()
{
if (m_counter + 1 > MAX_COUNTER_VALUE)
throw std::runtime_error("Counter has reached limit!");
++m_counter;
}
int counter() const { return m_counter; }
private:
static constexpr int MAX_COUNTER_VALUE = 100;
int m_counter;
};
ImportantClass importantClassInstance;
```
If you see any names which do not follow these conventions, it is preferred that you leave them be - renames increase the number of changes therefore make reviewing harder and make your PR more prone to conflicts. However, if you're refactoring a whole class anyway, it's fine.
## Signing your work

View File

@ -1,7 +1,7 @@
## Prism Launcher
Prism Launcher - Minecraft Launcher
Copyright (C) 2022-2023 Prism Launcher Contributors
Copyright (C) 2022-2025 Prism Launcher Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -108,7 +108,7 @@
Information on third party licenses used in MinGW-w64 can be found in its COPYING.MinGW-w64-runtime.txt.
## Qt 5/6
## Qt 6
Copyright (C) 2022 The Qt Company Ltd and other contributors.
Contact: https://www.qt.io/licensing
@ -333,32 +333,6 @@
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## O2 (Katabasis fork)
Copyright (c) 2012, Akos Polster
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
## Gamemode
Copyright (c) 2017-2022, Feral Interactive
@ -388,28 +362,6 @@
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
## gulrak/filesystem
Copyright (c) 2018, Steffen Schümann <s.schuemann@pobox.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## Breeze icons
Copyright (C) 2014 Uri Herrera <uri_herrera@nitrux.in> and others
@ -436,7 +388,7 @@
Copyright (C) 2007 Johann Ollivier Lapeyre <johann@oxygen-icons.org>
Copyright (C) 2007 Kenneth Wimer <kwwii@bootsplash.org>
Copyright (C) 2007 Riccardo Iaconelli <riccardo@oxygen-icons.org>
and others
This library is free software; you can redistribute it and/or
@ -451,3 +403,12 @@
You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
## qt-qrcodegenerator (`libraries/qt-qrcodegenerator`)
Copyright © 2024 Project Nayuki. (MIT License)
https://www.nayuki.io/page/qr-code-generator-library
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
- The Software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the Software or the use or other dealings in the Software.

View File

@ -61,7 +61,12 @@ The translation effort for Prism Launcher is hosted on [Weblate](https://hosted.
## Building
If you want to build Prism Launcher yourself, check the [Build Instructions](https://prismlauncher.org/wiki/development/build-instructions/).
If you want to build Prism Launcher yourself, check the build instructions:
- [Windows](https://prismlauncher.org/wiki/development/build-instructions/windows/)
- [Linux](https://prismlauncher.org/wiki/development/build-instructions/linux/)
- [MacOS](https://prismlauncher.org/wiki/development/build-instructions/macos/)
- [OpenBSD](https://prismlauncher.org/wiki/development/build-instructions/openbsd/)
## Sponsors & Partners

View File

@ -34,8 +34,8 @@
*/
#include <qstringliteral.h>
#include "BuildConfig.h"
#include <QObject>
#include "BuildConfig.h"
const Config BuildConfig;
@ -49,7 +49,7 @@ Config::Config()
LAUNCHER_DOMAIN = "@Launcher_Domain@";
LAUNCHER_CONFIGFILE = "@Launcher_ConfigFile@";
LAUNCHER_GIT = "@Launcher_Git@";
LAUNCHER_DESKTOPFILENAME = "@Launcher_DesktopFileName@";
LAUNCHER_APPID = "@Launcher_AppID@";
LAUNCHER_SVGFILENAME = "@Launcher_SVGFileName@";
USER_AGENT = "@Launcher_UserAgent@";
@ -58,6 +58,7 @@ Config::Config()
// Version information
VERSION_MAJOR = @Launcher_VERSION_MAJOR@;
VERSION_MINOR = @Launcher_VERSION_MINOR@;
VERSION_PATCH = @Launcher_VERSION_PATCH@;
BUILD_PLATFORM = "@Launcher_BUILD_PLATFORM@";
BUILD_ARTIFACT = "@Launcher_BUILD_ARTIFACT@";
@ -74,55 +75,52 @@ Config::Config()
MAC_SPARKLE_PUB_KEY = "@MACOSX_SPARKLE_UPDATE_PUBLIC_KEY@";
MAC_SPARKLE_APPCAST_URL = "@MACOSX_SPARKLE_UPDATE_FEED_URL@";
if (!MAC_SPARKLE_PUB_KEY.isEmpty() && !MAC_SPARKLE_APPCAST_URL.isEmpty())
{
if (!MAC_SPARKLE_PUB_KEY.isEmpty() && !MAC_SPARKLE_APPCAST_URL.isEmpty()) {
UPDATER_ENABLED = true;
} else if(!UPDATER_GITHUB_REPO.isEmpty() && !BUILD_ARTIFACT.isEmpty()) {
} else if (!UPDATER_GITHUB_REPO.isEmpty() && !BUILD_ARTIFACT.isEmpty()) {
UPDATER_ENABLED = true;
}
#cmakedefine01 Launcher_ENABLE_JAVA_DOWNLOADER
JAVA_DOWNLOADER_ENABLED = Launcher_ENABLE_JAVA_DOWNLOADER;
GIT_COMMIT = "@Launcher_GIT_COMMIT@";
GIT_TAG = "@Launcher_GIT_TAG@";
GIT_REFSPEC = "@Launcher_GIT_REFSPEC@";
// Assume that builds outside of Git repos are "stable"
if (GIT_REFSPEC == QStringLiteral("GITDIR-NOTFOUND")
|| GIT_TAG == QStringLiteral("GITDIR-NOTFOUND")
|| GIT_REFSPEC == QStringLiteral("")
|| GIT_TAG == QStringLiteral("GIT-NOTFOUND"))
{
if (GIT_REFSPEC == QStringLiteral("GITDIR-NOTFOUND") || GIT_TAG == QStringLiteral("GITDIR-NOTFOUND") ||
GIT_REFSPEC == QStringLiteral("") || GIT_TAG == QStringLiteral("GIT-NOTFOUND")) {
GIT_REFSPEC = "refs/heads/stable";
GIT_TAG = versionString();
GIT_COMMIT = "";
}
if (GIT_REFSPEC.startsWith("refs/heads/"))
{
if (GIT_REFSPEC.startsWith("refs/heads/")) {
VERSION_CHANNEL = GIT_REFSPEC;
VERSION_CHANNEL.remove("refs/heads/");
}
else if (!GIT_COMMIT.isEmpty())
{
VERSION_CHANNEL.remove("refs/heads/");
} else if (!GIT_COMMIT.isEmpty()) {
VERSION_CHANNEL = GIT_COMMIT.mid(0, 8);
}
else
{
} else {
VERSION_CHANNEL = "unknown";
}
NEWS_RSS_URL = "@Launcher_NEWS_RSS_URL@";
NEWS_OPEN_URL = "@Launcher_NEWS_OPEN_URL@";
HELP_URL = "@Launcher_HELP_URL@";
LOGIN_CALLBACK_URL = "@Launcher_LOGIN_CALLBACK_URL@";
IMGUR_CLIENT_ID = "@Launcher_IMGUR_CLIENT_ID@";
MSA_CLIENT_ID = "@Launcher_MSA_CLIENT_ID@";
FLAME_API_KEY = "@Launcher_CURSEFORGE_API_KEY@";
META_URL = "@Launcher_META_URL@";
FMLLIBS_BASE_URL = "@Launcher_FMLLIBS_BASE_URL@";
GLFW_LIBRARY_NAME = "@Launcher_GLFW_LIBRARY_NAME@";
OPENAL_LIBRARY_NAME = "@Launcher_OPENAL_LIBRARY_NAME@";
BUG_TRACKER_URL = "@Launcher_BUG_TRACKER_URL@";
TRANSLATIONS_URL = "@Launcher_TRANSLATIONS_URL@";
TRANSLATION_FILES_URL = "@Launcher_TRANSLATION_FILES_URL@";
MATRIX_URL = "@Launcher_MATRIX_URL@";
DISCORD_URL = "@Launcher_DISCORD_URL@";
SUBREDDIT_URL = "@Launcher_SUBREDDIT_URL@";
@ -130,7 +128,7 @@ Config::Config()
QString Config::versionString() const
{
return QString("%1.%2").arg(VERSION_MAJOR).arg(VERSION_MINOR);
return QString("%1.%2.%3").arg(VERSION_MAJOR).arg(VERSION_MINOR).arg(VERSION_PATCH);
}
QString Config::printableVersionString() const
@ -138,8 +136,7 @@ QString Config::printableVersionString() const
QString vstr = versionString();
// If the build is not a main release, append the channel
if(VERSION_CHANNEL != "stable" && GIT_TAG != vstr)
{
if (VERSION_CHANNEL != "stable" && GIT_TAG != vstr) {
vstr += "-" + VERSION_CHANNEL;
}
return vstr;
@ -156,4 +153,3 @@ QString Config::systemID() const
{
return QStringLiteral("%1 %2 %3").arg(COMPILER_TARGET_SYSTEM, COMPILER_TARGET_SYSTEM_VERSION, COMPILER_TARGET_SYSTEM_PROCESSOR);
}

View File

@ -52,13 +52,15 @@ class Config {
QString LAUNCHER_DOMAIN;
QString LAUNCHER_CONFIGFILE;
QString LAUNCHER_GIT;
QString LAUNCHER_DESKTOPFILENAME;
QString LAUNCHER_APPID;
QString LAUNCHER_SVGFILENAME;
/// The major version number.
int VERSION_MAJOR;
/// The minor version number.
int VERSION_MINOR;
/// The patch version number.
int VERSION_PATCH;
/**
* The version channel
@ -67,6 +69,7 @@ class Config {
QString VERSION_CHANNEL;
bool UPDATER_ENABLED = false;
bool JAVA_DOWNLOADER_ENABLED = false;
/// A short string identifying this build's platform or distribution.
QString BUILD_PLATFORM;
@ -132,6 +135,11 @@ class Config {
*/
QString HELP_URL;
/**
* URL that gets opened when the user succesfully logins.
*/
QString LOGIN_CALLBACK_URL;
/**
* Client ID you can get from Imgur when you register an application
*/
@ -163,10 +171,9 @@ class Config {
QString RESOURCE_BASE = "https://resources.download.minecraft.net/";
QString LIBRARY_BASE = "https://libraries.minecraft.net/";
QString AUTH_BASE = "https://authserver.mojang.com/";
QString IMGUR_BASE_URL = "https://api.imgur.com/3/";
QString FMLLIBS_BASE_URL = "https://files.prismlauncher.org/fmllibs/"; // FIXME: move into CMakeLists
QString TRANSLATIONS_BASE_URL = "https://i18n.prismlauncher.org/"; // FIXME: move into CMakeLists
QString FMLLIBS_BASE_URL;
QString TRANSLATION_FILES_URL;
QString MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/";

View File

@ -6,6 +6,10 @@
<string>A Minecraft mod wants to access your camera.</string>
<key>NSMicrophoneUsageDescription</key>
<string>A Minecraft mod wants to access your microphone.</string>
<key>NSDownloadsFolderUsageDescription</key>
<string>Prism uses access to your Downloads folder to help you more quickly add mods that can't be automatically downloaded to your instance. You can change where Prism scans for downloaded mods in Settings or the prompt that appears.</string>
<key>NSLocalNetworkUsageDescription</key>
<string>Minecraft uses the local network to find and connect to LAN servers.</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
@ -77,6 +81,14 @@
<string>curseforge</string>
</array>
</dict>
<dict>
<key>CFBundleURLName</key>
<string>Prismlauncher</string>
<key>CFBundleURLSchemes</key>
<array>
<string>prismlauncher</string>
</array>
</dict>
</array>
</dict>
</plist>

View File

@ -1,14 +1,4 @@
(
import
(
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
)
{src = ./.;}
)
.defaultNix
(import (fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/ff81ac966bb2cae68946d5ed5fc4994f96d0ffec.tar.gz";
sha256 = "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=";
}) { src = ./.; }).defaultNix

168
flake.lock generated
View File

@ -1,86 +1,13 @@
{
"nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1698882062,
"narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "8c9fa2545007b49a5db5f650ae91f227672c3877",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1685518550,
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1660459072,
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"libnbtplusplus": {
"flake": false,
"locked": {
"lastModified": 1699286814,
"narHash": "sha256-yy0q+bky80LtK1GWzz7qpM+aAGrOqLuewbid8WT1ilk=",
"lastModified": 1744811532,
"narHash": "sha256-qhmjaRkt+O7A+gu6HjUkl7QzOEb4r8y8vWZMG2R/C6o=",
"owner": "PrismLauncher",
"repo": "libnbtplusplus",
"rev": "23b955121b8217c1c348a9ed2483167a6f3ff4ad",
"rev": "531449ba1c930c98e0bcf5d332b237a8566f9d78",
"type": "github"
},
"original": {
@ -89,106 +16,43 @@
"type": "github"
}
},
"nix-filter": {
"locked": {
"lastModified": 1694857738,
"narHash": "sha256-bxxNyLHjhu0N8T3REINXQ2ZkJco0ABFPn6PIe2QUfqo=",
"owner": "numtide",
"repo": "nix-filter",
"rev": "41fd48e00c22b4ced525af521ead8792402de0ea",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "nix-filter",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1700856099,
"narHash": "sha256-RnEA7iJ36Ay9jI0WwP+/y4zjEhmeN6Cjs9VOFBH7eVQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "0bd59c54ef06bc34eca01e37d689f5e46b3fe2f1",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"dir": "lib",
"lastModified": 1698611440,
"narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=",
"lastModified": 1745526057,
"narHash": "sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735",
"rev": "f771eb401a46846c1aebd20552521b233dd7e18b",
"type": "github"
},
"original": {
"dir": "lib",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": [
"flake-compat"
],
"flake-utils": "flake-utils",
"gitignore": "gitignore",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": [
"nixpkgs"
]
},
"qt-qrcodegenerator": {
"flake": false,
"locked": {
"lastModified": 1700922917,
"narHash": "sha256-ej2fch/T584b5K9sk1UhmZF7W6wEfDHuoUYpFN8dtvM=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "e5ee5c5f3844550c01d2131096c7271cec5e9b78",
"lastModified": 1737616857,
"narHash": "sha256-6SugPt0lp1Gz7nV23FLmsmpfzgFItkSw7jpGftsDPWc=",
"owner": "nayuki",
"repo": "QR-Code-generator",
"rev": "2c9044de6b049ca25cb3cd1649ed7e27aa055138",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"owner": "nayuki",
"repo": "QR-Code-generator",
"type": "github"
}
},
"root": {
"inputs": {
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"libnbtplusplus": "libnbtplusplus",
"nix-filter": "nix-filter",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
"qt-qrcodegenerator": "qt-qrcodegenerator"
}
}
},

243
flake.nix
View File

@ -1,44 +1,227 @@
{
description = "A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC)";
nixConfig = {
extra-substituters = [ "https://prismlauncher.cachix.org" ];
extra-trusted-public-keys = [
"prismlauncher.cachix.org-1:9/n/FGyABA2jLUVfY+DEp4hKds/rwO+SCOtbOkDzd+c="
];
};
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
nix-filter.url = "github:numtide/nix-filter";
pre-commit-hooks = {
url = "github:cachix/pre-commit-hooks.nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs";
inputs.flake-compat.follows = "flake-compat";
};
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
libnbtplusplus = {
url = "github:PrismLauncher/libnbtplusplus";
flake = false;
};
qt-qrcodegenerator = {
url = "github:nayuki/QR-Code-generator";
flake = false;
};
};
outputs = {
flake-parts,
pre-commit-hooks,
...
} @ inputs:
flake-parts.lib.mkFlake {inherit inputs;} {
imports = [
pre-commit-hooks.flakeModule
outputs =
{
self,
nixpkgs,
libnbtplusplus,
qt-qrcodegenerator,
}:
./nix/dev.nix
./nix/distribution.nix
];
let
inherit (nixpkgs) lib;
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
# While we only officially support aarch and x86_64 on Linux and MacOS,
# we expose a reasonable amount of other systems for users who want to
# build for most exotic platforms
systems = lib.systems.flakeExposed;
forAllSystems = lib.genAttrs systems;
nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system});
in
{
checks = forAllSystems (
system:
let
pkgs = nixpkgsFor.${system};
llvm = pkgs.llvmPackages_19;
in
{
formatting =
pkgs.runCommand "check-formatting"
{
nativeBuildInputs = with pkgs; [
deadnix
llvm.clang-tools
markdownlint-cli
nixfmt-rfc-style
statix
];
}
''
cd ${self}
echo "Running clang-format...."
clang-format --dry-run --style='file' --Werror */**.{c,cc,cpp,h,hh,hpp}
echo "Running deadnix..."
deadnix --fail
echo "Running markdownlint..."
markdownlint --dot .
echo "Running nixfmt..."
find -type f -name '*.nix' -exec nixfmt --check {} +
echo "Running statix"
statix check .
touch $out
'';
}
);
devShells = forAllSystems (
system:
let
pkgs = nixpkgsFor.${system};
llvm = pkgs.llvmPackages_19;
packages' = self.packages.${system};
welcomeMessage = ''
Welcome to the Prism Launcher repository! 🌈
We just set some things up for you. To get building, you can run:
```
$ cd "$cmakeBuildDir"
$ ninjaBuildPhase
$ ninjaInstallPhase
```
Feel free to ask any questions in our Discord server or Matrix space:
- https://prismlauncher.org/discord
- https://matrix.to/#/#prismlauncher:matrix.org
And thanks for helping out :)
'';
# Re-use our package wrapper to wrap our development environment
qt-wrapper-env = packages'.prismlauncher.overrideAttrs (old: {
name = "qt-wrapper-env";
# Required to use script-based makeWrapper below
strictDeps = true;
# We don't need/want the unwrapped Prism package
paths = [ ];
nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [
# Ensure the wrapper is script based so it can be sourced
pkgs.makeWrapper
];
# Inspired by https://discourse.nixos.org/t/python-qt-woes/11808/10
buildCommand = ''
makeQtWrapper ${lib.getExe pkgs.runtimeShellPackage} "$out"
sed -i '/^exec/d' "$out"
'';
});
in
{
default = pkgs.mkShell {
name = "prism-launcher";
inputsFrom = [ packages'.prismlauncher-unwrapped ];
packages = with pkgs; [
ccache
llvm.clang-tools
];
cmakeBuildType = "Debug";
cmakeFlags = [ "-GNinja" ] ++ packages'.prismlauncher.cmakeFlags;
dontFixCmake = true;
shellHook = ''
echo "Sourcing ${qt-wrapper-env}"
source ${qt-wrapper-env}
git submodule update --init --force
if [ ! -f compile_commands.json ]; then
cmakeConfigurePhase
cd ..
ln -s "$cmakeBuildDir"/compile_commands.json compile_commands.json
fi
echo ${lib.escapeShellArg welcomeMessage}
'';
};
}
);
formatter = forAllSystems (system: nixpkgsFor.${system}.nixfmt-rfc-style);
overlays.default = final: prev: {
prismlauncher-unwrapped = prev.callPackage ./nix/unwrapped.nix {
inherit
libnbtplusplus
qt-qrcodegenerator
self
;
};
prismlauncher = final.callPackage ./nix/wrapper.nix { };
};
packages = forAllSystems (
system:
let
pkgs = nixpkgsFor.${system};
# Build a scope from our overlay
prismPackages = lib.makeScope pkgs.newScope (final: self.overlays.default final pkgs);
# Grab our packages from it and set the default
packages = {
inherit (prismPackages) prismlauncher-unwrapped prismlauncher;
default = prismPackages.prismlauncher;
};
in
# Only output them if they're available on the current system
lib.filterAttrs (_: lib.meta.availableOn pkgs.stdenv.hostPlatform) packages
);
# We put these under legacyPackages as they are meant for CI, not end user consumption
legacyPackages = forAllSystems (
system:
let
packages' = self.packages.${system};
legacyPackages' = self.legacyPackages.${system};
in
{
prismlauncher-debug = packages'.prismlauncher.override {
prismlauncher-unwrapped = legacyPackages'.prismlauncher-unwrapped-debug;
};
prismlauncher-unwrapped-debug = packages'.prismlauncher-unwrapped.overrideAttrs {
cmakeBuildType = "Debug";
dontStrip = true;
};
}
);
};
}

20
flatpak/flite.json Normal file
View File

@ -0,0 +1,20 @@
{
"name": "flite",
"config-opts": [
"--enable-shared",
"--with-audio=pulseaudio"
],
"no-parallel-make": true,
"sources": [
{
"type": "git",
"url": "https://github.com/festvox/flite.git",
"tag": "v2.2",
"commit": "e9e2e37c329dbe98bfeb27a1828ef9a71fa84f88",
"x-checker-data": {
"type": "git",
"tag-pattern": "^v([\\d.]+)$"
}
}
]
}

View File

@ -1,22 +1,18 @@
{
"name": "libdecor",
"buildsystem": "meson",
"config-opts": [
"-Ddemo=false"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.freedesktop.org/libdecor/libdecor.git",
"commit": "73260393a97291c887e1074ab7f318e031be0ac6"
},
{
"type": "patch",
"path": "patches/weird_libdecor.patch"
}
],
"cleanup": [
"/include",
"/lib/pkgconfig"
]
"name": "libdecor",
"buildsystem": "meson",
"config-opts": [
"-Ddemo=false"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.freedesktop.org/libdecor/libdecor.git",
"commit": "c2bd8ad6fa42c0cb17553ce77ad8a87d1f543b1f"
}
],
"cleanup": [
"/include",
"/lib/pkgconfig"
]
}

View File

@ -1,10 +1,9 @@
id: org.prismlauncher.PrismLauncher
runtime: org.kde.Platform
runtime-version: "5.15-23.08"
runtime-version: '6.8'
sdk: org.kde.Sdk
sdk-extensions:
- org.freedesktop.Sdk.Extension.openjdk17
- org.freedesktop.Sdk.Extension.openjdk8
command: prismlauncher
finish-args:
@ -20,9 +19,12 @@ finish-args:
- --filesystem=xdg-download:ro
# FTBApp import
- --filesystem=~/.ftba:ro
cleanup:
- /lib/libGLU*
# Userspace visibility for manual hugepages configuration
# Required for -XX:+UseLargePages
- --filesystem=/sys/kernel/mm/hugepages:ro
# Userspace visibility for transparent hugepages configuration
# Required for -XX:+UseTransparentHugePages
- --filesystem=/sys/kernel/mm/transparent_hugepage:ro
modules:
# Might be needed by some Controller mods (see https://github.com/isXander/Controlify/issues/31)
@ -31,48 +33,39 @@ modules:
# Needed for proper Wayland support
- libdecor.json
# Text to Speech in the game
- flite.json
- name: prismlauncher
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DLauncher_BUILD_PLATFORM=flatpak
# This allows us to manage and update Java independently of this Flatpak
- -DLauncher_ENABLE_JAVA_DOWNLOADER=ON
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DLauncher_QT_VERSION_MAJOR=5
build-options:
env:
JAVA_HOME: /usr/lib/sdk/openjdk17/jvm/openjdk-17
JAVA_COMPILER: /usr/lib/sdk/openjdk17/jvm/openjdk-17/bin/javac
run-tests: true
sources:
- type: dir
path: ../
- name: openjdk
buildsystem: simple
build-commands:
- mkdir -p /app/jdk/
- /usr/lib/sdk/openjdk17/install.sh
- mv /app/jre /app/jdk/17
- /usr/lib/sdk/openjdk8/install.sh
- mv /app/jre /app/jdk/8
cleanup:
- /jre
- name: glfw
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=RelWithDebInfo
- -DBUILD_SHARED_LIBS:BOOL=ON
- -DGLFW_USE_WAYLAND=ON
- -DGLFW_BUILD_WAYLAND:BOOL=ON
- -DGLFW_BUILD_DOCS:BOOL=OFF
sources:
- type: git
url: https://github.com/glfw/glfw.git
commit: 3fa2360720eeba1964df3c0ecf4b5df8648a8e52
commit: 7b6aead9fb88b3623e3b3725ebb42670cbe4c579 # 3.4
- type: patch
path: patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch
- type: patch
path: patches/0005-Add-warning-about-being-an-unofficial-patch.patch
- type: patch
path: patches/0007-Platform-Prefer-Wayland-over-X11.patch
path: patches/0009-Defer-setting-cursor-position-until-the-cursor-is-lo.patch
cleanup:
- /include
- /lib/cmake
@ -82,8 +75,8 @@ modules:
buildsystem: autotools
sources:
- type: archive
url: https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.2.tar.xz
sha256: c8bee4790d9058bacc4b6246456c58021db58a87ddda1a9d0139bf5f18f1f240
url: https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.3.tar.xz
sha256: f8dd7566adb74147fab9964680b6bbadee87cf406a7fcff51718a5e6949b841c
x-checker-data:
type: anitya
project-id: 14957
@ -104,18 +97,15 @@ modules:
- install -Dm755 ../data/gamemoderun -t /app/bin
sources:
- type: archive
archive-type: tar-gzip
url: https://api.github.com/repos/FeralInteractive/gamemode/tarball/1.7
sha256: 57ce73ba605d1cf12f8d13725006a895182308d93eba0f69f285648449641803
dest-filename: gamemode.tar.gz
url: https://api.github.com/repos/FeralInteractive/gamemode/tarball/1.8.2
sha256: 2886d4ce543c78bd2a364316d5e7fd59ef06b71de63f896b37c6d3dc97658f60
x-checker-data:
type: json
url: https://api.github.com/repos/FeralInteractive/gamemode/releases/latest
version-query: .tag_name
url-query: .tarball_url
timestamp-query: .published_at
# from https://github.com/flathub/net.gaijin.WarThunder/blob/7ea6f7a9f84b9c77150c003a7059dc03f8dcbc7f/gamemode.patch
- type: patch
path: patches/gamemode.patch
cleanup:
- /include
- /lib/pkgconfig

View File

@ -1,24 +0,0 @@
diff --git a/src/wl_window.c b/src/wl_window.c
index 52d3b9eb..4ac4eb5d 100644
--- a/src/wl_window.c
+++ b/src/wl_window.c
@@ -2117,8 +2117,7 @@ void _glfwSetWindowTitleWayland(_GLFWwindow* window, const char* title)
void _glfwSetWindowIconWayland(_GLFWwindow* window,
int count, const GLFWimage* images)
{
- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
- "Wayland: The platform does not support setting the window icon");
+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the window icon\n");
}
void _glfwGetWindowPosWayland(_GLFWwindow* window, int* xpos, int* ypos)
@@ -2361,8 +2360,7 @@ void _glfwRequestWindowAttentionWayland(_GLFWwindow* window)
void _glfwFocusWindowWayland(_GLFWwindow* window)
{
- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
- "Wayland: The platform does not support setting the input focus");
+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the input focus\n");
}
void _glfwSetWindowMonitorWayland(_GLFWwindow* window,

View File

@ -1,17 +0,0 @@
diff --git a/src/init.c b/src/init.c
index 06dbb3f2..a7c6da86 100644
--- a/src/init.c
+++ b/src/init.c
@@ -449,6 +449,12 @@ GLFWAPI int glfwInit(void)
_glfw.initialized = GLFW_TRUE;
glfwDefaultWindowHints();
+
+ fprintf(stderr, "!!! Patched GLFW from https://github.com/Admicos/minecraft-wayland\n"
+ "!!! If any issues with the window, or some issues with rendering, occur, "
+ "first try with the built-in GLFW, and if that solves the issue, report there first.\n"
+ "!!! Use outside Minecraft is untested, and things might break.\n");
+
return GLFW_TRUE;
}

View File

@ -1,20 +0,0 @@
diff --git a/src/platform.c b/src/platform.c
index c5966ae7..3e7442f9 100644
--- a/src/platform.c
+++ b/src/platform.c
@@ -49,12 +49,12 @@ static const struct
#if defined(_GLFW_COCOA)
{ GLFW_PLATFORM_COCOA, _glfwConnectCocoa },
#endif
-#if defined(_GLFW_X11)
- { GLFW_PLATFORM_X11, _glfwConnectX11 },
-#endif
#if defined(_GLFW_WAYLAND)
{ GLFW_PLATFORM_WAYLAND, _glfwConnectWayland },
#endif
+#if defined(_GLFW_X11)
+ { GLFW_PLATFORM_X11, _glfwConnectX11 },
+#endif
};
GLFWbool _glfwSelectPlatform(int desiredID, _GLFWplatform* platform)

View File

@ -0,0 +1,59 @@
From 9997ae55a47de469ea26f8437c30b51483abda5f Mon Sep 17 00:00:00 2001
From: Dan Klishch <danilklishch@gmail.com>
Date: Sat, 30 Sep 2023 23:38:05 -0400
Subject: Defer setting cursor position until the cursor is locked
---
src/wl_platform.h | 3 +++
src/wl_window.c | 14 ++++++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/wl_platform.h b/src/wl_platform.h
index ca34f66e..cd1f227f 100644
--- a/src/wl_platform.h
+++ b/src/wl_platform.h
@@ -403,6 +403,9 @@ typedef struct _GLFWwindowWayland
int scaleSize;
int compositorPreferredScale;
+ double askedCursorPosX, askedCursorPosY;
+ GLFWbool didAskForSetCursorPos;
+
struct zwp_relative_pointer_v1* relativePointer;
struct zwp_locked_pointer_v1* lockedPointer;
struct zwp_confined_pointer_v1* confinedPointer;
diff --git a/src/wl_window.c b/src/wl_window.c
index 1de26558..0df16747 100644
--- a/src/wl_window.c
+++ b/src/wl_window.c
@@ -2586,8 +2586,9 @@ void _glfwGetCursorPosWayland(_GLFWwindow* window, double* xpos, double* ypos)
void _glfwSetCursorPosWayland(_GLFWwindow* window, double x, double y)
{
- _glfwInputError(GLFW_FEATURE_UNAVAILABLE,
- "Wayland: The platform does not support setting the cursor position");
+ window->wl.didAskForSetCursorPos = true;
+ window->wl.askedCursorPosX = x;
+ window->wl.askedCursorPosY = y;
}
void _glfwSetCursorModeWayland(_GLFWwindow* window, int mode)
@@ -2819,6 +2820,15 @@ static const struct zwp_relative_pointer_v1_listener relativePointerListener =
static void lockedPointerHandleLocked(void* userData,
struct zwp_locked_pointer_v1* lockedPointer)
{
+ _GLFWwindow* window = userData;
+
+ if (window->wl.didAskForSetCursorPos)
+ {
+ window->wl.didAskForSetCursorPos = false;
+ zwp_locked_pointer_v1_set_cursor_position_hint(window->wl.lockedPointer,
+ wl_fixed_from_double(window->wl.askedCursorPosX),
+ wl_fixed_from_double(window->wl.askedCursorPosY));
+ }
}
static void lockedPointerHandleUnlocked(void* userData,
--
2.42.0

View File

@ -1,12 +0,0 @@
diff -ruN a/common/common-pidfds.c b/common/common-pidfds.c
--- a/common/common-pidfds.c 2021-02-18 20:00:12.000000000 +0100
+++ b/common/common-pidfds.c 2023-09-07 08:57:42.954362763 +0200
@@ -58,6 +58,8 @@
{
return (int)syscall(__NR_pidfd_open, pid, flags);
}
+#else
+#include <sys/pidfd.h>
#endif
/* pidfd functions */

View File

@ -1,40 +0,0 @@
diff --git a/src/libdecor.c b/src/libdecor.c
index a9c1106..1aa38b3 100644
--- a/src/libdecor.c
+++ b/src/libdecor.c
@@ -1391,22 +1391,32 @@ calculate_priority(const struct libdecor_plugin_description *plugin_description)
static bool
check_symbol_conflicts(const struct libdecor_plugin_description *plugin_description)
{
+ bool ret = true;
char * const *symbol;
+ void* main_prog = dlopen(NULL, RTLD_LAZY);
+ if (!main_prog) {
+ fprintf(stderr, "Plugin \"%s\" couldn't check conflicting symbols: \"%s\".\n",
+ plugin_description->description, dlerror());
+ return false;
+ }
+
symbol = plugin_description->conflicting_symbols;
while (*symbol) {
dlerror();
- dlsym (RTLD_DEFAULT, *symbol);
+ dlsym (main_prog, *symbol);
if (!dlerror()) {
fprintf(stderr, "Plugin \"%s\" uses conflicting symbol \"%s\".\n",
plugin_description->description, *symbol);
- return false;
+ ret = false;
+ break;
}
symbol++;
}
- return true;
+ dlclose(main_prog);
+ return ret;
}
static struct plugin_loader *

@ -1 +1 @@
Subproject commit 45094ca570be383d06df729b6972830ec63bd3df
Subproject commit 73f08ed2c3187f6648ca04ebef030930a6c9f0be

View File

@ -1,7 +0,0 @@
builds:
exclude:
- "*.x86_64-darwin.*"
include:
- "checks.x86_64-linux.*"
- "devShells.*.*"
- "packages.*.*"

File diff suppressed because it is too large Load Diff

View File

@ -42,13 +42,13 @@
#include <QDebug>
#include <QFlag>
#include <QIcon>
#include <QMutex>
#include <QUrl>
#include <memory>
#include <BaseInstance.h>
#include "minecraft/launch/MinecraftServerTarget.h"
#include "ui/themes/CatPack.h"
#include "minecraft/launch/MinecraftTarget.h"
class LaunchController;
class LocalPeer;
@ -82,6 +82,12 @@ class Index;
#endif
#define APPLICATION (static_cast<Application*>(QCoreApplication::instance()))
// Used for checking if is a test
#if defined(APPLICATION_DYN)
#undef APPLICATION_DYN
#endif
#define APPLICATION_DYN (dynamic_cast<Application*>(QCoreApplication::instance()))
class Application : public QApplication {
// friends for the purpose of limiting access to deprecated stuff
Q_OBJECT
@ -106,7 +112,7 @@ class Application : public QApplication {
std::shared_ptr<SettingsObject> settings() const { return m_settings; }
qint64 timeSinceStart() const { return startTime.msecsTo(QDateTime::currentDateTime()); }
qint64 timeSinceStart() const { return m_startTime.msecsTo(QDateTime::currentDateTime()); }
QIcon getThemedIcon(const QString& name);
@ -162,6 +168,9 @@ class Application : public QApplication {
/// the data path the application is using
const QString& dataRoot() { return m_dataPath; }
/// the java installed path the application is using
const QString javaPath();
bool isPortable() { return m_portable; }
const Capabilities capabilities() { return m_capabilities; }
@ -180,8 +189,6 @@ class Application : public QApplication {
void ShowGlobalSettings(class QWidget* parent, QString open_page = QString());
int suitableMaxMem();
bool updaterEnabled();
QString updaterBinaryName();
@ -193,6 +200,8 @@ class Application : public QApplication {
void globalSettingsClosed();
int currentCatChanged(int index);
void oauthReplyRecieved(QVariantMap);
#ifdef Q_OS_MACOS
void clickedOnDock();
#endif
@ -201,8 +210,9 @@ class Application : public QApplication {
bool launch(InstancePtr instance,
bool online = true,
bool demo = false,
MinecraftServerTargetPtr serverToJoin = nullptr,
MinecraftAccountPtr accountToUse = nullptr);
MinecraftTarget::Ptr targetToJoin = nullptr,
MinecraftAccountPtr accountToUse = nullptr,
const QString& offlineName = QString());
bool kill(InstancePtr instance);
void closeCurrentWindow();
@ -227,7 +237,7 @@ class Application : public QApplication {
bool shouldExitNow() const;
private:
QDateTime startTime;
QDateTime m_startTime;
shared_qobject_ptr<QNetworkAccessManager> m_network;
@ -270,6 +280,7 @@ class Application : public QApplication {
shared_qobject_ptr<LaunchController> controller;
};
std::map<QString, InstanceXtras> m_instanceExtras;
mutable QMutex m_instanceExtrasMutex;
// main state variables
size_t m_openWindows = 0;
@ -289,9 +300,21 @@ class Application : public QApplication {
QString m_detectedOpenALPath;
QString m_instanceIdToLaunch;
QString m_serverToJoin;
QString m_worldToJoin;
QString m_profileToUse;
bool m_offline = false;
QString m_offlineName;
bool m_liveCheck = false;
QList<QUrl> m_urlsToImport;
QString m_instanceIdToShowWindowOf;
std::unique_ptr<QFile> logFile;
public:
void addQSavePath(QString);
void removeQSavePath(QString);
bool checkQSavePath(QString);
private:
QHash<QString, int> m_qsaveResources;
mutable QMutex m_qsaveResourcesMutex;
};

View File

@ -16,6 +16,7 @@
#include <QFile>
#include "BaseInstaller.h"
#include "FileSystem.h"
#include "minecraft/MinecraftInstance.h"
BaseInstaller::BaseInstaller() {}
@ -42,7 +43,7 @@ bool BaseInstaller::add(MinecraftInstance* to)
bool BaseInstaller::remove(MinecraftInstance* from)
{
return QFile::remove(filename(from->instanceRoot()));
return FS::deletePath(filename(from->instanceRoot()));
}
QString BaseInstaller::filename(const QString& root) const

View File

@ -29,7 +29,7 @@ class BaseVersion;
class BaseInstaller {
public:
BaseInstaller();
virtual ~BaseInstaller(){};
virtual ~BaseInstaller() {};
bool isApplied(MinecraftInstance* on);
virtual bool add(MinecraftInstance* to);

View File

@ -42,8 +42,8 @@
#include <QFileInfo>
#include <QJsonDocument>
#include <QJsonObject>
#include <QRegularExpression>
#include "Application.h"
#include "settings/INISettingsObject.h"
#include "settings/OverrideSetting.h"
#include "settings/Setting.h"
@ -64,6 +64,8 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s
m_settings->registerSetting("lastLaunchTime", 0);
m_settings->registerSetting("totalTimePlayed", 0);
if (m_settings->get("totalTimePlayed").toLongLong() < 0)
m_settings->reset("totalTimePlayed");
m_settings->registerSetting("lastTimePlayed", 0);
m_settings->registerSetting("linkedInstances", "[]");
@ -172,6 +174,12 @@ void BaseInstance::copyManagedPack(BaseInstance& other)
m_settings->set("ManagedPackName", other.getManagedPackName());
m_settings->set("ManagedPackVersionID", other.getManagedPackVersionID());
m_settings->set("ManagedPackVersionName", other.getManagedPackVersionName());
if (APPLICATION->settings()->get("AutomaticJavaSwitch").toBool() && m_settings->get("AutomaticJava").toBool() &&
m_settings->get("OverrideJavaLocation").toBool()) {
m_settings->set("OverrideJavaLocation", false);
m_settings->set("JavaPath", "");
}
}
int BaseInstance::getConsoleMaxLines() const
@ -267,13 +275,18 @@ void BaseInstance::setRunning(bool running)
m_isRunning = running;
if (!m_settings->get("RecordGameTime").toBool()) {
emit runningStatusChanged(running);
emit runningStatusChanged(running);
}
void BaseInstance::setMinecraftRunning(bool running)
{
if (!settings()->get("RecordGameTime").toBool()) {
return;
}
if (running) {
m_timeStarted = QDateTime::currentDateTime();
setLastLaunch(m_timeStarted.toMSecsSinceEpoch());
} else {
QDateTime timeEnded = QDateTime::currentDateTime();
@ -283,8 +296,6 @@ void BaseInstance::setRunning(bool running)
emit propertiesChanged(this);
}
emit runningStatusChanged(running);
}
int64_t BaseInstance::totalTimePlayed() const
@ -381,6 +392,12 @@ void BaseInstance::setName(QString val)
emit propertiesChanged(this);
}
bool BaseInstance::syncInstanceDirName(const QString& newRoot) const
{
auto oldRoot = instanceRoot();
return oldRoot == newRoot || QFile::rename(oldRoot, newRoot);
}
QString BaseInstance::name() const
{
return m_settings->get("name").toString();
@ -406,3 +423,8 @@ void BaseInstance::updateRuntimeContext()
{
// NOOP
}
bool BaseInstance::isLegacy()
{
return traits().contains("legacyLaunch") || traits().contains("alphaLaunch");
}

View File

@ -56,7 +56,7 @@
#include "net/Mode.h"
#include "RuntimeContext.h"
#include "minecraft/launch/MinecraftServerTarget.h"
#include "minecraft/launch/MinecraftTarget.h"
class QDir;
class Task;
@ -104,6 +104,7 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns
/// be unique.
virtual QString id() const;
void setMinecraftRunning(bool running);
void setRunning(bool running);
bool isRunning() const;
int64_t totalTimePlayed() const;
@ -125,6 +126,9 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns
QString name() const;
void setName(QString val);
/// Sync name and rename instance dir accordingly; returns true if successful
bool syncInstanceDirName(const QString& newRoot) const;
/// Value used for instance window titles
QString windowTitle() const;
@ -147,9 +151,6 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns
void setManagedPack(const QString& type, const QString& id, const QString& name, const QString& versionId, const QString& version);
void copyManagedPack(BaseInstance& other);
/// guess log level from a line of game log
virtual MessageLevel::Enum guessLevel([[maybe_unused]] const QString& line, MessageLevel::Enum level) { return level; }
virtual QStringList extraArguments();
/// Traits. Normally inside the version, depends on instance implementation.
@ -180,10 +181,10 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns
virtual void loadSpecificSettings() = 0;
/// returns a valid update task
virtual Task::Ptr createUpdateTask(Net::Mode mode) = 0;
virtual QList<Task::Ptr> createUpdateTask() = 0;
/// returns a valid launcher (task container)
virtual shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account, MinecraftServerTargetPtr serverToJoin) = 0;
virtual shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account, MinecraftTarget::Ptr targetToJoin) = 0;
/// returns the current launch task (if any)
shared_qobject_ptr<LaunchTask> getLaunchTask();
@ -194,15 +195,10 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns
virtual QProcessEnvironment createEnvironment() = 0;
virtual QProcessEnvironment createLaunchEnvironment() = 0;
/*!
* Returns a matcher that can maps relative paths within the instance to whether they are 'log files'
*/
virtual IPathMatcher::Ptr getLogFileMatcher() = 0;
/*!
* Returns the root folder to use for looking up log files
*/
virtual QString getLogFileRoot() = 0;
virtual QStringList getLogFileSearchPaths() = 0;
virtual QString getStatusbarDescription() = 0;
@ -214,7 +210,7 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns
virtual QString typeName() const = 0;
void updateRuntimeContext();
virtual void updateRuntimeContext();
RuntimeContext runtimeContext() const { return m_runtimeContext; }
bool hasVersionBroken() const { return m_hasBrokenVersion; }
@ -255,7 +251,7 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns
/**
* 'print' a verbose description of the instance into a QStringList
*/
virtual QStringList verboseDescription(AuthSessionPtr session, MinecraftServerTargetPtr serverToJoin) = 0;
virtual QStringList verboseDescription(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) = 0;
Status currentStatus() const;
@ -268,6 +264,8 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns
bool removeLinkedInstanceId(const QString& id);
bool isLinkedToInstanceId(const QString& id) const;
bool isLegacy();
protected:
void changeStatus(Status newStatus);

View File

@ -78,6 +78,14 @@ QVariant BaseVersionList::data(const QModelIndex& index, int role) const
case TypeRole:
return version->typeString();
case JavaMajorRole: {
auto major = version->name();
if (major.startsWith("java")) {
major = "Java " + major.mid(4);
}
return major;
}
default:
return QVariant();
}
@ -110,6 +118,8 @@ QHash<int, QByteArray> BaseVersionList::roleNames() const
roles.insert(TypeRole, "type");
roles.insert(BranchRole, "branch");
roles.insert(PathRole, "path");
roles.insert(ArchitectureRole, "architecture");
roles.insert(JavaNameRole, "javaName");
roles.insert(CPUArchitectureRole, "architecture");
roles.insert(JavaMajorRole, "javaMajor");
return roles;
}

View File

@ -48,7 +48,9 @@ class BaseVersionList : public QAbstractListModel {
TypeRole,
BranchRole,
PathRole,
ArchitectureRole,
JavaNameRole,
JavaMajorRole,
CPUArchitectureRole,
SortRole
};
using RoleList = QList<int>;

View File

@ -21,13 +21,18 @@ set(CORE_SOURCES
BaseVersion.h
BaseInstance.h
BaseInstance.cpp
InstanceDirUpdate.h
InstanceDirUpdate.cpp
NullInstance.h
MMCZip.h
MMCZip.cpp
Untar.h
Untar.cpp
StringUtils.h
StringUtils.cpp
QVariantUtils.h
RuntimeContext.h
PSaveFile.h
# Basic instance manipulation tasks (derived from InstanceTask)
InstanceCreationTask.h
@ -94,7 +99,7 @@ set(CORE_SOURCES
MTPixmapCache.h
)
if (UNIX AND NOT CYGWIN AND NOT APPLE)
set(CORE_SOURCES
set(CORE_SOURCES
${CORE_SOURCES}
# MangoHud
@ -126,7 +131,6 @@ set(NET_SOURCES
net/MetaCacheSink.h
net/Logging.h
net/Logging.cpp
net/NetAction.h
net/NetJob.cpp
net/NetJob.h
net/NetUtils.h
@ -139,7 +143,6 @@ set(NET_SOURCES
net/HeaderProxy.h
net/RawHeaderProxy.h
net/ApiHeaderProxy.h
net/StaticHeaderProxy.h
net/ApiDownload.h
net/ApiDownload.cpp
net/ApiUpload.cpp
@ -160,16 +163,20 @@ set(LAUNCH_SOURCES
launch/steps/PreLaunchCommand.h
launch/steps/TextPrint.cpp
launch/steps/TextPrint.h
launch/steps/Update.cpp
launch/steps/Update.h
launch/steps/QuitAfterGameStop.cpp
launch/steps/QuitAfterGameStop.h
launch/steps/PrintServers.cpp
launch/steps/PrintServers.h
launch/LaunchStep.cpp
launch/LaunchStep.h
launch/LaunchTask.cpp
launch/LaunchTask.h
launch/LogModel.cpp
launch/LogModel.h
launch/TaskStepWrapper.cpp
launch/TaskStepWrapper.h
logs/LogParser.cpp
logs/LogParser.h
)
# Old update system
@ -205,33 +212,27 @@ set(ICONS_SOURCES
# Support for Minecraft instances and launch
set(MINECRAFT_SOURCES
# Logging
minecraft/Logging.h
minecraft/Logging.cpp
# Minecraft support
minecraft/auth/AccountData.cpp
minecraft/auth/AccountData.h
minecraft/auth/AccountList.cpp
minecraft/auth/AccountList.h
minecraft/auth/AccountTask.cpp
minecraft/auth/AccountTask.h
minecraft/auth/AuthRequest.cpp
minecraft/auth/AuthRequest.h
minecraft/auth/AuthSession.cpp
minecraft/auth/AuthSession.h
minecraft/auth/AuthStep.cpp
minecraft/auth/AuthStep.h
minecraft/auth/MinecraftAccount.cpp
minecraft/auth/MinecraftAccount.h
minecraft/auth/Parsers.cpp
minecraft/auth/Parsers.h
minecraft/auth/flows/AuthFlow.cpp
minecraft/auth/flows/AuthFlow.h
minecraft/auth/flows/MSA.cpp
minecraft/auth/flows/MSA.h
minecraft/auth/flows/Offline.cpp
minecraft/auth/flows/Offline.h
minecraft/auth/AuthFlow.cpp
minecraft/auth/AuthFlow.h
minecraft/auth/steps/OfflineStep.cpp
minecraft/auth/steps/OfflineStep.h
minecraft/auth/steps/EntitlementsStep.cpp
minecraft/auth/steps/EntitlementsStep.h
minecraft/auth/steps/GetSkinStep.cpp
@ -240,6 +241,8 @@ set(MINECRAFT_SOURCES
minecraft/auth/steps/LauncherLoginStep.h
minecraft/auth/steps/MinecraftProfileStep.cpp
minecraft/auth/steps/MinecraftProfileStep.h
minecraft/auth/steps/MSADeviceCodeStep.cpp
minecraft/auth/steps/MSADeviceCodeStep.h
minecraft/auth/steps/MSAStep.cpp
minecraft/auth/steps/MSAStep.h
minecraft/auth/steps/XboxAuthorizationStep.cpp
@ -271,8 +274,8 @@ set(MINECRAFT_SOURCES
minecraft/launch/ExtractNatives.h
minecraft/launch/LauncherPartLaunch.cpp
minecraft/launch/LauncherPartLaunch.h
minecraft/launch/MinecraftServerTarget.cpp
minecraft/launch/MinecraftServerTarget.h
minecraft/launch/MinecraftTarget.cpp
minecraft/launch/MinecraftTarget.h
minecraft/launch/PrintInstanceInfo.cpp
minecraft/launch/PrintInstanceInfo.h
minecraft/launch/ReconstructAssets.cpp
@ -281,6 +284,8 @@ set(MINECRAFT_SOURCES
minecraft/launch/ScanModFolders.h
minecraft/launch/VerifyJavaInstall.cpp
minecraft/launch/VerifyJavaInstall.h
minecraft/launch/AutoInstallJava.cpp
minecraft/launch/AutoInstallJava.h
minecraft/GradleSpecifier.h
minecraft/MinecraftInstance.cpp
@ -295,8 +300,6 @@ set(MINECRAFT_SOURCES
minecraft/ComponentUpdateTask.h
minecraft/MinecraftLoadAndCheck.h
minecraft/MinecraftLoadAndCheck.cpp
minecraft/MinecraftUpdate.h
minecraft/MinecraftUpdate.cpp
minecraft/MojangVersionFormat.cpp
minecraft/MojangVersionFormat.h
minecraft/Rule.cpp
@ -346,13 +349,12 @@ set(MINECRAFT_SOURCES
minecraft/mod/TexturePackFolderModel.h
minecraft/mod/TexturePackFolderModel.cpp
minecraft/mod/ShaderPackFolderModel.h
minecraft/mod/tasks/BasicFolderLoadTask.h
minecraft/mod/tasks/ModFolderLoadTask.h
minecraft/mod/tasks/ModFolderLoadTask.cpp
minecraft/mod/tasks/ResourceFolderLoadTask.h
minecraft/mod/tasks/ResourceFolderLoadTask.cpp
minecraft/mod/tasks/LocalModParseTask.h
minecraft/mod/tasks/LocalModParseTask.cpp
minecraft/mod/tasks/LocalModUpdateTask.h
minecraft/mod/tasks/LocalModUpdateTask.cpp
minecraft/mod/tasks/LocalResourceUpdateTask.h
minecraft/mod/tasks/LocalResourceUpdateTask.cpp
minecraft/mod/tasks/LocalDataPackParseTask.h
minecraft/mod/tasks/LocalDataPackParseTask.cpp
minecraft/mod/tasks/LocalResourcePackParseTask.h
@ -372,13 +374,17 @@ set(MINECRAFT_SOURCES
minecraft/AssetsUtils.h
minecraft/AssetsUtils.cpp
# Minecraft services
minecraft/services/CapeChange.cpp
minecraft/services/CapeChange.h
minecraft/services/SkinUpload.cpp
minecraft/services/SkinUpload.h
minecraft/services/SkinDelete.cpp
minecraft/services/SkinDelete.h
# Minecraft skins
minecraft/skins/CapeChange.cpp
minecraft/skins/CapeChange.h
minecraft/skins/SkinUpload.cpp
minecraft/skins/SkinUpload.h
minecraft/skins/SkinDelete.cpp
minecraft/skins/SkinDelete.h
minecraft/skins/SkinModel.cpp
minecraft/skins/SkinModel.h
minecraft/skins/SkinList.cpp
minecraft/skins/SkinList.h
minecraft/Agent.h)
@ -422,8 +428,6 @@ set(SETTINGS_SOURCES
set(JAVA_SOURCES
java/JavaChecker.h
java/JavaChecker.cpp
java/JavaCheckerJob.h
java/JavaCheckerJob.cpp
java/JavaInstall.h
java/JavaInstall.cpp
java/JavaInstallList.h
@ -432,6 +436,20 @@ set(JAVA_SOURCES
java/JavaUtils.cpp
java/JavaVersion.h
java/JavaVersion.cpp
java/JavaMetadata.h
java/JavaMetadata.cpp
java/download/ArchiveDownloadTask.cpp
java/download/ArchiveDownloadTask.h
java/download/ManifestDownloadTask.cpp
java/download/ManifestDownloadTask.h
java/download/SymlinkTask.cpp
java/download/SymlinkTask.h
ui/java/InstallJavaDialog.h
ui/java/InstallJavaDialog.cpp
ui/java/VersionList.h
ui/java/VersionList.cpp
)
set(TRANSLATIONS_SOURCES
@ -453,6 +471,8 @@ set(TOOLS_SOURCES
tools/JVisualVM.h
tools/MCEditTool.cpp
tools/MCEditTool.h
tools/GenericProfiler.cpp
tools/GenericProfiler.h
)
set(META_SOURCES
@ -571,8 +591,8 @@ set(ATLAUNCHER_SOURCES
)
set(LINKEXE_SOURCES
WindowsConsole.cpp
WindowsConsole.h
console/WindowsConsole.h
console/WindowsConsole.cpp
filelink/FileLink.h
filelink/FileLink.cpp
@ -592,7 +612,7 @@ set(PRISMUPDATER_SOURCES
updater/prismupdater/UpdaterDialogs.cpp
updater/prismupdater/GitHubRelease.h
updater/prismupdater/GitHubRelease.cpp
Json.h
Json.cpp
FileSystem.h
@ -609,7 +629,7 @@ set(PRISMUPDATER_SOURCES
# Zip
MMCZip.h
MMCZip.cpp
# Time
MMCTime.h
MMCTime.cpp
@ -624,7 +644,6 @@ set(PRISMUPDATER_SOURCES
net/HttpMetaCache.h
net/Logging.h
net/Logging.cpp
net/NetAction.h
net/NetRequest.cpp
net/NetRequest.h
net/NetJob.cpp
@ -642,6 +661,14 @@ set(PRISMUPDATER_SOURCES
)
if(WIN32)
set(PRISMUPDATER_SOURCES
console/WindowsConsole.h
console/WindowsConsole.cpp
${PRISMUPDATER_SOURCES}
)
endif()
######## Logging categories ########
ecm_qt_declare_logging_category(CORE_SOURCES
@ -653,6 +680,22 @@ ecm_qt_declare_logging_category(CORE_SOURCES
EXPORT "${Launcher_Name}"
)
ecm_qt_export_logging_category(
IDENTIFIER instanceProfileC
CATEGORY_NAME "launcher.instance.profile"
DEFAULT_SEVERITY Debug
DESCRIPTION "Profile actions"
EXPORT "${Launcher_Name}"
)
ecm_qt_export_logging_category(
IDENTIFIER instanceProfileResolveC
CATEGORY_NAME "launcher.instance.profile.resolve"
DEFAULT_SEVERITY Debug
DESCRIPTION "Profile component resolusion actions"
EXPORT "${Launcher_Name}"
)
ecm_qt_export_logging_category(
IDENTIFIER taskLogC
CATEGORY_NAME "launcher.task"
@ -665,7 +708,7 @@ ecm_qt_export_logging_category(
IDENTIFIER taskNetLogC
CATEGORY_NAME "launcher.task.net"
DEFAULT_SEVERITY Debug
DESCRIPTION "task network action"
DESCRIPTION "Task network action"
EXPORT "${Launcher_Name}"
)
@ -673,14 +716,14 @@ ecm_qt_export_logging_category(
IDENTIFIER taskDownloadLogC
CATEGORY_NAME "launcher.task.net.download"
DEFAULT_SEVERITY Debug
DESCRIPTION "task network download actions"
DESCRIPTION "Task network download actions"
EXPORT "${Launcher_Name}"
)
ecm_qt_export_logging_category(
IDENTIFIER taskUploadLogC
CATEGORY_NAME "launcher.task.net.upload"
DEFAULT_SEVERITY Debug
DESCRIPTION "task network upload actions"
DESCRIPTION "Task network upload actions"
EXPORT "${Launcher_Name}"
)
@ -750,6 +793,11 @@ SET(LAUNCHER_SOURCES
DataMigrationTask.cpp
ApplicationMessage.h
ApplicationMessage.cpp
SysInfo.h
SysInfo.cpp
# console utils
console/Console.h
# GUI - general utilities
DesktopServices.h
@ -777,7 +825,8 @@ SET(LAUNCHER_SOURCES
resources/flat/flat.qrc
resources/flat_white/flat_white.qrc
resources/documents/documents.qrc
../${Launcher_Branding_LogoQRC}
resources/shaders/shaders.qrc
"${CMAKE_CURRENT_BINARY_DIR}/../${Launcher_Branding_LogoQRC}"
# Icons
icons/MMCIcon.h
@ -788,16 +837,12 @@ SET(LAUNCHER_SOURCES
# GUI - windows
ui/GuiUtil.h
ui/GuiUtil.cpp
ui/ColorCache.h
ui/ColorCache.cpp
ui/MainWindow.h
ui/MainWindow.cpp
ui/InstanceWindow.h
ui/InstanceWindow.cpp
# FIXME: maybe find a better home for this.
SkinUtils.cpp
SkinUtils.h
FileIgnoreProxy.cpp
FileIgnoreProxy.h
FastFileIconProvider.cpp
@ -815,6 +860,10 @@ SET(LAUNCHER_SOURCES
ui/setupwizard/PasteWizardPage.h
ui/setupwizard/ThemeWizardPage.cpp
ui/setupwizard/ThemeWizardPage.h
ui/setupwizard/AutoJavaWizardPage.cpp
ui/setupwizard/AutoJavaWizardPage.h
ui/setupwizard/LoginWizardPage.cpp
ui/setupwizard/LoginWizardPage.h
# GUI - themes
ui/themes/FusionTheme.cpp
@ -827,6 +876,8 @@ SET(LAUNCHER_SOURCES
ui/themes/DarkTheme.h
ui/themes/ITheme.cpp
ui/themes/ITheme.h
ui/themes/HintOverrideProxyStyle.cpp
ui/themes/HintOverrideProxyStyle.h
ui/themes/SystemTheme.cpp
ui/themes/SystemTheme.h
ui/themes/IconTheme.cpp
@ -873,7 +924,6 @@ SET(LAUNCHER_SOURCES
ui/pages/instance/NotesPage.h
ui/pages/instance/LogPage.cpp
ui/pages/instance/LogPage.h
ui/pages/instance/InstanceSettingsPage.cpp
ui/pages/instance/InstanceSettingsPage.h
ui/pages/instance/ScreenshotsPage.cpp
ui/pages/instance/ScreenshotsPage.h
@ -883,21 +933,22 @@ SET(LAUNCHER_SOURCES
ui/pages/instance/ServersPage.h
ui/pages/instance/WorldListPage.cpp
ui/pages/instance/WorldListPage.h
ui/pages/instance/McClient.cpp
ui/pages/instance/McClient.h
ui/pages/instance/McResolver.cpp
ui/pages/instance/McResolver.h
ui/pages/instance/ServerPingTask.cpp
ui/pages/instance/ServerPingTask.h
# GUI - global settings pages
ui/pages/global/AccountListPage.cpp
ui/pages/global/AccountListPage.h
ui/pages/global/CustomCommandsPage.cpp
ui/pages/global/CustomCommandsPage.h
ui/pages/global/EnvironmentVariablesPage.cpp
ui/pages/global/EnvironmentVariablesPage.h
ui/pages/global/ExternalToolsPage.cpp
ui/pages/global/ExternalToolsPage.h
ui/pages/global/JavaPage.cpp
ui/pages/global/JavaPage.h
ui/pages/global/LanguagePage.cpp
ui/pages/global/LanguagePage.h
ui/pages/global/MinecraftPage.cpp
ui/pages/global/MinecraftPage.h
ui/pages/global/LauncherPage.cpp
ui/pages/global/LauncherPage.h
@ -930,6 +981,9 @@ SET(LAUNCHER_SOURCES
ui/pages/modplatform/ShaderPackPage.cpp
ui/pages/modplatform/ShaderPackModel.cpp
ui/pages/modplatform/ModpackProviderBasePage.h
ui/pages/modplatform/atlauncher/AtlFilterModel.cpp
ui/pages/modplatform/atlauncher/AtlFilterModel.h
ui/pages/modplatform/atlauncher/AtlListModel.cpp
@ -992,8 +1046,6 @@ SET(LAUNCHER_SOURCES
ui/dialogs/CopyInstanceDialog.h
ui/dialogs/CustomMessageBox.cpp
ui/dialogs/CustomMessageBox.h
ui/dialogs/EditAccountDialog.cpp
ui/dialogs/EditAccountDialog.h
ui/dialogs/ExportInstanceDialog.cpp
ui/dialogs/ExportInstanceDialog.h
ui/dialogs/ExportPackDialog.cpp
@ -1022,8 +1074,6 @@ SET(LAUNCHER_SOURCES
ui/dialogs/ReviewMessageBox.h
ui/dialogs/VersionSelectDialog.cpp
ui/dialogs/VersionSelectDialog.h
ui/dialogs/SkinUploadDialog.cpp
ui/dialogs/SkinUploadDialog.h
ui/dialogs/ResourceDownloadDialog.cpp
ui/dialogs/ResourceDownloadDialog.h
ui/dialogs/ScrollMessageBox.cpp
@ -1032,26 +1082,36 @@ SET(LAUNCHER_SOURCES
ui/dialogs/BlockedModsDialog.h
ui/dialogs/ChooseProviderDialog.h
ui/dialogs/ChooseProviderDialog.cpp
ui/dialogs/ModUpdateDialog.cpp
ui/dialogs/ModUpdateDialog.h
ui/dialogs/ResourceUpdateDialog.cpp
ui/dialogs/ResourceUpdateDialog.h
ui/dialogs/InstallLoaderDialog.cpp
ui/dialogs/InstallLoaderDialog.h
ui/dialogs/skins/SkinManageDialog.cpp
ui/dialogs/skins/SkinManageDialog.h
ui/dialogs/skins/draw/SkinOpenGLWindow.h
ui/dialogs/skins/draw/SkinOpenGLWindow.cpp
ui/dialogs/skins/draw/Scene.h
ui/dialogs/skins/draw/Scene.cpp
ui/dialogs/skins/draw/BoxGeometry.h
ui/dialogs/skins/draw/BoxGeometry.cpp
# GUI - widgets
ui/widgets/CheckComboBox.cpp
ui/widgets/CheckComboBox.h
ui/widgets/Common.cpp
ui/widgets/Common.h
ui/widgets/CustomCommands.cpp
ui/widgets/CustomCommands.h
ui/widgets/EnvironmentVariables.cpp
ui/widgets/EnvironmentVariables.h
ui/widgets/DropLabel.cpp
ui/widgets/DropLabel.h
ui/widgets/FocusLineEdit.cpp
ui/widgets/FocusLineEdit.h
ui/widgets/IconLabel.cpp
ui/widgets/IconLabel.h
ui/widgets/JavaSettingsWidget.cpp
ui/widgets/JavaSettingsWidget.h
ui/widgets/JavaWizardWidget.cpp
ui/widgets/JavaWizardWidget.h
ui/widgets/LabeledToolButton.cpp
ui/widgets/LabeledToolButton.h
ui/widgets/LanguageSelectionWidget.cpp
@ -1087,6 +1147,10 @@ SET(LAUNCHER_SOURCES
ui/widgets/WideBar.cpp
ui/widgets/ThemeCustomizationWidget.h
ui/widgets/ThemeCustomizationWidget.cpp
ui/widgets/MinecraftSettingsWidget.h
ui/widgets/MinecraftSettingsWidget.cpp
ui/widgets/JavaSettingsWidget.h
ui/widgets/JavaSettingsWidget.cpp
# GUI - instance group view
ui/instanceview/InstanceProxyModel.cpp
@ -1103,7 +1167,7 @@ SET(LAUNCHER_SOURCES
)
if (NOT Apple)
set(LAUNCHER_SOURCES
set(LAUNCHER_SOURCES
${LAUNCHER_SOURCES}
ui/dialogs/UpdateAvailableDialog.h
@ -1113,8 +1177,8 @@ endif()
if(WIN32)
set(LAUNCHER_SOURCES
WindowsConsole.cpp
WindowsConsole.h
console/WindowsConsole.h
console/WindowsConsole.cpp
${LAUNCHER_SOURCES}
)
endif()
@ -1122,13 +1186,14 @@ endif()
qt_wrap_ui(LAUNCHER_UI
ui/MainWindow.ui
ui/setupwizard/PasteWizardPage.ui
ui/setupwizard/AutoJavaWizardPage.ui
ui/setupwizard/LoginWizardPage.ui
ui/setupwizard/ThemeWizardPage.ui
ui/pages/global/AccountListPage.ui
ui/pages/global/JavaPage.ui
ui/pages/global/LauncherPage.ui
ui/pages/global/APIPage.ui
ui/pages/global/ProxyPage.ui
ui/pages/global/MinecraftPage.ui
ui/pages/global/ExternalToolsPage.ui
ui/pages/instance/ExternalResourcesPage.ui
ui/pages/instance/NotesPage.ui
@ -1136,7 +1201,6 @@ qt_wrap_ui(LAUNCHER_UI
ui/pages/instance/ServersPage.ui
ui/pages/instance/GameOptionsPage.ui
ui/pages/instance/OtherLogsPage.ui
ui/pages/instance/InstanceSettingsPage.ui
ui/pages/instance/VersionPage.ui
ui/pages/instance/ManagedPackPage.ui
ui/pages/instance/WorldListPage.ui
@ -1159,6 +1223,8 @@ qt_wrap_ui(LAUNCHER_UI
ui/widgets/ModFilterWidget.ui
ui/widgets/SubTaskProgressBar.ui
ui/widgets/ThemeCustomizationWidget.ui
ui/widgets/MinecraftSettingsWidget.ui
ui/widgets/JavaSettingsWidget.ui
ui/dialogs/CopyInstanceDialog.ui
ui/dialogs/ProfileSetupDialog.ui
ui/dialogs/ProgressDialog.ui
@ -1166,7 +1232,6 @@ qt_wrap_ui(LAUNCHER_UI
ui/dialogs/NewComponentDialog.ui
ui/dialogs/NewsDialog.ui
ui/dialogs/ProfileSelectDialog.ui
ui/dialogs/SkinUploadDialog.ui
ui/dialogs/ExportInstanceDialog.ui
ui/dialogs/ExportPackDialog.ui
ui/dialogs/ExportToModListDialog.ui
@ -1175,11 +1240,11 @@ qt_wrap_ui(LAUNCHER_UI
ui/dialogs/MSALoginDialog.ui
ui/dialogs/OfflineLoginDialog.ui
ui/dialogs/AboutDialog.ui
ui/dialogs/EditAccountDialog.ui
ui/dialogs/ReviewMessageBox.ui
ui/dialogs/ScrollMessageBox.ui
ui/dialogs/BlockedModsDialog.ui
ui/dialogs/ChooseProviderDialog.ui
ui/dialogs/skins/SkinManageDialog.ui
)
qt_wrap_ui(PRISM_UPDATE_UI
@ -1203,7 +1268,8 @@ qt_add_resources(LAUNCHER_RESOURCES
resources/iOS/iOS.qrc
resources/flat/flat.qrc
resources/documents/documents.qrc
../${Launcher_Branding_LogoQRC}
resources/shaders/shaders.qrc
"${CMAKE_CURRENT_BINARY_DIR}/../${Launcher_Branding_LogoQRC}"
)
qt_wrap_ui(PRISMUPDATER_UI
@ -1221,14 +1287,10 @@ include(CompilerWarnings)
# Add executable
add_library(Launcher_logic STATIC ${LOGIC_SOURCES} ${LAUNCHER_SOURCES} ${LAUNCHER_UI} ${LAUNCHER_RESOURCES})
if(BUILD_TESTING)
target_compile_definitions(Launcher_logic PUBLIC LAUNCHER_TEST)
endif()
set_project_warnings(Launcher_logic
"${Launcher_MSVC_WARNINGS}"
"${Launcher_CLANG_WARNINGS}"
"${Launcher_GCC_WARNINGS}")
target_compile_definitions(Launcher_logic PUBLIC LAUNCHER_APPLICATION)
target_include_directories(Launcher_logic PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(Launcher_logic PUBLIC LAUNCHER_APPLICATION)
target_link_libraries(Launcher_logic
@ -1239,9 +1301,8 @@ target_link_libraries(Launcher_logic
tomlplusplus::tomlplusplus
qdcss
BuildConfig
Katabasis
Qt${QT_VERSION_MAJOR}::Widgets
ghcFilesystem::ghc_filesystem
qrcode
)
if (UNIX AND NOT CYGWIN AND NOT APPLE)
@ -1257,6 +1318,9 @@ target_link_libraries(Launcher_logic
Qt${QT_VERSION_MAJOR}::Concurrent
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::NetworkAuth
Qt${QT_VERSION_MAJOR}::OpenGL
${Launcher_QT_DBUS}
${Launcher_QT_LIBS}
)
target_link_libraries(Launcher_logic
@ -1265,16 +1329,20 @@ target_link_libraries(Launcher_logic
LocalPeer
Launcher_rainbow
)
if (TARGET ${Launcher_QT_DBUS})
add_compile_definitions(WITH_QTDBUS)
endif()
if(APPLE)
set(CMAKE_MACOSX_RPATH 1)
set(CMAKE_INSTALL_RPATH "@loader_path/../Frameworks/")
if(Launcher_ENABLE_UPDATER)
file(DOWNLOAD ${MACOSX_SPARKLE_DOWNLOAD_URL} ${CMAKE_BINARY_DIR}/Sparkle.tar.xz EXPECTED_HASH SHA256=${MACOSX_SPARKLE_SHA256})
file(ARCHIVE_EXTRACT INPUT ${CMAKE_BINARY_DIR}/Sparkle.tar.xz DESTINATION ${CMAKE_BINARY_DIR}/frameworks/Sparkle)
file(DOWNLOAD ${MACOSX_SPARKLE_DOWNLOAD_URL} ${CMAKE_BINARY_DIR}/Sparkle.tar.xz EXPECTED_HASH SHA256=${MACOSX_SPARKLE_SHA256})
file(ARCHIVE_EXTRACT INPUT ${CMAKE_BINARY_DIR}/Sparkle.tar.xz DESTINATION ${CMAKE_BINARY_DIR}/frameworks/Sparkle)
find_library(SPARKLE_FRAMEWORK Sparkle "${CMAKE_BINARY_DIR}/frameworks/Sparkle")
add_compile_definitions(SPARKLE_ENABLED)
find_library(SPARKLE_FRAMEWORK Sparkle "${CMAKE_BINARY_DIR}/frameworks/Sparkle")
add_compile_definitions(SPARKLE_ENABLED)
endif()
target_link_libraries(Launcher_logic
@ -1284,7 +1352,7 @@ if(APPLE)
"-framework ApplicationServices"
)
if(Launcher_ENABLE_UPDATER)
target_link_libraries(Launcher_logic ${SPARKLE_FRAMEWORK})
target_link_libraries(Launcher_logic ${SPARKLE_FRAMEWORK})
endif()
endif()
@ -1321,19 +1389,17 @@ if(Launcher_BUILD_UPDATER)
${ZLIB_LIBRARIES}
systeminfo
BuildConfig
ghcFilesystem::ghc_filesystem
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Network
${Launcher_QT_LIBS}
cmark::cmark
Katabasis
)
add_executable("${Launcher_Name}_updater" WIN32 updater/prismupdater/updater_main.cpp)
target_sources("${Launcher_Name}_updater" PRIVATE updater/prismupdater/updater.exe.manifest)
target_link_libraries("${Launcher_Name}_updater" prism_updater_logic)
if(DEFINED Launcher_APP_BINARY_NAME)
set_target_properties("${Launcher_Name}_updater" PROPERTIES OUTPUT_NAME "${Launcher_APP_BINARY_NAME}_updater")
endif()
@ -1361,7 +1427,6 @@ if(WIN32 OR (DEFINED Launcher_BUILD_FILELINKER AND Launcher_BUILD_FILELINKER))
target_link_libraries(filelink_logic
systeminfo
BuildConfig
ghcFilesystem::ghc_filesystem
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Network
@ -1492,7 +1557,6 @@ if(INSTALL_BUNDLE STREQUAL "full")
CONFIGURATIONS Debug RelWithDebInfo ""
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
PATTERN "*qopensslbackend*" EXCLUDE
PATTERN "*qcertonlybackend*" EXCLUDE
)
install(
@ -1503,10 +1567,78 @@ if(INSTALL_BUNDLE STREQUAL "full")
REGEX "dd\\." EXCLUDE
REGEX "_debug\\." EXCLUDE
REGEX "\\.dSYM" EXCLUDE
PATTERN "*qopensslbackend*" EXCLUDE
PATTERN "*qcertonlybackend*" EXCLUDE
)
endif()
# Wayland support
if(EXISTS "${QT_PLUGINS_DIR}/wayland-graphics-integration-client")
install(
DIRECTORY "${QT_PLUGINS_DIR}/wayland-graphics-integration-client"
CONFIGURATIONS Debug RelWithDebInfo ""
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
)
install(
DIRECTORY "${QT_PLUGINS_DIR}/wayland-graphics-integration-client"
CONFIGURATIONS Release MinSizeRel
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
REGEX "dd\\." EXCLUDE
REGEX "_debug\\." EXCLUDE
REGEX "\\.dSYM" EXCLUDE
)
endif()
if(EXISTS "${QT_PLUGINS_DIR}/wayland-graphics-integration-server")
install(
DIRECTORY "${QT_PLUGINS_DIR}/wayland-graphics-integration-server"
CONFIGURATIONS Debug RelWithDebInfo ""
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
)
install(
DIRECTORY "${QT_PLUGINS_DIR}/wayland-graphics-integration-server"
CONFIGURATIONS Release MinSizeRel
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
REGEX "dd\\." EXCLUDE
REGEX "_debug\\." EXCLUDE
REGEX "\\.dSYM" EXCLUDE
)
endif()
if(EXISTS "${QT_PLUGINS_DIR}/wayland-decoration-client")
install(
DIRECTORY "${QT_PLUGINS_DIR}/wayland-decoration-client"
CONFIGURATIONS Debug RelWithDebInfo ""
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
)
install(
DIRECTORY "${QT_PLUGINS_DIR}/wayland-decoration-client"
CONFIGURATIONS Release MinSizeRel
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
REGEX "dd\\." EXCLUDE
REGEX "_debug\\." EXCLUDE
REGEX "\\.dSYM" EXCLUDE
)
endif()
if(EXISTS "${QT_PLUGINS_DIR}/wayland-shell-integration")
install(
DIRECTORY "${QT_PLUGINS_DIR}/wayland-shell-integration"
CONFIGURATIONS Debug RelWithDebInfo ""
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
)
install(
DIRECTORY "${QT_PLUGINS_DIR}/wayland-shell-integration"
CONFIGURATIONS Release MinSizeRel
DESTINATION ${PLUGIN_DEST_DIR}
COMPONENT Runtime
REGEX "dd\\." EXCLUDE
REGEX "_debug\\." EXCLUDE
REGEX "\\.dSYM" EXCLUDE
)
endif()
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/install_prereqs.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/install_prereqs.cmake"

View File

@ -12,13 +12,10 @@
#include <QtConcurrent>
DataMigrationTask::DataMigrationTask(QObject* parent,
const QString& sourcePath,
const QString& targetPath,
const IPathMatcher::Ptr pathMatcher)
: Task(parent), m_sourcePath(sourcePath), m_targetPath(targetPath), m_pathMatcher(pathMatcher), m_copy(sourcePath, targetPath)
DataMigrationTask::DataMigrationTask(const QString& sourcePath, const QString& targetPath, const IPathMatcher::Ptr pathMatcher)
: Task(), m_sourcePath(sourcePath), m_targetPath(targetPath), m_pathMatcher(pathMatcher), m_copy(sourcePath, targetPath)
{
m_copy.matcher(m_pathMatcher.get()).whitelist(true);
m_copy.matcher(m_pathMatcher).whitelist(true);
}
void DataMigrationTask::executeTask()
@ -27,7 +24,7 @@ void DataMigrationTask::executeTask()
// 1. Scan
// Check how many files we gotta copy
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [&] {
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [this] {
return m_copy(true); // dry run to collect amount of files
});
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::dryRunFinished);
@ -40,11 +37,7 @@ void DataMigrationTask::dryRunFinished()
disconnect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::dryRunFinished);
disconnect(&m_copyFutureWatcher, &QFutureWatcher<bool>::canceled, this, &DataMigrationTask::dryRunAborted);
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
if (!m_copyFuture.isValid() || !m_copyFuture.result()) {
#else
if (!m_copyFuture.result()) {
#endif
emitFailed(tr("Failed to scan source path."));
return;
}
@ -60,7 +53,7 @@ void DataMigrationTask::dryRunFinished()
setProgress(m_copy.totalCopied(), m_toCopy);
setStatus(tr("Copying %1…").arg(shortenedName));
});
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [&] {
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [this] {
return m_copy(false); // actually copy now
});
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::copyFinished);
@ -78,11 +71,7 @@ void DataMigrationTask::copyFinished()
disconnect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::copyFinished);
disconnect(&m_copyFutureWatcher, &QFutureWatcher<bool>::canceled, this, &DataMigrationTask::copyAborted);
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
if (!m_copyFuture.isValid() || !m_copyFuture.result()) {
#else
if (!m_copyFuture.result()) {
#endif
emitFailed(tr("Some paths could not be copied!"));
return;
}

View File

@ -18,7 +18,7 @@
class DataMigrationTask : public Task {
Q_OBJECT
public:
explicit DataMigrationTask(QObject* parent, const QString& sourcePath, const QString& targetPath, IPathMatcher::Ptr pathmatcher);
explicit DataMigrationTask(const QString& sourcePath, const QString& targetPath, IPathMatcher::Ptr pathmatcher);
~DataMigrationTask() override = default;
protected:

View File

@ -37,140 +37,33 @@
#include <QDesktopServices>
#include <QDir>
#include <QProcess>
/**
* This shouldn't exist, but until QTBUG-9328 and other unreported bugs are fixed, it needs to be a thing.
*/
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
#include <errno.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
template <typename T>
bool IndirectOpen(T callable, qint64* pid_forked = nullptr)
{
auto pid = fork();
if (pid_forked) {
if (pid > 0)
*pid_forked = pid;
else
*pid_forked = 0;
}
if (pid == -1) {
qWarning() << "IndirectOpen failed to fork: " << errno;
return false;
}
// child - do the stuff
if (pid == 0) {
// unset all this garbage so it doesn't get passed to the child process
qunsetenv("LD_PRELOAD");
qunsetenv("LD_LIBRARY_PATH");
qunsetenv("LD_DEBUG");
qunsetenv("QT_PLUGIN_PATH");
qunsetenv("QT_FONTPATH");
// open the URL
auto status = callable();
// detach from the parent process group.
setsid();
// die. now. do not clean up anything, it would just hang forever.
_exit(status ? 0 : 1);
} else {
// parent - assume it worked.
int status;
while (waitpid(pid, &status, 0)) {
if (WIFEXITED(status)) {
return WEXITSTATUS(status) == 0;
}
if (WIFSIGNALED(status)) {
return false;
}
}
return true;
}
}
#endif
#include "FileSystem.h"
namespace DesktopServices {
bool openDirectory(const QString& path, [[maybe_unused]] bool ensureExists)
bool openPath(const QFileInfo& path, bool ensureFolderPathExists)
{
qDebug() << "Opening directory" << path;
QDir parentPath;
QDir dir(path);
if (ensureExists && !dir.exists()) {
parentPath.mkpath(dir.absolutePath());
qDebug() << "Opening path" << path;
if (ensureFolderPathExists) {
FS::ensureFolderPathExists(path);
}
auto f = [&]() { return QDesktopServices::openUrl(QUrl::fromLocalFile(dir.absolutePath())); };
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
if (!isSandbox()) {
return IndirectOpen(f);
}
#endif
return f();
return openUrl(QUrl::fromLocalFile(QFileInfo(path).absoluteFilePath()));
}
bool openFile(const QString& path)
bool openPath(const QString& path, bool ensureFolderPathExists)
{
qDebug() << "Opening file" << path;
auto f = [&]() { return QDesktopServices::openUrl(QUrl::fromLocalFile(path)); };
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
if (!isSandbox()) {
return IndirectOpen(f);
} else {
return f();
}
#else
return f();
#endif
}
bool openFile(const QString& application, const QString& path, const QString& workingDirectory, qint64* pid)
{
qDebug() << "Opening file" << path << "using" << application;
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
// FIXME: the pid here is fake. So if something depends on it, it will likely misbehave
if (!isSandbox()) {
return IndirectOpen([&]() { return QProcess::startDetached(application, QStringList() << path, workingDirectory); }, pid);
} else {
return QProcess::startDetached(application, QStringList() << path, workingDirectory, pid);
}
#else
return QProcess::startDetached(application, QStringList() << path, workingDirectory, pid);
#endif
return openPath(QFileInfo(path), ensureFolderPathExists);
}
bool run(const QString& application, const QStringList& args, const QString& workingDirectory, qint64* pid)
{
qDebug() << "Running" << application << "with args" << args.join(' ');
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
if (!isSandbox()) {
// FIXME: the pid here is fake. So if something depends on it, it will likely misbehave
return IndirectOpen([&]() { return QProcess::startDetached(application, args, workingDirectory); }, pid);
} else {
return QProcess::startDetached(application, args, workingDirectory, pid);
}
#else
return QProcess::startDetached(application, args, workingDirectory, pid);
#endif
}
bool openUrl(const QUrl& url)
{
qDebug() << "Opening URL" << url.toString();
auto f = [&]() { return QDesktopServices::openUrl(url); };
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
if (!isSandbox()) {
return IndirectOpen(f);
} else {
return f();
}
#else
return f();
#endif
return QDesktopServices::openUrl(url);
}
bool isFlatpak()
@ -191,9 +84,4 @@ bool isSnap()
#endif
}
bool isSandbox()
{
return isSnap() || isFlatpak();
}
} // namespace DesktopServices

View File

@ -3,31 +3,30 @@
#include <QString>
#include <QUrl>
class QFileInfo;
/**
* This wraps around QDesktopServices and adds workarounds where needed
* Use this instead of QDesktopServices!
*/
namespace DesktopServices {
/**
* Open a file in whatever application is applicable
* Open a path in whatever application is applicable.
* @param ensureFolderPathExists Make sure the path exists
*/
bool openFile(const QString& path);
bool openPath(const QFileInfo& path, bool ensureFolderPathExists = false);
/**
* Open a file in the specified application
* Open a path in whatever application is applicable.
* @param ensureFolderPathExists Make sure the path exists
*/
bool openFile(const QString& application, const QString& path, const QString& workingDirectory = QString(), qint64* pid = 0);
bool openPath(const QString& path, bool ensureFolderPathExists = false);
/**
* Run an application
*/
bool run(const QString& application, const QStringList& args, const QString& workingDirectory = QString(), qint64* pid = 0);
/**
* Open a directory
*/
bool openDirectory(const QString& path, bool ensureExists = false);
/**
* Open the URL, most likely in a browser. Maybe.
*/
@ -42,9 +41,4 @@ bool isFlatpak();
* Determine whether the launcher is running in a Snap environment
*/
bool isSnap();
/**
* Determine whether the launcher is running in a sandboxed (Flatpak or Snap) environment
*/
bool isSandbox();
} // namespace DesktopServices

View File

@ -1,4 +1,37 @@
// Licensed under the Apache-2.0 license. See README.md for details.
// SPDX-License-Identifier: GPL-3.0-only AND Apache-2.0
/*
* Prism Launcher - Minecraft Launcher
* Copyright (c) 2024 TheKodeToad <TheKodeToad@proton.me>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2013-2021 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
@ -8,12 +41,12 @@
class Exception : public std::exception {
public:
Exception(const QString& message) : std::exception(), m_message(message) { qCritical() << "Exception:" << message; }
Exception(const Exception& other) : std::exception(), m_message(other.cause()) {}
Exception(const QString& message) : std::exception(), m_message(message.toUtf8()) { qCritical() << "Exception:" << message; }
Exception(const Exception& other) : std::exception(), m_message(other.m_message) {}
virtual ~Exception() noexcept {}
const char* what() const noexcept { return m_message.toLatin1().constData(); }
QString cause() const { return m_message; }
const char* what() const noexcept { return m_message.constData(); }
QString cause() const { return QString::fromUtf8(m_message); }
private:
QString m_message;
QByteArray m_message;
};

View File

@ -40,12 +40,11 @@
#include <QFileSystemModel>
#include <QSortFilterProxyModel>
#include <QStack>
#include <algorithm>
#include "FileSystem.h"
#include "SeparatorPrefixTree.h"
#include "StringUtils.h"
FileIgnoreProxy::FileIgnoreProxy(QString root, QObject* parent) : QSortFilterProxyModel(parent), root(root) {}
FileIgnoreProxy::FileIgnoreProxy(QString root, QObject* parent) : QSortFilterProxyModel(parent), m_root(root) {}
// NOTE: Sadly, we have to do sorting ourselves.
bool FileIgnoreProxy::lessThan(const QModelIndex& left, const QModelIndex& right) const
{
@ -104,10 +103,10 @@ QVariant FileIgnoreProxy::data(const QModelIndex& index, int role) const
if (index.column() == 0 && role == Qt::CheckStateRole) {
QFileSystemModel* fsm = qobject_cast<QFileSystemModel*>(sourceModel());
auto blockedPath = relPath(fsm->filePath(sourceIndex));
auto cover = blocked.cover(blockedPath);
auto cover = m_blocked.cover(blockedPath);
if (!cover.isNull()) {
return QVariant(Qt::Unchecked);
} else if (blocked.exists(blockedPath)) {
} else if (m_blocked.exists(blockedPath)) {
return QVariant(Qt::PartiallyChecked);
} else {
return QVariant(Qt::Checked);
@ -130,7 +129,7 @@ bool FileIgnoreProxy::setData(const QModelIndex& index, const QVariant& value, i
QString FileIgnoreProxy::relPath(const QString& path) const
{
return QDir(root).relativeFilePath(path);
return QDir(m_root).relativeFilePath(path);
}
bool FileIgnoreProxy::setFilterState(QModelIndex index, Qt::CheckState state)
@ -146,18 +145,18 @@ bool FileIgnoreProxy::setFilterState(QModelIndex index, Qt::CheckState state)
bool changed = false;
if (state == Qt::Unchecked) {
// blocking a path
auto& node = blocked.insert(blockedPath);
auto& node = m_blocked.insert(blockedPath);
// get rid of all blocked nodes below
node.clear();
changed = true;
} else if (state == Qt::Checked || state == Qt::PartiallyChecked) {
if (!blocked.remove(blockedPath)) {
auto cover = blocked.cover(blockedPath);
if (!m_blocked.remove(blockedPath)) {
auto cover = m_blocked.cover(blockedPath);
qDebug() << "Blocked by cover" << cover;
// uncover
blocked.remove(cover);
m_blocked.remove(cover);
// block all contents, except for any cover
QModelIndex rootIndex = fsm->index(FS::PathCombine(root, cover));
QModelIndex rootIndex = fsm->index(FS::PathCombine(m_root, cover));
QModelIndex doing = rootIndex;
int row = 0;
QStack<QModelIndex> todo;
@ -179,7 +178,7 @@ bool FileIgnoreProxy::setFilterState(QModelIndex index, Qt::CheckState state)
todo.push(node);
} else {
// or just block this one.
blocked.insert(relpath);
m_blocked.insert(relpath);
}
row++;
}
@ -229,7 +228,7 @@ bool FileIgnoreProxy::shouldExpand(QModelIndex index)
return false;
}
auto blockedPath = relPath(fsm->filePath(sourceIndex));
auto found = blocked.find(blockedPath);
auto found = m_blocked.find(blockedPath);
if (found) {
return !found->leaf();
}
@ -239,8 +238,8 @@ bool FileIgnoreProxy::shouldExpand(QModelIndex index)
void FileIgnoreProxy::setBlockedPaths(QStringList paths)
{
beginResetModel();
blocked.clear();
blocked.insert(paths);
m_blocked.clear();
m_blocked.insert(paths);
endResetModel();
}
@ -272,5 +271,26 @@ bool FileIgnoreProxy::ignoreFile(QFileInfo fileInfo) const
bool FileIgnoreProxy::filterFile(const QString& fileName) const
{
return blocked.covers(fileName) || ignoreFile(QFileInfo(QDir(root), fileName));
return m_blocked.covers(fileName) || ignoreFile(QFileInfo(QDir(m_root), fileName));
}
void FileIgnoreProxy::loadBlockedPathsFromFile(const QString& fileName)
{
QFile ignoreFile(fileName);
if (!ignoreFile.open(QIODevice::ReadOnly)) {
return;
}
auto ignoreData = ignoreFile.readAll();
auto string = QString::fromUtf8(ignoreData);
setBlockedPaths(string.split('\n', Qt::SkipEmptyParts));
}
void FileIgnoreProxy::saveBlockedPathsToFile(const QString& fileName)
{
auto ignoreData = blockedPaths().toStringList().join('\n').toUtf8();
try {
FS::write(fileName, ignoreData);
} catch (const Exception& e) {
qWarning() << e.cause();
}
}

View File

@ -61,8 +61,8 @@ class FileIgnoreProxy : public QSortFilterProxyModel {
void setBlockedPaths(QStringList paths);
inline const SeparatorPrefixTree<'/'>& blockedPaths() const { return blocked; }
inline SeparatorPrefixTree<'/'>& blockedPaths() { return blocked; }
inline const SeparatorPrefixTree<'/'>& blockedPaths() const { return m_blocked; }
inline SeparatorPrefixTree<'/'>& blockedPaths() { return m_blocked; }
// list of file names that need to be removed completely from model
inline QStringList& ignoreFilesWithName() { return m_ignoreFiles; }
@ -71,6 +71,10 @@ class FileIgnoreProxy : public QSortFilterProxyModel {
bool filterFile(const QString& fileName) const;
void loadBlockedPathsFromFile(const QString& fileName);
void saveBlockedPathsToFile(const QString& fileName);
protected:
bool filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const;
bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const;
@ -78,8 +82,8 @@ class FileIgnoreProxy : public QSortFilterProxyModel {
bool ignoreFile(QFileInfo file) const;
private:
const QString root;
SeparatorPrefixTree<'/'> blocked;
const QString m_root;
SeparatorPrefixTree<'/'> m_blocked;
QStringList m_ignoreFiles;
SeparatorPrefixTree<'/'> m_ignoreFilePaths;
};

View File

@ -45,7 +45,6 @@
#include <QDirIterator>
#include <QFile>
#include <QFileInfo>
#include <QSaveFile>
#include <QStandardPaths>
#include <QStorageInfo>
#include <QTextStream>
@ -54,6 +53,7 @@
#include <system_error>
#include "DesktopServices.h"
#include "PSaveFile.h"
#include "StringUtils.h"
#if defined Q_OS_WIN32
@ -77,24 +77,8 @@
#include <utime.h>
#endif
// Snippet from https://github.com/gulrak/filesystem#using-it-as-single-file-header
#ifdef __APPLE__
#include <Availability.h> // for deployment target to support pre-catalina targets without std::fs
#endif // __APPLE__
#if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || (defined(__cplusplus) && __cplusplus >= 201703L)) && defined(__has_include)
#if __has_include(<filesystem>) && (!defined(__MAC_OS_X_VERSION_MIN_REQUIRED) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500)
#define GHC_USE_STD_FS
#include <filesystem>
namespace fs = std::filesystem;
#endif // MacOS min version check
#endif // Other OSes version check
#ifndef GHC_USE_STD_FS
#include <ghc/filesystem.hpp>
namespace fs = ghc::filesystem;
#endif
// clone
#if defined(Q_OS_LINUX)
@ -191,8 +175,8 @@ void ensureExists(const QDir& dir)
void write(const QString& filename, const QByteArray& data)
{
ensureExists(QFileInfo(filename).dir());
QSaveFile file(filename);
if (!file.open(QSaveFile::WriteOnly)) {
PSaveFile file(filename);
if (!file.open(PSaveFile::WriteOnly)) {
throw FileSystemException("Couldn't open " + filename + " for writing: " + file.errorString());
}
if (data.size() != file.write(data)) {
@ -213,8 +197,8 @@ void appendSafe(const QString& filename, const QByteArray& data)
buffer = QByteArray();
}
buffer.append(data);
QSaveFile file(filename);
if (!file.open(QSaveFile::WriteOnly)) {
PSaveFile file(filename);
if (!file.open(PSaveFile::WriteOnly)) {
throw FileSystemException("Couldn't open " + filename + " for writing: " + file.errorString());
}
if (buffer.size() != file.write(buffer)) {
@ -272,15 +256,22 @@ bool ensureFilePathExists(QString filenamepath)
return success;
}
bool ensureFolderPathExists(QString foldernamepath)
bool ensureFolderPathExists(const QFileInfo folderPath)
{
QFileInfo a(foldernamepath);
QDir dir;
QString ensuredPath = a.filePath();
QString ensuredPath = folderPath.filePath();
if (folderPath.exists())
return true;
bool success = dir.mkpath(ensuredPath);
return success;
}
bool ensureFolderPathExists(const QString folderPathName)
{
return ensureFolderPathExists(QFileInfo(folderPathName));
}
bool copyFileAttributes(QString src, QString dst)
{
#ifdef Q_OS_WIN32
@ -334,7 +325,7 @@ bool copy::operator()(const QString& offset, bool dryRun)
opt |= copy_opts::overwrite_existing;
// Function that'll do the actual copying
auto copy_file = [&](QString src_path, QString relative_dst_path) {
auto copy_file = [this, dryRun, src, dst, opt, &err](QString src_path, QString relative_dst_path) {
if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist))
return;
@ -421,7 +412,7 @@ void create_link::make_link_list(const QString& offset)
m_recursive = true;
// Function that'll do the actual linking
auto link_file = [&](QString src_path, QString relative_dst_path) {
auto link_file = [this, dst](QString src_path, QString relative_dst_path) {
if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist)) {
qDebug() << "path" << relative_dst_path << "in black list or not in whitelist";
return;
@ -516,7 +507,7 @@ void create_link::runPrivileged(const QString& offset)
QString serverName = BuildConfig.LAUNCHER_APP_BINARY_NAME + "_filelink_server" + StringUtils::getRandomAlphaNumeric();
connect(&m_linkServer, &QLocalServer::newConnection, this, [&]() {
connect(&m_linkServer, &QLocalServer::newConnection, this, [this, &gotResults]() {
qDebug() << "Client connected, sending out pairs";
// construct block of data to send
QByteArray block;
@ -598,7 +589,7 @@ void create_link::runPrivileged(const QString& offset)
}
ExternalLinkFileProcess* linkFileProcess = new ExternalLinkFileProcess(serverName, m_useHardLinks, this);
connect(linkFileProcess, &ExternalLinkFileProcess::processExited, this, [&]() { emit finishedPrivileged(gotResults); });
connect(linkFileProcess, &ExternalLinkFileProcess::processExited, this, [this, gotResults]() { emit finishedPrivileged(gotResults); });
connect(linkFileProcess, &ExternalLinkFileProcess::finished, linkFileProcess, &QObject::deleteLater);
linkFileProcess->start();
@ -643,6 +634,19 @@ void ExternalLinkFileProcess::runLinkFile()
qDebug() << "Process exited";
}
bool moveByCopy(const QString& source, const QString& dest)
{
if (!copy(source, dest)()) { // copy
qDebug() << "Copy of" << source << "to" << dest << "failed!";
return false;
}
if (!deletePath(source)) { // remove original
qDebug() << "Deletion of" << source << "failed!";
return false;
};
return true;
}
bool move(const QString& source, const QString& dest)
{
std::error_code err;
@ -650,13 +654,14 @@ bool move(const QString& source, const QString& dest)
ensureFilePathExists(dest);
fs::rename(StringUtils::toStdString(source), StringUtils::toStdString(dest), err);
if (err) {
qWarning() << "Failed to move file:" << QString::fromStdString(err.message());
qDebug() << "Source file:" << source;
qDebug() << "Destination file:" << dest;
if (err.value() != 0) {
if (moveByCopy(source, dest))
return true;
qDebug() << "Move of" << source << "to" << dest << "failed!";
qWarning() << "Failed to move file:" << QString::fromStdString(err.message()) << QString::number(err.value());
return false;
}
return err.value() == 0;
return true;
}
bool deletePath(QString path)
@ -674,9 +679,6 @@ bool deletePath(QString path)
bool trash(QString path, QString* pathInTrash)
{
#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0)
return false;
#else
// FIXME: Figure out trash in Flatpak. Qt seemingly doesn't use the Trash portal
if (DesktopServices::isFlatpak())
return false;
@ -685,7 +687,6 @@ bool trash(QString path, QString* pathInTrash)
return false;
#endif
return QFile::moveToTrash(path, pathInTrash);
#endif
}
QString PathCombine(const QString& path1, const QString& path2)
@ -719,11 +720,7 @@ int pathDepth(const QString& path)
QFileInfo info(path);
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
auto parts = QDir::toNativeSeparators(info.path()).split(QDir::separator(), QString::SkipEmptyParts);
#else
auto parts = QDir::toNativeSeparators(info.path()).split(QDir::separator(), Qt::SkipEmptyParts);
#endif
int numParts = parts.length();
numParts -= parts.count(".");
@ -743,11 +740,7 @@ QString pathTruncate(const QString& path, int depth)
return pathTruncate(trunc, depth);
}
#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
auto parts = QDir::toNativeSeparators(trunc).split(QDir::separator(), QString::SkipEmptyParts);
#else
auto parts = QDir::toNativeSeparators(trunc).split(QDir::separator(), Qt::SkipEmptyParts);
#endif
if (parts.startsWith(".") && !path.startsWith(".")) {
parts.removeFirst();
@ -797,16 +790,68 @@ QString NormalizePath(QString path)
}
}
QString badFilenameChars = "\"\\/?<>:;*|!+\r\n";
static const QString BAD_WIN_CHARS = "<>:\"|?*\r\n";
static const QString BAD_NTFS_CHARS = "<>:\"|?*";
static const QString BAD_HFS_CHARS = ":";
static const QString BAD_FILENAME_CHARS = BAD_WIN_CHARS + "\\/";
QString RemoveInvalidFilenameChars(QString string, QChar replaceWith)
{
for (int i = 0; i < string.length(); i++) {
if (badFilenameChars.contains(string[i])) {
for (int i = 0; i < string.length(); i++)
if (string.at(i) < ' ' || BAD_FILENAME_CHARS.contains(string.at(i)))
string[i] = replaceWith;
return string;
}
QString RemoveInvalidPathChars(QString path, QChar replaceWith)
{
QString invalidChars;
#ifdef Q_OS_WIN
invalidChars = BAD_WIN_CHARS;
#endif
// the null character is ignored in this check as it was not a problem until now
switch (statFS(path).fsType) {
case FilesystemType::FAT: // similar to NTFS
/* fallthrough */
case FilesystemType::NTFS:
/* fallthrough */
case FilesystemType::REFS: // similar to NTFS(should be available only on windows)
invalidChars += BAD_NTFS_CHARS;
break;
// case FilesystemType::EXT:
// case FilesystemType::EXT_2_OLD:
// case FilesystemType::EXT_2_3_4:
// case FilesystemType::XFS:
// case FilesystemType::BTRFS:
// case FilesystemType::NFS:
// case FilesystemType::ZFS:
case FilesystemType::APFS:
/* fallthrough */
case FilesystemType::HFS:
/* fallthrough */
case FilesystemType::HFSPLUS:
/* fallthrough */
case FilesystemType::HFSX:
invalidChars += BAD_HFS_CHARS;
break;
// case FilesystemType::FUSEBLK:
// case FilesystemType::F2FS:
// case FilesystemType::UNKNOWN:
default:
break;
}
if (invalidChars.size() != 0) {
for (int i = 0; i < path.length(); i++) {
if (path.at(i) < ' ' || invalidChars.contains(path.at(i))) {
path[i] = replaceWith;
}
}
}
return string;
return path;
}
QString DirNameFromString(QString string, QString inDir)
@ -848,6 +893,10 @@ bool createShortcut(QString destination, QString target, QStringList args, QStri
if (destination.isEmpty()) {
destination = PathCombine(getDesktopDir(), RemoveInvalidFilenameChars(name));
}
if (!ensureFilePathExists(destination)) {
qWarning() << "Destination path can't be created!";
return false;
}
#if defined(Q_OS_MACOS)
// Create the Application
QDir applicationDirectory =
@ -873,7 +922,7 @@ bool createShortcut(QString destination, QString target, QStringList args, QStri
QDir content = application.path() + "/Contents/";
QDir resources = content.path() + "/Resources/";
QDir binaryDir = content.path() + "/MacOS/";
QFile info = content.path() + "/Info.plist";
QFile info(content.path() + "/Info.plist");
if (!(content.mkpath(".") && resources.mkpath(".") && binaryDir.mkpath("."))) {
qWarning() << "Couldn't create directories within application";
@ -894,8 +943,7 @@ bool createShortcut(QString destination, QString target, QStringList args, QStri
if (!args.empty())
argstring = " \"" + args.join("\" \"") + "\"";
stream << "#!/bin/bash"
<< "\n";
stream << "#!/bin/bash" << "\n";
stream << "\"" << target << "\" " << argstring << "\n";
stream.flush();
@ -939,12 +987,9 @@ bool createShortcut(QString destination, QString target, QStringList args, QStri
if (!args.empty())
argstring = " '" + args.join("' '") + "'";
stream << "[Desktop Entry]"
<< "\n";
stream << "Type=Application"
<< "\n";
stream << "Categories=Game;ActionGame;AdventureGame;Simulation"
<< "\n";
stream << "[Desktop Entry]" << "\n";
stream << "Type=Application" << "\n";
stream << "Categories=Game;ActionGame;AdventureGame;Simulation" << "\n";
stream << "Exec=\"" << target.toLocal8Bit() << "\"" << argstring.toLocal8Bit() << "\n";
stream << "Name=" << name.toLocal8Bit() << "\n";
if (!icon.isEmpty()) {
@ -1222,7 +1267,7 @@ bool clone::operator()(const QString& offset, bool dryRun)
std::error_code err;
// Function that'll do the actual cloneing
auto cloneFile = [&](QString src_path, QString relative_dst_path) {
auto cloneFile = [this, dryRun, dst, &err](QString src_path, QString relative_dst_path) {
if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist))
return;
@ -1581,4 +1626,70 @@ uintmax_t hardLinkCount(const QString& path)
return count;
}
#ifdef Q_OS_WIN
// returns 8.3 file format from long path
QString shortPathName(const QString& file)
{
auto input = file.toStdWString();
std::wstring output;
long length = GetShortPathNameW(input.c_str(), NULL, 0);
if (length == 0)
return {};
// NOTE: this resizing might seem weird...
// when GetShortPathNameW fails, it returns length including null character
// when it succeeds, it returns length excluding null character
// See: https://msdn.microsoft.com/en-us/library/windows/desktop/aa364989(v=vs.85).aspx
output.resize(length);
if (GetShortPathNameW(input.c_str(), (LPWSTR)output.c_str(), length) == 0)
return {};
output.resize(length - 1);
QString ret = QString::fromStdWString(output);
return ret;
}
// if the string survives roundtrip through local 8bit encoding...
bool fitsInLocal8bit(const QString& string)
{
return string == QString::fromLocal8Bit(string.toLocal8Bit());
}
QString getPathNameInLocal8bit(const QString& file)
{
if (!fitsInLocal8bit(file)) {
auto path = shortPathName(file);
if (!path.isEmpty()) {
return path;
}
// in case shortPathName fails just return the path as is
}
return file;
}
#endif
QString getUniqueResourceName(const QString& filePath)
{
auto newFileName = filePath;
if (!newFileName.endsWith(".disabled")) {
return newFileName; // prioritize enabled mods
}
newFileName.chop(9);
if (!QFile::exists(newFileName)) {
return filePath;
}
QFileInfo fileInfo(filePath);
auto baseName = fileInfo.completeBaseName();
auto path = fileInfo.absolutePath();
int counter = 1;
do {
if (counter == 1) {
newFileName = FS::PathCombine(path, baseName + ".duplicate");
} else {
newFileName = FS::PathCombine(path, baseName + ".duplicate" + QString::number(counter));
}
counter++;
} while (QFile::exists(newFileName));
return newFileName;
}
} // namespace FS

View File

@ -72,7 +72,7 @@ void appendSafe(const QString& filename, const QByteArray& data);
void append(const QString& filename, const QByteArray& data);
/**
* read data from a file safely\
* read data from a file safely
*/
QByteArray read(const QString& filename);
@ -91,7 +91,13 @@ bool ensureFilePathExists(QString filenamepath);
* Creates all the folders in a path for the specified path
* last segment of the path is treated as a folder name and is created!
*/
bool ensureFolderPathExists(QString filenamepath);
bool ensureFolderPathExists(const QFileInfo folderPath);
/**
* Creates all the folders in a path for the specified path
* last segment of the path is treated as a folder name and is created!
*/
bool ensureFolderPathExists(const QString folderPathName);
/**
* @brief Copies a directory and it's contents from src to dest
@ -109,7 +115,7 @@ class copy : public QObject {
m_followSymlinks = follow;
return *this;
}
copy& matcher(const IPathMatcher* filter)
copy& matcher(IPathMatcher::Ptr filter)
{
m_matcher = filter;
return *this;
@ -141,7 +147,7 @@ class copy : public QObject {
private:
bool m_followSymlinks = true;
const IPathMatcher* m_matcher = nullptr;
IPathMatcher::Ptr m_matcher = nullptr;
bool m_whitelist = false;
bool m_overwrite = false;
QDir m_src;
@ -203,7 +209,7 @@ class create_link : public QObject {
m_useHardLinks = useHard;
return *this;
}
create_link& matcher(const IPathMatcher* filter)
create_link& matcher(IPathMatcher::Ptr filter)
{
m_matcher = filter;
return *this;
@ -234,6 +240,7 @@ class create_link : public QObject {
bool operator()(bool dryRun = false) { return operator()(QString(), dryRun); }
int totalLinked() { return m_linked; }
int totalToLink() { return static_cast<int>(m_links_to_make.size()); }
void runPrivileged() { runPrivileged(QString()); }
void runPrivileged(const QString& offset);
@ -253,7 +260,7 @@ class create_link : public QObject {
private:
bool m_useHardLinks = false;
const IPathMatcher* m_matcher = nullptr;
IPathMatcher::Ptr m_matcher = nullptr;
bool m_whitelist = false;
bool m_recursive = true;
@ -336,6 +343,8 @@ QString NormalizePath(QString path);
QString RemoveInvalidFilenameChars(QString string, QChar replaceWith = '-');
QString RemoveInvalidPathChars(QString string, QChar replaceWith = '-');
QString DirNameFromString(QString string, QString inDir = ".");
/// Checks if the a given Path contains "!"
@ -370,6 +379,7 @@ enum class FilesystemType {
HFSX,
FUSEBLK,
F2FS,
BCACHEFS,
UNKNOWN
};
@ -398,6 +408,7 @@ static const QMap<FilesystemType, QStringList> s_filesystem_type_names = { { Fil
{ FilesystemType::HFSX, { "HFSX" } },
{ FilesystemType::FUSEBLK, { "FUSEBLK" } },
{ FilesystemType::F2FS, { "F2FS" } },
{ FilesystemType::BCACHEFS, { "BCACHEFS" } },
{ FilesystemType::UNKNOWN, { "UNKNOWN" } } };
/**
@ -450,7 +461,7 @@ QString nearestExistentAncestor(const QString& path);
FilesystemInfo statFS(const QString& path);
static const QList<FilesystemType> s_clone_filesystems = { FilesystemType::BTRFS, FilesystemType::APFS, FilesystemType::ZFS,
FilesystemType::XFS, FilesystemType::REFS };
FilesystemType::XFS, FilesystemType::REFS, FilesystemType::BCACHEFS };
/**
* @brief if the Filesystem is reflink/clone capable
@ -477,7 +488,7 @@ class clone : public QObject {
m_src.setPath(src);
m_dst.setPath(dst);
}
clone& matcher(const IPathMatcher* filter)
clone& matcher(IPathMatcher::Ptr filter)
{
m_matcher = filter;
return *this;
@ -503,7 +514,7 @@ class clone : public QObject {
bool operator()(const QString& offset, bool dryRun = false);
private:
const IPathMatcher* m_matcher = nullptr;
IPathMatcher::Ptr m_matcher = nullptr;
bool m_whitelist = false;
QDir m_src;
QDir m_dst;
@ -545,4 +556,10 @@ bool canLink(const QString& src, const QString& dst);
uintmax_t hardLinkCount(const QString& path);
#ifdef Q_OS_WIN
QString getPathNameInLocal8bit(const QString& file);
#endif
QString getUniqueResourceName(const QString& filePath);
} // namespace FS

View File

@ -1,16 +1,12 @@
#include "Filter.h"
Filter::~Filter() {}
ContainsFilter::ContainsFilter(const QString& pattern) : pattern(pattern) {}
ContainsFilter::~ContainsFilter() {}
bool ContainsFilter::accepts(const QString& value)
{
return value.contains(pattern);
}
ExactFilter::ExactFilter(const QString& pattern) : pattern(pattern) {}
ExactFilter::~ExactFilter() {}
bool ExactFilter::accepts(const QString& value)
{
return value == pattern;
@ -27,10 +23,15 @@ RegexpFilter::RegexpFilter(const QString& regexp, bool invert) : invert(invert)
pattern.setPattern(regexp);
pattern.optimize();
}
RegexpFilter::~RegexpFilter() {}
bool RegexpFilter::accepts(const QString& value)
{
auto match = pattern.match(value);
bool matched = match.hasMatch();
return invert ? (!matched) : (matched);
}
ExactListFilter::ExactListFilter(const QStringList& pattern) : m_pattern(pattern) {}
bool ExactListFilter::accepts(const QString& value)
{
return m_pattern.isEmpty() || m_pattern.contains(value);
}

View File

@ -5,14 +5,14 @@
class Filter {
public:
virtual ~Filter();
virtual ~Filter() = default;
virtual bool accepts(const QString& value) = 0;
};
class ContainsFilter : public Filter {
public:
ContainsFilter(const QString& pattern);
virtual ~ContainsFilter();
virtual ~ContainsFilter() = default;
bool accepts(const QString& value) override;
private:
@ -22,7 +22,7 @@ class ContainsFilter : public Filter {
class ExactFilter : public Filter {
public:
ExactFilter(const QString& pattern);
virtual ~ExactFilter();
virtual ~ExactFilter() = default;
bool accepts(const QString& value) override;
private:
@ -32,7 +32,7 @@ class ExactFilter : public Filter {
class ExactIfPresentFilter : public Filter {
public:
ExactIfPresentFilter(const QString& pattern);
~ExactIfPresentFilter() override = default;
virtual ~ExactIfPresentFilter() override = default;
bool accepts(const QString& value) override;
private:
@ -42,10 +42,20 @@ class ExactIfPresentFilter : public Filter {
class RegexpFilter : public Filter {
public:
RegexpFilter(const QString& regexp, bool invert);
virtual ~RegexpFilter();
virtual ~RegexpFilter() = default;
bool accepts(const QString& value) override;
private:
QRegularExpression pattern;
bool invert = false;
};
class ExactListFilter : public Filter {
public:
ExactListFilter(const QStringList& pattern = {});
virtual ~ExactListFilter() = default;
bool accepts(const QString& value) override;
private:
QStringList m_pattern;
};

View File

@ -36,6 +36,8 @@
#include "GZip.h"
#include <zlib.h>
#include <QByteArray>
#include <QDebug>
#include <QFile>
bool GZip::unzip(const QByteArray& compressedBytes, QByteArray& uncompressedBytes)
{
@ -136,3 +138,81 @@ bool GZip::zip(const QByteArray& uncompressedBytes, QByteArray& compressedBytes)
}
return true;
}
int inf(QFile* source, std::function<bool(const QByteArray&)> handleBlock)
{
constexpr auto CHUNK = 16384;
int ret;
unsigned have;
z_stream strm;
memset(&strm, 0, sizeof(strm));
char in[CHUNK];
unsigned char out[CHUNK];
ret = inflateInit2(&strm, (16 + MAX_WBITS));
if (ret != Z_OK)
return ret;
/* decompress until deflate stream ends or end of file */
do {
strm.avail_in = source->read(in, CHUNK);
if (source->error()) {
(void)inflateEnd(&strm);
return Z_ERRNO;
}
if (strm.avail_in == 0)
break;
strm.next_in = reinterpret_cast<Bytef*>(in);
/* run inflate() on input until output buffer not full */
do {
strm.avail_out = CHUNK;
strm.next_out = out;
ret = inflate(&strm, Z_NO_FLUSH);
assert(ret != Z_STREAM_ERROR); /* state not clobbered */
switch (ret) {
case Z_NEED_DICT:
ret = Z_DATA_ERROR; /* and fall through */
case Z_DATA_ERROR:
case Z_MEM_ERROR:
(void)inflateEnd(&strm);
return ret;
}
have = CHUNK - strm.avail_out;
if (!handleBlock(QByteArray(reinterpret_cast<const char*>(out), have))) {
(void)inflateEnd(&strm);
return Z_OK;
}
} while (strm.avail_out == 0);
/* done when inflate() says it's done */
} while (ret != Z_STREAM_END);
/* clean up and return */
(void)inflateEnd(&strm);
return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR;
}
QString zerr(int ret)
{
switch (ret) {
case Z_ERRNO:
return QObject::tr("error handling file");
case Z_STREAM_ERROR:
return QObject::tr("invalid compression level");
case Z_DATA_ERROR:
return QObject::tr("invalid or incomplete deflate data");
case Z_MEM_ERROR:
return QObject::tr("out of memory");
case Z_VERSION_ERROR:
return QObject::tr("zlib version mismatch!");
}
return {};
}
QString GZip::readGzFileByBlocks(QFile* source, std::function<bool(const QByteArray&)> handleBlock)
{
auto ret = inf(source, handleBlock);
return zerr(ret);
}

View File

@ -1,8 +1,11 @@
#pragma once
#include <QByteArray>
#include <QFile>
class GZip {
public:
static bool unzip(const QByteArray& compressedBytes, QByteArray& uncompressedBytes);
static bool zip(const QByteArray& uncompressedBytes, QByteArray& compressedBytes);
};
namespace GZip {
bool unzip(const QByteArray& compressedBytes, QByteArray& uncompressedBytes);
bool zip(const QByteArray& uncompressedBytes, QByteArray& compressedBytes);
QString readGzFileByBlocks(QFile* source, std::function<bool(const QByteArray&)> handleBlock);
} // namespace GZip

View File

@ -1,10 +1,12 @@
#include "InstanceCopyTask.h"
#include <QDebug>
#include <QtConcurrentRun>
#include <memory>
#include "FileSystem.h"
#include "NullInstance.h"
#include "pathmatcher/RegexpMatcher.h"
#include "settings/INISettingsObject.h"
#include "tasks/Task.h"
InstanceCopyTask::InstanceCopyTask(InstancePtr origInstance, const InstanceCopyPrefs& prefs)
{
@ -38,38 +40,50 @@ void InstanceCopyTask::executeTask()
{
setStatus(tr("Copying instance %1").arg(m_origInstance->name()));
auto copySaves = [&]() {
QFileInfo mcDir(FS::PathCombine(m_stagingPath, "minecraft"));
QFileInfo dotMCDir(FS::PathCombine(m_stagingPath, ".minecraft"));
QString staging_mc_dir;
if (mcDir.exists() && !dotMCDir.exists())
staging_mc_dir = mcDir.filePath();
else
staging_mc_dir = dotMCDir.filePath();
FS::copy savesCopy(FS::PathCombine(m_origInstance->gameRoot(), "saves"), FS::PathCombine(staging_mc_dir, "saves"));
savesCopy.followSymlinks(true);
return savesCopy();
};
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [this, copySaves] {
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [this] {
if (m_useClone) {
FS::clone folderClone(m_origInstance->instanceRoot(), m_stagingPath);
folderClone.matcher(m_matcher.get());
folderClone.matcher(m_matcher);
folderClone(true);
setProgress(0, folderClone.totalCloned());
connect(&folderClone, &FS::clone::fileCloned,
[this](QString src, QString dst) { setProgress(m_progress + 1, m_progressTotal); });
return folderClone();
} else if (m_useLinks || m_useHardLinks) {
}
if (m_useLinks || m_useHardLinks) {
std::unique_ptr<FS::copy> savesCopy;
if (m_copySaves) {
QFileInfo mcDir(FS::PathCombine(m_stagingPath, "minecraft"));
QFileInfo dotMCDir(FS::PathCombine(m_stagingPath, ".minecraft"));
QString staging_mc_dir;
if (dotMCDir.exists() && !mcDir.exists())
staging_mc_dir = dotMCDir.filePath();
else
staging_mc_dir = mcDir.filePath();
savesCopy = std::make_unique<FS::copy>(FS::PathCombine(m_origInstance->gameRoot(), "saves"),
FS::PathCombine(staging_mc_dir, "saves"));
savesCopy->followSymlinks(true);
(*savesCopy)(true);
setProgress(0, savesCopy->totalCopied());
connect(savesCopy.get(), &FS::copy::fileCopied, [this](QString src) { setProgress(m_progress + 1, m_progressTotal); });
}
FS::create_link folderLink(m_origInstance->instanceRoot(), m_stagingPath);
int depth = m_linkRecursively ? -1 : 0; // we need to at least link the top level instead of the instance folder
folderLink.linkRecursively(true).setMaxDepth(depth).useHardLinks(m_useHardLinks).matcher(m_matcher.get());
folderLink.linkRecursively(true).setMaxDepth(depth).useHardLinks(m_useHardLinks).matcher(m_matcher);
folderLink(true);
setProgress(0, m_progressTotal + folderLink.totalToLink());
connect(&folderLink, &FS::create_link::fileLinked,
[this](QString src, QString dst) { setProgress(m_progress + 1, m_progressTotal); });
bool there_were_errors = false;
if (!folderLink()) {
#if defined Q_OS_WIN32
if (!m_useHardLinks) {
setProgress(0, m_progressTotal);
qDebug() << "EXPECTED: Link failure, Windows requires permissions for symlinks";
qDebug() << "attempting to run with privelage";
@ -77,7 +91,7 @@ void InstanceCopyTask::executeTask()
QEventLoop loop;
bool got_priv_results = false;
connect(&folderLink, &FS::create_link::finishedPrivileged, this, [&](bool gotResults) {
connect(&folderLink, &FS::create_link::finishedPrivileged, this, [&got_priv_results, &loop](bool gotResults) {
if (!gotResults) {
qDebug() << "Privileged run exited without results!";
}
@ -94,13 +108,11 @@ void InstanceCopyTask::executeTask()
}
}
if (m_copySaves) {
there_were_errors |= !copySaves();
if (savesCopy) {
there_were_errors |= !(*savesCopy)();
}
return got_priv_results && !there_were_errors;
} else {
qDebug() << "Link Failed!" << folderLink.getOSError().value() << folderLink.getOSError().message().c_str();
}
#else
qDebug() << "Link Failed!" << folderLink.getOSError().value() << folderLink.getOSError().message().c_str();
@ -108,17 +120,19 @@ void InstanceCopyTask::executeTask()
return false;
}
if (m_copySaves) {
there_were_errors |= !copySaves();
if (savesCopy) {
there_were_errors |= !(*savesCopy)();
}
return !there_were_errors;
} else {
FS::copy folderCopy(m_origInstance->instanceRoot(), m_stagingPath);
folderCopy.followSymlinks(false).matcher(m_matcher.get());
return folderCopy();
}
FS::copy folderCopy(m_origInstance->instanceRoot(), m_stagingPath);
folderCopy.followSymlinks(false).matcher(m_matcher);
folderCopy(true);
setProgress(0, folderCopy.totalCopied());
connect(&folderCopy, &FS::copy::fileCopied, [this](QString src) { setProgress(m_progress + 1, m_progressTotal); });
return folderCopy();
});
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &InstanceCopyTask::copyFinished);
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::canceled, this, &InstanceCopyTask::copyAborted);
@ -142,9 +156,8 @@ void InstanceCopyTask::copyFinished()
if (!m_keepPlaytime) {
inst->resetTimePlayed();
}
if (m_useLinks)
inst->addLinkedInstanceId(m_origInstance->id());
if (m_useLinks) {
inst->addLinkedInstanceId(m_origInstance->id());
auto allowed_symlinks_file = QFileInfo(FS::PathCombine(inst->gameRoot(), "allowed_symlinks.txt"));
QByteArray allowed_symlinks;
@ -160,7 +173,11 @@ void InstanceCopyTask::copyFinished()
allowed_symlinks_file
.filePath()); // we dont want to modify the original. also make sure the resulting file is not itself a link.
FS::write(allowed_symlinks_file.filePath(), allowed_symlinks);
try {
FS::write(allowed_symlinks_file.filePath(), allowed_symlinks);
} catch (const FS::FileSystemException& e) {
qCritical() << "Failed to write symlink :" << e.cause();
}
}
emitSucceeded();
@ -171,3 +188,14 @@ void InstanceCopyTask::copyAborted()
emitFailed(tr("Instance folder copy has been aborted."));
return;
}
bool InstanceCopyTask::abort()
{
if (m_copyFutureWatcher.isRunning()) {
m_copyFutureWatcher.cancel();
// NOTE: Here we don't do `emitAborted()` because it will be done when `m_copyFutureWatcher` actually cancels, which may not occur
// immediately.
return true;
}
return false;
}

View File

@ -19,6 +19,7 @@ class InstanceCopyTask : public InstanceTask {
protected:
//! Entry point for tasks.
virtual void executeTask() override;
bool abort() override;
void copyFinished();
void copyAborted();
@ -27,7 +28,7 @@ class InstanceCopyTask : public InstanceTask {
InstancePtr m_origInstance;
QFuture<bool> m_copyFuture;
QFutureWatcher<bool> m_copyFutureWatcher;
std::unique_ptr<IPathMatcher> m_matcher;
IPathMatcher::Ptr m_matcher;
bool m_keepPlaytime;
bool m_useLinks = false;
bool m_useHardLinks = false;

View File

@ -2,8 +2,7 @@
#include <QDebug>
#include <QFile>
InstanceCreationTask::InstanceCreationTask() = default;
#include "FileSystem.h"
void InstanceCreationTask::executeTask()
{
@ -39,22 +38,29 @@ void InstanceCreationTask::executeTask()
// files scheduled to, and we'd better not let the user abort in the middle of it, since it'd
// put the instance in an invalid state.
if (shouldOverride()) {
bool deleteFailed = false;
setAbortable(false);
setStatus(tr("Removing old conflicting files..."));
qDebug() << "Removing old files";
for (auto path : m_files_to_remove) {
for (const QString& path : m_files_to_remove) {
if (!QFile::exists(path))
continue;
qDebug() << "Removing" << path;
if (!QFile::remove(path)) {
qCritical() << "Couldn't remove the old conflicting files.";
emitFailed(tr("Failed to remove old conflicting files."));
return;
qCritical() << "Could not remove" << path;
deleteFailed = true;
}
}
}
emitSucceeded();
return;
if (deleteFailed) {
emitFailed(tr("Failed to remove old conflicting files."));
return;
}
}
if (!m_abort)
emitSucceeded();
}

View File

@ -6,7 +6,7 @@
class InstanceCreationTask : public InstanceTask {
Q_OBJECT
public:
InstanceCreationTask();
InstanceCreationTask() = default;
virtual ~InstanceCreationTask() = default;
protected:

View File

@ -0,0 +1,126 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2013-2021 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "InstanceDirUpdate.h"
#include <QCheckBox>
#include "Application.h"
#include "FileSystem.h"
#include "InstanceList.h"
#include "ui/dialogs/CustomMessageBox.h"
QString askToUpdateInstanceDirName(InstancePtr instance, const QString& oldName, const QString& newName, QWidget* parent)
{
if (oldName == newName)
return QString();
QString renamingMode = APPLICATION->settings()->get("InstRenamingMode").toString();
if (renamingMode == "MetadataOnly")
return QString();
auto oldRoot = instance->instanceRoot();
auto newDirName = FS::DirNameFromString(newName, QFileInfo(oldRoot).dir().absolutePath());
auto newRoot = FS::PathCombine(QFileInfo(oldRoot).dir().absolutePath(), newDirName);
if (oldRoot == newRoot)
return QString();
if (oldRoot == FS::PathCombine(QFileInfo(oldRoot).dir().absolutePath(), newName))
return QString();
// Check for conflict
if (QDir(newRoot).exists()) {
QMessageBox::warning(parent, QObject::tr("Cannot rename instance"),
QObject::tr("New instance root (%1) already exists. <br />Only the metadata will be renamed.").arg(newRoot));
return QString();
}
// Ask if we should rename
if (renamingMode == "AskEverytime") {
auto checkBox = new QCheckBox(QObject::tr("&Remember my choice"), parent);
auto dialog =
CustomMessageBox::selectable(parent, QObject::tr("Rename instance folder"),
QObject::tr("Would you also like to rename the instance folder?\n\n"
"Old name: %1\n"
"New name: %2")
.arg(oldName, newName),
QMessageBox::Question, QMessageBox::No | QMessageBox::Yes, QMessageBox::NoButton, checkBox);
auto res = dialog->exec();
if (checkBox->isChecked()) {
if (res == QMessageBox::Yes)
APPLICATION->settings()->set("InstRenamingMode", "PhysicalDir");
else
APPLICATION->settings()->set("InstRenamingMode", "MetadataOnly");
}
if (res == QMessageBox::No)
return QString();
}
// Check for linked instances
if (!checkLinkedInstances(instance->id(), parent, QObject::tr("Renaming")))
return QString();
// Now we can confirm that a renaming is happening
if (!instance->syncInstanceDirName(newRoot)) {
QMessageBox::warning(parent, QObject::tr("Cannot rename instance"),
QObject::tr("An error occurred when performing the following renaming operation: <br/>"
" - Old instance root: %1<br/>"
" - New instance root: %2<br/>"
"Only the metadata is renamed.")
.arg(oldRoot, newRoot));
return QString();
}
return newRoot;
}
bool checkLinkedInstances(const QString& id, QWidget* parent, const QString& verb)
{
auto linkedInstances = APPLICATION->instances()->getLinkedInstancesById(id);
if (!linkedInstances.empty()) {
auto response = CustomMessageBox::selectable(parent, QObject::tr("There are linked instances"),
QObject::tr("The following instance(s) might reference files in this instance:\n\n"
"%1\n\n"
"%2 it could break the other instance(s), \n\n"
"Do you wish to proceed?",
nullptr, linkedInstances.count())
.arg(linkedInstances.join("\n"))
.arg(verb),
QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No)
->exec();
if (response != QMessageBox::Yes)
return false;
}
return true;
}

View File

@ -0,0 +1,43 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2013-2021 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include "BaseInstance.h"
/// Update instanceRoot to make it sync with name/id; return newRoot if a directory rename happened
QString askToUpdateInstanceDirName(InstancePtr instance, const QString& oldName, const QString& newName, QWidget* parent);
/// Check if there are linked instances, and display a warning; return true if the operation should proceed
bool checkLinkedInstances(const QString& id, QWidget* parent, const QString& verb);

View File

@ -56,6 +56,7 @@
#include <QtConcurrentRun>
#include <algorithm>
#include <memory>
#include <quazip/quazipdir.h>
@ -68,16 +69,11 @@ bool InstanceImportTask::abort()
if (!canAbort())
return false;
if (m_filesNetJob)
m_filesNetJob->abort();
if (m_extractFuture.isRunning()) {
// NOTE: The tasks created by QtConcurrent::run() can't actually get cancelled,
// but we can use this call to check the state when the extraction finishes.
m_extractFuture.cancel();
m_extractFuture.waitForFinished();
}
return Task::abort();
bool wasAborted = false;
if (m_task)
wasAborted = m_task->abort();
Task::abort();
return wasAborted;
}
void InstanceImportTask::executeTask()
@ -89,7 +85,6 @@ void InstanceImportTask::executeTask()
processZipPack();
} else {
setStatus(tr("Downloading modpack:\n%1").arg(m_sourceUrl.toString()));
m_downloadRequired = true;
downloadFromUrl();
}
@ -97,115 +92,133 @@ void InstanceImportTask::executeTask()
void InstanceImportTask::downloadFromUrl()
{
const QString path = m_sourceUrl.host() + '/' + m_sourceUrl.path();
const QString path(m_sourceUrl.host() + '/' + m_sourceUrl.path());
auto entry = APPLICATION->metacache()->resolveEntry("general", path);
entry->setStale(true);
m_filesNetJob.reset(new NetJob(tr("Modpack download"), APPLICATION->network()));
m_filesNetJob->addNetAction(Net::ApiDownload::makeCached(m_sourceUrl, entry));
m_archivePath = entry->getFullPath();
connect(m_filesNetJob.get(), &NetJob::succeeded, this, &InstanceImportTask::downloadSucceeded);
connect(m_filesNetJob.get(), &NetJob::progress, this, &InstanceImportTask::downloadProgressChanged);
connect(m_filesNetJob.get(), &NetJob::stepProgress, this, &InstanceImportTask::propagateStepProgress);
connect(m_filesNetJob.get(), &NetJob::failed, this, &InstanceImportTask::downloadFailed);
connect(m_filesNetJob.get(), &NetJob::aborted, this, &InstanceImportTask::downloadAborted);
m_filesNetJob->start();
auto filesNetJob = makeShared<NetJob>(tr("Modpack download"), APPLICATION->network());
filesNetJob->addNetAction(Net::ApiDownload::makeCached(m_sourceUrl, entry));
connect(filesNetJob.get(), &NetJob::succeeded, this, &InstanceImportTask::processZipPack);
connect(filesNetJob.get(), &NetJob::progress, this, &InstanceImportTask::setProgress);
connect(filesNetJob.get(), &NetJob::stepProgress, this, &InstanceImportTask::propagateStepProgress);
connect(filesNetJob.get(), &NetJob::failed, this, &InstanceImportTask::emitFailed);
connect(filesNetJob.get(), &NetJob::aborted, this, &InstanceImportTask::emitAborted);
m_task.reset(filesNetJob);
filesNetJob->start();
}
void InstanceImportTask::downloadSucceeded()
QString InstanceImportTask::getRootFromZip(QuaZip* zip, const QString& root)
{
processZipPack();
m_filesNetJob.reset();
}
if (!isRunning()) {
return {};
}
QuaZipDir rootDir(zip, root);
for (auto&& fileName : rootDir.entryList(QDir::Files)) {
setDetails(fileName);
if (fileName == "instance.cfg") {
qDebug() << "MultiMC:" << true;
m_modpackType = ModpackType::MultiMC;
return root;
}
if (fileName == "manifest.json") {
qDebug() << "Flame:" << true;
m_modpackType = ModpackType::Flame;
return root;
}
void InstanceImportTask::downloadFailed(QString reason)
{
emitFailed(reason);
m_filesNetJob.reset();
}
QCoreApplication::processEvents();
}
void InstanceImportTask::downloadProgressChanged(qint64 current, qint64 total)
{
setProgress(current, total);
}
// Recurse the search to non-ignored subfolders
for (auto&& fileName : rootDir.entryList(QDir::Dirs)) {
if ("overrides/" == fileName)
continue;
void InstanceImportTask::downloadAborted()
{
emitAborted();
m_filesNetJob.reset();
QString result = getRootFromZip(zip, root + fileName);
if (!result.isEmpty())
return result;
}
return {};
}
void InstanceImportTask::processZipPack()
{
setStatus(tr("Extracting modpack"));
setStatus(tr("Attempting to determine instance type"));
QDir extractDir(m_stagingPath);
qDebug() << "Attempting to create instance from" << m_archivePath;
// open the zip and find relevant files in it
m_packZip.reset(new QuaZip(m_archivePath));
if (!m_packZip->open(QuaZip::mdUnzip)) {
auto packZip = std::make_shared<QuaZip>(m_archivePath);
if (!packZip->open(QuaZip::mdUnzip)) {
emitFailed(tr("Unable to open supplied modpack zip file."));
return;
}
QuaZipDir packZipDir(m_packZip.get());
QuaZipDir packZipDir(packZip.get());
qDebug() << "Attempting to determine instance type";
// https://docs.modrinth.com/docs/modpacks/format_definition/#storage
bool modrinthFound = packZipDir.exists("/modrinth.index.json");
bool technicFound = packZipDir.exists("/bin/modpack.jar") || packZipDir.exists("/bin/version.json");
QString root;
// NOTE: Prioritize modpack platforms that aren't searched for recursively.
// Especially Flame has a very common filename for its manifest, which may appear inside overrides for example
if (modrinthFound) {
// https://docs.modrinth.com/docs/modpacks/format_definition/#storage
if (packZipDir.exists("/modrinth.index.json")) {
// process as Modrinth pack
qDebug() << "Modrinth:" << modrinthFound;
qDebug() << "Modrinth:" << true;
m_modpackType = ModpackType::Modrinth;
} else if (technicFound) {
} else if (packZipDir.exists("/bin/modpack.jar") || packZipDir.exists("/bin/version.json")) {
// process as Technic pack
qDebug() << "Technic:" << technicFound;
extractDir.mkpath(".minecraft");
extractDir.cd(".minecraft");
qDebug() << "Technic:" << true;
extractDir.mkpath("minecraft");
extractDir.cd("minecraft");
m_modpackType = ModpackType::Technic;
} else {
QStringList paths_to_ignore{ "overrides/" };
if (QString mmcRoot = MMCZip::findFolderOfFileInZip(m_packZip.get(), "instance.cfg", paths_to_ignore); !mmcRoot.isNull()) {
// process as MultiMC instance/pack
qDebug() << "MultiMC:" << mmcRoot;
root = mmcRoot;
m_modpackType = ModpackType::MultiMC;
} else if (QString flameRoot = MMCZip::findFolderOfFileInZip(m_packZip.get(), "manifest.json", paths_to_ignore);
!flameRoot.isNull()) {
// process as Flame pack
qDebug() << "Flame:" << flameRoot;
root = flameRoot;
m_modpackType = ModpackType::Flame;
}
root = getRootFromZip(packZip.get());
setDetails("");
}
if (m_modpackType == ModpackType::Unknown) {
emitFailed(tr("Archive does not contain a recognized modpack type."));
return;
}
setStatus(tr("Extracting modpack"));
// make sure we extract just the pack
m_extractFuture =
QtConcurrent::run(QThreadPool::globalInstance(), MMCZip::extractSubDir, m_packZip.get(), root, extractDir.absolutePath());
connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::finished, this, &InstanceImportTask::extractFinished);
m_extractFutureWatcher.setFuture(m_extractFuture);
auto zipTask = makeShared<MMCZip::ExtractZipTask>(packZip, extractDir, root);
auto progressStep = std::make_shared<TaskStepProgress>();
connect(zipTask.get(), &Task::finished, this, [this, progressStep] {
progressStep->state = TaskStepState::Succeeded;
stepProgress(*progressStep);
});
connect(zipTask.get(), &Task::succeeded, this, &InstanceImportTask::extractFinished, Qt::QueuedConnection);
connect(zipTask.get(), &Task::aborted, this, &InstanceImportTask::emitAborted);
connect(zipTask.get(), &Task::failed, this, [this, progressStep](QString reason) {
progressStep->state = TaskStepState::Failed;
stepProgress(*progressStep);
emitFailed(reason);
});
connect(zipTask.get(), &Task::stepProgress, this, &InstanceImportTask::propagateStepProgress);
connect(zipTask.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) {
progressStep->update(current, total);
stepProgress(*progressStep);
});
connect(zipTask.get(), &Task::status, this, [this, progressStep](QString status) {
progressStep->status = status;
stepProgress(*progressStep);
});
m_task.reset(zipTask);
zipTask->start();
}
void InstanceImportTask::extractFinished()
{
m_packZip.reset();
if (m_extractFuture.isCanceled())
return;
if (!m_extractFuture.result().has_value()) {
emitFailed(tr("Failed to extract modpack"));
return;
}
setAbortable(false);
QDir extractDir(m_stagingPath);
qDebug() << "Fixing permissions for extracted pack files...";
@ -279,8 +292,11 @@ void InstanceImportTask::processFlame()
inst_creation_task->setGroup(m_instGroup);
inst_creation_task->setConfirmUpdate(shouldConfirmUpdate());
connect(inst_creation_task.get(), &Task::succeeded, this, [this, inst_creation_task] {
setOverride(inst_creation_task->shouldOverride(), inst_creation_task->originalInstanceID());
auto weak = inst_creation_task.toWeakRef();
connect(inst_creation_task.get(), &Task::succeeded, this, [this, weak] {
if (auto sp = weak.lock()) {
setOverride(sp->shouldOverride(), sp->originalInstanceID());
}
emitSucceeded();
});
connect(inst_creation_task.get(), &Task::failed, this, &InstanceImportTask::emitFailed);
@ -289,11 +305,12 @@ void InstanceImportTask::processFlame()
connect(inst_creation_task.get(), &Task::status, this, &InstanceImportTask::setStatus);
connect(inst_creation_task.get(), &Task::details, this, &InstanceImportTask::setDetails);
connect(this, &Task::aborted, inst_creation_task.get(), &InstanceCreationTask::abort);
connect(inst_creation_task.get(), &Task::aborted, this, &Task::abort);
connect(inst_creation_task.get(), &Task::abortStatusChanged, this, &Task::setAbortable);
inst_creation_task->start();
m_task.reset(inst_creation_task);
setAbortable(true);
m_task->start();
}
void InstanceImportTask::processTechnic()
@ -324,13 +341,15 @@ void InstanceImportTask::processMultiMC()
m_instIcon = instance.iconKey();
auto importIconPath = IconUtils::findBestIconIn(instance.instanceRoot(), m_instIcon);
if (importIconPath.isNull() || !QFile::exists(importIconPath))
importIconPath = IconUtils::findBestIconIn(instance.instanceRoot(), "icon.png");
if (!importIconPath.isNull() && QFile::exists(importIconPath)) {
// import icon
auto iconList = APPLICATION->icons();
if (iconList->iconFileExists(m_instIcon)) {
iconList->deleteIcon(m_instIcon);
}
iconList->installIcons({ importIconPath });
iconList->installIcon(importIconPath, m_instIcon);
}
}
emitSucceeded();
@ -338,7 +357,7 @@ void InstanceImportTask::processMultiMC()
void InstanceImportTask::processModrinth()
{
ModrinthCreationTask* inst_creation_task = nullptr;
shared_qobject_ptr<ModrinthCreationTask> inst_creation_task = nullptr;
if (!m_extra_info.isEmpty()) {
auto pack_id_it = m_extra_info.constFind("pack_id");
Q_ASSERT(pack_id_it != m_extra_info.constEnd());
@ -355,16 +374,16 @@ void InstanceImportTask::processModrinth()
original_instance_id = original_instance_id_it.value();
inst_creation_task =
new ModrinthCreationTask(m_stagingPath, m_globalSettings, m_parent, pack_id, pack_version_id, original_instance_id);
makeShared<ModrinthCreationTask>(m_stagingPath, m_globalSettings, m_parent, pack_id, pack_version_id, original_instance_id);
} else {
QString pack_id;
if (!m_sourceUrl.isEmpty()) {
QRegularExpression regex(R"(data\/([^\/]*)\/versions)");
pack_id = regex.match(m_sourceUrl.toString()).captured(1);
static const QRegularExpression s_regex(R"(data\/([^\/]*)\/versions)");
pack_id = s_regex.match(m_sourceUrl.toString()).captured(1);
}
// FIXME: Find a way to get the ID in directly imported ZIPs
inst_creation_task = new ModrinthCreationTask(m_stagingPath, m_globalSettings, m_parent, pack_id);
inst_creation_task = makeShared<ModrinthCreationTask>(m_stagingPath, m_globalSettings, m_parent, pack_id);
}
inst_creation_task->setName(*this);
@ -372,20 +391,23 @@ void InstanceImportTask::processModrinth()
inst_creation_task->setGroup(m_instGroup);
inst_creation_task->setConfirmUpdate(shouldConfirmUpdate());
connect(inst_creation_task, &Task::succeeded, this, [this, inst_creation_task] {
setOverride(inst_creation_task->shouldOverride(), inst_creation_task->originalInstanceID());
auto weak = inst_creation_task.toWeakRef();
connect(inst_creation_task.get(), &Task::succeeded, this, [this, weak] {
if (auto sp = weak.lock()) {
setOverride(sp->shouldOverride(), sp->originalInstanceID());
}
emitSucceeded();
});
connect(inst_creation_task, &Task::failed, this, &InstanceImportTask::emitFailed);
connect(inst_creation_task, &Task::progress, this, &InstanceImportTask::setProgress);
connect(inst_creation_task, &Task::stepProgress, this, &InstanceImportTask::propagateStepProgress);
connect(inst_creation_task, &Task::status, this, &InstanceImportTask::setStatus);
connect(inst_creation_task, &Task::details, this, &InstanceImportTask::setDetails);
connect(inst_creation_task, &Task::finished, inst_creation_task, &InstanceCreationTask::deleteLater);
connect(inst_creation_task.get(), &Task::failed, this, &InstanceImportTask::emitFailed);
connect(inst_creation_task.get(), &Task::progress, this, &InstanceImportTask::setProgress);
connect(inst_creation_task.get(), &Task::stepProgress, this, &InstanceImportTask::propagateStepProgress);
connect(inst_creation_task.get(), &Task::status, this, &InstanceImportTask::setStatus);
connect(inst_creation_task.get(), &Task::details, this, &InstanceImportTask::setDetails);
connect(this, &Task::aborted, inst_creation_task, &InstanceCreationTask::abort);
connect(inst_creation_task, &Task::aborted, this, &Task::abort);
connect(inst_creation_task, &Task::abortStatusChanged, this, &Task::setAbortable);
connect(inst_creation_task.get(), &Task::aborted, this, &Task::abort);
connect(inst_creation_task.get(), &Task::abortStatusChanged, this, &Task::setAbortable);
inst_creation_task->start();
m_task.reset(inst_creation_task);
setAbortable(true);
m_task->start();
}

View File

@ -39,54 +39,35 @@
#include <QFutureWatcher>
#include <QUrl>
#include "InstanceTask.h"
#include "QObjectPtr.h"
#include "modplatform/flame/PackManifest.h"
#include "net/NetJob.h"
#include "settings/SettingsObject.h"
#include <optional>
class QuaZip;
namespace Flame {
class FileResolvingTask;
}
class InstanceImportTask : public InstanceTask {
Q_OBJECT
public:
explicit InstanceImportTask(const QUrl& sourceUrl, QWidget* parent = nullptr, QMap<QString, QString>&& extra_info = {});
virtual ~InstanceImportTask() = default;
bool abort() override;
const QVector<Flame::File>& getBlockedFiles() const { return m_blockedMods; }
protected:
//! Entry point for tasks.
virtual void executeTask() override;
private:
void processZipPack();
void processMultiMC();
void processTechnic();
void processFlame();
void processModrinth();
QString getRootFromZip(QuaZip* zip, const QString& root = "");
private slots:
void downloadSucceeded();
void downloadFailed(QString reason);
void downloadProgressChanged(qint64 current, qint64 total);
void downloadAborted();
void processZipPack();
void extractFinished();
private: /* data */
NetJob::Ptr m_filesNetJob;
shared_qobject_ptr<Flame::FileResolvingTask> m_modIdResolver;
QUrl m_sourceUrl;
QString m_archivePath;
bool m_downloadRequired = false;
std::unique_ptr<QuaZip> m_packZip;
QFuture<std::optional<QStringList>> m_extractFuture;
QFutureWatcher<std::optional<QStringList>> m_extractFutureWatcher;
QVector<Flame::File> m_blockedMods;
Task::Ptr m_task;
enum class ModpackType {
Unknown,
MultiMC,

View File

@ -38,6 +38,7 @@
#include <QDir>
#include <QDirIterator>
#include <QFile>
#include <QFileInfo>
#include <QFileSystemWatcher>
#include <QJsonArray>
#include <QJsonDocument>
@ -371,13 +372,13 @@ void InstanceList::undoTrashInstance()
auto top = m_trashHistory.pop();
while (QDir(top.polyPath).exists()) {
while (QDir(top.path).exists()) {
top.id += "1";
top.polyPath += "1";
top.path += "1";
}
qDebug() << "Moving" << top.trashPath << "back to" << top.polyPath;
QFile(top.trashPath).rename(top.polyPath);
qDebug() << "Moving" << top.trashPath << "back to" << top.path;
QFile(top.trashPath).rename(top.path);
m_instanceGroupIndex[top.id] = top.groupName;
increaseGroupCount(top.groupName);
@ -427,7 +428,7 @@ static QMap<InstanceId, InstanceLocator> getIdMapping(const QList<InstancePtr>&
QList<InstanceId> InstanceList::discoverInstances()
{
qDebug() << "Discovering instances in" << m_instDir;
qInfo() << "Discovering instances in" << m_instDir;
QList<InstanceId> out;
QDirIterator iter(m_instDir, QDir::Dirs | QDir::NoDot | QDir::NoDotDot | QDir::Readable | QDir::Hidden, QDirIterator::FollowSymlinks);
while (iter.hasNext()) {
@ -446,13 +447,9 @@ QList<InstanceId> InstanceList::discoverInstances()
}
auto id = dirInfo.fileName();
out.append(id);
qDebug() << "Found instance ID" << id;
qInfo() << "Found instance ID" << id;
}
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
instanceSet = QSet<QString>(out.begin(), out.end());
#else
instanceSet = out.toSet();
#endif
m_instancesProbed = true;
return out;
}
@ -467,7 +464,7 @@ InstanceList::InstListError InstanceList::loadList()
if (existingIds.contains(id)) {
auto instPair = existingIds[id];
existingIds.remove(id);
qDebug() << "Should keep and soft-reload" << id;
qInfo() << "Should keep and soft-reload" << id;
} else {
InstancePtr instPtr = loadInstance(id);
if (instPtr) {
@ -486,7 +483,7 @@ InstanceList::InstListError InstanceList::loadList()
int front_bookmark = -1;
int back_bookmark = -1;
int currentItem = -1;
auto removeNow = [&]() {
auto removeNow = [this, &front_bookmark, &back_bookmark, &currentItem]() {
beginRemoveRows(QModelIndex(), front_bookmark, back_bookmark);
m_instances.erase(m_instances.begin() + front_bookmark, m_instances.begin() + back_bookmark + 1);
endRemoveRows();
@ -634,8 +631,8 @@ InstancePtr InstanceList::loadInstance(const InstanceId& id)
QString inst_type = instanceSettings->get("InstanceType").toString();
// NOTE: Some PolyMC versions didn't save the InstanceType properly. We will just bank on the probability that this is probably a OneSix
// instance
// NOTE: Some launcher versions didn't save the InstanceType properly. We will just bank on the probability that this is probably a
// OneSix instance
if (inst_type == "OneSix" || inst_type.isEmpty()) {
inst.reset(new MinecraftInstance(m_globalSettings, instanceSettings, instanceRoot));
} else {
@ -709,6 +706,12 @@ void InstanceList::saveGroupList()
groupsArr.insert(name, groupObj);
}
toplevel.insert("groups", groupsArr);
// empty string represents ungrouped "group"
if (m_collapsedGroups.contains("")) {
QJsonObject ungrouped;
ungrouped.insert("hidden", QJsonValue(true));
toplevel.insert("ungrouped", ungrouped);
}
QJsonDocument doc(toplevel);
try {
FS::write(groupFileName, doc.toJson());
@ -804,6 +807,16 @@ void InstanceList::loadGroupList()
increaseGroupCount(groupName);
}
}
bool ungroupedHidden = false;
if (rootObj.value("ungrouped").isObject()) {
QJsonObject ungrouped = rootObj.value("ungrouped").toObject();
ungroupedHidden = ungrouped.value("hidden").toBool(false);
}
if (ungroupedHidden) {
// empty string represents ungrouped "group"
m_collapsedGroups.insert("");
}
m_groupsLoaded = true;
qDebug() << "Group list loaded.";
}
@ -847,14 +860,16 @@ class InstanceStaging : public Task {
const unsigned maxBackoff = 16;
public:
InstanceStaging(InstanceList* parent, InstanceTask* child, QString stagingPath, InstanceName const& instanceName, QString groupName)
: m_parent(parent)
, backoff(minBackoff, maxBackoff)
, m_stagingPath(std::move(stagingPath))
, m_instance_name(std::move(instanceName))
, m_groupName(std::move(groupName))
InstanceStaging(InstanceList* parent, InstanceTask* child, SettingsObjectPtr settings)
: m_parent(parent), backoff(minBackoff, maxBackoff)
{
m_stagingPath = parent->getStagedInstancePath();
m_child.reset(child);
m_child->setStagingPath(m_stagingPath);
m_child->setParentSettings(std::move(settings));
connect(child, &Task::succeeded, this, &InstanceStaging::childSucceeded);
connect(child, &Task::failed, this, &InstanceStaging::childFailed);
connect(child, &Task::aborted, this, &InstanceStaging::childAborted);
@ -866,7 +881,7 @@ class InstanceStaging : public Task {
connect(&m_backoffTimer, &QTimer::timeout, this, &InstanceStaging::childSucceeded);
}
virtual ~InstanceStaging(){};
virtual ~InstanceStaging() {}
// FIXME/TODO: add ability to abort during instance commit retries
bool abort() override
@ -881,14 +896,22 @@ class InstanceStaging : public Task {
bool canAbort() const override { return (m_child && m_child->canAbort()); }
protected:
virtual void executeTask() override { m_child->start(); }
virtual void executeTask() override
{
if (m_stagingPath.isNull()) {
emitFailed(tr("Could not create staging folder"));
return;
}
m_child->start();
}
QStringList warnings() const override { return m_child->warnings(); }
private slots:
void childSucceeded()
{
unsigned sleepTime = backoff();
if (m_parent->commitStagedInstance(m_stagingPath, m_instance_name, m_groupName, *m_child.get())) {
if (m_parent->commitStagedInstance(m_stagingPath, *m_child.get(), m_child->group(), *m_child.get())) {
emitSucceeded();
return;
}
@ -897,7 +920,7 @@ class InstanceStaging : public Task {
emitFailed(tr("Failed to commit instance, even after multiple retries. It is being blocked by something."));
return;
}
qDebug() << "Failed to commit instance" << m_instance_name.name() << "Initiating backoff:" << sleepTime;
qDebug() << "Failed to commit instance" << m_child->name() << "Initiating backoff:" << sleepTime;
m_backoffTimer.start(sleepTime * 500);
}
void childFailed(const QString& reason)
@ -906,7 +929,11 @@ class InstanceStaging : public Task {
emitFailed(reason);
}
void childAborted() { emitAborted(); }
void childAborted()
{
m_parent->destroyStagingPath(m_stagingPath);
emitAborted();
}
private:
InstanceList* m_parent;
@ -918,34 +945,35 @@ class InstanceStaging : public Task {
ExponentialSeries backoff;
QString m_stagingPath;
unique_qobject_ptr<InstanceTask> m_child;
InstanceName m_instance_name;
QString m_groupName;
QTimer m_backoffTimer;
};
Task* InstanceList::wrapInstanceTask(InstanceTask* task)
{
auto stagingPath = getStagedInstancePath();
task->setStagingPath(stagingPath);
task->setParentSettings(m_globalSettings);
return new InstanceStaging(this, task, stagingPath, *task, task->group());
return new InstanceStaging(this, task, m_globalSettings);
}
QString InstanceList::getStagedInstancePath()
{
QString key = QUuid::createUuid().toString(QUuid::WithoutBraces);
QString tempDir = ".LAUNCHER_TEMP/";
QString relPath = FS::PathCombine(tempDir, key);
QDir rootPath(m_instDir);
auto path = FS::PathCombine(m_instDir, relPath);
if (!rootPath.mkpath(relPath)) {
return QString();
}
const QString tempRoot = FS::PathCombine(m_instDir, ".tmp");
QString result;
int tries = 0;
do {
if (++tries > 256)
return {};
const QString key = QUuid::createUuid().toString(QUuid::Id128).left(6);
result = FS::PathCombine(tempRoot, key);
} while (QFileInfo::exists(result));
if (!QDir::current().mkpath(result))
return {};
#ifdef Q_OS_WIN32
auto tempPath = FS::PathCombine(m_instDir, tempDir);
SetFileAttributesA(tempPath.toStdString().c_str(), FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
SetFileAttributesA(tempRoot.toStdString().c_str(), FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
#endif
return path;
return result;
}
bool InstanceList::commitStagedInstance(const QString& path,
@ -956,7 +984,6 @@ bool InstanceList::commitStagedInstance(const QString& path,
if (groupName.isEmpty() && !groupName.isNull())
groupName = QString();
QDir dir;
QString instID;
InstancePtr inst;
@ -980,7 +1007,7 @@ bool InstanceList::commitStagedInstance(const QString& path,
return false;
}
} else {
if (!dir.rename(path, destination)) {
if (!FS::move(path, destination)) {
qWarning() << "Failed to move" << path << "to" << destination;
return false;
}

View File

@ -58,7 +58,7 @@ enum class GroupsState { NotLoaded, Steady, Dirty };
struct TrashHistoryItem {
QString id;
QString polyPath;
QString path;
QString trashPath;
QString groupName;
};

View File

@ -22,7 +22,7 @@ class InstancePageProvider : protected QObject, public BasePageProvider {
public:
explicit InstancePageProvider(InstancePtr parent) { inst = parent; }
virtual ~InstancePageProvider(){};
virtual ~InstancePageProvider() = default;
virtual QList<BasePage*> getPages() override
{
QList<BasePage*> values;
@ -39,15 +39,12 @@ class InstancePageProvider : protected QObject, public BasePageProvider {
values.append(new TexturePackPage(onesix.get(), onesix->texturePackList()));
values.append(new ShaderPackPage(onesix.get(), onesix->shaderPackList()));
values.append(new NotesPage(onesix.get()));
values.append(new WorldListPage(onesix.get(), onesix->worldList()));
values.append(new WorldListPage(onesix, onesix->worldList()));
values.append(new ServersPage(onesix));
// values.append(new GameOptionsPage(onesix.get()));
values.append(new ScreenshotsPage(FS::PathCombine(onesix->gameRoot(), "screenshots")));
values.append(new InstanceSettingsPage(onesix.get()));
auto logMatcher = inst->getLogFileMatcher();
if (logMatcher) {
values.append(new OtherLogsPage(inst->getLogFileRoot(), logMatcher));
}
values.append(new InstanceSettingsPage(onesix));
values.append(new OtherLogsPage(inst));
return values;
}

View File

@ -1,7 +1,11 @@
#include "InstanceTask.h"
#include "Application.h"
#include "settings/SettingsObject.h"
#include "ui/dialogs/CustomMessageBox.h"
#include <QPushButton>
InstanceNameChange askForChangingInstanceName(QWidget* parent, const QString& old_name, const QString& new_name)
{
auto dialog =
@ -20,6 +24,9 @@ InstanceNameChange askForChangingInstanceName(QWidget* parent, const QString& ol
ShouldUpdate askIfShouldUpdate(QWidget* parent, QString original_version_name)
{
if (APPLICATION->settings()->get("SkipModpackUpdatePrompt").toBool())
return ShouldUpdate::SkipUpdating;
auto info = CustomMessageBox::selectable(
parent, QObject::tr("Similar modpack was found!"),
QObject::tr(
@ -27,16 +34,15 @@ ShouldUpdate askIfShouldUpdate(QWidget* parent, QString original_version_name)
"separate instance, or update the existing one?\n\nNOTE: Make sure you made a backup of your important instance data before "
"updating, as worlds can be corrupted and some configuration may be lost (due to pack overrides).")
.arg(original_version_name),
QMessageBox::Information, QMessageBox::Ok | QMessageBox::Reset | QMessageBox::Abort);
info->setButtonText(QMessageBox::Ok, QObject::tr("Update existing instance"));
info->setButtonText(QMessageBox::Abort, QObject::tr("Create new instance"));
info->setButtonText(QMessageBox::Reset, QObject::tr("Cancel"));
QMessageBox::Information, QMessageBox::Cancel);
QAbstractButton* update = info->addButton(QObject::tr("Update existing instance"), QMessageBox::AcceptRole);
QAbstractButton* skip = info->addButton(QObject::tr("Create new instance"), QMessageBox::ResetRole);
info->exec();
if (info->clickedButton() == info->button(QMessageBox::Ok))
if (info->clickedButton() == update)
return ShouldUpdate::Update;
if (info->clickedButton() == info->button(QMessageBox::Abort))
if (info->clickedButton() == skip)
return ShouldUpdate::SkipUpdating;
return ShouldUpdate::Cancel;
}

View File

@ -41,7 +41,9 @@
bool JavaCommon::checkJVMArgs(QString jvmargs, QWidget* parent)
{
if (jvmargs.contains("-XX:PermSize=") || jvmargs.contains(QRegularExpression("-Xm[sx]")) || jvmargs.contains("-XX-MaxHeapSize") ||
static const QRegularExpression s_memRegex("-Xm[sx]");
static const QRegularExpression s_versionRegex("-version:.*");
if (jvmargs.contains("-XX:PermSize=") || jvmargs.contains(s_memRegex) || jvmargs.contains("-XX-MaxHeapSize") ||
jvmargs.contains("-XX:InitialHeapSize")) {
auto warnStr = QObject::tr(
"You tried to manually set a JVM memory option (using \"-XX:PermSize\", \"-XX-MaxHeapSize\", \"-XX:InitialHeapSize\", \"-Xmx\" "
@ -52,7 +54,7 @@ bool JavaCommon::checkJVMArgs(QString jvmargs, QWidget* parent)
return false;
}
// block lunacy with passing required version to the JVM
if (jvmargs.contains(QRegularExpression("-version:.*"))) {
if (jvmargs.contains(s_versionRegex)) {
auto warnStr = QObject::tr(
"You tried to pass required Java version argument to the JVM (using \"-version:xxx\"). This is not safe and will not be "
"allowed.\n"
@ -63,7 +65,7 @@ bool JavaCommon::checkJVMArgs(QString jvmargs, QWidget* parent)
return true;
}
void JavaCommon::javaWasOk(QWidget* parent, const JavaCheckResult& result)
void JavaCommon::javaWasOk(QWidget* parent, const JavaChecker::Result& result)
{
QString text;
text += QObject::tr(
@ -79,7 +81,7 @@ void JavaCommon::javaWasOk(QWidget* parent, const JavaCheckResult& result)
CustomMessageBox::selectable(parent, QObject::tr("Java test success"), text, QMessageBox::Information)->show();
}
void JavaCommon::javaArgsWereBad(QWidget* parent, const JavaCheckResult& result)
void JavaCommon::javaArgsWereBad(QWidget* parent, const JavaChecker::Result& result)
{
auto htmlError = result.errorLog;
QString text;
@ -89,7 +91,7 @@ void JavaCommon::javaArgsWereBad(QWidget* parent, const JavaCheckResult& result)
CustomMessageBox::selectable(parent, QObject::tr("Java test failure"), text, QMessageBox::Warning)->show();
}
void JavaCommon::javaBinaryWasBad(QWidget* parent, const JavaCheckResult& result)
void JavaCommon::javaBinaryWasBad(QWidget* parent, const JavaChecker::Result& result)
{
QString text;
text += QObject::tr(
@ -116,34 +118,26 @@ void JavaCommon::TestCheck::run()
emit finished();
return;
}
checker.reset(new JavaChecker());
checker.reset(new JavaChecker(m_path, "", 0, 0, 0, 0));
connect(checker.get(), &JavaChecker::checkFinished, this, &JavaCommon::TestCheck::checkFinished);
checker->m_path = m_path;
checker->performCheck();
checker->start();
}
void JavaCommon::TestCheck::checkFinished(JavaCheckResult result)
void JavaCommon::TestCheck::checkFinished(const JavaChecker::Result& result)
{
if (result.validity != JavaCheckResult::Validity::Valid) {
if (result.validity != JavaChecker::Result::Validity::Valid) {
javaBinaryWasBad(m_parent, result);
emit finished();
return;
}
checker.reset(new JavaChecker());
checker.reset(new JavaChecker(m_path, m_args, m_maxMem, m_maxMem, result.javaVersion.requiresPermGen() ? m_permGen : 0, 0));
connect(checker.get(), &JavaChecker::checkFinished, this, &JavaCommon::TestCheck::checkFinishedWithArgs);
checker->m_path = m_path;
checker->m_args = m_args;
checker->m_minMem = m_minMem;
checker->m_maxMem = m_maxMem;
if (result.javaVersion.requiresPermGen()) {
checker->m_permGen = m_permGen;
}
checker->performCheck();
checker->start();
}
void JavaCommon::TestCheck::checkFinishedWithArgs(JavaCheckResult result)
void JavaCommon::TestCheck::checkFinishedWithArgs(const JavaChecker::Result& result)
{
if (result.validity == JavaCheckResult::Validity::Valid) {
if (result.validity == JavaChecker::Result::Validity::Valid) {
javaWasOk(m_parent, result);
emit finished();
return;

View File

@ -10,11 +10,11 @@ namespace JavaCommon {
bool checkJVMArgs(QString args, QWidget* parent);
// Show a dialog saying that the Java binary was usable
void javaWasOk(QWidget* parent, const JavaCheckResult& result);
void javaWasOk(QWidget* parent, const JavaChecker::Result& result);
// Show a dialog saying that the Java binary was not usable because of bad options
void javaArgsWereBad(QWidget* parent, const JavaCheckResult& result);
void javaArgsWereBad(QWidget* parent, const JavaChecker::Result& result);
// Show a dialog saying that the Java binary was not usable
void javaBinaryWasBad(QWidget* parent, const JavaCheckResult& result);
void javaBinaryWasBad(QWidget* parent, const JavaChecker::Result& result);
// Show a dialog if we couldn't find Java Checker
void javaCheckNotFound(QWidget* parent);
@ -24,7 +24,7 @@ class TestCheck : public QObject {
TestCheck(QWidget* parent, QString path, QString args, int minMem, int maxMem, int permGen)
: m_parent(parent), m_path(path), m_args(args), m_minMem(minMem), m_maxMem(maxMem), m_permGen(permGen)
{}
virtual ~TestCheck(){};
virtual ~TestCheck() = default;
void run();
@ -32,11 +32,11 @@ class TestCheck : public QObject {
void finished();
private slots:
void checkFinished(JavaCheckResult result);
void checkFinishedWithArgs(JavaCheckResult result);
void checkFinished(const JavaChecker::Result& result);
void checkFinishedWithArgs(const JavaChecker::Result& result);
private:
std::shared_ptr<JavaChecker> checker;
JavaChecker::Ptr checker;
QWidget* m_parent = nullptr;
QString m_path;
QString m_args;

View File

@ -188,10 +188,10 @@ T ensureIsType(const QJsonObject& parent, const QString& key, const T default_ =
}
template <typename T>
QVector<T> requireIsArrayOf(const QJsonDocument& doc)
QList<T> requireIsArrayOf(const QJsonDocument& doc)
{
const QJsonArray array = requireArray(doc);
QVector<T> out;
QList<T> out;
for (const QJsonValue val : array) {
out.append(requireIsType<T>(val, "Document"));
}
@ -199,10 +199,10 @@ QVector<T> requireIsArrayOf(const QJsonDocument& doc)
}
template <typename T>
QVector<T> ensureIsArrayOf(const QJsonValue& value, const QString& what = "Value")
QList<T> ensureIsArrayOf(const QJsonValue& value, const QString& what = "Value")
{
const QJsonArray array = ensureIsType<QJsonArray>(value, QJsonArray(), what);
QVector<T> out;
QList<T> out;
for (const QJsonValue val : array) {
out.append(requireIsType<T>(val, what));
}
@ -210,7 +210,7 @@ QVector<T> ensureIsArrayOf(const QJsonValue& value, const QString& what = "Value
}
template <typename T>
QVector<T> ensureIsArrayOf(const QJsonValue& value, const QVector<T> default_, const QString& what = "Value")
QList<T> ensureIsArrayOf(const QJsonValue& value, const QList<T> default_, const QString& what = "Value")
{
if (value.isUndefined()) {
return default_;
@ -220,7 +220,7 @@ QVector<T> ensureIsArrayOf(const QJsonValue& value, const QVector<T> default_, c
/// @throw JsonException
template <typename T>
QVector<T> requireIsArrayOf(const QJsonObject& parent, const QString& key, const QString& what = "__placeholder__")
QList<T> requireIsArrayOf(const QJsonObject& parent, const QString& key, const QString& what = "__placeholder__")
{
const QString localWhat = QString(what).replace("__placeholder__", '\'' + key + '\'');
if (!parent.contains(key)) {
@ -230,10 +230,10 @@ QVector<T> requireIsArrayOf(const QJsonObject& parent, const QString& key, const
}
template <typename T>
QVector<T> ensureIsArrayOf(const QJsonObject& parent,
const QString& key,
const QVector<T>& default_ = QVector<T>(),
const QString& what = "__placeholder__")
QList<T> ensureIsArrayOf(const QJsonObject& parent,
const QString& key,
const QList<T>& default_ = QList<T>(),
const QString& what = "__placeholder__")
{
const QString localWhat = QString(what).replace("__placeholder__", '\'' + key + '\'');
if (!parent.contains(key)) {

View File

@ -36,13 +36,14 @@
#include "LaunchController.h"
#include "Application.h"
#include "launch/steps/PrintServers.h"
#include "minecraft/auth/AccountData.h"
#include "minecraft/auth/AccountList.h"
#include "ui/InstanceWindow.h"
#include "ui/MainWindow.h"
#include "ui/dialogs/CustomMessageBox.h"
#include "ui/dialogs/EditAccountDialog.h"
#include "ui/dialogs/MSALoginDialog.h"
#include "ui/dialogs/ProfileSelectDialog.h"
#include "ui/dialogs/ProfileSetupDialog.h"
#include "ui/dialogs/ProgressDialog.h"
@ -53,15 +54,15 @@
#include <QLineEdit>
#include <QList>
#include <QPushButton>
#include <QRegularExpression>
#include <QStringList>
#include "BuildConfig.h"
#include "JavaCommon.h"
#include "launch/steps/TextPrint.h"
#include "minecraft/auth/AccountTask.h"
#include "tasks/Task.h"
LaunchController::LaunchController(QObject* parent) : Task(parent) {}
LaunchController::LaunchController() : Task() {}
void LaunchController::executeTask()
{
@ -86,7 +87,7 @@ void LaunchController::decideAccount()
// Find an account to use.
auto accounts = APPLICATION->accounts();
if (accounts->count() <= 0) {
if (accounts->count() <= 0 || !accounts->anyAccountIsValid()) {
// Tell the user they need to log in at least one account in order to play.
auto reply = CustomMessageBox::selectable(m_parentWidget, tr("No Accounts"),
tr("In order to play Minecraft, you must have at least one Microsoft "
@ -130,12 +131,64 @@ void LaunchController::decideAccount()
}
}
bool LaunchController::askPlayDemo()
{
QMessageBox box(m_parentWidget);
box.setWindowTitle(tr("Play demo?"));
box.setText(
tr("This account does not own Minecraft.\nYou need to purchase the game first to play it.\n\nDo you want to play "
"the demo?"));
box.setIcon(QMessageBox::Warning);
auto demoButton = box.addButton(tr("Play Demo"), QMessageBox::ButtonRole::YesRole);
auto cancelButton = box.addButton(tr("Cancel"), QMessageBox::ButtonRole::NoRole);
box.setDefaultButton(cancelButton);
box.exec();
return box.clickedButton() == demoButton;
}
QString LaunchController::askOfflineName(QString playerName, bool demo, bool& ok)
{
// we ask the user for a player name
QString message = tr("Choose your offline mode player name.");
if (demo) {
message = tr("Choose your demo mode player name.");
}
QString lastOfflinePlayerName = APPLICATION->settings()->get("LastOfflinePlayerName").toString();
QString usedname = lastOfflinePlayerName.isEmpty() ? playerName : lastOfflinePlayerName;
QString name = QInputDialog::getText(m_parentWidget, tr("Player name"), message, QLineEdit::Normal, usedname, &ok);
if (!ok)
return {};
if (name.length()) {
usedname = name;
APPLICATION->settings()->set("LastOfflinePlayerName", usedname);
}
return usedname;
}
void LaunchController::login()
{
decideAccount();
// if no account is selected, we bail
if (!m_accountToUse) {
// if no account is selected, ask about demo
if (!m_demo) {
m_demo = askPlayDemo();
}
if (m_demo) {
// we ask the user for a player name
bool ok = false;
auto name = askOfflineName("Player", m_demo, ok);
if (ok) {
m_session = std::make_shared<AuthSession>();
static const QRegularExpression s_removeChars("[{}-]");
m_session->MakeDemo(name, MinecraftAccount::uuidFromUsername(name).toString().remove(s_removeChars));
launchInstance();
return;
}
}
// if no account is selected, we bail
emitFailed(tr("No account selected for launch."));
return;
}
@ -144,6 +197,12 @@ void LaunchController::login()
bool tryagain = true;
unsigned int tries = 0;
if ((m_accountToUse->accountType() != AccountType::Offline && m_accountToUse->accountState() == AccountState::Offline) ||
m_accountToUse->shouldRefresh()) {
// Force account refresh on the account used to launch the instance updating the AccountState
// only on first try and if it is not meant to be offline
m_accountToUse->refresh();
}
while (tryagain) {
if (tries > 0 && tries % 3 == 0) {
auto result =
@ -161,13 +220,34 @@ void LaunchController::login()
m_session->demo = m_demo;
m_accountToUse->fillSession(m_session);
// Launch immediately in true offline mode
if (m_accountToUse->accountType() == AccountType::Offline) {
launchInstance();
MinecraftAccountPtr accountToCheck;
if (m_accountToUse->ownsMinecraft())
accountToCheck = m_accountToUse;
else if (const MinecraftAccountPtr defaultAccount = APPLICATION->accounts()->defaultAccount();
defaultAccount != nullptr && defaultAccount->ownsMinecraft()) {
accountToCheck = defaultAccount;
} else {
for (int i = 0; i < APPLICATION->accounts()->count(); i++) {
MinecraftAccountPtr account = APPLICATION->accounts()->at(i);
if (account->ownsMinecraft())
accountToCheck = account;
}
}
if (accountToCheck == nullptr) {
if (!m_session->demo)
m_session->demo = askPlayDemo();
if (m_session->demo)
launchInstance();
else
emitFailed(tr("Launch cancelled - account does not own Minecraft."));
return;
}
switch (m_accountToUse->accountState()) {
switch (accountToCheck->accountState()) {
case AccountState::Offline: {
m_session->wants_online = false;
}
@ -176,68 +256,41 @@ void LaunchController::login()
if (!m_session->wants_online) {
// we ask the user for a player name
bool ok = false;
QString message = tr("Choose your offline mode player name.");
if (m_session->demo) {
message = tr("Choose your demo mode player name.");
}
QString lastOfflinePlayerName = APPLICATION->settings()->get("LastOfflinePlayerName").toString();
QString usedname = lastOfflinePlayerName.isEmpty() ? m_session->player_name : lastOfflinePlayerName;
QString name = QInputDialog::getText(m_parentWidget, tr("Player name"), message, QLineEdit::Normal, usedname, &ok);
if (!ok) {
tryagain = false;
break;
}
if (name.length()) {
usedname = name;
APPLICATION->settings()->set("LastOfflinePlayerName", usedname);
}
m_session->MakeOffline(usedname);
// offline flavored game from here :3
}
if (m_accountToUse->ownsMinecraft()) {
if (!m_accountToUse->hasProfile()) {
// Now handle setting up a profile name here...
ProfileSetupDialog dialog(m_accountToUse, m_parentWidget);
if (dialog.exec() == QDialog::Accepted) {
tryagain = true;
continue;
} else {
emitFailed(tr("Received undetermined session status during login."));
return;
QString name;
if (m_offlineName.isEmpty()) {
name = askOfflineName(m_session->player_name, m_session->demo, ok);
if (!ok) {
tryagain = false;
break;
}
}
// we own Minecraft, there is a profile, it's all ready to go!
launchInstance();
return;
} else {
// play demo ?
QMessageBox box(m_parentWidget);
box.setWindowTitle(tr("Play demo?"));
box.setText(
tr("This account does not own Minecraft.\nYou need to purchase the game first to play it.\n\nDo you want to play "
"the demo?"));
box.setIcon(QMessageBox::Warning);
auto demoButton = box.addButton(tr("Play Demo"), QMessageBox::ButtonRole::YesRole);
auto cancelButton = box.addButton(tr("Cancel"), QMessageBox::ButtonRole::NoRole);
box.setDefaultButton(cancelButton);
box.exec();
if (box.clickedButton() == demoButton) {
// play demo here
m_session->MakeDemo();
launchInstance();
} else {
emitFailed(tr("Launch cancelled - account does not own Minecraft."));
name = m_offlineName;
}
m_session->MakeOffline(name);
// offline flavored game from here :3
} else if (m_accountToUse == accountToCheck && !m_accountToUse->hasProfile()) {
// Now handle setting up a profile name here...
ProfileSetupDialog dialog(m_accountToUse, m_parentWidget);
if (dialog.exec() == QDialog::Accepted) {
tryagain = true;
continue;
} else {
emitFailed(tr("Received undetermined session status during login."));
return;
}
}
if (m_accountToUse->accountType() == AccountType::Offline)
m_session->wants_online = false;
// we own Minecraft, there is a profile, it's all ready to go!
launchInstance();
return;
}
case AccountState::Errored:
// This means some sort of soft error that we can fix with a refresh ... so let's refresh.
case AccountState::Unchecked: {
m_accountToUse->refresh();
accountToCheck->refresh();
}
/* fallthrough */
case AccountState::Working: {
@ -246,25 +299,19 @@ void LaunchController::login()
if (m_online) {
progDialog.setSkipButton(true, tr("Play Offline"));
}
auto task = m_accountToUse->currentTask();
auto task = accountToCheck->currentTask();
progDialog.execWithTask(task.get());
continue;
}
// FIXME: this is missing - the meaning is that the account is queued for refresh and we should wait for that
/*
case AccountState::Queued: {
return;
}
*/
case AccountState::Expired: {
auto errorString = tr("The account has expired and needs to be logged into manually again.");
QMessageBox::warning(m_parentWidget, tr("Account refresh failed"), errorString, QMessageBox::StandardButton::Ok,
QMessageBox::StandardButton::Ok);
emitFailed(errorString);
if (reauthenticateAccount(accountToCheck))
continue;
return;
}
case AccountState::Disabled: {
auto errorString = tr("The launcher's client identification has changed. Please remove this account and add it again.");
auto errorString = tr("The launcher's client identification has changed. Please remove '%1' and try again.")
.arg(accountToCheck->profileName());
QMessageBox::warning(m_parentWidget, tr("Client identification changed"), errorString, QMessageBox::StandardButton::Ok,
QMessageBox::StandardButton::Ok);
emitFailed(errorString);
@ -272,8 +319,9 @@ void LaunchController::login()
}
case AccountState::Gone: {
auto errorString =
tr("The account no longer exists on the servers. It may have been migrated, in which case please add the new account "
"you migrated this one to.");
tr("'%1' no longer exists on the servers. It may have been migrated, in which case please add the new account "
"you migrated this one to.")
.arg(accountToCheck->profileName());
QMessageBox::warning(m_parentWidget, tr("Account gone"), errorString, QMessageBox::StandardButton::Ok,
QMessageBox::StandardButton::Ok);
emitFailed(errorString);
@ -284,6 +332,38 @@ void LaunchController::login()
emitFailed(tr("Failed to launch."));
}
bool LaunchController::reauthenticateAccount(MinecraftAccountPtr account)
{
auto button = QMessageBox::warning(
m_parentWidget, tr("Account refresh failed"),
tr("'%1' has expired and needs to be reauthenticated. Do you want to reauthenticate this account?").arg(account->profileName()),
QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No, QMessageBox::StandardButton::Yes);
if (button == QMessageBox::StandardButton::Yes) {
auto accounts = APPLICATION->accounts();
bool isDefault = accounts->defaultAccount() == account;
accounts->removeAccount(accounts->index(accounts->findAccountByProfileId(account->profileId())));
if (account->accountType() == AccountType::MSA) {
auto newAccount = MSALoginDialog::newAccount(m_parentWidget);
if (newAccount != nullptr) {
accounts->addAccount(newAccount);
if (isDefault)
accounts->setDefaultAccount(newAccount);
if (m_accountToUse == account) {
m_accountToUse = nullptr;
decideAccount();
}
return true;
}
}
}
emitFailed(tr("The account has expired and needs to be reauthenticated"));
return false;
}
void LaunchController::launchInstance()
{
Q_ASSERT_X(m_instance != NULL, "launchInstance", "instance is NULL");
@ -295,7 +375,7 @@ void LaunchController::launchInstance()
return;
}
m_launcher = m_instance->createLaunchTask(m_session, m_serverToJoin);
m_launcher = m_instance->createLaunchTask(m_session, m_targetToJoin);
if (!m_launcher) {
emitFailed(tr("Couldn't instantiate a launcher."));
return;
@ -317,26 +397,9 @@ void LaunchController::launchInstance()
online_mode = "online";
// Prepend Server Status
QStringList servers = { "authserver.mojang.com", "session.minecraft.net", "textures.minecraft.net", "api.mojang.com" };
QString resolved_servers = "";
QHostInfo host_info;
QStringList servers = { "login.microsoftonline.com", "session.minecraft.net", "textures.minecraft.net", "api.mojang.com" };
for (QString server : servers) {
host_info = QHostInfo::fromName(server);
resolved_servers = resolved_servers + server + " resolves to:\n [";
if (!host_info.addresses().isEmpty()) {
for (QHostAddress address : host_info.addresses()) {
resolved_servers = resolved_servers + address.toString();
if (!host_info.addresses().endsWith(address)) {
resolved_servers = resolved_servers + ", ";
}
}
} else {
resolved_servers = resolved_servers + "N/A";
}
resolved_servers = resolved_servers + "]\n\n";
}
m_launcher->prependStep(makeShared<TextPrint>(m_launcher.get(), resolved_servers, MessageLevel::Launcher));
m_launcher->prependStep(makeShared<PrintServers>(m_launcher.get(), servers));
} else {
online_mode = m_demo ? "demo" : "offline";
}

View File

@ -39,7 +39,7 @@
#include <QObject>
#include "minecraft/auth/MinecraftAccount.h"
#include "minecraft/launch/MinecraftServerTarget.h"
#include "minecraft/launch/MinecraftTarget.h"
class InstanceWindow;
class LaunchController : public Task {
@ -47,8 +47,8 @@ class LaunchController : public Task {
public:
void executeTask() override;
LaunchController(QObject* parent = nullptr);
virtual ~LaunchController(){};
LaunchController();
virtual ~LaunchController() = default;
void setInstance(InstancePtr instance) { m_instance = instance; }
@ -56,13 +56,15 @@ class LaunchController : public Task {
void setOnline(bool online) { m_online = online; }
void setOfflineName(const QString& offlineName) { m_offlineName = offlineName; }
void setDemo(bool demo) { m_demo = demo; }
void setProfiler(BaseProfilerFactory* profiler) { m_profiler = profiler; }
void setParentWidget(QWidget* widget) { m_parentWidget = widget; }
void setServerToJoin(MinecraftServerTargetPtr serverToJoin) { m_serverToJoin = std::move(serverToJoin); }
void setTargetToJoin(MinecraftTarget::Ptr targetToJoin) { m_targetToJoin = std::move(targetToJoin); }
void setAccountToUse(MinecraftAccountPtr accountToUse) { m_accountToUse = std::move(accountToUse); }
@ -74,6 +76,9 @@ class LaunchController : public Task {
void login();
void launchInstance();
void decideAccount();
bool askPlayDemo();
QString askOfflineName(QString playerName, bool demo, bool& ok);
bool reauthenticateAccount(MinecraftAccountPtr account);
private slots:
void readyForLaunch();
@ -85,6 +90,7 @@ class LaunchController : public Task {
private:
BaseProfilerFactory* m_profiler = nullptr;
bool m_online = true;
QString m_offlineName;
bool m_demo = false;
InstancePtr m_instance;
QWidget* m_parentWidget = nullptr;
@ -92,5 +98,5 @@ class LaunchController : public Task {
MinecraftAccountPtr m_accountToUse = nullptr;
AuthSessionPtr m_session;
shared_qobject_ptr<LaunchTask> m_launcher;
MinecraftServerTargetPtr m_serverToJoin;
MinecraftTarget::Ptr m_targetToJoin;
};

View File

@ -39,8 +39,16 @@ if [ "x$DEPS_LIST" = "x" ]; then
# Just to be sure...
chmod +x "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}"
ARGS=("${LAUNCHER_DIR}/${LAUNCHER_NAME}" "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}")
if [ -f portable.txt ]; then
ARGS+=("-d" "${LAUNCHER_DIR}")
fi
ARGS+=("$@")
# Run the launcher
exec -a "${LAUNCHER_DIR}/${LAUNCHER_NAME}" "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}" -d "${LAUNCHER_DIR}" "$@"
exec -a "${ARGS[@]}"
# Run the launcher in valgrind
# valgrind --log-file="valgrind.log" --leak-check=full --track-origins=yes "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}" -d "${LAUNCHER_DIR}" "$@"

View File

@ -39,7 +39,8 @@
#include <QTextDecoder>
#include "MessageLevel.h"
LoggedProcess::LoggedProcess(QObject* parent) : QProcess(parent)
LoggedProcess::LoggedProcess(const QTextCodec* output_codec, QObject* parent)
: QProcess(parent), m_err_decoder(output_codec), m_out_decoder(output_codec)
{
// QProcess has a strange interface... let's map a lot of those into a few.
connect(this, &QProcess::readyReadStandardOutput, this, &LoggedProcess::on_stdOut);

View File

@ -49,7 +49,7 @@ class LoggedProcess : public QProcess {
enum State { NotRunning, Starting, FailedToStart, Running, Finished, Crashed, Aborted };
public:
explicit LoggedProcess(QObject* parent = 0);
explicit LoggedProcess(const QTextCodec* output_codec = QTextCodec::codecForLocale(), QObject* parent = 0);
virtual ~LoggedProcess();
State state() const;
@ -80,8 +80,8 @@ class LoggedProcess : public QProcess {
QStringList reprocess(const QByteArray& data, QTextDecoder& decoder);
private:
QTextDecoder m_err_decoder = QTextDecoder(QTextCodec::codecForLocale());
QTextDecoder m_out_decoder = QTextDecoder(QTextCodec::codecForLocale());
QTextDecoder m_err_decoder;
QTextDecoder m_out_decoder;
QString m_leftover_line;
bool m_killed = false;
State m_state = NotRunning;

View File

@ -2,7 +2,7 @@
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (c) 2023 Trial97 <alexandru.tripon97@gmail.com>
* Copyright (c) 2023-2024 Trial97 <alexandru.tripon97@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -42,6 +42,7 @@
#include <QCoreApplication>
#include <QDebug>
#include <QFileInfo>
#include <QUrl>
#if defined(LAUNCHER_APPLICATION)
@ -119,9 +120,10 @@ bool compressDirFiles(QuaZip* zip, QString dir, QFileInfoList files, bool follow
bool compressDirFiles(QString fileCompressed, QString dir, QFileInfoList files, bool followSymlinks)
{
QuaZip zip(fileCompressed);
zip.setUtf8Enabled(true);
QDir().mkpath(QFileInfo(fileCompressed).absolutePath());
if (!zip.open(QuaZip::mdCreate)) {
QFile::remove(fileCompressed);
FS::deletePath(fileCompressed);
return false;
}
@ -129,7 +131,7 @@ bool compressDirFiles(QString fileCompressed, QString dir, QFileInfoList files,
zip.close();
if (zip.getZipError() != 0) {
QFile::remove(fileCompressed);
FS::deletePath(fileCompressed);
return false;
}
@ -141,8 +143,9 @@ bool compressDirFiles(QString fileCompressed, QString dir, QFileInfoList files,
bool createModdedJar(QString sourceJarPath, QString targetJarPath, const QList<Mod*>& mods)
{
QuaZip zipOut(targetJarPath);
zipOut.setUtf8Enabled(true);
if (!zipOut.open(QuaZip::mdCreate)) {
QFile::remove(targetJarPath);
FS::deletePath(targetJarPath);
qCritical() << "Failed to open the minecraft.jar for modding";
return false;
}
@ -160,7 +163,7 @@ bool createModdedJar(QString sourceJarPath, QString targetJarPath, const QList<M
if (mod->type() == ResourceType::ZIPFILE) {
if (!mergeZipFiles(&zipOut, mod->fileinfo(), addedFiles)) {
zipOut.close();
QFile::remove(targetJarPath);
FS::deletePath(targetJarPath);
qCritical() << "Failed to add" << mod->fileinfo().fileName() << "to the jar.";
return false;
}
@ -169,7 +172,7 @@ bool createModdedJar(QString sourceJarPath, QString targetJarPath, const QList<M
auto filename = mod->fileinfo();
if (!JlCompress::compressFile(&zipOut, filename.absoluteFilePath(), filename.fileName())) {
zipOut.close();
QFile::remove(targetJarPath);
FS::deletePath(targetJarPath);
qCritical() << "Failed to add" << mod->fileinfo().fileName() << "to the jar.";
return false;
}
@ -192,7 +195,7 @@ bool createModdedJar(QString sourceJarPath, QString targetJarPath, const QList<M
if (!compressDirFiles(&zipOut, parent_dir, files)) {
zipOut.close();
QFile::remove(targetJarPath);
FS::deletePath(targetJarPath);
qCritical() << "Failed to add" << mod->fileinfo().fileName() << "to the jar.";
return false;
}
@ -200,7 +203,7 @@ bool createModdedJar(QString sourceJarPath, QString targetJarPath, const QList<M
} else {
// Make sure we do not continue launching when something is missing or undefined...
zipOut.close();
QFile::remove(targetJarPath);
FS::deletePath(targetJarPath);
qCritical() << "Failed to add unknown mod type" << mod->fileinfo().fileName() << "to the jar.";
return false;
}
@ -208,7 +211,7 @@ bool createModdedJar(QString sourceJarPath, QString targetJarPath, const QList<M
if (!mergeZipFiles(&zipOut, QFileInfo(sourceJarPath), addedFiles, [](const QString key) { return !key.contains("META-INF"); })) {
zipOut.close();
QFile::remove(targetJarPath);
FS::deletePath(targetJarPath);
qCritical() << "Failed to insert minecraft.jar contents.";
return false;
}
@ -216,7 +219,7 @@ bool createModdedJar(QString sourceJarPath, QString targetJarPath, const QList<M
// Recompress the jar
zipOut.close();
if (zipOut.getZipError() != 0) {
QFile::remove(targetJarPath);
FS::deletePath(targetJarPath);
qCritical() << "Failed to finalize minecraft.jar!";
return false;
}
@ -286,10 +289,11 @@ std::optional<QStringList> extractSubDir(QuaZip* zip, const QString& subdir, con
do {
QString file_name = zip->getCurrentFileName();
file_name = FS::RemoveInvalidPathChars(file_name);
if (!file_name.startsWith(subdir))
continue;
auto relative_file_name = QDir::fromNativeSeparators(file_name.remove(0, subdir.size()));
auto relative_file_name = QDir::fromNativeSeparators(file_name.mid(subdir.size()));
auto original_name = relative_file_name;
// Fix subdirs/files ending with a / getting transformed into absolute paths
@ -327,9 +331,31 @@ std::optional<QStringList> extractSubDir(QuaZip* zip, const QString& subdir, con
}
extracted.append(target_file_path);
QFile::setPermissions(target_file_path,
QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser | QFileDevice::Permission::ExeUser);
auto fileInfo = QFileInfo(target_file_path);
if (fileInfo.isFile()) {
auto permissions = fileInfo.permissions();
auto maxPermisions = QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser | QFileDevice::Permission::ExeUser |
QFileDevice::Permission::ReadGroup | QFileDevice::Permission::ReadOther;
auto minPermisions = QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser;
auto newPermisions = (permissions & maxPermisions) | minPermisions;
if (newPermisions != permissions) {
if (!QFile::setPermissions(target_file_path, newPermisions)) {
qWarning() << (QObject::tr("Could not fix permissions for %1").arg(target_file_path));
}
}
} else if (fileInfo.isDir()) {
// Ensure the folder has the minimal required permissions
QFile::Permissions minimalPermissions = QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | QFile::ReadGroup |
QFile::ExeGroup | QFile::ReadOther | QFile::ExeOther;
QFile::Permissions currentPermissions = fileInfo.permissions();
if ((currentPermissions & minimalPermissions) != minimalPermissions) {
if (!QFile::setPermissions(target_file_path, minimalPermissions)) {
qWarning() << (QObject::tr("Could not fix permissions for %1").arg(target_file_path));
}
}
}
qDebug() << "Extracted file" << relative_file_name << "to" << target_file_path;
} while (zip->goToNextFile());
@ -352,7 +378,7 @@ std::optional<QStringList> extractDir(QString fileCompressed, QString dir)
if (fileInfo.size() == 22) {
return QStringList();
}
qWarning() << "Could not open archive for unzipping:" << fileCompressed << "Error:" << zip.getZipError();
qWarning() << "Could not open archive for unpacking:" << fileCompressed << "Error:" << zip.getZipError();
;
return std::nullopt;
}
@ -369,7 +395,7 @@ std::optional<QStringList> extractDir(QString fileCompressed, QString subdir, QS
if (fileInfo.size() == 22) {
return QStringList();
}
qWarning() << "Could not open archive for unzipping:" << fileCompressed << "Error:" << zip.getZipError();
qWarning() << "Could not open archive for unpacking:" << fileCompressed << "Error:" << zip.getZipError();
;
return std::nullopt;
}
@ -386,7 +412,7 @@ bool extractFile(QString fileCompressed, QString file, QString target)
if (fileInfo.size() == 22) {
return true;
}
qWarning() << "Could not open archive for unzipping:" << fileCompressed << "Error:" << zip.getZipError();
qWarning() << "Could not open archive for unpacking:" << fileCompressed << "Error:" << zip.getZipError();
return false;
}
return extractRelFile(&zip, file, target);
@ -463,7 +489,7 @@ auto ExportToZipTask::exportZip() -> ZipResult
auto absolute = file.absoluteFilePath();
auto relative = m_dir.relativeFilePath(absolute);
setStatus("Compresing: " + relative);
setStatus("Compressing: " + relative);
setProgress(m_progress + 1, m_progressTotal);
if (m_follow_symlinks) {
if (file.isSymLink())
@ -487,10 +513,10 @@ auto ExportToZipTask::exportZip() -> ZipResult
void ExportToZipTask::finish()
{
if (m_build_zip_future.isCanceled()) {
QFile::remove(m_output_path);
FS::deletePath(m_output_path);
emitAborted();
} else if (auto result = m_build_zip_future.result(); result.has_value()) {
QFile::remove(m_output_path);
FS::deletePath(m_output_path);
emitFailed(result.value());
} else {
emitSucceeded();
@ -507,6 +533,138 @@ bool ExportToZipTask::abort()
}
return false;
}
#endif
void ExtractZipTask::executeTask()
{
if (!m_input->isOpen() && !m_input->open(QuaZip::mdUnzip)) {
emitFailed(tr("Unable to open supplied zip file."));
return;
}
m_zip_future = QtConcurrent::run(QThreadPool::globalInstance(), [this]() { return extractZip(); });
connect(&m_zip_watcher, &QFutureWatcher<ZipResult>::finished, this, &ExtractZipTask::finish);
m_zip_watcher.setFuture(m_zip_future);
}
auto ExtractZipTask::extractZip() -> ZipResult
{
auto target = m_output_dir.absolutePath();
auto target_top_dir = QUrl::fromLocalFile(target);
QStringList extracted;
qDebug() << "Extracting subdir" << m_subdirectory << "from" << m_input->getZipName() << "to" << target;
auto numEntries = m_input->getEntriesCount();
if (numEntries < 0) {
return ZipResult(tr("Failed to enumerate files in archive"));
}
if (numEntries == 0) {
logWarning(tr("Extracting empty archives seems odd..."));
return ZipResult();
}
if (!m_input->goToFirstFile()) {
return ZipResult(tr("Failed to seek to first file in zip"));
}
setStatus("Extracting files...");
setProgress(0, numEntries);
do {
if (m_zip_future.isCanceled())
return ZipResult();
setProgress(m_progress + 1, m_progressTotal);
QString file_name = m_input->getCurrentFileName();
if (!file_name.startsWith(m_subdirectory))
continue;
auto relative_file_name = QDir::fromNativeSeparators(file_name.mid(m_subdirectory.size()));
auto original_name = relative_file_name;
setStatus("Unpacking: " + relative_file_name);
// Fix subdirs/files ending with a / getting transformed into absolute paths
if (relative_file_name.startsWith('/'))
relative_file_name = relative_file_name.mid(1);
// Fix weird "folders with a single file get squashed" thing
QString sub_path;
if (relative_file_name.contains('/') && !relative_file_name.endsWith('/')) {
sub_path = relative_file_name.section('/', 0, -2) + '/';
FS::ensureFolderPathExists(FS::PathCombine(target, sub_path));
relative_file_name = relative_file_name.split('/').last();
}
QString target_file_path;
if (relative_file_name.isEmpty()) {
target_file_path = target + '/';
} else {
target_file_path = FS::PathCombine(target_top_dir.toLocalFile(), sub_path, relative_file_name);
if (relative_file_name.endsWith('/') && !target_file_path.endsWith('/'))
target_file_path += '/';
}
if (!target_top_dir.isParentOf(QUrl::fromLocalFile(target_file_path))) {
return ZipResult(tr("Extracting %1 was cancelled, because it was effectively outside of the target path %2")
.arg(relative_file_name, target));
}
if (!JlCompress::extractFile(m_input.get(), "", target_file_path)) {
JlCompress::removeFile(extracted);
return ZipResult(tr("Failed to extract file %1 to %2").arg(original_name, target_file_path));
}
extracted.append(target_file_path);
auto fileInfo = QFileInfo(target_file_path);
if (fileInfo.isFile()) {
auto permissions = fileInfo.permissions();
auto maxPermisions = QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser | QFileDevice::Permission::ExeUser |
QFileDevice::Permission::ReadGroup | QFileDevice::Permission::ReadOther;
auto minPermisions = QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser;
auto newPermisions = (permissions & maxPermisions) | minPermisions;
if (newPermisions != permissions) {
if (!QFile::setPermissions(target_file_path, newPermisions)) {
logWarning(tr("Could not fix permissions for %1").arg(target_file_path));
}
}
} else if (fileInfo.isDir()) {
// Ensure the folder has the minimal required permissions
QFile::Permissions minimalPermissions = QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | QFile::ReadGroup |
QFile::ExeGroup | QFile::ReadOther | QFile::ExeOther;
QFile::Permissions currentPermissions = fileInfo.permissions();
if ((currentPermissions & minimalPermissions) != minimalPermissions) {
if (!QFile::setPermissions(target_file_path, minimalPermissions)) {
logWarning(tr("Could not fix permissions for %1").arg(target_file_path));
}
}
}
qDebug() << "Extracted file" << relative_file_name << "to" << target_file_path;
} while (m_input->goToNextFile());
return ZipResult();
}
void ExtractZipTask::finish()
{
if (m_zip_future.isCanceled()) {
emitAborted();
} else if (auto result = m_zip_future.result(); result.has_value()) {
emitFailed(result.value());
} else {
emitSucceeded();
}
}
bool ExtractZipTask::abort()
{
if (m_zip_future.isRunning()) {
m_zip_future.cancel();
// NOTE: Here we don't do `emitAborted()` because it will be done when `m_build_zip_future` actually cancels, which may not occur
// immediately.
return true;
}
return false;
}
#endif
} // namespace MMCZip

View File

@ -2,7 +2,7 @@
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (c) 2023 Trial97 <alexandru.tripon97@gmail.com>
* Copyright (c) 2023-2024 Trial97 <alexandru.tripon97@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -153,8 +153,14 @@ bool collectFileListRecursively(const QString& rootDir, const QString& subDir, Q
#if defined(LAUNCHER_APPLICATION)
class ExportToZipTask : public Task {
Q_OBJECT
public:
ExportToZipTask(QString outputPath, QDir dir, QFileInfoList files, QString destinationPrefix = "", bool followSymlinks = false)
ExportToZipTask(QString outputPath,
QDir dir,
QFileInfoList files,
QString destinationPrefix = "",
bool followSymlinks = false,
bool utf8Enabled = false)
: m_output_path(outputPath)
, m_output(outputPath)
, m_dir(dir)
@ -163,9 +169,15 @@ class ExportToZipTask : public Task {
, m_follow_symlinks(followSymlinks)
{
setAbortable(true);
m_output.setUtf8Enabled(utf8Enabled);
};
ExportToZipTask(QString outputPath, QString dir, QFileInfoList files, QString destinationPrefix = "", bool followSymlinks = false)
: ExportToZipTask(outputPath, QDir(dir), files, destinationPrefix, followSymlinks){};
ExportToZipTask(QString outputPath,
QString dir,
QFileInfoList files,
QString destinationPrefix = "",
bool followSymlinks = false,
bool utf8Enabled = false)
: ExportToZipTask(outputPath, QDir(dir), files, destinationPrefix, followSymlinks, utf8Enabled) {};
virtual ~ExportToZipTask() = default;
@ -194,5 +206,34 @@ class ExportToZipTask : public Task {
QFuture<ZipResult> m_build_zip_future;
QFutureWatcher<ZipResult> m_build_zip_watcher;
};
class ExtractZipTask : public Task {
Q_OBJECT
public:
ExtractZipTask(QString input, QDir outputDir, QString subdirectory = "")
: ExtractZipTask(std::make_shared<QuaZip>(input), outputDir, subdirectory)
{}
ExtractZipTask(std::shared_ptr<QuaZip> input, QDir outputDir, QString subdirectory = "")
: m_input(input), m_output_dir(outputDir), m_subdirectory(subdirectory)
{}
virtual ~ExtractZipTask() = default;
using ZipResult = std::optional<QString>;
protected:
virtual void executeTask() override;
bool abort() override;
ZipResult extractZip();
void finish();
private:
std::shared_ptr<QuaZip> m_input;
QDir m_output_dir;
QString m_subdirectory;
QFuture<ZipResult> m_zip_future;
QFutureWatcher<ZipResult> m_zip_watcher;
};
#endif
} // namespace MMCZip

View File

@ -101,7 +101,7 @@ class PixmapCache final : public QObject {
*/
bool _markCacheMissByEviciton()
{
static constexpr uint maxInt = static_cast<uint>(std::numeric_limits<int>::max());
static constexpr uint maxCache = static_cast<uint>(std::numeric_limits<int>::max()) / 4;
static constexpr uint step = 10240;
static constexpr int oneSecond = 1000;
@ -118,8 +118,8 @@ class PixmapCache final : public QObject {
if (m_consecutive_fast_evicitons >= m_consecutive_fast_evicitons_threshold) {
// increase the cache size
uint newSize = _cacheLimit() + step;
if (newSize >= maxInt) { // increase it until you overflow :D
newSize = maxInt;
if (newSize >= maxCache) { // increase it until you overflow :D
newSize = maxCache;
qDebug() << m_consecutive_fast_evicitons
<< tr("pixmap cache misses by eviction happened too fast, doing nothing as the cache size reached it's limit");
} else {

View File

@ -40,8 +40,8 @@ namespace MangoHud {
QString getLibraryString()
{
/*
* Check for vulkan layers in this order:
/**
* Guess MangoHud install location by searching for vulkan layers in this order:
*
* $VK_LAYER_PATH
* $XDG_DATA_DIRS (/usr/local/share/:/usr/share/)
@ -49,8 +49,9 @@ QString getLibraryString()
* /etc
* $XDG_CONFIG_DIRS (/etc/xdg)
* $XDG_CONFIG_HOME (~/.config)
*
* @returns Absolute path of libMangoHud.so if found and empty QString otherwise.
*/
QStringList vkLayerList;
{
QString home = QDir::homePath();
@ -85,7 +86,7 @@ QString getLibraryString()
vkLayerList << FS::PathCombine(xdgConfigHome, "vulkan", "implicit_layer.d");
}
for (QString vkLayer : vkLayerList) {
for (const QString& vkLayer : vkLayerList) {
// prefer to use architecture specific vulkan layers
QString currentArch = QSysInfo::currentCpuArchitecture();
@ -95,8 +96,8 @@ QString getLibraryString()
QStringList manifestNames = { QString("MangoHud.%1.json").arg(currentArch), "MangoHud.json" };
QString filePath = "";
for (QString manifestName : manifestNames) {
QString filePath{};
for (const QString& manifestName : manifestNames) {
QString tryPath = FS::PathCombine(vkLayer, manifestName);
if (QFile::exists(tryPath)) {
filePath = tryPath;
@ -107,14 +108,34 @@ QString getLibraryString()
if (filePath.isEmpty()) {
continue;
}
try {
auto conf = Json::requireDocument(filePath, vkLayer);
auto confObject = Json::requireObject(conf, vkLayer);
auto layer = Json::ensureObject(confObject, "layer");
QString libraryName = Json::ensureString(layer, "library_path");
auto conf = Json::requireDocument(filePath, vkLayer);
auto confObject = Json::requireObject(conf, vkLayer);
auto layer = Json::ensureObject(confObject, "layer");
return Json::ensureString(layer, "library_path");
if (libraryName.isEmpty()) {
continue;
}
if (QFileInfo(libraryName).isAbsolute()) {
return libraryName;
}
#ifdef __GLIBC__
// Check whether mangohud is usable on a glibc based system
QString libraryPath = findLibrary(libraryName);
if (!libraryPath.isEmpty()) {
return libraryPath;
}
#else
// Without glibc return recorded shared library as-is.
return libraryName;
#endif
} catch (const Exception& e) {
}
}
return QString();
return {};
}
QString findLibrary(QString libName)

View File

@ -2,19 +2,22 @@
MessageLevel::Enum MessageLevel::getLevel(const QString& levelName)
{
if (levelName == "Launcher")
QString name = levelName.toUpper();
if (name == "LAUNCHER")
return MessageLevel::Launcher;
else if (levelName == "Debug")
else if (name == "TRACE")
return MessageLevel::Trace;
else if (name == "DEBUG")
return MessageLevel::Debug;
else if (levelName == "Info")
else if (name == "INFO")
return MessageLevel::Info;
else if (levelName == "Message")
else if (name == "MESSAGE")
return MessageLevel::Message;
else if (levelName == "Warning")
else if (name == "WARNING" || name == "WARN")
return MessageLevel::Warning;
else if (levelName == "Error")
else if (name == "ERROR")
return MessageLevel::Error;
else if (levelName == "Fatal")
else if (name == "FATAL")
return MessageLevel::Fatal;
// Skip PrePost, it's not exposed to !![]!
// Also skip StdErr and StdOut

View File

@ -12,6 +12,7 @@ enum Enum {
StdOut, /**< Undetermined stderr messages */
StdErr, /**< Undetermined stdout messages */
Launcher, /**< Launcher Messages */
Trace, /**< Trace Messages */
Debug, /**< Debug Messages */
Info, /**< Info Messages */
Message, /**< Standard Messages */

View File

@ -46,25 +46,24 @@ class NullInstance : public BaseInstance {
{
setVersionBroken(true);
}
virtual ~NullInstance(){};
virtual ~NullInstance() = default;
void saveNow() override {}
void loadSpecificSettings() override { setSpecificSettingsLoaded(true); }
QString getStatusbarDescription() override { return tr("Unknown instance type"); };
QSet<QString> traits() const override { return {}; };
QString instanceConfigFolder() const override { return instanceRoot(); };
shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr, MinecraftServerTargetPtr) override { return nullptr; }
shared_qobject_ptr<Task> createUpdateTask([[maybe_unused]] Net::Mode mode) override { return nullptr; }
shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr, MinecraftTarget::Ptr) override { return nullptr; }
QList<Task::Ptr> createUpdateTask() override { return {}; }
QProcessEnvironment createEnvironment() override { return QProcessEnvironment(); }
QProcessEnvironment createLaunchEnvironment() override { return QProcessEnvironment(); }
QMap<QString, QString> getVariables() override { return QMap<QString, QString>(); }
IPathMatcher::Ptr getLogFileMatcher() override { return nullptr; }
QString getLogFileRoot() override { return instanceRoot(); }
QStringList getLogFileSearchPaths() override { return {}; }
QString typeName() const override { return "Null"; }
bool canExport() const override { return false; }
bool canEdit() const override { return false; }
bool canLaunch() const override { return false; }
void populateLaunchMenu(QMenu* menu) override {}
QStringList verboseDescription(AuthSessionPtr session, MinecraftServerTargetPtr serverToJoin) override
QStringList verboseDescription(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) override
{
QStringList out;
out << "Null instance - placeholder.";

71
launcher/PSaveFile.h Normal file
View File

@ -0,0 +1,71 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (c) 2023-2024 Trial97 <alexandru.tripon97@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once
#include <QFileInfo>
#include <QSaveFile>
#include "Application.h"
#if defined(LAUNCHER_APPLICATION)
/* PSaveFile
* A class that mimics QSaveFile for Windows.
*
* When reading resources, we need to avoid accessing temporary files
* generated by QSaveFile. If we start reading such a file, we may
* inadvertently keep it open while QSaveFile is trying to remove it,
* or we might detect the file just before it is removed, leading to
* race conditions and errors.
*
* Unfortunately, QSaveFile doesn't provide a way to retrieve the
* temporary file name or to set a specific template for the temporary
* file name it uses. By default, QSaveFile appends a `.XXXXXX` suffix
* to the original file name, where the `XXXXXX` part is dynamically
* generated to ensure uniqueness.
*
* This class acts like a lock by adding and removing the target file
* name into/from a global string set, helping to manage access to
* files during critical operations.
*
* Note: Please do not use the `setFileName` function directly, as it
* is not virtual and cannot be overridden.
*/
class PSaveFile : public QSaveFile {
public:
PSaveFile(const QString& name) : QSaveFile(name) { addPath(name); }
PSaveFile(const QString& name, QObject* parent) : QSaveFile(name, parent) { addPath(name); }
virtual ~PSaveFile()
{
if (auto app = APPLICATION_DYN) {
app->removeQSavePath(m_absoluteFilePath);
}
}
private:
void addPath(const QString& path)
{
m_absoluteFilePath = QFileInfo(path).absoluteFilePath() + "."; // add dot for tmp files only
if (auto app = APPLICATION_DYN) {
app->addQSavePath(m_absoluteFilePath);
}
}
QString m_absoluteFilePath;
};
#else
#define PSaveFile QSaveFile
#endif

View File

@ -33,7 +33,7 @@ class shared_qobject_ptr : public QSharedPointer<T> {
{}
void reset() { QSharedPointer<T>::reset(); }
void reset(T*&& other)
void reset(T* other)
{
shared_qobject_ptr<T> t(other);
this->swap(t);

View File

@ -1,7 +1,6 @@
#include "RecursiveFileSystemWatcher.h"
#include <QDebug>
#include <QRegularExpression>
RecursiveFileSystemWatcher::RecursiveFileSystemWatcher(QObject* parent) : QObject(parent), m_watcher(new QFileSystemWatcher(this))
{

View File

@ -24,7 +24,9 @@
#include "minecraft/mod/ModFolderModel.h"
#include "minecraft/mod/ResourceFolderModel.h"
#include "modplatform/helpers/HashUtils.h"
#include "net/ApiDownload.h"
#include "net/ChecksumValidator.h"
ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
ModPlatform::IndexedVersion version,
@ -33,9 +35,9 @@ ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
QString custom_target_folder)
: m_pack(std::move(pack)), m_pack_version(std::move(version)), m_pack_model(packs), m_custom_target_folder(custom_target_folder)
{
if (auto model = dynamic_cast<ModFolderModel*>(m_pack_model.get()); model && is_indexed) {
m_update_task.reset(new LocalModUpdateTask(model->indexDir(), *m_pack, m_pack_version));
connect(m_update_task.get(), &LocalModUpdateTask::hasOldMod, this, &ResourceDownloadTask::hasOldResource);
if (is_indexed) {
m_update_task.reset(new LocalResourceUpdateTask(m_pack_model->indexDir(), *m_pack, m_pack_version));
connect(m_update_task.get(), &LocalResourceUpdateTask::hasOldResource, this, &ResourceDownloadTask::hasOldResource);
addTask(m_update_task);
}
@ -53,7 +55,29 @@ ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
}
}
m_filesNetJob->addNetAction(Net::ApiDownload::makeFile(m_pack_version.downloadUrl, dir.absoluteFilePath(getFilename())));
auto action = Net::ApiDownload::makeFile(m_pack_version.downloadUrl, dir.absoluteFilePath(getFilename()));
if (!m_pack_version.hash_type.isEmpty() && !m_pack_version.hash.isEmpty()) {
switch (Hashing::algorithmFromString(m_pack_version.hash_type)) {
case Hashing::Algorithm::Md4:
action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Md4, m_pack_version.hash));
break;
case Hashing::Algorithm::Md5:
action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Md5, m_pack_version.hash));
break;
case Hashing::Algorithm::Sha1:
action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Sha1, m_pack_version.hash));
break;
case Hashing::Algorithm::Sha256:
action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Sha256, m_pack_version.hash));
break;
case Hashing::Algorithm::Sha512:
action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Sha512, m_pack_version.hash));
break;
default:
break;
}
}
m_filesNetJob->addNetAction(action);
connect(m_filesNetJob.get(), &NetJob::succeeded, this, &ResourceDownloadTask::downloadSucceeded);
connect(m_filesNetJob.get(), &NetJob::progress, this, &ResourceDownloadTask::downloadProgressChanged);
connect(m_filesNetJob.get(), &NetJob::stepProgress, this, &ResourceDownloadTask::propagateStepProgress);
@ -67,12 +91,8 @@ void ResourceDownloadTask::downloadSucceeded()
m_filesNetJob.reset();
auto name = std::get<0>(to_delete);
auto filename = std::get<1>(to_delete);
if (!name.isEmpty() && filename != m_pack_version.fileName) {
if (auto model = dynamic_cast<ModFolderModel*>(m_pack_model.get()); model)
model->uninstallMod(filename, true);
else
m_pack_model->uninstallResource(filename);
}
if (!name.isEmpty() && filename != m_pack_version.fileName)
m_pack_model->uninstallResource(filename, true);
}
void ResourceDownloadTask::downloadFailed(QString reason)

View File

@ -22,7 +22,7 @@
#include "net/NetJob.h"
#include "tasks/SequentialTask.h"
#include "minecraft/mod/tasks/LocalModUpdateTask.h"
#include "minecraft/mod/tasks/LocalResourceUpdateTask.h"
#include "modplatform/ModIndex.h"
class ResourceFolderModel;
@ -50,7 +50,7 @@ class ResourceDownloadTask : public SequentialTask {
QString m_custom_target_folder;
NetJob::Ptr m_filesNetJob;
LocalModUpdateTask::Ptr m_update_task;
LocalResourceUpdateTask::Ptr m_update_task;
void downloadProgressChanged(qint64 current, qint64 total);
void downloadFailed(QString reason);

View File

@ -20,13 +20,13 @@
#include <QSet>
#include <QString>
#include "SysInfo.h"
#include "settings/SettingsObject.h"
struct RuntimeContext {
QString javaArchitecture;
QString javaRealArchitecture;
QString javaPath;
QString system;
QString system = SysInfo::currentSystem();
QString mappedJavaRealArchitecture() const
{
@ -45,8 +45,6 @@ struct RuntimeContext {
{
javaArchitecture = instanceSettings->get("JavaArchitecture").toString();
javaRealArchitecture = instanceSettings->get("JavaRealArchitecture").toString();
javaPath = instanceSettings->get("JavaPath").toString();
system = currentSystem();
}
QString getClassifier() const { return system + "-" + mappedJavaRealArchitecture(); }
@ -68,21 +66,4 @@ struct RuntimeContext {
return x;
}
static QString currentSystem()
{
#if defined(Q_OS_LINUX)
return "linux";
#elif defined(Q_OS_MACOS)
return "osx";
#elif defined(Q_OS_WINDOWS)
return "windows";
#elif defined(Q_OS_FREEBSD)
return "freebsd";
#elif defined(Q_OS_OPENBSD)
return "openbsd";
#else
return "unknown";
#endif
}
};

View File

@ -1,52 +0,0 @@
/* Copyright 2013-2021 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "SkinUtils.h"
#include "Application.h"
#include "net/HttpMetaCache.h"
#include <QFile>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QPainter>
namespace SkinUtils {
/*
* Given a username, return a pixmap of the cached skin (if it exists), QPixmap() otherwise
*/
QPixmap getFaceFromCache(QString username, int height, int width)
{
QFile fskin(APPLICATION->metacache()->resolveEntry("skins", username + ".png")->getFullPath());
if (fskin.exists()) {
QPixmap skinTexture(fskin.fileName());
if (!skinTexture.isNull()) {
QPixmap skin = QPixmap(8, 8);
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
skin.fill(QColorConstants::Transparent);
#else
skin.fill(QColor(0, 0, 0, 0));
#endif
QPainter painter(&skin);
painter.drawPixmap(0, 0, skinTexture.copy(8, 8, 8, 8));
painter.drawPixmap(0, 0, skinTexture.copy(40, 8, 8, 8));
return skin.scaled(height, width, Qt::KeepAspectRatio);
}
}
return QPixmap();
}
} // namespace SkinUtils

View File

@ -1,22 +0,0 @@
/* Copyright 2013-2021 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <QPixmap>
namespace SkinUtils {
QPixmap getFaceFromCache(QString id, int height = 64, int width = 64);
}

View File

@ -53,7 +53,7 @@ static inline QChar getNextChar(const QString& s, int location)
int StringUtils::naturalCompare(const QString& s1, const QString& s2, Qt::CaseSensitivity cs)
{
int l1 = 0, l2 = 0;
while (l1 <= s1.count() && l2 <= s2.count()) {
while (l1 <= s1.size() && l2 <= s2.size()) {
// skip spaces, tabs and 0's
QChar c1 = getNextChar(s1, l1);
while (c1.isSpace())
@ -212,3 +212,24 @@ QPair<QString, QString> StringUtils::splitFirst(const QString& s, const QRegular
right = s.mid(end);
return qMakePair(left, right);
}
QString StringUtils::htmlListPatch(QString htmlStr)
{
static const QRegularExpression s_ulMatcher("<\\s*/\\s*ul\\s*>");
int pos = htmlStr.indexOf(s_ulMatcher);
int imgPos;
while (pos != -1) {
pos = htmlStr.indexOf(">", pos) + 1; // Get the size of the </ul> tag. Add one for zeroeth index
imgPos = htmlStr.indexOf("<img ", pos);
if (imgPos == -1)
break; // no image after the tag
auto textBetween = htmlStr.mid(pos, imgPos - pos).trimmed(); // trim all white spaces
if (textBetween.isEmpty())
htmlStr.insert(pos, "<br>");
pos = htmlStr.indexOf(s_ulMatcher, pos);
}
return htmlStr;
}

View File

@ -85,4 +85,6 @@ QPair<QString, QString> splitFirst(const QString& s, const QString& sep, Qt::Cas
QPair<QString, QString> splitFirst(const QString& s, QChar sep, Qt::CaseSensitivity cs = Qt::CaseSensitive);
QPair<QString, QString> splitFirst(const QString& s, const QRegularExpression& re);
QString htmlListPatch(QString htmlStr);
} // namespace StringUtils

Some files were not shown because too many files have changed in this diff Show More