Compare commits

...

3301 Commits

Author SHA1 Message Date
TheKodeToad
baa988ec81
Merge pull request #1739 from Trial97/mod_icons
fixed squished mod icons
2023-11-06 20:49:05 +00:00
Alexandru Ionut Tripon
8eac0d34bd
Merge pull request #1796 from Trial97/dep_global_toggle
Added Global Dependenicies toggle
2023-11-06 20:48:51 +00:00
Alexandru Ionut Tripon
0b1dcb3ea7
Merge pull request #1760 from LocalSpook/sorting
Localize sorting options for resource and shader packs
2023-11-06 20:45:52 +00:00
Alexandru Ionut Tripon
3d529b0c3e
Merge pull request #1772 from Trial97/pixmap_crash
Fix crash with mod icon caching
2023-11-06 20:44:27 +00:00
seth
a2ab4804dd
Merge pull request #1788 from Trial97/readme
Updated the readme
2023-11-06 16:41:56 +00:00
Trial97
ca226d2ab5
Fixed comparation warning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-06 11:24:19 +02:00
Trial97
670e91cb60
Increased the step to around 10MB
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-06 11:08:18 +02:00
Trial97
cc291219f9
apply suggested changes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-06 10:51:34 +02:00
Sefa Eyeoglu
0eda2447dc
Merge pull request #1797 from Trial97/fix_mangohub
[Linux] Fix loading MangoHud
2023-11-06 08:14:55 +01:00
Trial97
867e6223ce
Fixed mangoHub loading
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-05 23:48:26 +02:00
Alexandru Ionut Tripon
3e7f9083ca
Update launcher/ui/pages/instance/ModFolderPage.cpp
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-11-05 23:41:54 +02:00
Alexandru Ionut Tripon
902e861fc6
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-11-05 23:41:26 +02:00
seth
36d2109a15
Merge pull request #1792 from PrismLauncher/renovate/korthout-backport-action-2.x
chore(deps): update korthout/backport-action action to v2.1.0
2023-11-05 21:29:01 +00:00
TheKodeToad
bd9d5e0990
Reword
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-11-05 20:31:48 +00:00
Trial97
9a8667e99c
Added Global Dependenicies toggle
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-05 22:22:49 +02:00
Trial97
710a48fcaf
changed type form double long to long long
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-05 21:41:10 +02:00
TheKodeToad
52807ab279
Merge pull request #1793 from Edgars-Cirulis/develop
visual: Fix spacing.
2023-11-05 17:50:01 +00:00
Edgars Cīrulis
d2a85cb580 visual: Fix spacing.
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-11-05 17:43:12 +00:00
Alexandru Ionut Tripon
d13db1109f
Merge pull request #1789 from acdpsn/develop
Fixed link to Fulmine's website
2023-11-05 16:15:36 +00:00
renovate[bot]
64bbcb2834
chore(deps): update korthout/backport-action action to v2.1.0 2023-11-05 15:57:06 +00:00
Alexandru Ionut Tripon
070d83d887
Merge pull request #1791 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-11-05 07:03:37 +00:00
Alex
cf4144cb50 Fixed link to Fulmine's website
Signed-off-by: Alex <akim8@emich.edu>
2023-11-05 00:46:05 -04:00
github-actions[bot]
40ebae394a chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4' (2023-10-03)
  → 'github:hercules-ci/flake-parts/8c9fa2545007b49a5db5f650ae91f227672c3877' (2023-11-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:NixOS/nixpkgs/f5892ddac112a1e9b3612c39af1b72987ee5783a?dir=lib' (2023-09-29)
  → 'github:NixOS/nixpkgs/0cbe9f69c234a7700596e943bfae7ef27a31b735?dir=lib' (2023-10-29)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/808c0d8c53c7ae50f82aca8e7df263225cf235bf' (2023-10-26)
  → 'github:nixos/nixpkgs/9d5d25bbfe8c0297ebe85324addcb5020ed1a454' (2023-11-04)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/bd38df3d508dfcdff52cd243d297f218ed2257bf' (2023-10-25)
  → 'github:cachix/pre-commit-hooks.nix/dec10399e5b56aa95fcd530e0338be72ad6462a0' (2023-11-01)
2023-11-05 00:18:56 +00:00
Trial97
0f95bf1e42
Updated readme
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-04 12:08:49 +02:00
TheKodeToad
b446bdf4a9
Merge pull request #1783 from Trial97/visual_bug
Fixed visual bug with Modlist export
2023-11-03 15:20:57 +00:00
Sefa Eyeoglu
ef40ba8439
Merge pull request #1782 from Trial97/warn_remove_account 2023-11-03 12:56:13 +01:00
Alexandru Ionut Tripon
1bd69ecbb2
Update launcher/ui/pages/global/AccountListPage.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-11-03 11:42:40 +02:00
Trial97
b18082376d
Fixed visual bug with Modlist export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-03 11:04:13 +02:00
Trial97
127a31ba3a
Added warning for remove account
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-03 10:31:40 +02:00
Trial97
220a1de99a
made sure that we do not relay for undefined behavior
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-02 22:41:56 +02:00
Trial97
2349f29be0
jsut a overflow protection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-02 01:26:04 +02:00
Alexandru Ionut Tripon
f8bb1a872a
Merge pull request #1766 from TheKodeToad/groups-fix
Fix group issues
2023-11-01 15:26:41 +00:00
Tayou
86e2f6c58c
Merge pull request #1685 from Trial97/java
Autodetect Java bundled with official launcher
2023-10-31 18:03:41 +01:00
TheKodeToad
2526275c5e
Better check
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-30 09:51:37 +00:00
TheKodeToad
5a54d80c6e
Fix group issues
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-30 09:26:38 +00:00
Sefa Eyeoglu
ea7dd9cfcc
Merge pull request #1761 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-29 09:31:28 +01:00
Alexandru Ionut Tripon
eb3f1ee27a
Merge pull request #1758 from IThundxr/patch-1
[Windows] Remove Windows 7/8 support from app manifest
2023-10-29 07:12:40 +00:00
github-actions[bot]
55ac17c45b chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/44881e03af1c730cbb1d72a4d41274a2c957813a' (2023-10-21)
  → 'github:nixos/nixpkgs/808c0d8c53c7ae50f82aca8e7df263225cf235bf' (2023-10-26)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/8cc349bfd082da8782b989cad2158c9ad5bd70fd' (2023-10-19)
  → 'github:cachix/pre-commit-hooks.nix/bd38df3d508dfcdff52cd243d297f218ed2257bf' (2023-10-25)
2023-10-29 00:18:11 +00:00
LocalSpook
54305397e4 Localize sorting options for resource and shader packs
Signed-off-by: LocalSpook <56512186+LocalSpook@users.noreply.github.com>
2023-10-28 12:50:40 -07:00
Sefa Eyeoglu
736246e6c8
Merge pull request #1759 from PrismLauncher/renovate/korthout-backport-action-2.x 2023-10-28 18:50:45 +02:00
renovate[bot]
9dcb7e9759
chore(deps): update korthout/backport-action action to v2 2023-10-28 16:03:11 +00:00
Tayou
69c2720872
Merge pull request #1691 from Trial97/no_color
Add no_color env variable
2023-10-28 18:02:53 +02:00
IThundxr
364cb4ff6a
chore: remove windows 7/8 support
With 8.0 windows legacy support was dropped, this just removes it from the manifest

Signed-off-by: IThundxr <contact@ithundxr.dev>
2023-10-28 07:39:32 -04:00
Tayou
df2a92d5f4
Merge pull request #1742 from TayouVR/fix-resourcepack-crash
fix switch/case fallthrough in resource parse tasks
2023-10-28 12:44:40 +02:00
Sefa Eyeoglu
3719ea21b0
Merge pull request #1355 from TheKodeToad/env-vars
Custom environment variables
2023-10-26 22:10:26 +02:00
TheKodeToad
bd11b93a0c
Use hidden tab bar like other pages
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-26 21:01:24 +01:00
Trial97
12d567a9b8
made env vars behave like the rest of the settings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-26 22:51:38 +03:00
txtsd
38d77b58cd
Merge pull request #1748 from LocalSpook/using 2023-10-25 16:08:42 +00:00
Tayou
a161f5cfe2
Merge pull request #1747 from Trial97/fix_initial_java
fix: java memory not set on initial setup
2023-10-24 19:04:56 +02:00
LocalSpook
5be80df1ee Replace typedef with using
Signed-off-by: LocalSpook <56512186+LocalSpook@users.noreply.github.com>
2023-10-24 01:36:27 -07:00
Trial97
87f2f88d4c
fix: java memory not set on initial setup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-23 23:38:03 +03:00
Sefa Eyeoglu
b376888f43
Merge pull request #1515 from TheKodeToad/sysprops 2023-10-22 21:57:11 +02:00
Tayou
0fe3241df6
remove now unneeded Q_ASSERTs
Signed-off-by: Tayou <git@tayou.org>
2023-10-22 21:25:06 +02:00
Tayou
7d5206818b
fix switch/case fallthrough
Signed-off-by: Tayou <git@tayou.org>
2023-10-22 21:25:00 +02:00
Sefa Eyeoglu
db19362a97
feat: add launcher brand and version props
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-10-22 21:19:44 +02:00
Sefa Eyeoglu
cefb96e812
Merge pull request #1743 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-22 09:40:49 +02:00
github-actions[bot]
e7e80e704f chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/01441e14af5e29c9d27ace398e6dd0b293e25a54' (2023-10-11)
  → 'github:nixos/nixpkgs/44881e03af1c730cbb1d72a4d41274a2c957813a' (2023-10-21)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/42e1b6095ef80a51f79595d9951eb38e91c4e6ca' (2023-10-09)
  → 'github:cachix/pre-commit-hooks.nix/8cc349bfd082da8782b989cad2158c9ad5bd70fd' (2023-10-19)
2023-10-22 00:18:23 +00:00
Alexandru Ionut Tripon
2c4af7e793
Merge pull request #1290 from Trial97/refactor/NetActions
Refactor ImgurUpload
2023-10-21 12:32:16 +01:00
Alexandru Ionut Tripon
f0fd1bd5e5
Merge pull request #1737 from Trial97/fix_ftb_app_import_icon
Fixed FTBApp import icon
2023-10-21 07:48:21 +01:00
Trial97
5d926582c7
added Image column size hint
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-20 19:08:56 +03:00
Trial97
7b62d14683
fixed squished mod icons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-20 17:15:12 +03:00
Trial97
80723eeca1
Fixed FTBApp import icon
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-20 16:41:32 +03:00
TheKodeToad
e9fd02baca
Fix code style
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-20 13:12:16 +01:00
Alexandru Ionut Tripon
7ad48d8677
Merge pull request #1692 from Trial97/msa_account
Fix wrong account selection
2023-10-19 20:09:28 +01:00
Tayou
9a0cfbc648
Merge pull request #1733 from Dnyanu76/patch-1
Remove typo
2023-10-19 21:07:51 +02:00
Indrale Dnyaneshwar
1f2483c39e
Remove typo
Signed-off-by: Indrale Dnyaneshwar <118615488+Dnyanu76@users.noreply.github.com>
2023-10-20 00:31:47 +05:30
Tayou
b9c1dc7325
Merge pull request #1374 from Trial97/welcome_background
Added welcome screen
2023-10-19 20:42:47 +02:00
TheKodeToad
cf33927f21
Merge remote-tracking branch 'upstream/develop' into sysprops
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-19 11:28:07 +01:00
TheKodeToad
c638a63a03
Merge pull request #1726 from Trial97/contrib
Added Trial97 as maintainer in about dialog
2023-10-18 09:34:12 +01:00
Sefa Eyeoglu
2081fcd3f5
Merge pull request #1722 from Scrumplex/fix/readonly-themes 2023-10-18 09:25:48 +02:00
Sefa Eyeoglu
90ebbd8e91
Merge pull request #1724 from getchoo/no-default-updater 2023-10-18 09:17:58 +02:00
Trial97
165d218300
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into contrib 2023-10-18 09:07:36 +03:00
seth
069bc887f1
fix: don't always build updater on platforms besides mac
Signed-off-by: seth <getchoo@tuta.io>
2023-10-17 19:12:00 -04:00
Alexandru Ionut Tripon
5aa2b88861
Merge pull request #1721 from Trial97/develop
fixed code signing for appImage
2023-10-17 10:20:44 +01:00
Sefa Eyeoglu
d348f20dd9
fix: allow loading themes with missing resources folder
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-10-17 10:00:17 +02:00
Trial97
b1bd0ceade
fixed code signing for appImage
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-17 09:29:47 +03:00
Alexandru Ionut Tripon
8f2f99801e
Merge pull request #1717 from DioEgizio/update-qt660
chore: bump Qt to Qt 6.6.0
2023-10-16 18:59:29 +01:00
Tayou
aae65e3e4e
Merge branch 'develop' into update-qt660
Signed-off-by: Tayou <git@tayou.org>
2023-10-16 19:57:05 +02:00
Tayou
436db23ffc
Merge pull request #1268 from Ryex/feat/launcher-updater
Feat: Windows (And portable linux / appimage) Auto Updater
2023-10-16 19:53:50 +02:00
DioEgizio
6c9856b9dc chore: bump Qt to Qt 6.6.0
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-10-16 15:42:16 +02:00
Alexandru Ionut Tripon
0927035a26
Merge pull request #1549 from Trial97/atlauncher_browser
added suport for atlauncher browser download
2023-10-16 06:39:12 +01:00
Tayou
5985d8b118
Merge pull request #1383 from TheKodeToad/rename-groups
Rename groups
2023-10-15 23:38:27 +02:00
TheKodeToad
cc990c4f94
Merge branch 'develop' into env-vars
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-15 21:57:20 +01:00
TheKodeToad
c4882e7162
Merge pull request #443 from TheKodeToad/skinfix
Add legacy skin fix
2023-10-15 21:46:29 +01:00
Trial97
9d15255e0a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into atlauncher_browser 2023-10-15 20:52:38 +03:00
Trial97
ca9b593483
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions 2023-10-15 20:44:45 +03:00
Trial97
ef0813754b
added explicit qt version for linux portable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-15 20:23:46 +03:00
Trial97
6bbff310bc
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/launcher-updater 2023-10-15 17:42:39 +03:00
TheKodeToad
6fb7a98901
Fix small mistake 😭
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-15 14:45:05 +01:00
Tayou
9705e6325a
Merge pull request #1673 from Trial97/win_attr
fix folder attributes on windows copy
2023-10-15 15:15:36 +02:00
TheKodeToad
7112d04df5
Mark setting as optional
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-15 14:11:08 +01:00
Alexandru Ionut Tripon
2ab48a43dd
Merge pull request #1706 from Trial97/develop
removed the better release for modrinth modpacks
2023-10-15 12:24:20 +01:00
Alexandru Ionut Tripon
682134435d
Merge pull request #1684 from Trial97/remove_legacy
removed windows legacy builds
2023-10-15 12:22:35 +01:00
Alexandru Ionut Tripon
05d7cc31bf
Merge pull request #1709 from Trial97/arch_build
Fix compatibility with Qt 6.6
2023-10-15 12:19:47 +01:00
Sefa Eyeoglu
c498ad1787
Merge pull request #1711 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-15 08:55:36 +02:00
github-actions[bot]
4939a33456 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/2de1be5b51c3d6fa833f1c1f222dc867dd054b31' (2023-10-07)
  → 'github:nixos/nixpkgs/01441e14af5e29c9d27ace398e6dd0b293e25a54' (2023-10-11)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/66c352d33e0907239e4a69416334f64af2c685cc' (2023-10-05)
  → 'github:cachix/pre-commit-hooks.nix/42e1b6095ef80a51f79595d9951eb38e91c4e6ca' (2023-10-09)
2023-10-15 00:18:39 +00:00
Trial97
023b3e3c39
Fixed arch build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-14 09:41:04 +03:00
Tayou
7015b8f7b2
Merge pull request #1563 from Trial97/modrinth_pack
Pack import fixes and improvements
2023-10-13 16:38:37 +02:00
Trial97
32eaaa25d9
removed the better release for modrinth modpacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-13 00:04:36 +03:00
Alexandru Ionut Tripon
ca4b58d5d7
Merge pull request #1405 from Trial97/update_file
Allow updating managed packs from local file
2023-10-10 16:17:08 +01:00
Alexandru Ionut Tripon
4eb8db16f1
Merge pull request #1543 from Trial97/packwiz
refactor packwiz file write
2023-10-10 16:16:57 +01:00
Alexandru Ionut Tripon
a7842ecc33
Merge pull request #1591 from Trial97/ftb_import_fix
fix: make cached instead of file for ftb pack import
2023-10-10 16:16:40 +01:00
Alexandru Ionut Tripon
6150908025
Merge pull request #1658 from Trial97/neoforge_version
Added version check for neoforge filter
2023-10-10 16:16:21 +01:00
Trial97
5cb6d93136
fixed updater build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-09 22:25:45 +03:00
Trial97
7e6a08548d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/launcher-updater 2023-10-09 19:58:43 +03:00
Sefa Eyeoglu
11a0241b5c
Merge pull request #1699 from GitMuslim/develop 2023-10-09 17:25:11 +02:00
Muslim
8eb8f167ab
oops
Signed-off-by: Muslim <42213155+GitMuslim@users.noreply.github.com>
2023-10-09 18:02:56 +03:00
Muslim
5f5214e5dd
add fullstop
Signed-off-by: Muslim <42213155+GitMuslim@users.noreply.github.com>
2023-10-09 17:00:57 +03:00
Sefa Eyeoglu
04a7275280
Merge pull request #1695 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-08 09:31:17 +02:00
github-actions[bot]
05caa874bc chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-compat':
    'github:edolstra/flake-compat/35bb57c0c8d8b62bbfd284272c928ceb64ddbde9' (2023-01-17)
  → 'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33' (2023-10-04)
• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/7f53fdb7bdc5bb237da7fefef12d099e4fd611ca' (2023-09-01)
  → 'github:hercules-ci/flake-parts/c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4' (2023-10-03)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:NixOS/nixpkgs/3e52e76b70d5508f3cec70b882a29199f4d1ee85?dir=lib' (2023-08-31)
  → 'github:NixOS/nixpkgs/f5892ddac112a1e9b3612c39af1b72987ee5783a?dir=lib' (2023-09-29)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/bd9b686c0168041aea600222be0805a0de6e6ab8' (2023-09-29)
  → 'github:nixos/nixpkgs/2de1be5b51c3d6fa833f1c1f222dc867dd054b31' (2023-10-07)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/cb770e93516a1609652fa8e945a0f310e98f10c0' (2023-09-24)
  → 'github:cachix/pre-commit-hooks.nix/66c352d33e0907239e4a69416334f64af2c685cc' (2023-10-05)
2023-10-08 00:18:30 +00:00
Trial97
dc74ea7382
fixed wrong account selection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-06 19:27:26 +03:00
Trial97
8d0a53273f
Add no_color env variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-06 18:42:54 +03:00
Alexandru Ionut Tripon
bca5e8f395
Update launcher/minecraft/PackProfile.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-10-06 16:16:03 +03:00
TheKodeToad
d49f81d132
Drop leftover mod loader settings
I messed up the merge.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-06 11:27:04 +01:00
Trial97
82461b1113
rename for windows
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-06 08:51:45 +03:00
Trial97
4f1ee85424
check for minecraft java runtime
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-06 00:21:37 +03:00
Trial97
b67c2c71d1
removed windows legacy builds
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-05 22:44:49 +03:00
Sefa Eyeoglu
a7bdfb5f6b
Merge pull request #1682 from romangraef/addmorejavas
Add more Java installation dirs
2023-10-05 00:44:16 +02:00
nea
c6c17036e3
Add more Java installation dirs
Signed-off-by: nea <nea@nea.moe>
2023-10-04 21:20:59 +02:00
Trial97
e913f61305
added a more strict condition for neoforge forge support
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-04 19:29:37 +03:00
Trial97
c78d4e7bb6
added version test for snapshot
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-04 19:16:21 +03:00
Tayou
024c474658
Merge pull request #1678 from Trial97/release_order
fixed quilt dependencies
2023-10-04 10:28:45 +02:00
Sefa Eyeoglu
03ad430699
Merge pull request #1537 from Trial97/warnings 2023-10-04 09:40:38 +02:00
Trial97
ac38585a2a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into release_order 2023-10-04 09:41:49 +03:00
Trial97
3cba5adb5a
updated dependency cycle
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-04 09:41:40 +03:00
Sefa Eyeoglu
d186c34385
Merge pull request #1676 from Trial97/release_order
revert back the release order
2023-10-04 07:43:21 +02:00
Trial97
77979b4c95
revert back the release order
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-03 17:23:26 +03:00
Trial97
8069de29b2
fix folder attributes on windows copy
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-02 21:53:08 +03:00
Tayou
540fc7d2a8
Merge pull request #1670 from Trial97/seg_fault
Don't update mods if no mod loader is installed
2023-10-02 17:05:07 +02:00
Sefa Eyeoglu
d612ab94a7
Merge pull request #1672 from Trial97/skin_refresh
refresh default account when list changes
2023-10-02 16:06:12 +02:00
Sefa Eyeoglu
bfa9613373
Merge pull request #1657 from Trial97/shader_txt 2023-10-02 11:56:50 +02:00
Trial97
93be8b0735
refresh default account when list changes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-02 09:13:02 +03:00
Trial97
2cea7454ef
fix: do not update mods if no mod loader is selected
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-01 23:04:19 +03:00
Sefa Eyeoglu
eab1180f68
Merge pull request #1090 from Ryex/feat/acknowledge_release_type 2023-10-01 14:32:58 +02:00
Sefa Eyeoglu
e3a147f56d
Merge pull request #1656 from Trial97/remove_mojang2 2023-10-01 14:32:42 +02:00
Sefa Eyeoglu
898a719d3e
Merge pull request #1668 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-01 09:28:57 +02:00
github-actions[bot]
be8a9f6541 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e12483116b3b51a185a33a272bf351e357ba9a99' (2023-09-21)
  → 'github:nixos/nixpkgs/bd9b686c0168041aea600222be0805a0de6e6ab8' (2023-09-29)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/4f883a76282bc28eb952570afc3d8a1bf6f481d7' (2023-09-10)
  → 'github:cachix/pre-commit-hooks.nix/cb770e93516a1609652fa8e945a0f310e98f10c0' (2023-09-24)
2023-10-01 00:19:50 +00:00
Sefa Eyeoglu
589ab24f7e
Merge pull request #1666 from getchoo/driverlink
[Linux] Use addOpenGLRunpath.driverLink in Nix wrapper
2023-09-30 23:50:36 +02:00
Alexandru Ionut Tripon
317c7b5544
Update launcher/minecraft/auth/AccountList.cpp
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-10-01 00:32:17 +03:00
Alexandru Ionut Tripon
00bbbdc6e9
Update launcher/LaunchController.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-10-01 00:31:51 +03:00
seth
84269f9596
refactor(nix): use addOpenGLRunpath.driverLink in wrapper
Signed-off-by: seth <getchoo@tuta.io>
2023-09-30 12:50:26 -04:00
Trial97
34294383eb
added version type to dep update
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 23:18:23 +03:00
Trial97
4802f6950e
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/acknowledge_release_type
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 23:06:18 +03:00
Sefa Eyeoglu
531b58093e
Merge pull request #1263 from Trial97/develop 2023-09-28 22:03:14 +02:00
Sefa Eyeoglu
2ff9ef0620
Merge pull request #1363 from Trial97/download_threads 2023-09-28 22:02:57 +02:00
Trial97
5b7c5607a9
removed flame consturctor
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 22:53:40 +03:00
Trial97
9acbf98f94
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/acknowledge_release_type
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 22:50:12 +03:00
Trial97
bef701eba8
chaged folder again
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 21:27:11 +03:00
Trial97
742384909f
updated portable update
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 21:24:31 +03:00
Trial97
606c12ffeb
more fixing
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 18:47:21 +03:00
Trial97
498c9db1ce
fixed appImageUpdate
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 15:14:59 +03:00
Sefa Eyeoglu
59e565ef96
Merge pull request #1643 from bolli24/develop 2023-09-27 17:34:32 +02:00
seth
f370f0d749
chore: cleanup a few more mentions of mojang accounts
Signed-off-by: seth <getchoo@tuta.io>
2023-09-27 05:34:48 -04:00
Trial97
b8d9c3d779
format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-26 20:19:35 +03:00
Trial97
ebde563648
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/launcher-updater 2023-09-26 20:16:46 +03:00
Trial97
4ee6a6711d
Added version check for neoforge filter
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-25 23:04:21 +03:00
Trial97
86b47b3421
Do not display invalid shaders
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-25 22:33:36 +03:00
Trial97
7c636d4608
Removed mojang
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-25 17:44:04 +03:00
TheKodeToad
0406e168e7
Merge pull request #1655 from 0xallie/minecraft-wiki-migration
Update links to Minecraft Wiki
2023-09-25 15:26:37 +01:00
alexia
1684cff7ac
Update links to Minecraft Wiki
Minecraft Wiki has officially moved from Fandom to their own wiki.
I updated some links I found in comments.

Signed-off-by: alexia <me@alexia.lol>
2023-09-25 15:49:12 +02:00
Sefa Eyeoglu
ad9fb7349f
Merge pull request #1647 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-09-24 09:02:43 +02:00
bolli24
14af7044be
Update launcher/ui/dialogs/ModUpdateDialog.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: bolli24 <9805065+bolli24@users.noreply.github.com>
2023-09-24 03:01:47 +02:00
github-actions[bot]
fa65ac3ff7 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nix-filter':
    'github:numtide/nix-filter/ac030bd9ba98e318e1f4c4328d60766ade8ebe8b' (2023-09-04)
  → 'github:numtide/nix-filter/41fd48e00c22b4ced525af521ead8792402de0ea' (2023-09-16)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/46688f8eb5cd6f1298d873d4d2b9cf245e09e88e' (2023-09-15)
  → 'github:nixos/nixpkgs/e12483116b3b51a185a33a272bf351e357ba9a99' (2023-09-21)
2023-09-24 00:18:03 +00:00
bolli24
f3c089792a Skip folders when updating mods.
Previously the mod updater would fail, reporting "The mod updater was aborted!", when trying to update a folder.

Signed-off-by: bolli24 <4827765-bolli24@users.noreply.gitlab.com>
2023-09-22 21:36:19 +02:00
Alexandru Ionut Tripon
81a3ba18bc
Update launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-09-20 18:45:23 +03:00
Sefa Eyeoglu
98bc102f5b
Merge pull request #1618 from getchoo/cool-nix-stuff
filter source in flake & add controller support
2023-09-20 07:47:22 +02:00
seth
97da8892b9
chore(nix): add meta.mainProgram attribute
Signed-off-by: seth <getchoo@tuta.io>
2023-09-19 16:41:40 -04:00
seth
97ced1f459
fix(nix): include libusb1 as a runtime dependency
Signed-off-by: seth <getchoo@tuta.io>
2023-09-19 16:41:37 -04:00
Trial97
a49851cb40
updated blocked mods with empty hash
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-19 15:48:12 +03:00
Sefa Eyeoglu
d72c3aba80
Merge pull request #1632 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-09-17 09:30:30 +02:00
github-actions[bot]
9afe80b0e0 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/b200e0df08f80c32974a6108ce431d8a8a5e6547' (2023-09-07)
  → 'github:nixos/nixpkgs/46688f8eb5cd6f1298d873d4d2b9cf245e09e88e' (2023-09-15)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/7e3517c03d46159fdbf8c0e5c97f82d5d4b0c8fa' (2023-08-17)
  → 'github:cachix/pre-commit-hooks.nix/4f883a76282bc28eb952570afc3d8a1bf6f481d7' (2023-09-10)
2023-09-17 00:18:04 +00:00
Sefa Eyeoglu
00af385619
Merge pull request #1572 from Trial97/catpacks2 2023-09-16 18:22:13 +02:00
Sefa Eyeoglu
bf6dc10f35
Merge pull request #1605 from TheKodeToad/flame-shaders 2023-09-16 18:20:45 +02:00
seth
4cb424470b
Merge pull request #1619 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-09-10 15:57:03 -04:00
Trial97
9445a555e4
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into packwiz
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-10 16:24:59 +03:00
Trial97
47d1f23568
added side for modrinth mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-10 16:22:57 +03:00
github-actions[bot]
82a0a5bca1 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/bfb7dfec93f3b5d7274db109f2990bc889861caf' (2023-09-02)
  → 'github:nixos/nixpkgs/b200e0df08f80c32974a6108ce431d8a8a5e6547' (2023-09-07)
2023-09-10 00:17:57 +00:00
seth
10192c540b
feat(nix): add source filtering
this - along with garnix - should mostly eliminate unneeded (re)builds

Signed-off-by: seth <getchoo@tuta.io>
2023-09-09 15:25:41 -04:00
seth
6aa821df9c
refactor(nix): match inputs value in flake
Signed-off-by: seth <getchoo@tuta.io>
2023-09-09 15:25:39 -04:00
seth
89e434bd5b
refactor(nix): don't concat final attr in fixed point
Signed-off-by: seth <getchoo@tuta.io>
2023-09-09 15:25:33 -04:00
Sefa Eyeoglu
78f8a31cd6
Merge pull request #1613 from PrismLauncher/renovate/actions-cache-3.x 2023-09-08 23:28:03 +02:00
renovate[bot]
e7d6be531f
chore(deps): update actions/cache action to v3.3.2 2023-09-08 17:22:12 +00:00
Sefa Eyeoglu
ba3a1b6280
Merge pull request #1606 from PrismLauncher/renovate/actions-checkout-4.x 2023-09-04 17:11:45 +02:00
Sefa Eyeoglu
d483b613b1
Merge pull request #1578 from TheKodeToad/antialiasing 2023-09-04 17:05:29 +02:00
Sefa Eyeoglu
cf599865f6
Merge pull request #1581 from getchoo/old-gcc 2023-09-04 17:04:10 +02:00
Sefa Eyeoglu
546d49e183
Merge pull request #1530 from Trial97/metadata_delete 2023-09-04 17:02:52 +02:00
renovate[bot]
7dd2530027
chore(deps): update actions/checkout action to v4 2023-09-04 15:02:01 +00:00
Sefa Eyeoglu
e9ecdd05b9
Merge pull request #1574 from Scrumplex/refactor-flake 2023-09-04 17:02:01 +02:00
Sefa Eyeoglu
ad6f15f293
Merge pull request #1604 from PrismLauncher/renovate/cachix-install-nix-action-23.x 2023-09-04 17:01:43 +02:00
TheKodeToad
94c1cd6bcf
CurseForge shader downloading
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-04 14:15:37 +01:00
renovate[bot]
e155844671
chore(deps): update cachix/install-nix-action action to v23 2023-09-04 10:22:11 +00:00
Sefa Eyeoglu
2918d61b16
refactor(nix): use pre-commit flake module
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-09-04 08:53:10 +02:00
seth
bbf4e3b04d
refactor(nix): use fixed points over rec
Signed-off-by: seth <getchoo@tuta.io>
2023-09-03 19:07:39 -04:00
Sefa Eyeoglu
caf925cbad
Merge pull request #1601 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-09-03 09:42:31 +02:00
github-actions[bot]
88f3e19f81 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/59cf3f1447cfc75087e7273b04b31e689a8599fb' (2023-08-01)
  → 'github:hercules-ci/flake-parts/7f53fdb7bdc5bb237da7fefef12d099e4fd611ca' (2023-09-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:NixOS/nixpkgs/9e1960bc196baf6881340d53dccb203a951745a2?dir=lib' (2023-08-01)
  → 'github:NixOS/nixpkgs/3e52e76b70d5508f3cec70b882a29199f4d1ee85?dir=lib' (2023-08-31)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/cddebdb60de376c1bdb7a4e6ee3d98355453fe56' (2023-08-27)
  → 'github:nixos/nixpkgs/bfb7dfec93f3b5d7274db109f2990bc889861caf' (2023-09-02)
2023-09-03 00:17:45 +00:00
TheKodeToad
19b5a5e00b
Remove final conflict - kept by mistake
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-02 22:38:14 +01:00
TheKodeToad
347228a246
Legacy settings override default -> false
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-02 22:29:26 +01:00
TheKodeToad
1213a5ab46
Merge remote-tracking branch 'upstream/develop' into skinfix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-02 22:27:57 +01:00
Trial97
17f696bffc
small tweaks to atl icons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-01 22:25:15 +03:00
Trial97
e095780cc3
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into modrinth_pack
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-01 21:36:28 +03:00
TheKodeToad
c01e95b79c
Merge pull request #1592 from kumquat-ir/desktop-open-fix
Fix opening files from curseforge:// and file:// links etc on linux
2023-09-01 16:13:48 +01:00
kumquat-ir
984e870bca actually it can handle multiple files just fine
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-09-01 10:32:35 -04:00
kumquat-ir
eb66e37b83 fix opening files from curseforge: links on linux
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-09-01 10:29:56 -04:00
Trial97
30ff417074
fix: make cached instead of file for ftb pack import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-01 16:25:49 +03:00
Trial97
7e65aea2ef
format json
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-31 19:04:41 +03:00
Trial97
6cfe2dbc50
moved catpack data to testdata
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-31 17:34:05 +03:00
TheKodeToad
25ce11d85d
Merge pull request #1539 from Trial97/refactor_modpack_ux
Improvements to modpack UX
2023-08-31 14:58:54 +01:00
Sefa Eyeoglu
707da5a25a
fix(nix): include udev dependency
See https://github.com/NixOS/nixpkgs/pull/252425

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-30 21:59:42 +02:00
seth
584e800279
fix: remove -Wextra-semi
this flag is unavailable on gcc versions < 8. we could detect the
version of the compiler here, but i don't think we lose much in this
flags removal and this is a simpler option

Signed-off-by: seth <getchoo@tuta.io>
2023-08-30 11:14:49 -04:00
TheKodeToad
befa3baa6a
Merge branch 'develop' into feat/launcher-updater
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-30 11:47:33 +01:00
TheKodeToad
f23a8e4b4b
Enable antialiasing for mod and pack icons
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-29 23:34:19 +01:00
TheKodeToad
8c30cb3706
Fix CI
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-29 13:27:06 +01:00
TheKodeToad
c1855c6ce3
Merge branch 'develop' into rename-groups
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-29 12:41:40 +01:00
Sefa Eyeoglu
b83fdbd1b7
Merge pull request #1575 from TheKodeToad/more-pack-export-fixes 2023-08-28 22:18:58 +02:00
TheKodeToad
0e67686295
Hide index folder in pack export dialog
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-28 17:25:07 +01:00
TheKodeToad
e98bca4749
Fix cancelling pack save
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-28 17:09:40 +01:00
Sefa Eyeoglu
bdc2fca711
refactor(nix): don't instantiate nixpkgs
See https://zimbatm.com/notes/1000-instances-of-nixpkgs

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-28 15:18:10 +02:00
Trial97
211865a1e1
handle gracefully the upload abort
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-28 13:31:19 +03:00
Trial97
311e36b5d6
added new line
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-28 11:52:26 +03:00
Sefa Eyeoglu
fbf6833124
Merge pull request #1519 from TheKodeToad/better-export-pack 2023-08-28 10:29:32 +02:00
Sefa Eyeoglu
e4e4c4a430
Merge pull request #1573 from PrismLauncher/renovate/lock-file-maintenance 2023-08-28 10:14:45 +02:00
Sefa Eyeoglu
97d932db62
Revert "chore(deps): enable nix lockfile maintenance for renovate"
This reverts commit 5d14724e66.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-28 10:14:21 +02:00
Trial97
5d70f4dbca
removed if
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-28 08:50:10 +03:00
renovate[bot]
66cbbfec0c
chore(deps): lock file maintenance 2023-08-28 00:23:14 +00:00
Trial97
07d8598638
added catpacks tests
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 23:40:32 +03:00
Trial97
79652799bd
Made text smaller
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 21:30:46 +03:00
Trial97
630145a1d0
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into welcome_background 2023-08-27 21:03:21 +03:00
Trial97
0680d2dceb
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 20:41:56 +03:00
TheKodeToad
9110fbf282
Merge pull request #1560 from Trial97/curse_multiple_loaders2
Add suport for flame multiple loaders
2023-08-27 18:21:14 +01:00
TheKodeToad
e3b04d10cf
Merge pull request #1536 from Trial97/time3
Allow showing playtime in hours
2023-08-27 18:14:04 +01:00
Trial97
8c607ae734
removed extra if
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 20:02:12 +03:00
Trial97
c5aac24a93
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse_multiple_loaders2
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 15:53:35 +03:00
Trial97
4036cecfc0
Added progress widget to some modpack providers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 15:04:42 +03:00
Sefa Eyeoglu
df14f88307
Merge pull request #1532 from Trial97/curseforge-url-handle 2023-08-27 12:26:57 +02:00
seth
29736b3b1f
Merge pull request #1570 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-08-27 01:47:58 -04:00
github-actions[bot]
9735e46a7e chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/ca3c9ac9f4cdd4bea19f592b32bb59b74ab7d783' (2023-08-19)
  → 'github:nixos/nixpkgs/c66ccfa00c643751da2fd9290e096ceaa30493fc' (2023-08-26)
2023-08-27 00:17:22 +00:00
TheKodeToad
479335dfe0
Rewrite optional mod dialog
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-27 00:50:33 +01:00
TheKodeToad
d1566f2610
Merge branch 'develop' into env-vars
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-26 23:12:02 +01:00
Trial97
a2d44744fe
do not update the metadata if mod is invalid
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-26 23:36:46 +03:00
Trial97
288d0d1fd4
Added back api loader filtering if just one is selected
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-26 22:26:01 +03:00
Trial97
abfd1a4205
minor dependency crash fix
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-25 18:35:25 +03:00
Sefa Eyeoglu
094cee8ec6
Merge pull request #1561 from Scrumplex/nix-miscs 2023-08-25 10:08:53 +02:00
Trial97
c54fecf5d9
added condition for empty loader type
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-25 09:05:04 +03:00
Trial97
172680abf8
removed aditional header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 13:42:36 +03:00
Trial97
5f3e9672cd
made the loaders check more generic
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 13:31:57 +03:00
Trial97
f897b14e3e
changed technic icon name retrival
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 13:05:27 +03:00
Trial97
bb4b89470d
fixed icon importing
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 12:46:23 +03:00
Trial97
2990c5d0c9
Added optional mods dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 12:44:11 +03:00
Trial97
ea384d59fb
use qt separtor for file path
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 12:41:37 +03:00
Sefa Eyeoglu
3e448904a3
Merge pull request #1562 from PrismLauncher/renovate/determinatesystems-update-flake-lock-20.x
chore(deps): update determinatesystems/update-flake-lock action to v20
2023-08-24 08:11:30 +02:00
renovate[bot]
783af2c06a
chore(deps): update determinatesystems/update-flake-lock action to v20 2023-08-24 04:32:25 +00:00
Trial97
6c0492c0d1
return 0 for any
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 21:09:32 +03:00
Trial97
1515607060
updated getMappedModLoader
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 20:16:51 +03:00
Sefa Eyeoglu
41bd008f5d
chore(nix): remove pre-commit tools from shell
use `pre-commit` CLI instead!

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-23 13:49:10 +02:00
Sefa Eyeoglu
d7b6450613
fix(nix): reload direnv if parts change
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-23 13:47:04 +02:00
Sefa Eyeoglu
85c23b26de
chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-23 13:46:23 +02:00
Sefa Eyeoglu
095de5ed4b
chore(nix): update clang-format to clang-tools 16
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-23 13:46:04 +02:00
Trial97
6178e5a975
reverted change for optional
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 13:55:38 +03:00
Trial97
aa065f2b51
Updated dependency resolution
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 13:28:23 +03:00
Sefa Eyeoglu
59ec0135d7
Merge pull request #1559 from Scrumplex/nix-canonicalize-jars 2023-08-23 12:23:26 +02:00
Sefa Eyeoglu
2283498ccb
Merge pull request #1552 from Trial97/memory_quick_setup 2023-08-23 11:56:53 +02:00
Trial97
e6ba2f4970
Added loaders check on versions load
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 12:52:51 +03:00
Sefa Eyeoglu
b93cd88292
fix(nix): add canonicalize-jars-hook
See https://github.com/NixOS/nixpkgs/pull/250757

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-23 11:52:32 +02:00
Trial97
f8f9ffa118
added loaders for flame version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 11:33:45 +03:00
Trial97
4704c522e0
moved modloaderTypes to ModPlatform
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 10:26:57 +03:00
TheKodeToad
f7951f6082
Merge pull request #1548 from Trial97/version_label
Reset status label when deleting instance
2023-08-22 15:14:02 +01:00
Alexandru Ionut Tripon
eed7e996da
Update launcher/ui/widgets/JavaSettingsWidget.cpp
Co-authored-by: Tayou <31988415+TayouVR@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-08-22 16:17:05 +03:00
Alexandru Ionut Tripon
06dbd381f8
Update launcher/ui/pages/instance/InstanceSettingsPage.cpp
Co-authored-by: Tayou <31988415+TayouVR@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-08-22 16:16:57 +03:00
Alexandru Ionut Tripon
3574d89e0f
Update launcher/ui/pages/global/JavaPage.cpp
Co-authored-by: Tayou <31988415+TayouVR@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-08-22 16:16:50 +03:00
TheKodeToad
0e96111116
Merge pull request #1556 from Trial97/metacache
Gracefully handle invalid cache metadata
2023-08-22 14:09:44 +01:00
Trial97
09aca7a0b5
Added warning to settings page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-22 10:52:35 +03:00
Sefa Eyeoglu
b1783d8fb1
Merge pull request #1557 from Trial97/curse_crash 2023-08-21 23:04:45 +02:00
Trial97
c3d03f0c33
added check for valid query items in curse url install
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 22:20:33 +03:00
Trial97
7acfe36a62
fixed httpmetacache load
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 21:30:44 +03:00
Trial97
45dad27a6d
fixed check
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 17:46:50 +03:00
TheKodeToad
fff378b643
Merge pull request #1553 from TheKodeToad/list-fixes
A few boring list-related fixes
2023-08-21 15:33:16 +01:00
TheKodeToad
d7dadabfbf
List fixes
Double-click to toggle profile components.
Restore double-click to toggle resources.
Fix clicking on checkbox to select account.
Double-click to select account.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-21 14:44:46 +01:00
Trial97
1eb75b6852
fixed build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 15:34:45 +03:00
Trial97
492bf373c6
updated memory allocation on quick setup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 15:00:11 +03:00
Trial97
02264f67f3
Fixed codeql
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 14:15:51 +03:00
Sefa Eyeoglu
fcb436f1f4
Merge pull request #1551 from dannydorazio/develop 2023-08-21 08:29:25 +02:00
Danny Dorazio
e2e0a7af45 DCO Remediation Commit for Danny Dorazio <danny@dorazio.me>
I, Danny Dorazio <danny@dorazio.me>, hereby add my Signed-off-by to this commit: 8092c321a9
I, Danny Dorazio <danny@dorazio.me>, hereby add my Signed-off-by to this commit: 3638fc0a7d
I, Danny Dorazio <danny@dorazio.me>, hereby add my Signed-off-by to this commit: c50c3eaa94

Signed-off-by: Danny Dorazio <danny@dorazio.me>
2023-08-21 01:24:23 -04:00
Danny Dorazio
c50c3eaa94 DCO Remediation Commit for Danny Dorazio <hello@dorazio.me>
I, Danny Dorazio <hello@dorazio.me>, hereby add my Signed-off-by to this commit: 8092c321a9
I, Danny Dorazio <hello@dorazio.me>, hereby add my Signed-off-by to this commit: 3638fc0a7d

Signed-off-by: Danny Dorazio <hello@dorazio.me>
2023-08-21 01:21:48 -04:00
Danny Dorazio
3638fc0a7d Update “Welcome” message on account list page 2023-08-20 23:00:50 -04:00
Danny Dorazio
8092c321a9 Replace instances of “Minecraft account” 2023-08-20 23:00:25 -04:00
Trial97
8e5be6f420
added suport for atlauncher browser download
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 00:09:46 +03:00
Trial97
19316e22b4
fixed status label after instance remove
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-20 22:46:44 +03:00
Sefa Eyeoglu
5c95448f1f
Merge pull request #1485 from getchoo/nix-darwin 2023-08-20 21:20:09 +02:00
Trial97
254444470f
renamed enum type
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-20 16:40:58 +03:00
TheKodeToad
0aaea9bf5d
Merge pull request #1547 from Scrumplex/revert-quilt-beacon
Remove Quilt Beacon toggle
2023-08-20 12:43:49 +01:00
Sefa Eyeoglu
5b4dcae7d9
Revert "feat: add toggle for quilt beacon"
This reverts commit 89aaedc06c.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-20 13:23:11 +02:00
Sefa Eyeoglu
963627fe98
Revert "chore: better explain quilt loader beacon"
This reverts commit a2a09ffe01.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-20 13:23:08 +02:00
Sefa Eyeoglu
232bb568da
Merge pull request #1544 from PrismLauncher/update_flake_lock_action 2023-08-20 12:01:37 +02:00
github-actions[bot]
d3c7850f53 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/f0451844bbdf545f696f029d1448de4906c7f753' (2023-08-12)
  → 'github:nixos/nixpkgs/ca3c9ac9f4cdd4bea19f592b32bb59b74ab7d783' (2023-08-19)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/c5ac3aa3324bd8aebe8622a3fc92eeb3975d317a' (2023-08-11)
  → 'github:cachix/pre-commit-hooks.nix/7e3517c03d46159fdbf8c0e5c97f82d5d4b0c8fa' (2023-08-17)
2023-08-20 00:16:56 +00:00
TheKodeToad
ebbc8838a8
Merge pull request #1541 from Trial97/neoforge_search
feat:neoforge can download forge mods
2023-08-19 23:10:56 +01:00
Trial97
d25e89a4c1
refactor packwiz file write
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-20 00:48:46 +03:00
TheKodeToad
f99b04bd16
Merge pull request #1320 from TheKodeToad/better-launch
Combine launch buttons in instance window, persist profiler
2023-08-19 11:08:02 +01:00
Sefa Eyeoglu
acf586ef82
chore: add fixme about UI code in Minecraftinstance
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-19 10:21:46 +02:00
Trial97
0138cd65cb
feat:neoforge can download forge mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-19 09:00:59 +03:00
Trial97
ab6301d5a1
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-08-19 00:38:40 +03:00
Sefa Eyeoglu
3098aecf97
Merge pull request #1498 from Scrumplex/neoforge 2023-08-18 22:56:55 +02:00
Trial97
05094b7382
more fixes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 22:24:30 +03:00
Trial97
58efd3e9e2
fixed code scaning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 21:43:57 +03:00
Trial97
4c52b18bdd
replaced removeFirst with mid
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 20:19:51 +03:00
Trial97
44ff247f5f
feat:refactored modpack ux
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 20:03:02 +03:00
Trial97
fecc1e087a
Add Trial97 to contribuitors list
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 13:35:50 +03:00
Trial97
d3acac16e6
added -Wno-gnu-zero-variadic-macro-arguments and fixed more warnings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 13:10:13 +03:00
Alexandru Ionut Tripon
28ffa8bf44
Update launcher/ui/pages/global/MinecraftPage.ui
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-08-18 12:57:08 +03:00
TheKodeToad
eb4efa5a9c
Merge pull request #1535 from Scrumplex/fix-skin-browse-btn
Fix browse button size in Skin Upload dialog
2023-08-18 10:47:42 +01:00
Trial97
6d1c67663d
feat:added option to show playtime in hours
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 12:24:28 +03:00
Sefa Eyeoglu
f4ebeedc21
fix: fix browse button size in skin upload dialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-18 09:01:57 +02:00
Sefa Eyeoglu
be2888d6fb
chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-17 22:23:50 +02:00
Trial97
7ab391904a
Flame support for neoforge
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-17 22:23:34 +02:00
Sefa Eyeoglu
aac734d174
fix: add theoretical support for NeoForge in FTB modpacks
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-17 22:21:12 +02:00
TheKodeToad
ffd8ed550f
Reformat
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-17 18:53:32 +01:00
Trial97
c5bac475e8
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-08-17 17:29:57 +03:00
Sefa Eyeoglu
e88418ab7f
Merge pull request #1392 from Scrumplex/feat-native-override 2023-08-17 16:09:16 +02:00
Trial97
bc0934a19c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curseforge-url-handle 2023-08-17 15:25:32 +03:00
Trial97
044ce4df32
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into update_file 2023-08-17 15:24:14 +03:00
Trial97
758999fa64
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into welcome_background 2023-08-17 15:23:22 +03:00
Trial97
4a1d85f999
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-08-17 14:23:37 +03:00
TheKodeToad
6da2e7d3f6
I was forced
/j

Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-17 10:12:38 +01:00
Sefa Eyeoglu
85f36ebed7
Merge pull request #981 from Ryex/curseforge-url-handle 2023-08-17 09:24:35 +02:00
Trial97
f8ffb14619
Merge branch 'curseforge-url-handle' of github.com:Trial97/PrismLauncher into curseforge-url-handle 2023-08-17 00:25:38 +03:00
Trial97
5e2d1ffdfb
removed line
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-17 00:23:53 +03:00
TheKodeToad
3e2733d840
Merge branch 'develop' into better-launch
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-16 22:23:38 +01:00
Trial97
bad44ea264
feat:added flame install mod metadata
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-17 00:14:49 +03:00
Trial97
f0da16a758
removed line
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-17 00:13:12 +03:00
Trial97
b0e197de38
removed warning for one mod selected
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-16 21:26:43 +03:00
Alexandru Ionut Tripon
6c2c724bd9
Update launcher/ui/pages/instance/ExternalResourcesPage.ui
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-08-16 21:03:09 +03:00
Sefa Eyeoglu
c88088c91a
Merge pull request #1524 from PrismLauncher/renovate/korthout-backport-action-1.x 2023-08-16 19:28:41 +02:00
Trial97
f919d363b7
made safe for vegetarians
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-16 20:02:32 +03:00
Trial97
589d8b6923
feat:Added remove metadata button
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-16 19:53:39 +03:00
Sefa Eyeoglu
a5e7aedb4f
Merge pull request #1523 from Trial97/atlauncher
Fix crash when installing some ATLauncher packs
2023-08-16 07:18:34 +02:00
renovate[bot]
07f25d6cca
chore(deps): update korthout/backport-action action to v1.4.0 2023-08-15 14:19:42 +00:00
Trial97
c22eec8f27
fixed crash on atlauncher pack install
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 17:03:51 +03:00
Trial97
1faf741004
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/launcher-updater
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 13:29:42 +03:00
TheKodeToad
8cff7c4de6
Merge branch 'develop' into rename-groups
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-15 11:03:19 +01:00
Trial97
cf27d2f9ab
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into download_threads
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 12:49:21 +03:00
Trial97
6c362afc21
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 12:41:46 +03:00
Trial97
c94ee67077
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curseforge-url-handle3
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 12:16:00 +03:00
Sefa Eyeoglu
62c14cea2a
fix: allow NeoForge in resource APIs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 11:06:14 +02:00
Sefa Eyeoglu
01c3750835
feat: support NeoForge mrpack modpacks
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 11:06:14 +02:00
Sefa Eyeoglu
52e5ee7111
feat: add NeoForge to UIs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 11:06:14 +02:00
Sefa Eyeoglu
3a0aa353cc
feat: add NeoForge to ModLoaderType
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 11:06:13 +02:00
Sefa Eyeoglu
8f5bb982cd
Merge pull request #1513 from lumiscosity/fix/skin_transparency_bug 2023-08-15 10:54:07 +02:00
Sefa Eyeoglu
a360ddbe0b
Merge pull request #1508 from comp500/fix/allow-empty-lines 2023-08-15 10:53:43 +02:00
Sefa Eyeoglu
06aba530d7
fix: add missing header
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:52:40 +02:00
Sefa Eyeoglu
c2d6a137ab
fix: only add native library overrides if files exist
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:52:08 +02:00
Sefa Eyeoglu
b927e58126
fix: improve debug message
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:52:08 +02:00
Sefa Eyeoglu
f1c3da6583
fix: fix typo
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:52:08 +02:00
Sefa Eyeoglu
4c446ccd50
fix: remove meta OpenAL workaround
LWJGL 2 doesn't have a separate zip for OpenAL. So there is no reason
for this code.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:51:48 +02:00
Sefa Eyeoglu
83aa0062c7
feat: add custom native library path settings
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:51:21 +02:00
Sefa Eyeoglu
ff67fd10c3
feat: implement override for GLFW/OpenAL with split natives
Fixes PrismLauncher/PrismLauncher#513

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:50:38 +02:00
Sefa Eyeoglu
7ba1e7d356
Merge pull request #1407 from TheKodeToad/icon-indexing 2023-08-15 10:43:29 +02:00
Sefa Eyeoglu
f533173b95
Merge pull request #1516 from Trial97/abort_connect 2023-08-15 10:40:12 +02:00
Sefa Eyeoglu
14d5fd7edb
Merge pull request #1520 from PrismLauncher/update_flake_lock_action 2023-08-15 10:39:08 +02:00
Sefa Eyeoglu
740ca54c87
Merge pull request #1462 from getchoo/labels 2023-08-15 10:38:28 +02:00
Sefa Eyeoglu
6ce7e426d2
chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:38:04 +02:00
Sefa Eyeoglu
0c753619a4
Merge pull request #1467 from Scrumplex/update-nix-docs 2023-08-15 10:36:38 +02:00
Sefa Eyeoglu
4b06255cc2
Merge pull request #1486 from PrismLauncher/staging 2023-08-15 10:36:09 +02:00
Sefa Eyeoglu
1939e3e6ed
chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 09:02:15 +02:00
Trial97
9546c77113
Some warnings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 00:52:34 +03:00
Trial97
0ba88ff138
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into staging
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 00:33:24 +03:00
Sefa Eyeoglu
215d7dbb74
chore: update license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-14 18:17:05 +02:00
Sefa Eyeoglu
91ba4cf75e
chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-14 18:16:53 +02:00
Sefa Eyeoglu
779f70057b
Merge commit 'ce2ca1381519a2e261d7f76dffa874d559d979c2' into staging 2023-08-14 18:16:13 +02:00
TheKodeToad
a44cb6430e
Merge pull request #1107 from Ryex/chore/add-compiler-warnings
Introduce more strict compiler warnings and fix them
2023-08-13 13:10:58 +01:00
github-actions[bot]
1aadaa208d chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/0d2fb29f5071a12d7983319c2c2576be6a130582' (2023-08-05)
  → 'github:nixos/nixpkgs/f0451844bbdf545f696f029d1448de4906c7f753' (2023-08-12)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/3139c4d1f7732cab89f06492bdd4677b877e3785' (2023-08-05)
  → 'github:cachix/pre-commit-hooks.nix/c5ac3aa3324bd8aebe8622a3fc92eeb3975d317a' (2023-08-11)
2023-08-13 00:16:46 +00:00
TheKodeToad
6d070e8607
"Format"
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-12 21:50:02 +01:00
TheKodeToad
5056a51c18
Improvements and refinements to pack export
- Persist fields
- Toggle optional files

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-12 21:20:51 +01:00
TheKodeToad
3c209ba502
theme -> catpacks
Co-authored-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-12 19:04:34 +01:00
Trial97
71890707c0
format and apply the sugestion
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-12 13:08:39 +03:00
Alexandru Ionut Tripon
b3b2e9df35
Merge branch 'develop' into feat/acknowledge_release_type
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-08-12 12:42:30 +03:00
Sefa Eyeoglu
3aba7f8fec
Merge pull request #1518 from Scrumplex/asan-develop 2023-08-12 11:38:01 +02:00
Alexandru Ionut Tripon
d6e4fe7c1f
Update CMakeLists.txt
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-08-12 11:29:08 +02:00
Trial97
c9d628bf18
revert asan on debug on by default
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-12 11:29:08 +02:00
Sefa Eyeoglu
35358f8180
Merge remote-tracking branch 'upstream/staging' into chore/add-compiler-warnings 2023-08-12 11:17:11 +02:00
Sefa Eyeoglu
019e5ca3e8
fix: use ApiDownload for CF URL handling
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-12 11:11:58 +02:00
Sefa Eyeoglu
6423edaa76
Merge remote-tracking branch 'upstream/staging' into curseforge-url-handle 2023-08-12 10:58:27 +02:00
Sefa Eyeoglu
44153a28e3
Merge pull request #1517 from Trial97/revert_asan 2023-08-12 10:57:29 +02:00
Alexandru Ionut Tripon
bcf0635efd
Update CMakeLists.txt
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-08-12 10:55:53 +02:00
Trial97
92dbe1684e
revert asan on debug on by default
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-12 10:55:53 +02:00
seth
7879091cea
Merge pull request #1512 from Trial97/curseforge_import
Fix importing Quilt/Fabric packs from CurseForge
2023-08-11 10:16:17 -04:00
Sefa Eyeoglu
73adac2501
fix: use QColorConstants in Qt 5.14+
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-11 15:57:12 +02:00
Trial97
d801151d5c
connect the abort signal in concurent task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-11 15:41:41 +03:00
Sefa Eyeoglu
ea43d0f687
fix: fix more warnings
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-11 10:57:57 +02:00
Sefa Eyeoglu
396f812496
Merge pull request #1230 from TheKodeToad/better-component-installation
Revamp loader installation UI
2023-08-11 08:24:14 +02:00
TheKodeToad
f6d8c9659c
Rework
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-11 00:39:05 +01:00
TheKodeToad
e2d77f21ba
More system properties because yes!! 🎉
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-11 00:02:48 +01:00
Sefa Eyeoglu
ef6f9487f4
Merge remote-tracking branch 'upstream/staging' into chore/add-compiler-warnings 2023-08-10 20:38:32 +02:00
Sefa Eyeoglu
8140374e26
chore: add licensing info to loader logos
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-10 20:18:28 +02:00
Sefa Eyeoglu
d67277a668
chore: replace LiteLoader logo with high quality version
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-10 20:18:16 +02:00
maple!
97ef8e8d0e Fix transparency in skin icon
QPainter has a bug where drawing transparency to a freshly initialized, empty QPixmap causes garbage data to be drawn. This broke the rendering of the skin icon. The fix is simply to fill the QPixmap with empty transparent pixels beforehand.

Signed-off-by: maple! <averyrudelphe@gmail.com>
2023-08-10 15:32:47 +02:00
Sefa Eyeoglu
2090f958c8
Merge pull request #1324 from leia-uwu/ui-tweaks 2023-08-10 12:24:41 +02:00
Sefa Eyeoglu
8731f4ba27
chore: add comment about _kde_side_panel_view
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-10 12:24:33 +02:00
Trial97
b3da35be74
Fixed curseforge import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-10 12:19:38 +03:00
comp500
1c3449e5a2 Remove unnecessary #if
Signed-off-by: comp500 <comp500@users.noreply.github.com>
2023-08-09 23:04:44 +01:00
comp500
a351d1834a Allow empty lines in log output
Preserving empty lines in the game log ensures that crash reports and debugging information has necessary whitespace - the previous behaviour made crash reports hard to read.

Signed-off-by: comp500 <comp500@users.noreply.github.com>
2023-08-09 20:48:02 +01:00
Sefa Eyeoglu
31ffe79a29
Merge pull request #1505 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x
chore(deps): update hendrikmuhs/ccache-action action to v1.2.10
2023-08-09 07:32:11 +02:00
renovate[bot]
d9cd6f9c50
chore(deps): update hendrikmuhs/ccache-action action to v1.2.10 2023-08-08 18:20:26 +00:00
TheKodeToad
e079cbb055
Fix actions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-07 13:51:26 +01:00
Sefa Eyeoglu
7004388105
Merge pull request #1227 from Ryex/packaging/appimage-updates 2023-08-07 13:18:06 +02:00
Tayou
9afa7cc91f
Merge branch 'develop' into icon-indexing
Signed-off-by: Tayou <31988415+TayouVR@users.noreply.github.com>
2023-08-07 10:32:38 +02:00
Rachel Powers
9a9a4fcfd4
Apply suggestions from code review
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-08-06 13:16:30 -07:00
Sefa Eyeoglu
74fe2fb2a6
Merge remote-tracking branch 'upstream/staging' into curseforge-url-handle 2023-08-06 21:54:00 +02:00
seth
eeb5fdbc9f
feat(nix): add darwin support
Signed-off-by: seth <getchoo@tuta.io>
2023-08-06 15:52:32 -04:00
Sefa Eyeoglu
a83e5be8f2
fix: makeShared for QByteArray
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-06 21:51:03 +02:00
seth
75c7df46a7
Merge pull request #1493 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-08-06 15:41:48 -04:00
seth
efaf4024ab
Merge pull request #1464 from Ryex/fix/windows-console-attach
[Windows] Fix attaching logs to console
2023-08-06 15:37:44 -04:00
Sefa Eyeoglu
99fd1e622c
chore: replace fabricmc icons with SVG
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-06 17:46:33 +02:00
github-actions[bot]
37e5f6af48 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/8e8d955c22df93dbe24f19ea04f47a74adbdc5ec' (2023-07-04)
  → 'github:hercules-ci/flake-parts/59cf3f1447cfc75087e7273b04b31e689a8599fb' (2023-08-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:NixOS/nixpkgs/4bc72cae107788bf3f24f30db2e2f685c9298dc9?dir=lib' (2023-06-29)
  → 'github:NixOS/nixpkgs/9e1960bc196baf6881340d53dccb203a951745a2?dir=lib' (2023-08-01)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d2b52322f35597c62abf56de91b0236746b2a03d' (2023-07-29)
  → 'github:nixos/nixpkgs/0d2fb29f5071a12d7983319c2c2576be6a130582' (2023-08-05)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/1e2443dd3f669eb65433b2fc26a3065e05a7dc9c' (2023-07-29)
  → 'github:cachix/pre-commit-hooks.nix/3139c4d1f7732cab89f06492bdd4677b877e3785' (2023-08-05)
2023-08-06 00:17:51 +00:00
Sefa Eyeoglu
5b8c997180
Merge pull request #1456 from Trial97/icons 2023-08-05 22:50:52 +02:00
Sefa Eyeoglu
7c547f6452
Merge pull request #1370 from Trial97/pack_changelog 2023-08-05 22:50:38 +02:00
Trial97
f7e8ec1855
format files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 21:17:38 +03:00
Trial97
72de2d5254
Added missing header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 21:08:16 +03:00
TheKodeToad
f25d0a4e0e
Merge branch 'develop' into env-vars
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-05 18:01:53 +01:00
Trial97
1d3f2674d1
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 19:21:37 +03:00
Trial97
f9ebcb5d2e
Merge branch 'refactor/net-split-headers-to-proxy-class' of https://github.com/Ryex/PrismLauncher into refactor/NetActions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 19:16:57 +03:00
Trial97
b2fdd83594
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into download_threads
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 19:09:10 +03:00
Trial97
91eb30f037
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into pack_changelog 2023-08-05 19:04:53 +03:00
Trial97
d936b25868
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into welcome_background
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 19:04:15 +03:00
Trial97
e7c2274893
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into update_file 2023-08-05 19:02:11 +03:00
Trial97
377fc0352a
Merge branch 'staging' of https://github.com/PrismLauncher/PrismLauncher into icons 2023-08-05 19:00:12 +03:00
Trial97
939a2d67ed
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop12
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 18:21:09 +03:00
Sefa Eyeoglu
304e294ea7
Merge pull request #1102 from Ryex/refactor/net-split-headers-to-proxy-class 2023-08-04 20:31:43 +02:00
Sefa Eyeoglu
ae793f6cf1
Merge pull request #1459 from Scrumplex/format 2023-08-04 19:42:36 +02:00
Sefa Eyeoglu
1d638e018a
chore: update license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-04 19:41:47 +02:00
seth
50c7d39e08
Merge pull request #1483 from DioEgizio/update-qt652
[macOS,Windows] Update to Qt 6.5.2
2023-08-04 12:05:45 -04:00
TheKodeToad
c5bffed21e
Merge branch 'PrismLauncher:develop' into skinfix 2023-08-04 16:29:30 +01:00
TheKodeToad
d48dd7eb6a
Use override-based setting for online fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-04 16:00:02 +01:00
DioEgizio
b013133cc1 chore: update to qt 6.5.2
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-08-03 09:24:47 +02:00
TheKodeToad
1bafa36c17
icon -> iconName
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 20:33:01 +01:00
TheKodeToad
afaf6f894c
Merge branch 'PrismLauncher:develop' into better-component-installation 2023-08-02 20:27:37 +01:00
TheKodeToad
8b3c465a50
Use protected inheritance for BasePageProvider
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 20:24:15 +01:00
TheKodeToad
40c614b3a5
Pressed -> Clicked (doh)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 20:23:30 +01:00
Sefa Eyeoglu
ac36a2289f
Merge pull request #1452 from getchoo/sparkle-disable 2023-08-02 19:28:01 +02:00
Sefa Eyeoglu
fa2b784f7e
Merge branch 'develop' into sparkle-disable
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 19:27:48 +02:00
Sefa Eyeoglu
01e17806f6
Merge pull request #1391 from Trial97/prism_export2 2023-08-02 19:27:14 +02:00
Sefa Eyeoglu
f561e7febf
Merge pull request #1476 from Scrumplex/fix-saving-metaurl 2023-08-02 19:24:24 +02:00
Sefa Eyeoglu
39d4f0df66
fix: don't reset meta url on launch
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:56:54 +02:00
Sefa Eyeoglu
1d468ac35a
chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:35 +02:00
Sefa Eyeoglu
ce2ca13815
fix: add missing headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:08 +02:00
TheKodeToad
f256b836f4
Make more options generic
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 18:35:08 +02:00
TheKodeToad
71fb38c91f
Fix alignment properties
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 18:35:08 +02:00
Sefa Eyeoglu
076c189948
fix: format all languages using clang-format
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:08 +02:00
Sefa Eyeoglu
9f66f6495a
fix: fix undisciplined multiple inheritance
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
Sefa Eyeoglu
c07a857359
fix: remove irregular enum initialization
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
Sefa Eyeoglu
76df836378
fix: simplify switch statement
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
Sefa Eyeoglu
a545f67a21
fix: take JavaCheckResult by const reference
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
Sefa Eyeoglu
9d5818916a
fix(nix): enable clang-format
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
Sefa Eyeoglu
ea56ff255d
Merge pull request #1339 from TheKodeToad/remove-direct-launch 2023-08-02 18:31:27 +02:00
Sefa Eyeoglu
01d3eea379
Merge pull request #1359 from Trial97/import 2023-08-02 18:25:51 +02:00
Alexandru Ionut Tripon
f13eccb03d
Update launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.h
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-08-02 19:24:58 +03:00
Sefa Eyeoglu
39d7bc6c24
Merge pull request #1294 from ashuntu/develop 2023-08-02 18:24:54 +02:00
ashuntu
6a7f63166d DCO Remediation Commit for ashuntu <101582426+ashuntu@users.noreply.github.com>
I, ashuntu <101582426+ashuntu@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 10678096e5
I, ashuntu <101582426+ashuntu@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 51d7a6289e
I, ashuntu <101582426+ashuntu@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 1467072f3d

Signed-off-by: ashuntu <101582426+ashuntu@users.noreply.github.com>
2023-08-02 10:04:53 -05:00
Rachel Powers
bae59a8c07
refactor(windows console): reduce code duplication
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-08-02 06:19:43 -07:00
TheKodeToad
bb039d4bc7
Merge pull request #1445 from Trial97/curse
feat: removed flame quilt warning
2023-08-02 12:55:49 +01:00
Sefa Eyeoglu
92b2f463e3
Merge pull request #1474 from apix0n/develop 2023-08-02 12:08:34 +02:00
Apix
16e6a01881
fix: fix copyright year
Signed-off-by: Apix <apix0n@outlook.com>
2023-08-02 11:35:54 +02:00
Rachel Powers
81bc9e488f
DCO Remediation Commit for Rachel Powers <508861+Ryex@users.noreply.github.com>
I, Rachel Powers <508861+Ryex@users.noreply.github.com>, hereby add my Signed-off-by to this commit: b4ae6e9774

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-08-01 20:27:39 -07:00
Rachel Powers
e64e4d7ef7
Fix: always false comparison
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-08-01 18:57:35 -07:00
Rachel Powers
f19e8dd086
Apply suggestions from code review
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-08-01 18:53:51 -07:00
Rachel Powers
b4ae6e9774
fix(compiler warnings): suppress omtimisation flag conflict warnings. leave optimisation to Byild type defaults
- enable ASan for RelWithDebInfo builds
2023-07-31 23:25:49 -07:00
Rachel Powers
5a9f780cf8
fix(FlameInstanceCreationTask): include Net::Apidownload
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-31 22:36:13 -07:00
Rachel Powers
2d1197f59f
Merge branch 'develop' into refactor/net-split-headers-to-proxy-class
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-31 22:26:20 -07:00
Sefa Eyeoglu
d8f2a1354f
chore: update Nix docs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-31 19:16:32 +02:00
TheKodeToad
b572f75dba
Merge branch 'PrismLauncher:develop' into icon-indexing 2023-07-31 14:40:27 +01:00
Rachel Powers
14e16db01e
refactor(filelink): drop moved funciton
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 16:02:37 -07:00
Rachel Powers
7091bc81c2
chore(rename): fix unfinshed renames from deshadow changes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 15:56:38 -07:00
Rachel Powers
1e947ca893
fix(flame creation task): import ApiDownload
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 15:42:15 -07:00
Rachel Powers
b9fe37aec1
Merge branch 'develop' into chore/add-compiler-warnings
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 15:33:46 -07:00
Rachel Powers
5d68a4c992
fix: religate export zip to launcher app only
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

fix(MMCZip): include QUrl

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

fix(FileLink): drop FreeConsole

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

fix(filelink exe): add console sources

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 15:24:50 -07:00
Rachel Powers
760b80934f
fix(filelink exe): add console sources
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 15:22:18 -07:00
Rachel Powers
6d564628b7
fix(FileLink): drop FreeConsole
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 15:11:00 -07:00
Rachel Powers
f03924478b
Merge branch 'fix/windows-console-attach' into feat/launcher-updater
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

# Conflicts:
#	launcher/Application.cpp
#	launcher/CMakeLists.txt
#	launcher/filelink/FileLink.cpp
2023-07-30 14:30:16 -07:00
Rachel Powers
7c1a465ec9
Merge branch 'develop' into feat/launcher-updater
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 14:19:31 -07:00
Rachel Powers
a7ef663735
fix(windows console): use new logic in FileLink exe
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 14:03:20 -07:00
Rachel Powers
186211244d
refactor(windows console): move to external file
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 13:38:47 -07:00
Rachel Powers
5740ee0444
fix(windows console): properly bind windows console
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 13:38:47 -07:00
seth
945939ba68
chore(actions): add new labels to update-flake
Signed-off-by: seth <getchoo@tuta.io>
2023-07-30 04:46:44 -04:00
seth
9137721e8e
Merge pull request #1461 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-07-30 04:45:10 -04:00
Sefa Eyeoglu
566425166b
Merge pull request #1449 from Trial97/tehnic
Reintroduce parsing of INI files
2023-07-30 09:47:40 +02:00
github-actions[bot]
d1513732be chore(nix): update lockfile
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/f465da166263bc0d4b39dfd4ca28b777c92d4b73' (2023-07-22)
  → 'github:nixos/nixpkgs/d2b52322f35597c62abf56de91b0236746b2a03d' (2023-07-29)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/eb433bff05b285258be76513add6f6c57b441775' (2023-07-18)
  → 'github:cachix/pre-commit-hooks.nix/1e2443dd3f669eb65433b2fc26a3065e05a7dc9c' (2023-07-29)
2023-07-30 00:20:33 +00:00
ashuntu
1467072f3d Removed snapcraft.yaml in favor of dedicated repo: https://github.com/ashuntu/prismlauncher-snap 2023-07-28 16:25:32 -05:00
Ash
d133b40b25
Merge branch 'PrismLauncher:develop' into develop 2023-07-28 21:22:35 +00:00
Trial97
c3eb17db74
removed unneded if condition
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 13:22:04 +03:00
Trial97
4789708cc2
added missing )
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 13:16:57 +03:00
Alexandru Ionut Tripon
83fce74bb1
Update launcher/ui/dialogs/NewInstanceDialog.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-07-28 13:11:56 +03:00
Trial97
fcac98b367
removed comment
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 10:05:22 +03:00
Trial97
97ff7afbe7
keep the icon suffix
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 08:37:45 +03:00
Trial97
7e58b965b7
refactor icon list
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 01:20:05 +03:00
Trial97
1ca7e5efe9
added license header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 01:20:05 +03:00
Trial97
d460986de0
format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 01:20:05 +03:00
Sefa Eyeoglu
bdec11c501
Merge pull request #1437 from LostLuma/instance-export-ignore-caches-2 2023-07-27 09:40:31 +02:00
Sefa Eyeoglu
b1aa9e5846
refactor: introduce internal Launcher_ENABLE_UPDATER variable
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-27 09:37:56 +02:00
seth
51bfda937d
chore: don't include sparkle when not enabled
Signed-off-by: seth <getchoo@tuta.io>
2023-07-27 02:19:21 -04:00
LostLuma
4a9ea832ff
Ignore cache files entirely, also apply to modpack export
Signed-off-by: LostLuma <lilly@lostluma.net>
2023-07-27 01:42:14 +02:00
seth
a8498b0dab
chore: make INSTALL_BUNDLE a cached variable
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 19:03:14 -04:00
seth
48e5040196
feat: disable sparkle when update url is empty
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 19:01:39 -04:00
seth
928e18b66d
Merge pull request #1446 from getchoo/nix-fixes
disable darwin in flake + cleanup garnix.yaml + fix markdownlint warnings
2023-07-26 17:10:07 -04:00
Trial97
62aa7a52c4
fiexed conflicts
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-27 00:07:38 +03:00
Trial97
3c472fd7e0
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into prism_export2 2023-07-27 00:05:59 +03:00
Trial97
b15f689ccf
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions 2023-07-27 00:03:42 +03:00
Sefa Eyeoglu
d960effb99
Merge pull request #1447 from getchoo/typomoment
fix: typo in task.h
2023-07-26 22:56:31 +02:00
Trial97
1e82cb6a7c
fix: add support for QByteArray inifile
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-26 23:56:01 +03:00
Alexandru Ionut Tripon
31b62203a7
Update launcher/ui/MainWindow.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-07-26 23:44:35 +03:00
seth
af59c41713
fix: typo in task.h
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 16:20:30 -04:00
seth
f7ffbcca6c
chore(docs): correct markdownlint warnings
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 14:49:09 -04:00
seth
342a0d0091
fix(nix): disable x86_64-darwin
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 14:49:09 -04:00
seth
1974bb7e59
chore(ci): cleanup garnix.yaml
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 14:49:05 -04:00
Trial97
e6b4fc9182
removed quilt warning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-26 21:36:40 +03:00
Trial97
c778dcbc9c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-07-26 21:33:15 +03:00
Sefa Eyeoglu
a0944dab7a
Merge pull request #1438 from Scrumplex/update-docs 2023-07-26 20:30:04 +02:00
TheKodeToad
719d87de3b
Update MainWindow.ui
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-26 17:21:12 +01:00
TheKodeToad
816acc9c76 Open catpak folder action
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-26 17:19:39 +01:00
LostLuma
a9fefb2eeb
Address review comments
Signed-off-by: LostLuma <lilly@lostluma.net>
2023-07-26 15:22:22 +02:00
Sefa Eyeoglu
4ad448993c
fix: fix typo in README
Co-authored-by: Tayou <31988415+TayouVR@users.noreply.github.com>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-26 14:48:53 +02:00
Sefa Eyeoglu
bcadffa0e3
Merge pull request #1434 from getchoo/garnix 2023-07-26 14:47:14 +02:00
TheKodeToad
ce2d2c9f32
Merge pull request #1427 from tjw123hh/develop
Add some missing strings to translations
2023-07-26 13:41:54 +01:00
Sefa Eyeoglu
6f652e1d2f
chore: update information for downstreams
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-26 14:38:34 +02:00
LostLuma
361583edfc
Ignore cache files when exporting instances
Signed-off-by: LostLuma <lilly@lostluma.net>
2023-07-26 04:23:01 +02:00
seth
fbf29274e8
chore(ci): remove nix job
we're using garnix now

Signed-off-by: seth <getchoo@tuta.io>
2023-07-25 19:23:17 -04:00
seth
3c35d647b8
feat(ci): init garnix.yaml
Signed-off-by: seth <getchoo@tuta.io>
2023-07-25 19:18:30 -04:00
TheKodeToad
b4159d30fc Revert permission change
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-25 15:17:20 +01:00
tjw123hh
f843d0732b Merge branch 'develop' of https://github.com/tjw123hh/PrismLauncher into develop 2023-07-25 17:36:38 +08:00
tjw123hh
280f041acb Delete some incorrect notr="true" tags
Signed-off-by: tjw123hh <tjw123hh@outlook.com>
2023-07-25 17:35:31 +08:00
Sefa Eyeoglu
4f00012268
Merge pull request #1426 from TheKodeToad/token-censor-fix 2023-07-24 20:41:23 +02:00
tjw123hh
4ab630b832
Update org.prismlauncher.PrismLauncher.desktop.in
Signed-off-by: tjw123hh <56749271+tjw123hh@users.noreply.github.com>
2023-07-24 20:50:11 +08:00
tjw123hh
a32ca43288 DCO Remediation Commit for tjw123hh <tjw123hh@outlook.com>
I, tjw123hh <tjw123hh@outlook.com>, hereby add my Signed-off-by to this commit: 6a01c277e8

Signed-off-by: tjw123hh <tjw123hh@outlook.com>
2023-07-24 20:48:27 +08:00
TheKodeToad
f505d43fc0 Fix token "0" being replaced
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-24 13:43:26 +01:00
tjw123hh
6a01c277e8 Delete some incorrect tags 2023-07-24 20:41:22 +08:00
Sefa Eyeoglu
684c2ec47a
Merge pull request #1420 from PrismLauncher/update_flake_lock_action 2023-07-23 11:45:31 +02:00
seth
273d75fd51
Merge pull request #1419 from pandaninjas/update-libnbtplusplus
Update libnbtplusplus submodule
2023-07-22 20:41:27 -04:00
github-actions[bot]
6f6b0b9661 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'libnbtplusplus':
    'github:PrismLauncher/libnbtplusplus/2203af7eeb48c45398139b583615134efd8d407f' (2022-04-15)
  → 'github:PrismLauncher/libnbtplusplus/a5e8fd52b8bf4ab5d5bcc042b2a247867589985f' (2023-07-22)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/46ed466081b9cad1125b11f11a2af5cc40b942c7' (2023-07-15)
  → 'github:nixos/nixpkgs/f465da166263bc0d4b39dfd4ca28b777c92d4b73' (2023-07-22)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/5e28316db471d1ac234beb70031b635437421dd6' (2023-07-14)
  → 'github:cachix/pre-commit-hooks.nix/eb433bff05b285258be76513add6f6c57b441775' (2023-07-18)
2023-07-23 00:21:25 +00:00
PandaNinjas
2253100ac6 Update libnbtplusplus submodule
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-22 14:26:49 -04:00
Trial97
b31644e228
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-22 18:16:03 +03:00
TheKodeToad
57430fd189
Merge branch 'develop' into better-launch
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-22 11:26:02 +01:00
TheKodeToad
6ffcfcd7e9
Merge pull request #1402 from Trial97/flame_import
feat:made flame instace creation use metadata for recommended version
2023-07-22 11:14:12 +01:00
TheKodeToad
516ddb22ae More catpack changes :3
This is just embarrasing

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-22 11:05:58 +01:00
Trial97
0b74b3833a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import 2023-07-21 19:30:06 +03:00
Trial97
ef21879df4
replaced require with ensure for jvmArgs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-21 19:30:00 +03:00
Trial97
ad92c30472
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into welcome_background
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-21 19:12:16 +03:00
TheKodeToad
bfafbdc51e
Merge branch 'develop' into env-vars
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-21 14:30:24 +01:00
TheKodeToad
1a7c5693cc Remove redundant methods
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-21 13:01:01 +01:00
TheKodeToad
f8b935ab37 Merge remote-tracking branch 'upstream/develop' into icon-indexing 2023-07-21 12:48:05 +01:00
TheKodeToad
8705e88e91
Fix build on Windows
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-21 11:19:55 +01:00
TheKodeToad
0be4db30eb
Merge branch 'PrismLauncher:develop' into better-component-installation 2023-07-21 11:02:57 +01:00
Sefa Eyeoglu
821dd8400b
Merge pull request #1253 from Trial97/catpacks 2023-07-21 11:11:12 +02:00
TheKodeToad
c37e1fb9f1
Merge branch 'develop' into skinfix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-20 18:11:27 +01:00
TheKodeToad
5088d33fd2 Finish things :P
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-20 14:17:01 +01:00
TheKodeToad
39f7bea53e
Revert accidental change in MainWindow
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-20 14:13:29 +01:00
TheKodeToad
842f08dcfc (UX) Add open folder button next to combo boxes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-20 11:54:15 +01:00
Trial97
f8d9cd9a03
use range for
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-19 23:08:16 +03:00
TheKodeToad
960093700a Better theme reset
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 20:57:08 +01:00
TheKodeToad
54d393632d Automatically create theme folders, and add an action to open them
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 16:29:52 +01:00
TheKodeToad
c633c6d083 Colors->Widgets
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 14:19:28 +01:00
TheKodeToad
96ebdfc9a8 Sorting and invalid reset
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 14:12:39 +01:00
TheKodeToad
f55120654a
Merge branch 'PrismLauncher:develop' into icon-indexing 2023-07-19 12:51:26 +01:00
TheKodeToad
44ca7c7d22 Licenses
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 12:29:51 +01:00
TheKodeToad
58c2059e10 Remove recursion
It will add icon packs which aren't available - as QIcon's search paths are not recursed!

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 10:38:56 +01:00
Trial97
b7bccb9058
removed subdirectory flag
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-19 12:27:02 +03:00
Trial97
f046bd7d50
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-07-19 12:26:12 +03:00
TheKodeToad
593f452986
Merge pull request #1399 from Scrumplex/offline-uuid
fix: generate predictable UUIDs for offline accounts
2023-07-19 10:16:27 +01:00
TheKodeToad
97662f5c8e Multiple icon themes!
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-18 22:51:34 +01:00
seth
f8d88cc83d
Merge pull request #1372 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-07-18 21:19:58 +00:00
Trial97
f393aa684e
wait to load metadata
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-18 23:59:43 +03:00
Trial97
4c319c8f4f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into flame_import 2023-07-18 23:49:52 +03:00
Trial97
477b72ad33
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into prism_export2 2023-07-18 23:48:02 +03:00
Sefa Eyeoglu
3728cbb62a
Merge pull request #1397 from Gaming32/develop 2023-07-18 22:47:55 +02:00
Trial97
015f88bf83
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-18 23:46:19 +03:00
Trial97
02082cda09
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into update_file 2023-07-18 23:40:11 +03:00
Trial97
5eec0f5901
feat:managed packs can update from file
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-18 23:40:03 +03:00
Sefa Eyeoglu
3fbc25155b
Merge pull request #1362 from Trial97/fix_warning 2023-07-18 22:28:27 +02:00
Sefa Eyeoglu
ecac05b2fc
Merge pull request #1378 from Trial97/prism_export
Added progress bar to Prism instance export
2023-07-18 22:26:56 +02:00
seth
5b54475d3e
Merge pull request #1385 from orowith2os/flatpak-updates
Update Flatpak manifest
2023-07-18 20:12:39 +00:00
Trial97
391497645f
feat:made flame instace creation use metadata for recommended version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-18 22:33:39 +03:00
Sefa Eyeoglu
f8fcb98c68
fix: generate predictable UUIDs for offline accounts
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-18 10:07:35 +02:00
Dallas Strouse
2eff1de560
Update Flatpak manifest
Signed-off-by: Dallas Strouse <dastrouses@gmail.com>
2023-07-17 22:38:12 -05:00
Josiah Glosson
1fbb41f5e2
Make Launch Offline not launch online in 1.6+
Signed-off-by: Josiah Glosson <soujournme@gmail.com>
2023-07-17 17:07:06 -05:00
TheKodeToad
01afa8957f
Merge pull request #1387 from Scrumplex/fix-quilt-beacon
Check if any modloader is installed
2023-07-17 17:40:42 +01:00
Trial97
5162203c7d
Merge branch 'prism_export' of github.com:Trial97/PrismLauncher into prism_export2
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 17:58:42 +03:00
Trial97
b0940d696b
Added QFutureWatcher
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>

abort

forgot

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 17:52:00 +03:00
Trial97
fe73d696cb
replace emplace with insert
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 17:24:29 +03:00
Trial97
2ea4a78541
Upgraded ExportToZipTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 17:24:23 +03:00
Trial97
f5891940e0
translate strings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 17:22:35 +03:00
Trial97
cd9310afed
replace emplace with insert
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 16:57:52 +03:00
Trial97
64041a84a2
handle file removal in ExportToZipTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 16:55:26 +03:00
Trial97
78ee63af38
simplify modrinth export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 16:40:01 +03:00
Trial97
455c495338
simplify flame export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>

s
2023-07-17 16:27:08 +03:00
Trial97
0bf70d677e
Upgraded ExportToZipTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 16:24:43 +03:00
Sefa Eyeoglu
2be630904f
fix: don't take modloaders by reference
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-17 14:33:01 +02:00
TheKodeToad
49cebc2da4 More consistent behaviour
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-17 12:49:12 +01:00
TheKodeToad
049abc9b1a Merge remote-tracking branch 'upstream/develop' into rename-groups 2023-07-17 12:13:58 +01:00
Tayou
e8c44e700d
Merge pull request #1286 from TayouVR/better-instance-group-separator 2023-07-17 11:55:31 +02:00
Sefa Eyeoglu
54a091ca59
fix: check if any modloader is installed
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-17 10:09:01 +02:00
Trial97
ec32618e11
reveted back to add years
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 10:20:22 +03:00
Sefa Eyeoglu
aaf1726965
Merge pull request #1357 from getchoo/quilt-beacon
feat: add toggle for quilt beacon
2023-07-17 06:42:46 +02:00
seth
6b970954d6
Merge pull request #1381 from getchoo/backporting-docs
chore(docs): add backporting info to CONTRIBUTING.md
2023-07-16 18:36:51 -04:00
TheKodeToad
fb5aefffb2 Reduce bugginess
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-16 23:36:01 +01:00
TheKodeToad
20e2c70464 Rename groups and janky reference counting map
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-16 23:23:33 +01:00
seth
ed2f680202
chore(docs): add backporting info to CONTRIBUTING.md
Signed-off-by: seth <getchoo@tuta.io>
2023-07-16 17:28:52 -04:00
seth
5e0df9b696
Merge pull request #1276 from Scrumplex/print-build-platform
Print build platform on launch
2023-07-16 17:15:55 -04:00
Alexandru Ionut Tripon
ec41252535
Update launcher/MMCZip.h
Co-authored-by: Tayou <31988415+TayouVR@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-07-16 23:47:54 +03:00
Alexandru Ionut Tripon
4df9df03ab
Update launcher/MMCZip.cpp
Co-authored-by: Tayou <31988415+TayouVR@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-07-16 23:47:47 +03:00
Trial97
7441974d9d
Removed icon
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 21:23:22 +03:00
Trial97
79222a56e3
use shared pointer
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>

use shared pointer
2023-07-16 21:14:39 +03:00
Trial97
cadb7142f0
Added progress bar to Prism instance export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 20:57:57 +03:00
Trial97
251055302e
format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 20:53:58 +03:00
Sefa Eyeoglu
b54d1651ab
Merge pull request #1373 from Scrumplex/backport-bot 2023-07-16 19:42:09 +02:00
Trial97
9d0175b81a
Added welcome screen
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 17:46:00 +03:00
Trial97
002430db46
added path to flatpack
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 15:43:47 +03:00
Trial97
de30a72c4e
made the date a object
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 15:16:16 +03:00
Trial97
0a956bbc73
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-07-16 14:18:26 +03:00
Trial97
1e9a596908
simplified code in cat packs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 14:18:17 +03:00
Sefa Eyeoglu
b9568279dc
Merge pull request #1010 from TayouVR/add_default_editorconfig 2023-07-16 12:30:22 +02:00
Sefa Eyeoglu
fcdd9ea986
Merge pull request #1246 from Trial97/export 2023-07-16 12:24:42 +02:00
Sefa Eyeoglu
c145bfa524
Merge pull request #1369 from Trial97/autoselect 2023-07-16 12:21:17 +02:00
Sefa Eyeoglu
18ebc858fd
feat(actions): add backport action
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-16 11:47:54 +02:00
github-actions[bot]
6597a5c860 chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/267149c58a14d15f7f81b4d737308421de9d7152' (2023-07-01)
  → 'github:hercules-ci/flake-parts/8e8d955c22df93dbe24f19ea04f47a74adbdc5ec' (2023-07-04)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/cd99c2b3c9f160cd004318e0697f90bbd5960825' (2023-07-01)
  → 'github:nixos/nixpkgs/46ed466081b9cad1125b11f11a2af5cc40b942c7' (2023-07-15)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/42587d3414d1747999a5f71e92a83cf6547b62da' (2023-07-03)
  → 'github:cachix/pre-commit-hooks.nix/5e28316db471d1ac234beb70031b635437421dd6' (2023-07-14)
2023-07-16 00:23:55 +00:00
Trial97
a3ffa64550
Upgraded pack changelog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 01:59:08 +03:00
Tayou
a6305ac891
Merge pull request #1368 from Trial97/crash_curse_import 2023-07-15 23:13:00 +02:00
Trial97
06fc8358d9
auto focus search line on resource download
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 23:57:32 +03:00
Trial97
c346d875a2
make FileResolvingTask accept empty modlist
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 23:26:52 +03:00
seth
a2a09ffe01
chore: better explain quilt loader beacon
Signed-off-by: seth <getchoo@tuta.io>
2023-07-15 14:25:05 -04:00
Trial97
21ffed3bf5
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 20:35:11 +03:00
Trial97
fd7aab466b
Merge branch 'refactor/net-split-headers-to-proxy-class' of https://github.com/Ryex/PrismLauncher into refactor/NetActions 2023-07-15 20:33:48 +03:00
Alexandru Ionut Tripon
da87e825a1
Update launcher/ui/dialogs/ExportToModListDialog.ui
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-07-15 15:59:19 +03:00
Trial97
7befd63cce
fixed settings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 00:28:58 +03:00
Alexandru Ionut Tripon
2c2c39b42c
Update launcher/modplatform/import_ftb/PackInstallTask.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-07-15 00:17:48 +03:00
Alexandru Ionut Tripon
0692cbe701
Update launcher/modplatform/import_ftb/PackInstallTask.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-07-15 00:17:32 +03:00
Trial97
ab10524cd7
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:45:40 +03:00
Trial97
1ccfba13eb
renames
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:41:51 +03:00
Trial97
b9ed8283b7
Added buttons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:41:45 +03:00
Trial97
1495bfb73e
Made custom template enabled all time
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:41:37 +03:00
Trial97
9b02c31f8d
escaped text for html export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:35:18 +03:00
Trial97
50dae9d4f3
Moved to separate functions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:34:28 +03:00
Trial97
9a3931dac6
Added json and csv format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:34:21 +03:00
Trial97
515197fba2
fix: html sintax for modlist export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:34:03 +03:00
Trial97
149b6d59cf
fixed tests
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:22:11 +03:00
Rachel Powers
37fb52aada
Merge pull request #1351 from Trial97/ftb_import
fixed substatus on ftb_import
2023-07-14 12:41:21 -07:00
Trial97
db9f5f44e0
Split in two the options
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 22:26:22 +03:00
seth
094af0f78f
Merge pull request #1336 from Ryex/packaging/fix-duplicate-share-directories
packaging: fix duplicate share directories (use only lowercase)
2023-07-14 14:19:44 -04:00
Trial97
cebb4dd17a
made the number of concurrent tasks configurable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 20:39:53 +03:00
Rachel Powers
3487e1cb64
Update launcher/Application.cpp
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-14 03:56:18 -07:00
Trial97
440afcedb0
fixed warning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 13:32:18 +03:00
Trial97
b0a21c9389
insert header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 13:31:28 +03:00
Trial97
fc4a1ef193
format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 13:31:13 +03:00
Trial97
c8533c0b0d
fixed substatus on ftb_import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 12:29:03 +03:00
Trial97
b0a018d823
format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 12:28:23 +03:00
Sefa Eyeoglu
3becd4386b
Merge pull request #1306 from Ryex/ci/address-sanitiser_on_debug_builds 2023-07-14 10:11:34 +02:00
seth
3099a70edc
Merge pull request #1335 from Ryex/fix/gh-1322-old-zip-mods-in-wrong-place
fix(flame install): don't assume .zip is a resource pack. default to mod
2023-07-14 00:16:43 -04:00
Rachel Powers
cde85947c7
Update launcher/minecraft/mod/tasks/LocalResourceParse.cpp
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-13 21:12:12 -07:00
Rachel Powers
5d10045cc8
Merge pull request #1352 from Trial97/crash_after_abort
Do not reset shared pointer if it's already empty
2023-07-13 21:11:47 -07:00
Rachel Powers
520594e529
Merge branch 'develop' into chore/add-compiler-warnings
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-13 20:05:16 -07:00
Rachel Powers
95b300f1ea
packaging: use PascalCase folder name instead
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-13 19:56:36 -07:00
Trial97
bd6e8533ad
send by reference
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-13 19:58:08 +03:00
Trial97
843c2d67eb
Added FTBAPP Import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-13 18:41:29 +03:00
seth
89aaedc06c
feat: add toggle for quilt beacon
Signed-off-by: seth <getchoo@tuta.io>
2023-07-12 21:10:48 -04:00
Tayou
94d4d12ee0
Merge pull request #1345 from Trial97/time2
feat:Added option to use system locale
2023-07-13 01:56:12 +02:00
TheKodeToad
997a3709d4 Custom environment variables UI and implementation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-12 19:21:38 +01:00
Trial97
76cc8ce043
renamed setting
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-12 21:05:13 +03:00
Rachel Powers
9499066375
Merge pull request #1350 from Trial97/fix_managed_pack_crash
fixed crash if no version is loaded on managed page
2023-07-12 09:55:31 -07:00
Trial97
25f7cf23d3
the other place
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-12 19:55:11 +03:00
Trial97
9ee68b9268
small pointer check
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-12 18:12:31 +03:00
leo78913
1208300ddf
i forgor to change skin upload browse button
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-07-12 10:57:40 -03:00
Sefa Eyeoglu
06a7d447f6
Merge pull request #1333 from Ryex/fix/null_instance_edit_crash 2023-07-12 15:53:46 +02:00
Trial97
766e833a73
fixed crash if no version is loaded
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-12 16:25:05 +03:00
Rachel Powers
6d5a2ceefe
fix(flameapi): getFile use shared_ptr
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-11 21:45:23 -07:00
Rachel Powers
149bc8e9ce
cleanup: pull out data object so I'm not repeating myself
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-11 21:42:34 -07:00
Rachel Powers
9957aeb003
Merge branch 'develop' into curseforge-url-handle 2023-07-11 21:42:29 -07:00
Trial97
634612ae81
added missing header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-11 18:20:44 +03:00
Trial97
f0d2aab784
feat:Added option to use system locale
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-11 18:05:43 +03:00
TheKodeToad
4c69290381
Merge branch 'develop' into better-component-installation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-11 11:14:06 +01:00
seth
640aaa8c23
Merge pull request #1331 from TheKodeToad/hungry-trash
Fix updating trashing resources
2023-07-10 16:31:43 -04:00
Rachel Powers
1aa5fa03f9
Update launcher/ui/MainWindow.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-10 12:05:01 -07:00
Nathan
99ba02afb6
Shortcuts on macOS (#1081)
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-10 20:26:25 +02:00
TheKodeToad
9aedb5afff
Merge pull request #1334 from TheKodeToad/litemod-dl
LiteMod downloading
2023-07-10 16:42:38 +01:00
TheKodeToad
e21756ea8c Remove direct launch
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-10 16:22:37 +01:00
Trial97
35ccfdb799
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-10 16:25:15 +03:00
TheKodeToad
91c9082d19
Merge pull request #1249 from Trial97/curse
Curseforge modpack export
2023-07-10 14:20:29 +01:00
TheKodeToad
4f4ccdaa59
Merge pull request #1338 from Trial97/unlockVersionPage
feat:unlocked versions page
2023-07-10 13:06:32 +01:00
Rachel Powers
01e058d8c1
Merge pull request #1337 from getchoo/fix-flake-workflow
fix(actions): give update-flake content write perms
2023-07-09 14:11:33 -07:00
TheKodeToad
f816e3cd3f
Merge pull request #1241 from Trial97/settings
Allow editing of running instances
2023-07-09 22:10:43 +01:00
Rachel Powers
49109b9213
Merge pull request #1332 from TheKodeToad/widebar-pain
Fix crash when editing instance and prevent similar crashes in future
2023-07-09 14:07:34 -07:00
Rachel Powers
d43399c2b4
Merge pull request #1321 from TheKodeToad/mr-optional
Optional mods in mrpack export
2023-07-09 14:03:47 -07:00
Trial97
308877aa8f
removed redundant code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-09 23:18:38 +03:00
Trial97
159f14c076
feat:unlocked versions page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-09 22:47:38 +03:00
seth
8e4de055b8
chore(actions): only run update-flake in our repo
Signed-off-by: seth <getchoo@tuta.io>
2023-07-09 15:43:54 -04:00
Trial97
d7f4e40f85
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-07-09 19:38:17 +03:00
TheKodeToad
6e2fcc9e11 Replace string manipulation in favour of QFileInfo
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-09 12:08:15 +01:00
seth
0d31e31282
fix(actions): give update-flake content write perms
Signed-off-by: seth <getchoo@tuta.io>
2023-07-09 01:56:21 -04:00
Rachel Powers
4dc4c589ba
packaging: fix duplicate share directories (use only lowercase)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-08 15:44:09 -07:00
TheKodeToad
d53d58a5d4 LiteMod downloading
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-08 22:16:43 +01:00
Rachel Powers
e704072892
fix(flame install): don't assume .zip is a resource pack. default to mod
let identifier move it if needed

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-08 13:38:00 -07:00
Rachel Powers
a54bbae622
fix(instance edit): don't allow editing if no selected instance or instance doesn't support editing
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-08 12:59:55 -07:00
TheKodeToad
08c140b9b4 Fix actionVisitItemPage insersion, and prevent widebar segfault
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-08 20:55:30 +01:00
TheKodeToad
0c6362f28d Make trash hungry
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-08 18:51:28 +01:00
seth
67d473aab7
Merge pull request #1329 from Ryex/fix/progress_dialog_centering
fix(progress dialog): if there is a parent center on creation
2023-07-08 07:50:13 -04:00
Rachel Powers
20c781b23b
fix(progress dialog): if there is a parent center on creation
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-08 02:28:37 -07:00
Rachel Powers
7f138e3538
Merge branch 'develop' into ci/address-sanitiser_on_debug_builds 2023-07-08 01:27:30 -07:00
Rachel Powers
3211b265d7
Merge pull request #1302 from Ryex/fix/progress-dialog-segfault
fix: segfault in progress dialog
2023-07-07 21:25:14 -07:00
Trial97
bc2940e16a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into settings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-08 00:14:05 +03:00
Tayou
1131038fdb
Merge pull request #1120 from Trial97/visit_mod_page 2023-07-07 22:23:59 +02:00
seth
d1528c1044
Merge pull request #1325 from Scrumplex/validate-meta-url
Validate Meta URL
2023-07-07 14:31:22 -04:00
ashuntu
51d7a6289e Fix URL open crash (#596) 2023-07-07 13:24:31 -05:00
ashuntu
10678096e5 Persist app data between install versions 2023-07-07 13:20:15 -05:00
Sefa Eyeoglu
51e62761ee
fix: improve QUrl construction
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-07 19:25:12 +02:00
leo78913
d1cceac7d1
disable hiding enable and name columns on folder models
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-07-07 12:37:24 -03:00
TheKodeToad
b8482a5d89
Update ModFolderPage.cpp
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-07 15:53:50 +01:00
Trial97
3139af8487
Made action text simpler
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-07 17:12:10 +03:00
Sefa Eyeoglu
6fcdac0d36
fix: reset invalid meta url on launch
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-07 15:57:25 +02:00
Sefa Eyeoglu
073cb91f88
fix(ui): validate meta override url
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-07 15:56:07 +02:00
leo78913
3154c2644a
enable tear off on widebar context menu
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-07-07 10:30:18 -03:00
Sefa Eyeoglu
e225a72180
Merge pull request #1128 from pandaninjas/fix-implicit-fallthrough 2023-07-07 15:19:00 +02:00
TheKodeToad
ec85266860
Memory leak fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-07 12:18:04 +01:00
TheKodeToad
4c25e3ce75 Add keyboard shortcut to Kill action
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-06 21:04:21 +01:00
TheKodeToad
8ae67b84db Optional mods in mrpack export
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-06 20:04:26 +01:00
TheKodeToad
440dcdf022 Import QActionGroup properly :P
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-06 18:31:59 +01:00
TheKodeToad
22327bbe71 Combine launch buttons in Instance window, persist profiler
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-06 18:07:45 +01:00
flow
b8b8c8d4ac fix(tests): Fix abort of Task test on Linux
Not sure exactly what caused the issue, though I suppose using QThread's
exec instead of our own thingie is nice. I can't remember why I didn't
use that before, so I hope there's no issue with that! :^)

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-07-06 09:49:07 -07:00
Trial97
93870c315f
better url handling
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-06 18:46:59 +03:00
PandaNinjas
13d67c6524
Keep formatting consistent
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-06 08:51:42 -04:00
leo78913
e8dc1564b6
add _kde_side_panel_view property to page container
With this the sidebars look better with the breeze theme

Signed-off-by: leo78913 <leo3758@riseup.net>
2023-07-06 01:39:59 -03:00
leo78913
f9578066d6
make "browse" buttons and java pages more consistent
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-07-06 01:39:59 -03:00
Rachel Powers
71e73bb6f8
fix(tests): linux big task memory leak.
- move big_task into function scope

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-05 21:18:49 -07:00
Rachel Powers
8638076aa1
fix(test): tasks test memmory leak. don't store local task copy.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-05 20:19:22 -07:00
Rachel Powers
965ee5687a
fix(test): task test memory leak *again*
- put Big thread on the stack so stack will clean it up.

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-05 20:05:18 -07:00
seth
2cb22ad280
Merge pull request #1310 from getchoo/autoupdate-flake
feat(actions): add update-flake-lock
2023-07-05 23:25:12 +00:00
Rachel Powers
4dbcedd03f
fix: Task test memory leaks again
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-05 11:51:37 -07:00
Sefa Eyeoglu
5ba13297c6
Merge pull request #1284 from Ryex/fix/properly-track-failed-copies-and-clones 2023-07-05 19:26:07 +02:00
Rachel Powers
5fe9a7a6c3
fix: extra } in CXX args
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-05 03:02:20 -07:00
Rachel Powers
a028894855
Apply suggestions from code review
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-04 23:43:39 -07:00
Rachel Powers
183ed7b90b
chore: cleanup compiler type branches
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-04 19:43:22 -07:00
seth
24b9ed106f
feat(actions): add update-flake-lock
Signed-off-by: seth <getchoo@tuta.io>
2023-07-04 18:49:22 -04:00
seth
7c8a010378
Merge pull request #1304 from Scrumplex/chore-flake-update-1
flake.lock: Update
2023-07-04 22:43:00 +00:00
PandaNinjas
817ecf8225
Fix VersionProxyModel.cpp
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-04 17:19:08 -04:00
PandaNinjas
4509fde410
Merge branch 'develop' into fix-implicit-fallthrough
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-04 16:41:34 -04:00
PandaNinjas
34cf28712c
Replace break with return true;
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-04 16:39:24 -04:00
PandaNinjas
1fbc17d275
Remove break and add fallthrough comment in WorldListPage.cpp
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-04 16:38:04 -04:00
Trial97
908ac813e0
escaped modlist inner html
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-04 15:16:54 +03:00
Rachel Powers
3c96d5e0d5
fix: memory leaks in tests
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-03 20:28:03 -07:00
Rachel Powers
c5705705d5
fix: memory leaks in ResourceModel Test
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-03 18:35:42 -07:00
Rachel Powers
03a1d68b74
fix: memory leaks in filesystem test
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-03 18:18:48 -07:00
Rachel Powers
50eff80ca1
build: optimize address-sanitizer
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-03 18:07:59 -07:00
Rachel Powers
96c118779d
build: enable address sanitiser in debug builds
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-03 17:48:44 -07:00
TheKodeToad
64c591b234 Better parent version filtering; handle old fabric :P
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-03 20:48:37 +01:00
TheKodeToad
0e5c377680 Various tweaks
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-03 17:39:09 +01:00
Trial97
6d758795af
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-03 17:00:56 +03:00
Tayou
dedc9e4edc
Merge pull request #1127 from Trial97/scale_cat 2023-07-03 15:46:56 +02:00
Trial97
fa7cfc77d8
fixed template
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-03 16:08:20 +03:00
Sefa Eyeoglu
14692eed40
flake.lock: Update
Flake lock file updates:

• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/006c75898cf814ef9497252b022e91c946ba8e17' (2023-05-08)
  → 'github:hercules-ci/flake-parts/267149c58a14d15f7f81b4d737308421de9d7152' (2023-07-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:NixOS/nixpkgs/da45bf6ec7bbcc5d1e14d3795c025199f28e0de0?dir=lib' (2023-04-30)
  → 'github:NixOS/nixpkgs/4bc72cae107788bf3f24f30db2e2f685c9298dc9?dir=lib' (2023-06-29)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/aeb75dba965e790de427b73315d5addf91a54955' (2023-05-25)
  → 'github:nixos/nixpkgs/cd99c2b3c9f160cd004318e0697f90bbd5960825' (2023-07-01)
• Updated input 'pre-commit-hooks':
    'github:cachix/pre-commit-hooks.nix/61e567d6497bc9556f391faebe5e410e6623217f' (2023-05-23)
  → 'github:cachix/pre-commit-hooks.nix/42587d3414d1747999a5f71e92a83cf6547b62da' (2023-07-03)
• Updated input 'pre-commit-hooks/flake-utils':
    'github:numtide/flake-utils/5aed5285a952e0b949eb3ba02c12fa4fcfef535f' (2022-11-02)
  → 'github:numtide/flake-utils/a1720a10a6cfe8234c0e93907ffe81be440f4cef' (2023-05-31)
• Added input 'pre-commit-hooks/flake-utils/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09)

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-03 14:27:02 +02:00
Trial97
f0aab541f8
fixed typo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-03 15:09:35 +03:00
Trial97
026293f773
updated option text
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-03 14:17:39 +03:00
Trial97
5d5f1b86fd
fixed logic regarding range over multiple years
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-03 09:21:25 +03:00
Trial97
ba159ba971
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-07-03 09:01:22 +03:00
Rachel Powers
e5b9bfb2e7
fix: update if new size is larger
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-02 22:30:25 -07:00
Rachel Powers
8cb8273e67
fix: update if new size is larger
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-02 22:29:45 -07:00
Rachel Powers
73d8343914
fix: header <qpoint.h> -> <QPoint>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-02 22:27:24 -07:00
Rachel Powers
3960eb7d32
fix: properly calculate min size for progress dialog, apply it at creation
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-02 21:24:43 -07:00
Rachel Powers
4004e0faee
fix: segfault in progress dialog
- dialog tries to resize after unhiding the subtask scroll area
- after resize attempts to recenter on parent
  - `calls parentWidget()->{x|y}()`
  - what if there is no parent? nullptr->() = segfault

- recenter on last pos, don't access parent

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-02 20:22:25 -07:00
Rachel Powers
b47993b736
Merge pull request #3 from Trial97/netRefactor3
Fail NetRequest on connection close from QT
2023-07-02 19:32:47 -07:00
Rachel Powers
ca061080c1
Merge pull request #2 from Trial97/feat/acknowledge_release_type
Feat/acknowledge release type
2023-07-02 19:32:25 -07:00
Trial97
f1bd9700f7
Fail NetRequest on connection close from QT
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-02 22:49:58 +03:00
Trial97
5f63c781b4
resolved local vaiables names
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-02 18:50:29 +03:00
TheKodeToad
43e6f05ed5
Merge pull request #1232 from telans/screenshots-update
ScreenshotsPage fixes
2023-07-02 16:44:54 +01:00
Trial97
aad5ca5474
fixed typos
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-02 16:45:15 +03:00
Trial97
cf2393a509
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into settings 2023-07-02 15:56:39 +03:00
Tayou
81c0a1c4bd
antialiasing for all painting, make hitbox fullwidth
Signed-off-by: Tayou <tayou@gmx.net>
2023-07-02 14:01:56 +02:00
Trial97
6fc745e98c
Merge branch 'catpacks' of github.com:Trial97/PrismLauncher into catpacks 2023-07-02 13:34:41 +03:00
Trial97
7579fff532
Added more options for variants planing
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-02 13:34:04 +03:00
Trial97
7ac2a23bc8
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-07-02 13:14:19 +03:00
Trial97
6c4cf085e0
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-02 12:50:45 +03:00
Sefa Eyeoglu
b51f1f1d41
Merge pull request #1298 from TurboWafflz/develop 2023-07-02 09:52:59 +02:00
Rachel Powers
8d7dcdfc5b
chore: fix shadowed member and signed/unsigned mismatch
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

chore: supress unused with [[maybe_unused]]

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

chore: unshadow ^&^& static_cast implicit return

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

chore: deshadow and mark unused in parse task

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

chore: mark unused in folder models

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

chore: deshadow and mark unused with instances

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

chore: more deshadow and unused

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

chore: remove uneeded simicolons

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

chore: mark unused

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

chore: prevent shadow

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-01 23:39:38 -07:00
Finian Wright
3fe518ff2b Fix compiling on OpenBSD
Signed-off-by: Finian Wright <turbowafflz@gmail.com>
2023-07-02 00:36:21 -04:00
Rachel Powers
98d6904e4a
chore: fix propagate mispelling
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-01 17:03:12 -07:00
Rachel Powers
d7d2d9f612
chore: remove WARNINGS_AS_ERRORS
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-01 17:03:11 -07:00
Rachel Powers
2a5d291bd9
fix: toml without exceptions usage
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-01 17:03:11 -07:00
Rachel Powers
e2a65a7077
feat: ensure MSVC using stack unwind semantics
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-01 17:03:11 -07:00
Rachel Powers
671d3c1c80
Merge branch 'develop' into chore/add-compiler-warnings
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-01 17:03:11 -07:00
TheKodeToad
6cc3587da2 Disable as intended
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 20:10:38 +01:00
TheKodeToad
9f9b5254a2 Double-click to install/change version
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 19:39:04 +01:00
TheKodeToad
284e374ae8 Nop
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 19:39:04 +01:00
TheKodeToad
4cdf669154 Modify "Change Version" to use "Install Loader" dialog
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 19:39:04 +01:00
TheKodeToad
4332b62a62 Fix search focusing
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 19:39:04 +01:00
TheKodeToad
7138425c85
Merge branch 'develop' into better-component-installation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 13:05:55 +01:00
Rachel Powers
b67844e74c
fix(windows installer): old installers didn't uninstall first.
now they do so ensure shortcuts stay selected by default

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-30 23:04:55 -07:00
Rachel Powers
cea285f5f5
fix(updater): fix bad exe_name on linux
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-30 21:33:22 -07:00
Rachel Powers
1fd90e9dd0
fix(updater): ensure updater knows binaries are in ./bin/ on linux and can find them
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-30 21:24:30 -07:00
seth
c523765c19
Merge pull request #1292 from Trial97/export5
Removed logs from instance export
2023-07-01 04:14:35 +00:00
Rachel Powers
cd527c44a4
fix(updater): build atrifact fix on linux ci + add qt-ver to artifact name
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-30 18:17:06 -07:00
Rachel Powers
6476023cf7
fix(updater): check the app root dir for binary
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-30 10:57:53 -07:00
Rachel Powers
a01a48793c
fix(updater): force asInvoker for updater on windows
- use `__COMPAT_LAYER` env var in windows to bypass Installer Detection and run as a normal user anyway
  - set up updater directly after main windows is created
  - check update locks before main window

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-30 03:19:21 -07:00
Trial97
18e628e873
removed extra condition
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-30 12:10:00 +03:00
Rachel Powers
00f75e2d54
fix(updater): avoid windows installer detection with "asInvoker" in xml exe.manifest
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-30 00:54:29 -07:00
Trial97
81207c6502
Made sure the logs are ignored when collecting files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-30 10:52:10 +03:00
Rachel Powers
8dd3a02747
Update launcher/Application.cpp
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-29 23:49:31 -07:00
Rachel Powers
3db83a189c
fix(updater): include updater in setup.exe
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-29 22:38:16 -07:00
ashuntu
b6e9a54951 Add snap github action
Signed-off-by: ashuntu <101582426+ashuntu@users.noreply.github.com>
2023-06-29 21:15:07 -05:00
ashuntu
6c374f5f08 Add snapcraft.yaml
Signed-off-by: ashuntu <101582426+ashuntu@users.noreply.github.com>
2023-06-29 21:09:31 -05:00
Rachel Powers
4320830a86
fix(updater): Explicit conversion to string for QByteArray
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-29 17:59:14 -07:00
Rachel Powers
603e3e7e2e
fix(updater): set minimum dialog / msgbox sizes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-29 15:56:44 -07:00
Rachel Powers
109ae5bae0
fix(updater): convert int to string
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-29 15:42:36 -07:00
Rachel Powers
41cb8d7ec6
fix: adjust dialog size, add parent to msgboxes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-29 15:31:12 -07:00
flow
494483fd2b
fix(updater): add parent to dialog to fix issues in tilling WMs
QProgressDialog without parents in Qt tend to cause graphical issues on
some systems, so we add the main window as a parent here!

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-06-29 15:31:11 -07:00
Rachel Powers
a6c8a37a5d
fixa(updater): better update timer logs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-29 14:06:14 -07:00
Trial97
87efa700ab
Removed logs from instance export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-30 00:01:36 +03:00
Rachel Powers
e38adf6006
fix(updater) fixes form first round of testing
- reset update time after check

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-29 14:01:11 -07:00
Trial97
25ffc4c4b0
Refactor ImgurUpload
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-29 17:58:09 +03:00
Tayou
8211befc29
removed magic 5, removed unnecessary QPainter function calls
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 23:24:57 +02:00
Tayou
1dc7f80034
4 clang-tidy changes, update copyright info
while already at it I updated all my emails to use one from my domain
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 23:08:04 +02:00
Rachel Powers
cb7ff81ade
fix: copy needs to overwrite
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-28 13:51:58 -07:00
Rachel Powers
400a2f7201
fix: final fixes
- use `done(code)` for offer dialog

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-28 12:46:28 -07:00
Rachel Powers
c123558314
fix: add build config header & trimlines form stdout
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-28 11:25:59 -07:00
Rachel Powers
f287d9deac
fix add NetRequest source
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-28 11:09:59 -07:00
Tayou
534d156b12
format VisualGroup.cpp file
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 20:06:17 +02:00
Tayou
54d88e4dbf
use QString.isEmpty()
oops
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 20:05:28 +02:00
Rachel Powers
95969e87a1
Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/launcher-updater 2023-06-28 11:05:11 -07:00
Rachel Powers
e29126ca26
fix: add split markdown source
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-28 10:56:16 -07:00
Rachel Powers
1b5c78b066
Merge branch 'develop' into feat/launcher-updater 2023-06-28 10:54:39 -07:00
Trial97
1c3402d081
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions 2023-06-28 20:23:35 +03:00
Tayou
6b3b119db0
give ungrouped instances a group header
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 18:50:44 +02:00
Tayou
66461ac500
some positioning adjustments, deleted the line
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 18:42:49 +02:00
Rachel Powers
46e840fdf1
fix: add thread sleep to wait for resources - add detail text from logs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-28 09:18:07 -07:00
Tayou
7033e28572
update instance group header to more modern style
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 18:00:40 +02:00
Trial97
0008b22d8b
Renamed function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-28 18:41:47 +03:00
Trial97
8f9bd9617f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into scale_cat 2023-06-28 18:29:04 +03:00
Trial97
0f64ee6a5f
Added warnings for running instances
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-28 18:28:25 +03:00
Trial97
c23bf2fd22
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into settings 2023-06-28 17:46:01 +03:00
Trial97
3ad559ab22
Added version type to review message dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-28 17:43:09 +03:00
Trial97
5f1074471d
Corected variable name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-28 13:35:42 +03:00
Trial97
c04cee7ff7
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/acknowledge_release_type
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-28 13:21:00 +03:00
Rachel Powers
4123343130
no need for pre release tag
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-28 00:25:09 -07:00
Sefa Eyeoglu
faec21d572
Merge pull request #1266 from TheKodeToad/smol-tweaks 2023-06-28 08:47:53 +02:00
Rachel Powers
cb35fb8d0e
add optional pre-release tag
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-27 20:37:42 -07:00
seth
213f03351f
Merge pull request #1280 from Trial97/shortcut
Fixed illegal characters in shortcuts name
2023-06-27 20:01:48 +00:00
Rachel Powers
00be211169
Update launcher/FileSystem.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-27 13:01:28 -07:00
seth
90fc720190
Merge pull request #1281 from Trial97/screenshot
Added more information to the screenshot upload warning
2023-06-27 20:01:18 +00:00
Rachel Powers
23b3711f96
fix(filesystem): track failed copies and clones
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-27 12:41:36 -07:00
Rachel Powers
6aa30d334c
Merge pull request #1 from Trial97/refactor/net-split-headers-to-proxy-class
Simplify Upload and Download
2023-06-27 12:08:41 -07:00
Trial97
54cb077b40
Added more information to the screenshot upload warning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-27 19:31:36 +03:00
Trial97
92847b9774
omit icon remove on macos
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-27 19:15:20 +03:00
Trial97
6e5716f097
Fixed illegal characters in shortcuts name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-27 19:05:32 +03:00
Rachel Powers
6f7454243e
fix: prep for changes in #1276
- sign updater

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-26 23:25:07 -07:00
Trial97
45c39d078f
More clenup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-27 09:23:24 +03:00
Trial97
385babb458
Simplify Upload and Download
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-27 08:51:17 +03:00
TheKodeToad
904b128afe
Merge pull request #1277 from Trial97/remove_mojang
Removed unused files
2023-06-26 23:09:27 +01:00
Trial97
dffffc784e
Removed unused files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-26 22:33:10 +03:00
Sefa Eyeoglu
40fb387185
fix(actions): set all build platforms to official
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 11:58:47 +02:00
Sefa Eyeoglu
63acf0a7b4
fix: set default platform to "unknown"
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 11:55:48 +02:00
Sefa Eyeoglu
fce000206f
feat: print build platform in application log
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 11:55:23 +02:00
Sefa Eyeoglu
f5e4171df4
feat: print build platform in log
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 11:54:22 +02:00
Sefa Eyeoglu
0aaec9ae4f
chore: remove obsolete macOS warning
We don't support that macOS version. This check also never worked, as we
never set the platform to that value.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 11:53:48 +02:00
Sefa Eyeoglu
d25452a64e
Merge pull request #1274 from TheKodeToad/java-signature 2023-06-26 11:19:53 +02:00
Sefa Eyeoglu
41d0f74750
Merge pull request #1275 from Scrumplex/git-blame-ignore 2023-06-26 10:56:26 +02:00
Alexandru Ionut Tripon
22bb260ae3
Update launcher/ui/dialogs/ExportToModListDialog.cpp
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-06-26 11:45:26 +03:00
Alexandru Ionut Tripon
d82ae31fc1
Update launcher/ui/dialogs/ExportToModListDialog.cpp
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-06-26 11:45:05 +03:00
Alexandru Ionut Tripon
cf5c01a5b1
Update launcher/ui/dialogs/ExportToModListDialog.cpp
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-06-26 11:44:55 +03:00
Alexandru Ionut Tripon
f2015eee80
Update launcher/ui/MainWindow.ui
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-06-26 11:44:47 +03:00
Rachel Powers
c0f0462550
fix(updater): logs/ folder
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-26 01:41:51 -07:00
Rachel Powers
1f70589deb
feat(updater): tie in part 2, let there be UI!
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-26 01:22:33 -07:00
Sefa Eyeoglu
f8f1c3cf23
chore: add Git Blame ignore file
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 09:08:03 +02:00
Sefa Eyeoglu
ed4dce2fb6
fix: install logo to multimc theme in genicons.sh
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 08:59:48 +02:00
Sefa Eyeoglu
4d49486cc9
Merge pull request #1065 from leo78913/gamescope-close-button 2023-06-26 08:45:28 +02:00
Rachel Powers
b7dd32274c
Proper capture on windows
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 22:30:20 -07:00
Rachel Powers
d8e0b14dc4
feat(updater): tie in updater part 1
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 21:37:47 -07:00
TheKodeToad
8bebd7f042 Generate special signature composed of multiple elements instead of relying on timestamp for Java version cache invalidation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-26 01:30:47 +01:00
Rachel Powers
90da57a806
Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/launcher-updater 2023-06-25 16:13:51 -07:00
Rachel Powers
b142407b21
fix: ensure finished signal is emited
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 16:13:26 -07:00
Rachel Powers
10266f65e4
fix: include ^<optional^> updater doesn't need to know about mods
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 16:10:06 -07:00
seth
c49ee87857
fix(net): fix emit signals in download & upload task
Signed-off-by: seth <getchoo@tuta.io>
2023-06-25 18:56:54 -04:00
Rachel Powers
5b04a17730
Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/launcher-updater 2023-06-25 14:43:45 -07:00
Rachel Powers
4ea0a567bc
DCO Remediation Commit for Rachel Powers <508861+Ryex@users.noreply.github.com>
I, Rachel Powers <508861+Ryex@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 1ba08f4641

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 14:42:16 -07:00
Rachel Powers
8aeec1d52d
fix: use new shared pointer for repsonse buffer
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 14:36:20 -07:00
Rachel Powers
f39d2de0cc
Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/launcher-updater 2023-06-25 14:31:16 -07:00
Rachel Powers
1ba08f4641
fixup! Merge remote-tracking branch 'upstream/develop' into refactor/net-split-headers-to-proxy-class 2023-06-25 14:25:07 -07:00
Rachel Powers
4b65315cdc
chore: add license to headers
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 14:21:55 -07:00
seth
903fae94be
Merge pull request #1272 from Trial97/fix_selected
fix: Page container extra info set on logs page
2023-06-25 21:16:18 +00:00
Rachel Powers
275351e19c
Merge branch 'packaging/appimage-updates' into feat/launcher-updater 2023-06-25 13:51:01 -07:00
Rachel Powers
35c233d4c5
DCO Remediation Commit for Rachel Powers <508861+Ryex@users.noreply.github.com>
I, Rachel Powers <508861+Ryex@users.noreply.github.com>, hereby add my Signed-off-by to this commit: f5729d9a7c

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:32 -07:00
Rachel Powers
e099a3f7e8
feat(updater): packaging - know the updater git repo
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:32 -07:00
Rachel Powers
4313466589
feat(updater): final step for portable install
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:32 -07:00
Rachel Powers
d2a3acd493
fix: filter archive assets from windows non-portable installs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:31 -07:00
Rachel Powers
516dd6bd1a
support windows console
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:31 -07:00
Rachel Powers
44bc60021d
feat(updater): unpack portable archive
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:31 -07:00
Rachel Powers
50d5eb0621
feat(updater): download new & back up old
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:31 -07:00
Rachel Powers
3d3acb7a92
Merge branch 'packaging/appimage-updates' into feat/launcher-updater 2023-06-25 13:47:31 -07:00
Rachel Powers
bee88b1c7f
feat(updater) select valid asset
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:30 -07:00
Rachel Powers
98174b7a37
refactor: use Net tasks for github api download
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:30 -07:00
Rachel Powers
5d03919b59
Merge branch 'packaging/file-manifest-in-portable-install' into feat/windows-updater 2023-06-25 13:47:30 -07:00
Rachel Powers
2357d167b8
Merge branch 'packaging/windows-installer-uninstall-previous' into feat/windows-updater 2023-06-25 13:46:28 -07:00
Rachel Powers
013a26aafe
fix: add ApiUpload to CMakeLists.txt
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:23:43 -07:00
Rachel Powers
fe9927d10d
Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/windows-updater 2023-06-25 12:44:25 -07:00
Rachel Powers
df4fd7df7f
Merge remote-tracking branch 'upstream/develop' into refactor/net-split-headers-to-proxy-class 2023-06-25 12:43:48 -07:00
Rachel Powers
c8ff812ab8
feat(net): ApiUpload ^& fix unfired finished signals
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 12:02:46 -07:00
Trial97
6d0e255ca1
fix: Page container extra info set on logs page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 22:00:33 +03:00
Rachel Powers
3105f314cb
fix: class rename (lsp acitons undid the first rename :P)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 11:09:26 -07:00
Rachel Powers
6db906d623
chore: format
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 11:09:26 -07:00
Rachel Powers
418677ef31
refactor: override / mask static make functions for ApiDownload
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 11:09:25 -07:00
Rachel Powers
9c10965997
refactor: split out setting api headers for downloads
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 11:09:25 -07:00
TheKodeToad
1bd778d0ae
Merge pull request #1270 from TheKodeToad/fix-unchecked-value
Fix unsafe usage of std::optional::value in FlameAPI
2023-06-25 18:24:29 +01:00
Trial97
87155e346c
Complicated a little task progress
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 19:44:18 +03:00
Trial97
52dd09bdf7
Merge branch 'curse' of github.com:Trial97/PrismLauncher into curse 2023-06-25 17:51:30 +03:00
Trial97
d344ffe370
Removed some setProgress calls
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 17:50:56 +03:00
TheKodeToad
4745ab64cd Deduplicate launcher icon
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 15:02:25 +01:00
TheKodeToad
288ea3d19b Remove metaurl function
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 14:52:33 +01:00
TheKodeToad
8ade44c9a3 Simplify
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 14:40:22 +01:00
Trial97
fa3a46498f
Removed dupliacte code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 16:23:50 +03:00
Leo
953a2590e2
Add fixme comment for no SSD detection
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Leo <leo3758@riseup.net>
2023-06-25 10:11:58 -03:00
TheKodeToad
02b628653b Fix markdown header
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 13:43:03 +01:00
Trial97
3546f57a42
Use internal markdown implementation
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 15:17:09 +03:00
Trial97
8d3bc6b6b9
Added markdown QT version check
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 14:58:54 +03:00
TheKodeToad
c75ba0f855
Fix big mistake :iea:
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 12:46:07 +01:00
Trial97
d1603f1945
Made it more similar to mrpack export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 14:43:11 +03:00
Trial97
84c63f4f01
Added plantxt export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 14:11:41 +03:00
TheKodeToad
514080653f Fix unsafe usage of std::optional::value in FlameAPI
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 11:56:28 +01:00
TheKodeToad
603ed22015 Replace accidental usages of QAbstractButton::pressed
This signal is not usually what you want, and creates an inconsistent experience.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 10:36:54 +01:00
Trial97
ef0752972a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into export 2023-06-25 12:26:54 +03:00
Trial97
fd5b155ee7
Added error message when exporting snapshots with curseforge
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 12:24:59 +03:00
Trial97
40fbae8ff6
Fixed links tooltip
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 11:36:37 +03:00
Trial97
ce4a86fbcd
Made custom url function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 10:41:29 +03:00
Trial97
54d7477679
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into visit_mod_page 2023-06-25 10:12:29 +03:00
Trial97
6f7d901a1f
removed extra variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 09:17:28 +03:00
TheKodeToad
5eb71fc6a9 Revert "feat(Mods): hide 'Provider' column when no mods have providers"
With Ryex's change, this causes issues. Apparently you need to sign off reverts! That's just weird...

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-24 23:36:32 +01:00
TheKodeToad
8a3aba1634 Fix Open Global Settings, why not
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-24 23:30:51 +01:00
TheKodeToad
bb8e6ef35e Fix flat white launcher icon
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-24 23:27:01 +01:00
TheKodeToad
529e2054ea A few tweaks, with inspiration from Zeke :3
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-24 23:26:27 +01:00
Trial97
158b07a39e
moved getRequiredBy
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 00:24:08 +03:00
Trial97
932531c8ba
fixed authors
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 23:48:18 +03:00
Trial97
69c21454ec
removed projectID
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 22:15:18 +03:00
Trial97
564e394ec8
feat:Update mods now fills missing dependencies
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 21:48:12 +03:00
Trial97
f0e4e07c05
Updated url function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 20:43:45 +03:00
Trial97
df932c6587
Updated authors string in modlist
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 20:22:18 +03:00
Trial97
81c1a95166
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-24 20:04:56 +03:00
TheKodeToad
bcf45c74a1
Merge pull request #986 from Trial97/develop
Mod dependencies
2023-06-24 14:04:27 +01:00
Trial97
8b576fd2bd
Added translation
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 15:59:55 +03:00
Trial97
7fdd68d768
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-06-24 15:58:55 +03:00
Trial97
f825d7753a
Updated copyright headers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 15:11:15 +03:00
Trial97
19cb6ad588
Updated Modrinth esport messages
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 15:04:18 +03:00
Trial97
4a84084d9d
Added condition for modlist
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 15:02:00 +03:00
Trial97
25579fbedc
Renamed ExportMrPackDialog to ExportPackDialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 14:54:39 +03:00
Trial97
59e1e51903
Removed unused files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 14:51:12 +03:00
Trial97
30ef5475c7
Made sure CurseForge string is corect
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 14:50:05 +03:00
Trial97
9804996db6
Added resource packs to export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 14:37:02 +03:00
Trial97
b774817ada
Merge branch 'curse' of github.com:Trial97/PrismLauncher into curse 2023-06-24 13:24:54 +03:00
Trial97
8939096db6
Fixed windows build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 13:24:40 +03:00
Sefa Eyeoglu
df6d46de9e
Merge pull request #1261 from telans/modrinthexport-url 2023-06-24 10:51:14 +02:00
Alexandru Ionut Tripon
a325d814e2
Update launcher/modplatform/flame/FlamePackExportTask.cpp
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-06-24 11:13:08 +03:00
Trial97
cd1e8dc8cc
Removed modlist checkbox
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 11:12:23 +03:00
Trial97
377707d3db
Merge branch 'curse' of github.com:Trial97/PrismLauncher into curse 2023-06-24 11:02:40 +03:00
Trial97
7ebc8c48a8
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-24 11:02:13 +03:00
Alexandru Ionut Tripon
42bc04a0d2
Update launcher/ui/MainWindow.cpp
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-06-24 11:01:23 +03:00
Rachel Powers
4322222acc
Merge pull request #1255 from Trial97/export4
Added Thumbs.db to excluded files in MrPackExport
2023-06-23 21:40:55 -07:00
seth
cce6a54701
Merge pull request #1258 from leo78913/resources-pack-page-crash-fix
fix: fix crash when hiding columns on resource packs page
2023-06-24 00:39:47 -04:00
Rachel Powers
68865353cf
Merge pull request #1259 from PrismLauncher/update-devs
Update developers
2023-06-23 21:38:16 -07:00
Rachel Powers
0e7f435921
echo to correct var for summary
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-23 20:56:07 -07:00
James Beddek
20ba6e5fb5
modrinth: use encoded url when exporting pack
Ensures that necessary url components such as spaces are encoded.
Prevents an error when submitting the resulting file to modrinth.

See https://discord.com/channels/734077874708938864/1120070731242410024

Fixes: #1226
Signed-off-by: James Beddek <telans@posteo.de>
2023-06-24 15:42:58 +12:00
Trial97
cf94adb363
Added some warnings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 01:05:49 +03:00
TheKodeToad
d74a23d5b2
Update developers
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-23 21:00:55 +01:00
leo78913
750209b8bb
fix: fix crash when hiding columns on resource packs page
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-06-23 16:55:51 -03:00
Trial97
31aaa6d1da
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-23 22:41:06 +03:00
Trial97
823cd3862d
Fixed hash checking
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 22:41:01 +03:00
TheKodeToad
741c23a72a
Merge pull request #1256 from Trial97/fix11
Fixed hashers
2023-06-23 19:53:44 +01:00
Trial97
28de461067
Fixed hashers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 21:38:41 +03:00
Trial97
69c709b05a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 20:01:17 +03:00
Trial97
222a10891c
Fixed merge
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 19:41:55 +03:00
Trial97
cb2671a02c
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-23 19:35:47 +03:00
Trial97
0a56631831
Added curseforge search
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 19:35:41 +03:00
Rachel Powers
046d510134
Merge pull request #1200 from Trial97/net_job_crash
Made ByteSynkArray to use shared_ptr
2023-06-23 09:13:52 -07:00
Trial97
90df092174
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-23 17:29:58 +03:00
Trial97
85bbab0e92
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into net_job_crash 2023-06-23 14:38:30 +03:00
Trial97
67db141203
Renamed getResults to resultsReady
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 14:38:23 +03:00
Alexandru Ionut Tripon
c5ea8367aa
Update launcher/ui/themes/CatPack.cpp
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2023-06-23 14:25:21 +03:00
Trial97
f8adb508ab
Made catpack id optional in catpack.json
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 11:44:40 +03:00
Trial97
6613deca0f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-06-23 11:42:28 +03:00
Trial97
763b3c3236
Added Thumbs.db to excluded files in MrPackExport
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 10:38:26 +03:00
Trial97
718aca3d06
Fixed date constructor
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 09:24:18 +03:00
Trial97
bf95cfb30e
Added CatPacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 01:37:28 +03:00
seth
8df5ab8aa7
Merge pull request #1251 from getchoo/github-clarify
chore: add 'suggest a feature' message in help
2023-06-22 17:13:00 -04:00
seth
83efdccfe1
Merge pull request #1252 from getchoo/import-hehe
chore: avoid confusion in file/url import dialog
2023-06-22 17:12:35 -04:00
Rachel Powers
f1ebec641a
Merge pull request #1058 from Ryex/feature/images-for-resource-page
Feature: image coumn for Mod, Resource Pack, and Texturepack pages
2023-06-22 13:26:47 -07:00
seth
a4521ac0bb
chore: avoid confusion in file/url import dialog
Signed-off-by: seth <getchoo@tuta.io>
2023-06-22 16:15:03 -04:00
Tayou
c5f16276d7
Merge pull request #1235 from ChrisLane/java-check-debug-msg-fix 2023-06-22 22:03:30 +02:00
seth
03361e51ef
chore: add 'suggest a feature' message in help
Signed-off-by: seth <getchoo@tuta.io>
2023-06-22 15:58:53 -04:00
Trial97
85495c794d
changed map tipe
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 21:12:02 +03:00
Trial97
049b02cee4
finished up the curesforge export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 21:06:01 +03:00
TheKodeToad
05d2c1f0b0 Dynamic button text
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-22 18:18:33 +01:00
Trial97
3c9c39cb89
Updated slug for url
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 20:04:23 +03:00
Trial97
377f27b16f
Updated slug for url
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 20:04:06 +03:00
Trial97
58321f3491
Added curseforge export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 20:03:44 +03:00
Trial97
4e07f9574a
Use slug for url
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 18:11:25 +03:00
Trial97
da6f846a49
Use slug for url
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 18:11:03 +03:00
Trial97
9ad356d66f
Added ExportModsToStringTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 17:44:12 +03:00
Trial97
836e8d2e28
Fixed code quality
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 17:39:57 +03:00
Trial97
b84dc8551a
Fixed trigger function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 16:49:19 +03:00
Trial97
f7d502c68c
Added ExportModsToStringDialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 16:08:04 +03:00
Trial97
9d2516a199
Added ExportModsToStringTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 16:07:55 +03:00
TheKodeToad
e7ad373d89
Merge branch 'PrismLauncher:develop' into better-component-installation 2023-06-22 13:22:44 +01:00
TheKodeToad
dea33a3c1d Make selectedPage const 🤦‍♀️
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-22 13:13:25 +01:00
TheKodeToad
1f16380efc Fix
I could use rvalue references and fix my brain fart, but i think regular references are more readable and safer here.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-22 12:56:47 +01:00
Sefa Eyeoglu
05a8232a8f
Merge pull request #1243 from Trial97/export
Added regex expresion to exclude .DS_Store files
2023-06-22 08:09:31 +02:00
Trial97
0063d52952
Merge branch 'settings2' of github.com:Trial97/PrismLauncher into settings 2023-06-21 23:25:37 +03:00
Trial97
2e82c1d40c
Added regex expresion to exclude .DS_Store files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-21 23:22:25 +03:00
Trial97
820892d7cc
Made settings editable when instance is running
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-21 22:42:08 +03:00
Trial97
0d2105dec4
Made buttons on ModsFolderPage enabled all the time
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-21 21:34:40 +03:00
Trial97
480faca559
Removed unused variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-21 21:17:17 +03:00
TheKodeToad
0975dbc3dd
Merge pull request #1228 from Trial97/curent_pack_crash
Fixes #1212
2023-06-21 15:35:09 +01:00
DioEgizio
8aa02320e0
Merge pull request #1231 from telans/modrinth-default-icon
Modrinth: use default icon for non-managed packs
2023-06-21 12:25:26 +02:00
Rachel Powers
470518eb3a
fix: resize columns on hide ^& uniform heights
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-21 02:31:40 -07:00
Trial97
ba609f3600
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into visit_mod_page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-21 09:14:58 +03:00
seth
ca659136e2
Merge pull request #1119 from Trial97/mods_txt
Added dynamic page extra info
2023-06-20 19:56:38 -04:00
seth
f1a6dc5332
Merge pull request #1184 from clickdevin/develop
Fix bugs when updating curseforge modpacks
2023-06-20 19:55:48 -04:00
seth
4eaa7dc8b1
Merge pull request #1234 from Szowisz/develop
Fix compiling on FreeBSD
2023-06-20 19:55:03 -04:00
TheKodeToad
94510edd72 Rework icons (Fabric is blurry now but looks better)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-20 19:57:15 +01:00
Chris Lane
9ad29e8d85
Remove extra spaces in one more Java checker debug
Signed-off-by: Chris Lane <git@chrislane.com>
2023-06-20 15:51:31 +01:00
Chris Lane
07f3d27fb8
Clean up 'Running java checker' debug msg code
Signed-off-by: Chris Lane <git@chrislane.com>
2023-06-20 15:36:25 +01:00
Chris Lane
f2692e60f3
Add missing space in java checker debug message
Signed-off-by: Chris Lane <git@chrislane.com>
2023-06-20 12:44:44 +01:00
James Beddek
009623823d
Modrinth: use default icon for non-managed packs
Fixes: #317
Signed-off-by: James Beddek <telans@posteo.de>
2023-06-20 23:00:13 +12:00
Jakub Wroński
a32a3e25ad
Fix compiling on FreeBSD
Signed-off-by: Jakub Wroński <kubawronski161@gmail.com>
2023-06-20 12:59:47 +02:00
Trial97
3e3be9ae6f
Added fallback for quilt if the API or Kotilin is not present
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-20 13:28:57 +03:00
TheKodeToad
3c648ff9fd
Merge pull request #1233 from p2js/ui-consistency-fix
Remove inconsistent/unneeded question marks in UI
2023-06-20 11:05:26 +01:00
Alfio
f769b0b4c6 Remove inconsistent/unneeded question marks in UI
Signed-off-by: P2 <tomarchioalfio5@gmail.com>
2023-06-20 10:40:27 +02:00
James Beddek
75bd626f33
Screenshots: do not retry image thumbnailing on null result
This causes the thumbnailing thread pool to spend a lot of time attempting to
retry an image that failed. A null result is common where the image is too large
to be allocated (>128MiB alloc).

The repeated retries continue after page delete, causing hangs if a user
tries to exit the application.

Fixes: #1201
Signed-off-by: James Beddek <telans@posteo.de>
2023-06-20 16:59:59 +12:00
James Beddek
f2471f0f68
Screenshots: clear the thumbnailing pool on page delete
Removes pending QThreadPool jobs which linger after page delete.
May help with #1201 by allowing the pool to finish earlier.

Signed-off-by: James Beddek <telans@posteo.de>
2023-06-20 16:54:15 +12:00
James Beddek
d9b24f7705
Screenshots: remove path from watcher if it no longer exists
Signed-off-by: James Beddek <telans@posteo.de>
2023-06-20 16:52:57 +12:00
TheKodeToad
a389983d7d Just use the old ordering
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-20 00:28:42 +01:00
TheKodeToad
82d3755e25 License all the things
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-19 23:36:20 +01:00
TheKodeToad
6ccc7e77f9 Basic, unfinished & broken impl
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-19 22:42:30 +01:00
Trial97
b62e4c0cc7
Fixed build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 21:32:19 +03:00
Trial97
f6f0fbbd9f
Fixed removeIf
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 21:23:48 +03:00
Trial97
c13a90540c
Added overide for Quilt/Fabric
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 21:20:35 +03:00
Trial97
6fd729e285
Fixed regresion regarding modrinth project_id in dependence array
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 17:42:16 +03:00
Trial97
8ad9692daa
Changed qWarning to qDebug for raw data
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 14:10:29 +03:00
Trial97
d02858040e
Fixes #1212
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 13:09:37 +03:00
Trial97
3ee0fec729
Removed mods from lambda
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 12:22:22 +03:00
Trial97
ec063470d7
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into mods_txt 2023-06-19 12:20:50 +03:00
Trial97
b2ed2bf810
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into net_job_crash 2023-06-19 12:01:35 +03:00
Rachel Powers
f8a02a5c9b
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into packaging/appimage-updates 2023-06-19 01:41:14 -07:00
Rachel Powers
6685810081
packaging: sign appimages with gpg
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-19 01:34:14 -07:00
Rachel Powers
53d40df292
packaging: add appimage update capability
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>

packaging(linux): use vars when refrencing qt install dir

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

packaging(appimage): dont use rsync

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

packaging: use runner.workspace when copying files

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

packaging(appimage): put zsync in relase:x

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

use with:token insted of env for GITHUB_TOKEN (which is depricated)

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

fix: appimage zsync needs consistant filenames across verisons

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

upload proper zsync

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

fix: non versioned appimage filename

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-19 00:49:03 -07:00
Sefa Eyeoglu
af6bf11793
Merge pull request #1224 from DioEgizio/add-appstream 2023-06-19 09:35:56 +02:00
DioEgizio
d5b5f0503c chore: change xml name to what linuxdeploy wants
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-06-19 09:17:15 +02:00
DioEgizio
555cb40efd chore: install appstream in appimage
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-06-19 09:17:15 +02:00
seth
9d22fce53f
Merge pull request #1214 from PrismLauncher/renovate/cachix-install-nix-action-22.x
chore(deps): update cachix/install-nix-action action to v22
2023-06-18 22:06:47 -04:00
seth
aee0999daa
Merge pull request #1210 from getchoo/opengl-appimage
fix(appimage): bundle generic opengl lib
2023-06-18 22:06:03 -04:00
Trial97
1bdde1f947
Small fixes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 00:36:37 +03:00
Trial97
319ce8c19f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-06-19 00:06:44 +03:00
Trial97
4e66f55d84
Removed extra headers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-18 23:32:17 +03:00
Trial97
6826f1d605
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into net_job_crash 2023-06-18 23:27:41 +03:00
Trial97
0161520b33
Fixed leaks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-18 23:27:26 +03:00
Sefa Eyeoglu
12cd8a7bea
Merge pull request #1218 from flowln/bad_commit_string_in_bundled_package
Hide the Git commit entry on the About dialog when the build doesn't have git stuff support
2023-06-17 18:04:54 +02:00
flow
2d00a727f6
fix: hide git commit when the build doesn't have git stuff support
This fixes the Git commit string being "GITDIR-NOTFOUND" on the About
page when building a package from the bundled source archive.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-06-17 11:09:05 -03:00
renovate[bot]
b123f4f948
chore(deps): update cachix/install-nix-action action to v22 2023-06-16 21:58:32 +00:00
seth
fd9a8d1551
Merge pull request #1110 from TheKodeToad/version-search
Add a search bar to version lists
2023-06-16 14:47:39 -04:00
seth
6bc1150ad0
Merge pull request #1187 from getchoo/rel-8.0
chore: bump to 8.0
2023-06-16 14:46:25 -04:00
seth
45cce1d19a
fix(appimage): bundle generic opengl lib
Signed-off-by: seth <getchoo@tuta.io>
2023-06-16 14:34:44 -04:00
DioEgizio
412349ac58
Merge pull request #1135 from Trial97/installed_mods 2023-06-16 09:56:51 +02:00
Sefa Eyeoglu
000f4386a2
Merge pull request #1192 from Trial97/pre-lauch 2023-06-16 09:46:24 +02:00
Sefa Eyeoglu
5d3329b1ef
Merge pull request #1198 from TheKodeToad/remove-a-space 2023-06-16 09:42:41 +02:00
Trial97
147366bc0a
Made ByteSynkArray to use shared_ptr
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 22:59:41 +03:00
TheKodeToad
13804f80de Fix trailing space in instance name
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-15 16:37:03 +01:00
Trial97
1d354df1f8
Fix tests for window
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 16:51:58 +03:00
Trial97
1b42b9a08e
Fixed tests
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 14:25:58 +03:00
Trial97
535fb2c4d6
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into pre-lauch 2023-06-15 14:13:30 +03:00
Trial97
98a07da39b
Renamed variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 14:12:29 +03:00
TheKodeToad
8bf5ba2836
Merge pull request #1195 from Scrumplex/fix-javavendor-instance
Add JavaVendor as an instance override
2023-06-15 12:11:32 +01:00
Sefa Eyeoglu
798e1abb58
Merge pull request #1159 from getchoo/fix-devshell 2023-06-15 12:49:58 +02:00
Sefa Eyeoglu
90a4f622d2
Merge pull request #1063 from RedsonBr140/feat/RootFolder 2023-06-15 12:49:21 +02:00
Sefa Eyeoglu
6812823b55
fix: simplify resolving of data path
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-15 12:48:22 +02:00
Sefa Eyeoglu
7ad9abf9bc
fix: add JavaVendor as an instance override
This should suppress a critical error that gets printed every time an
instance gets launched, as JavaCheck wants to store the vendor in the
instance settings.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-15 12:45:03 +02:00
Trial97
cb52be433d
Made the installed mods more apparent
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 13:20:08 +03:00
Trial97
1f2b0ad698
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into installed_mods 2023-06-15 12:39:20 +03:00
Trial97
6667ff9330
Updated text and fixed mod page text update
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 12:32:48 +03:00
Trial97
5bf091149d
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into mods_txt 2023-06-15 11:46:44 +03:00
Trial97
be0df38453
Added tooltip for name label
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 11:40:39 +03:00
Trial97
fcfb3d2df7
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into visit_mod_page 2023-06-15 10:37:10 +03:00
Trial97
1ff8136f98
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into scale_cat 2023-06-15 10:36:05 +03:00
Trial97
182e19eae3
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-06-15 10:35:26 +03:00
seth
9908e115aa
Merge pull request #1067 from RedsonBr140/feat/dont-hide-settings
feat: Don't hide the settings tab when an instance is running
2023-06-15 02:20:00 -04:00
Trial97
811c79423f
Fixed version comparation
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 00:43:05 +03:00
Trial97
cf4c1605eb
Fixed qt5 build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 00:37:32 +03:00
Trial97
e0b901169a
Added new migration for special characters
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 00:27:20 +03:00
seth
3f1548ae0e
Merge pull request #1099 from Trial97/logdir
store logs in seperate directory
2023-06-14 15:38:47 -04:00
TheKodeToad
3526d00a23
Merge branch 'develop' into feat/dont-hide-settings
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-14 20:05:02 +01:00
seth
e8b0a7c6f0
chore: bump to 8.0
Signed-off-by: seth <getchoo@tuta.io>
2023-06-14 12:45:08 -04:00
clickdevin
d4f2059b78 Fix bugs when updating curseforge modpacks
Signed-off-by: clickdevin <git@clickdevin.me>
2023-06-14 10:42:37 -04:00
DioEgizio
a4502f44c2
Merge pull request #1145 from Trial97/net_job_crash 2023-06-14 12:46:00 +02:00
TheKodeToad
18c436c2bc
Merge pull request #1174 from Trial97/pre-lauch 2023-06-14 11:32:55 +01:00
Trial97
b77fb05908
Added back the INIFile read function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-13 21:07:05 +03:00
seth
703f7698c1
Merge pull request #1140 from guihkx/ci-exclude-git-folder-from-sources-tarball
CI: Exclude `.git` directory from the source code tarball
2023-06-13 12:47:35 -04:00
DioEgizio
69bfb55397
Merge pull request #1166 from TheKodeToad/mrpack-export-oops 2023-06-13 18:00:44 +02:00
TheKodeToad
180ed0cc1a
Merge branch 'PrismLauncher:develop' into skinfix 2023-06-13 11:08:21 +01:00
Tayou
b174f82261
Merge pull request #1162 from leo78913/i-hate-naming-branches 2023-06-12 21:41:17 +02:00
Tayou
9406022e70
Merge pull request #1151 from TayouVR/rainbow-konami 2023-06-12 21:25:17 +02:00
TheKodeToad
f4a814b5e6
Remove unnecessary code
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-12 15:46:15 +01:00
TheKodeToad
94ddc8bbf7
Could this work?
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-12 14:14:50 +01:00
leo78913
d6c7b4e813 add icons to export menu
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-06-11 21:50:29 -03:00
seth
ad0493390b
fix(nix): use prismlauncher-unwrapped in devShell
Signed-off-by: seth <getchoo@tuta.io>
2023-06-11 14:02:36 -04:00
Tayou
5aa1c340dc
rainbow konami & toggle
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-11 01:58:37 +02:00
Trial97
47372c2fbd
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into installed_mods 2023-06-10 22:04:12 +03:00
Trial97
ae9e8dbafd
Removed const specification
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-10 22:04:08 +03:00
TheKodeToad
b7d82354cb [ci skip] License headers!! (yay)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-10 14:43:58 +01:00
Trial97
b3d743635c
Updated the messages
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-09 21:29:12 +03:00
Trial97
f2932c6d03
Fixed some crashes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-09 21:23:41 +03:00
guihkx
93436b0940
ci: exclude .git directory from the source code tarball
Reduces the its final size from 17.1 MiB down to 7.9 MiB.

Signed-off-by: guihkx <626206+guihkx@users.noreply.github.com>
2023-06-09 00:56:17 -03:00
Trial97
f96b135ef7
Higlight installed mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-08 20:26:09 +03:00
DioEgizio
bfe7e3afed
Merge pull request #1133 from DioEgizio/bump-mac-11.0 2023-06-08 18:11:59 +02:00
DioEgizio
75b1eaed0c
chore: bump macOS requirement to 11.0
Noticed only now that Qt 6.5 bumps the macOS requirement to macOS 11.
This was basically already effective in prism since with the Qt 6.5 bump pr macOS 10.15 user's wouldn't be able to run this, but updating the requirement here makes it more clear for the end user trying to run prism on macOS 10.15

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-06-08 17:12:49 +02:00
Sefa Eyeoglu
7fb4c8358b
Merge pull request #1131 from DioEgizio/revert-to-qt650 2023-06-08 16:20:22 +02:00
PandaNinjas
95f6860005
Apply suggestions from code review
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-08 10:12:27 -04:00
DioEgizio
5b3431b268
chore: revert macOS Qt version back to 6.5.0
Qt 6.5.1 seems to cause issues with Rectangle

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-06-08 14:55:09 +02:00
PandaNinjas
e6872aba75
Readd deleted line
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 22:15:44 -04:00
PandaNinjas
11cbeb8f96
Fix shadowing and add copyright header
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 22:13:57 -04:00
PandaNinjas
886b372ade
Fix accidentally renamed variable
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 20:03:58 -04:00
PandaNinjas
534328f16d
Remove unnecessary switch statement
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>

DCO Remediation Commit for PandaNinjas <admin@malwarefight.wip.la>

I, PandaNinjas <admin@malwarefight.wip.la>, hereby add my Signed-off-by to this commit: 318d11481d

Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 19:46:36 -04:00
PandaNinjas
318d11481d
Resolve other switch fallthrough issues 2023-06-07 19:37:54 -04:00
PandaNinjas
5d425ecc02
Fix the AccountList code
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 18:14:05 -04:00
PandaNinjas
c225ecbb55
Add sensible defaults in AccountList.cpp
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 18:01:39 -04:00
TheKodeToad
0b4807dc1f Questionable fix two
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-07 22:55:37 +01:00
Trial97
d33de2e427
Made cat scalable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-08 00:54:32 +03:00
TheKodeToad
1191c33c2b Remove flawed implementation
This seems to add the latest icon (bug) as a fallback if not provided...
but it mainly seems to cause problems... 🤷

I swear I did `git add .`.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-07 22:45:21 +01:00
TheKodeToad
52054469cd Fix *bug* lol
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-07 22:39:23 +01:00
PandaNinjas
a90eaafa70
Make it clear that the statements are meant to fall through in Murmur hash
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 15:18:59 -04:00
Trial97
bbd9e4de9b
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into mods_txt 2023-06-07 20:18:56 +03:00
Trial97
8abe6b6732
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into visit_mod_page 2023-06-07 20:18:36 +03:00
Tayou
9b9d439fce
Merge pull request #1111 from Trial97/requires 2023-06-07 18:57:46 +02:00
Sefa Eyeoglu
62d1bc87ae
Merge pull request #1117 from leo78913/update-pack-formats 2023-06-07 17:49:52 +02:00
Tayou
51ed39804f
Merge pull request #1125 from Ryex/fix/link-crash-1118 2023-06-07 16:14:53 +02:00
Rachel Powers
d12110b47b
fix #1118 : use filePath not path on QFileInfo
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-07 06:26:58 -07:00
Sefa Eyeoglu
accf0cd40e
Merge pull request #1115 from leo78913/fix-resource-downloader-crash 2023-06-07 08:47:19 +02:00
Trial97
e936bc4c60
Added custom text for multiple selection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-07 01:38:10 +03:00
Trial97
f724059b88
Added visit mod's page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-07 01:23:53 +03:00
Trial97
1e702ee40f
Added dynamic page extra info
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-07 00:16:23 +03:00
leo78913
a9302468e7 update resource and data pack pack_format_versions
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-06-06 16:10:15 -03:00
Tayou
3b9d822d72
Merge pull request #1073 from leo78913/accounts-menus-fixes 2023-06-06 20:34:41 +02:00
Tayou
f3a7de6b76
fix: save meta custom url as string, not QUrl (#1114) 2023-06-06 20:25:29 +02:00
leo78913
a807b231a7 fix: fix crash when selecting resource/texture/shader packs
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-06-06 15:17:13 -03:00
TheKodeToad
a2d0d5a71d Allow arrow key movement, fix auto-focus
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-06 18:26:26 +01:00
leo78913
d59a06344a fix main toolbar accounts toolbutton name
previously it was not using the selected account name when opening the launcher

and i also added an action group to the menu items so it uses radio buttons instead of checkboxes :p

Signed-off-by: leo78913 <leo3758@riseup.net>
2023-06-06 14:21:41 -03:00
Tayou
e884341795
save meta custom url as string, not QUrl
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-06 18:15:26 +02:00
Rachel Powers
3a068970f9
Packaging: file manifest in portable install (#1101) 2023-06-06 16:03:13 +02:00
TheKodeToad
c343036d3b Simplify
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-06 12:24:53 +01:00
Trial97
1043d29dd5
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into requires 2023-06-06 10:34:36 +03:00
Trial97
6505a62801
Renamed requires fields
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-06 10:34:05 +03:00
Sefa Eyeoglu
7e016c44c1
Merge pull request #1093 from getchoo/use-flake-parts
Refactor Nix Flake
2023-06-06 08:10:39 +02:00
TheKodeToad
7c5047b2ac cAsE iNsEnSiTiVe
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-05 23:12:47 +01:00
TheKodeToad
961285d6ab Add a search bar to version lists
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-05 22:47:42 +01:00
DioEgizio
e1b37f3cd3
Merge pull request #1108 from Ryex/fix/memory-leak-translation 2023-06-05 20:34:56 +02:00
DioEgizio
0c24827a52
Merge pull request #1103 from Ryex/fix/1.120-allowed_symlinks.txt 2023-06-05 20:32:30 +02:00
Sefa Eyeoglu
e6eee82fb9
Merge pull request #1100 from Ryex/packaging/windows-installer-uninstall-previous 2023-06-05 20:30:57 +02:00
Sefa Eyeoglu
c5cf78205a
Merge pull request #1109 from TheKodeToad/mrpack-export-validate 2023-06-05 19:44:45 +02:00
TheKodeToad
37b4f606c8 Validate input lengths on mrpack export
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-05 17:54:24 +01:00
Rachel Powers
5824047ffa fix(memory leak): cyclic refrence in translations model dl task
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-05 01:12:16 -07:00
Rachel Powers
df18d8560d chore: fix test & clean up one last warning
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-04 22:46:05 -07:00
Rachel Powers
3dccc38f42
Merge pull request #904 from TheKodeToad/mrpack-export
mrpack export
2023-06-04 19:01:50 -07:00
Rachel Powers
3531c5bb8c packaging(appimage): put zsync in relase:x
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-04 16:58:46 -07:00
Rachel Powers
cc41b039e6 chore: clean up after new compiler warnings
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-04 14:59:48 -07:00
Rachel Powers
7e0e1ec51d chore: add better default compiler warnings
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-04 14:10:17 -07:00
Rachel Powers
ab41816265 packaging: use runner.workspace when copying files
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-04 12:27:01 -07:00
Rachel Powers
2c95973446 packaging(appimage): dont use rsync
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-04 10:36:34 -07:00
Rachel Powers
89d8f9b829 packaging(linux): use vars when refrencing qt install dir
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-03 22:43:41 -07:00
Rachel Powers
0bda885bbf packaging: add appimage update capability
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-03 21:56:46 -07:00
Rachel Powers
f613b03efd
Typo fix
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-03 08:28:49 -07:00
TheKodeToad
3c87e5d31e Make mcInstance mutable
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-03 13:48:15 +01:00
TheKodeToad
e26827b849 Optimised icons
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-03 13:39:42 +01:00
Rachel Powers
8eb10e991f fix: use isSymLink (i've made this mistake before but I've made it again)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-02 16:14:38 -07:00
Rachel Powers
f6f32914de fix: add origonal instance path to allowed_symlinks.txt when copying via symlinks
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-02 16:04:27 -07:00
Trial97
9ca74cd009
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-03 00:48:13 +03:00
Trial97
d50bd096a4
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into logdir 2023-06-03 00:44:53 +03:00
Alexandru Ionut Tripon
1840505a0f
Fix crash when selecting same mod from different providers (#1029) 2023-06-02 18:04:06 -03:00
seth
29e532c096
fix(nix): fix prismlauncher-qt5
Signed-off-by: seth <getchoo@tuta.io>
2023-06-02 11:53:09 -04:00
Sefa Eyeoglu
0f0cbd4c1f
refactor(nix): introduce unwrapped packages
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-02 12:41:18 +02:00
Sefa Eyeoglu
0ece0b5b27
Merge pull request #1086 from TayouVR/fix-qt6_5-brown-system-theme 2023-06-02 12:18:37 +02:00
Rachel Powers
74d4a98864 refactor: split out setting api headers for downloads
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-01 16:39:04 -07:00
Trial97
17691ab515
Made use of moveFile function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-02 01:22:25 +03:00
Rachel Powers
f619a04fe7 refactor: rename app class
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-01 14:55:20 -07:00
Trial97
3a6657596b
Added migration for old logs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-01 23:48:48 +03:00
Rachel Powers
5627b4a9c5 refactor: rename updater files
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-01 13:45:36 -07:00
Rachel Powers
6a4fb6a271 packaging: remove redundant "do you want to uninstall previous version"
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-01 12:40:08 -07:00
Rachel Powers
46a13c8767 packaging: fix typo ; in middle of line
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 20:16:58 -07:00
Rachel Powers
3bbe33132a packaging: convert msys paths
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 19:39:14 -07:00
Rachel Powers
b48540dc32 packaging: trim leading working dir from manifest paths
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 16:27:53 -07:00
Rachel Powers
4e0a08345d packaging: add manifest.txt to linux tarballs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 16:07:29 -07:00
Rachel Powers
9b1e0eb57d packaging: msys2 shell is bash
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 16:01:31 -07:00
Rachel Powers
4cbae0a751 packaging: trim manfest paths to be relative
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 15:36:25 -07:00
Rachel Powers
68c2833552 packaging: use powershell name
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 14:55:13 -07:00
Rachel Powers
dbe14c6be5 packaging: ensure all files are in manifest
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 14:54:06 -07:00
Rachel Powers
4593538fc8 fix: typo - space before comment
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 14:36:24 -07:00
Rachel Powers
7c85462ff3 packaging: include file manifest in portable install
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 14:31:38 -07:00
Rachel Powers
8db4a2a5b9 Merge branch 'packaging/windows-installer-uninstall-previous' into feat/windows-updater 2023-05-31 13:57:56 -07:00
Rachel Powers
2dce08caf1 fix: typo - space before comment
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 13:54:13 -07:00
Rachel Powers
f5729d9a7c Revert "fix: typo - no space before comment"
This reverts commit 0b2044e9a4.
2023-05-31 13:53:44 -07:00
Rachel Powers
0b2044e9a4 fix: typo - no space before comment
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 13:52:23 -07:00
Rachel Powers
03b66ba7a5 packaging: make windows nsis installer run the uninstaller for previous install before installing
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 13:25:14 -07:00
Trial97
6c082403c4
Fixed comments
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-31 20:23:23 +03:00
Trial97
29c3dc40ef
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into logdir 2023-05-31 20:12:12 +03:00
Rachel Powers
1c91d2f242 feat: paliminary updater
- can check for need to update
- can select a version to update to
- perform update: TODO

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-30 23:03:44 -07:00
Rachel Powers
5fe9e30f39 fix: use instance settings, make image column user resizeable, fix memory leak
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-28 14:53:15 -07:00
Rachel Powers
4eb9083ddc refactor: column names as class property, use string names in setting
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-28 13:00:08 -07:00
Rachel Powers
b28f682ad9 Merge branch 'develop' into feature/images-for-resource-page 2023-05-28 12:01:49 -07:00
Rachel Powers
eb079c8060
cleanup: msgbox msg editor
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-28 11:13:53 -07:00
Tayou
c0f9ccc5b5
Use slash_star comment style in .editorconfig
Signed-off-by: Tayou <31988415+TayouVR@users.noreply.github.com>
2023-05-28 19:57:08 +02:00
Trial97
51c39ec681
Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop 2023-05-28 19:16:14 +03:00
Trial97
10436ed70c
Fixed code quality
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 19:15:41 +03:00
Trial97
775236a1b3
Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 18:27:54 +03:00
Trial97
b9503ff15f
Added Q_DECLARE_METATYPE(ModPlatform::IndexedPack::Ptr)
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 18:27:02 +03:00
Trial97
b4dff181f7
Fixed Ptr logic
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 18:22:55 +03:00
Trial97
737fc1a2a4
Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 18:01:39 +03:00
Trial97
bdff8591aa
Removed extra loop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 17:54:46 +03:00
Trial97
27c3775f99
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 17:44:23 +03:00
Trial97
bf0a577fb9
Fixed repaint issue
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 16:57:35 +03:00
flow
954d4d701a
Merge pull request #1034 from kerichdev/patch-1 2023-05-28 10:56:44 -03:00
flow
ce2d58bb7d
Merge pull request #1083 from Ryex/fix/memory-leaks-develop 2023-05-28 10:11:43 -03:00
Rachel Powers
7af116fb00 refactor: function scope statics
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-28 05:06:28 -07:00
Rachel Powers
0357921284 cleanup: move qstyle getInstance decl inline
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-28 04:37:09 -07:00
TheKodeToad
86974b046e
Clarify comment
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-28 11:48:09 +01:00
Rachel Powers
a04a6f1e0d fix(memory leak): don't give shared pointers out to foldermodels (causes cyclic refrence)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-28 02:15:39 -07:00
Rachel Powers
37420405c7 fix(memory leak): refactor NoBigComboStyle -> singleton
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-27 23:22:40 -07:00
seth
acf1946dac
chore(nix): update sources
Signed-off-by: seth <getchoo@tuta.io>
2023-05-27 19:25:58 -04:00
seth
a52574b026
chore(nix): add nil
Signed-off-by: seth <getchoo@tuta.io>
2023-05-27 19:25:49 -04:00
seth
5d14724e66
chore(deps): enable nix lockfile maintenance for renovate
Signed-off-by: seth <getchoo@tuta.io>
2023-05-27 19:17:44 -04:00
seth
d582bf7f1f
feat(nix): flake-utils -> flake-parts
Signed-off-by: seth <getchoo@tuta.io>
2023-05-27 19:14:50 -04:00
Trial97
7d79abb607
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert 2023-05-27 23:06:55 +03:00
Rachel Powers
c81cb59b4b fix(memory leak): don't capture job and create cyclic refrence
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-26 21:21:10 -07:00
Rachel Powers
ff03dd22fe fix(memory leak): don't override default deconstructor + reset shared_ptr + ensure modal get's cleaned up
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-26 21:10:49 -07:00
Rachel Powers
aae892dfd1 fix(memory leak): IndexedPack too large to live inside a qlist without pointers ()
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-26 19:21:07 -07:00
Rachel Powers
2680dba0aa fix: use <= when compareing release types
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-26 17:16:50 -07:00
Rachel Powers
832a61f886 fix: make codeQl happy
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-26 16:34:30 -07:00
Rachel Powers
cf4df19986 feat: display release type
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-26 16:23:43 -07:00
Rachel Powers
c156034069 feat: add verion_type / release_type to IndexedVersion
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-26 13:50:22 -07:00
Sefa Eyeoglu
f24211e8b5
Merge pull request #1088 from DioEgizio/update-qt651
chore: update to Qt 6.5.1
2023-05-26 07:31:18 +02:00
Rachel Powers
e61d8e4dc8 fix: katabasis and QStyle leaks
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-25 16:16:58 -07:00
flow
403279e926
Merge pull request #1087 from PrismLauncher/renovate/cachix-install-nix-action-21.x 2023-05-25 19:08:16 -03:00
DioEgizio
70983c7269 chore: update to Qt 6.5.1
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-05-25 16:38:24 +02:00
Rachel Powers
086a7e19f0 feat: Column on left, hideable
- columns are hideable (saves to settings)
- image column moved to left
- datamodals can provide resize modes

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-24 20:15:34 -07:00
renovate[bot]
42f9eccb17
chore(deps): update cachix/install-nix-action action to v21 2023-05-24 14:21:39 +00:00
Tayou
3c937532f2
fix System theme colors on windows
Signed-off-by: Tayou <tayou@gmx.net>
2023-05-24 15:18:08 +02:00
TheKodeToad
863027cbe8 Enable size grip
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-22 11:56:54 +01:00
Rachel Powers
6b8fe283f0 fix: memory leak, set parent so it's in tree to get cleaned up.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-21 01:49:13 -07:00
Rachel Powers
7983977156 feat: Qt 5.15 adds transfer timeouts. at least use it for downloads
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-21 01:48:34 -07:00
Rachel Powers
21cb459899 fix: memory leak NetJob wans't getting cleaned up. ensure lambda capture of job doens;t increase refcount or it will be cyclic
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-21 01:47:54 -07:00
Rachel Powers
1b3ff96ffd fix: memory leak with NetJob and responce not getting cleaned up
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-21 01:46:28 -07:00
Trial97
2f37cb31d9
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-05-20 13:36:05 +03:00
Trial97
e5534cd1f3
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert 2023-05-20 13:35:47 +03:00
flow
42ceaa0015
Merge pull request #1080 from Scrumplex/update-social-links 2023-05-19 16:37:03 -03:00
Sefa Eyeoglu
90b330d4ba
chore: update social links
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-05-19 18:34:54 +02:00
leo78913
4f0ec908ec feat: add a close button to the main toolbar when running on gamescope
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-05-17 00:57:28 -03:00
Rachel Powers
bd1ea64d02
cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-16 00:01:52 -07:00
Rachel Powers
649753e97e cleanup: remove unneeded headers
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-15 16:40:56 -07:00
Rachel Powers
fc656b6927 fix: when given a remost resource, download and identify it before import.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-15 16:34:33 -07:00
Kode
3be18b58bb
Better variable name :p
Signed-off-by: Kode <TheKodeToad@proton.me>
2023-05-15 19:15:56 +01:00
TheKodeToad
22aaf56855 De-hardcode .index
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-15 18:48:49 +01:00
leo78913
7537ea1ef5 make instance settings account selector a comboBox
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-05-14 16:33:41 -03:00
Trial97
94cd831e8d
Made sure the metadata is valid when checking mod deps
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-14 22:13:53 +03:00
Keri
2078133493
fix: remove unnecessary keywords from desktop file
this messes with apps that use tag search like rofi

Signed-off-by: Keri <kerichuudev@gmail.com>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-05-14 14:38:19 +02:00
Trial97
ffcc58cb3e
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-05-14 14:20:24 +03:00
Trial97
8c7fd3327e
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert 2023-05-14 14:20:04 +03:00
Kode
f60562c5a2
Merge branch 'develop' into mrpack-export
Signed-off-by: Kode <TheKodeToad@proton.me>
2023-05-13 19:07:03 +01:00
TheKodeToad
18cfe219fe Hopefully This Works™
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-13 18:58:05 +01:00
TheKodeToad
129e959a3b Move setAbortable(true)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-13 18:28:51 +01:00
TheKodeToad
e1b6020b76 Make some changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-13 18:24:01 +01:00
Sefa Eyeoglu
d5c6a1b4d1
Merge pull request #1007 from Ryex/fix/network_and_signals 2023-05-13 19:06:47 +02:00
Redson
79ce7eb1fc
fix: shouldDisplay() is now redundant.
Signed-off-by: Redson <redson@riseup.net>
2023-05-13 09:00:10 -03:00
Rachel Powers
b1ffc8ddab refactor: normalize url fn & cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-12 16:37:45 -07:00
Kode
5b8d025440
ty!
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Kode <TheKodeToad@proton.me>
2023-05-12 14:43:55 +01:00
Rachel Powers
3e11d94829
spelling suggestions from code review
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-12 01:47:18 -07:00
Rachel Powers
6b6d6a01dc
Merge branch 'develop' into fix/network_and_signals
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-12 01:13:17 -07:00
Rachel Powers
82287e0407 Merge branch 'develop' into curseforge-url-handle 2023-05-12 01:00:26 -07:00
Sefa Eyeoglu
c5aff7cc1e
Merge pull request #961 from Ryex/better-tasks 2023-05-12 09:47:19 +02:00
Rachel Powers
b16829b0f9
Gib -> GiB
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-12 00:21:37 -07:00
Rachel Powers
f27716656c fix: remove qt < 5.6 support process error signal
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-11 16:32:00 -07:00
Redson
37a6ef95f0
feat: Don't hide the settings tab when an instance is running
Signed-off-by: Redson <redson@riseup.net>
2023-05-10 08:25:13 -03:00
Redson
475761b295
fix: Prism sets the data dir to the working directory.
Signed-off-by: Redson <redson@riseup.net>
2023-05-09 06:36:21 -03:00
Redson
0b251fa754
feat: Add the launcher root folder to the Folders menu
Signed-off-by: Redson <redson@riseup.net>
2023-05-08 19:57:30 -03:00
Rachel Powers
30cf73a22f typo fix
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-07 13:23:59 -07:00
Rachel Powers
884ac73078 Merge remote-tracking branch 'upstream/develop' into better-tasks
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-07 13:21:21 -07:00
Trial97
ef6cbdfa2a
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-05-07 19:01:20 +03:00
Rachel Powers
718abaae0e doc fixes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-06 19:18:39 -07:00
Rachel Powers
62a402d05a refactor: move functions to utils + code-review fixes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-06 19:10:58 -07:00
Sefa Eyeoglu
ce5bb29c44
Merge pull request #1054 from Ryex/more-lax-block-mods-filename-check 2023-05-06 09:54:59 +02:00
Sefa Eyeoglu
d535f73a58
Merge pull request #950 from DioEgizio/resize-settings
fix: divide minecraftpage into tabs
2023-05-06 08:28:46 +02:00
DioEgizio
d38696f411
Update launcher/ui/pages/global/MinecraftPage.ui
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-05-06 07:15:14 +02:00
Rachel Powers
a3173b5371 fix: ensure Application accepts URLs and local files form cmd args
refactor: Move curseforge:// url scheme detection to Import Page
feat: pass along extra CF pack info so pack metadata is established.

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-05 15:05:17 -07:00
timoreo
54fb799d95 Fix command line args
Signed-off-by: timoreo <contact@timoreo.fr>
2023-05-05 15:05:17 -07:00
timoreo
565202c990 Added a protection against giving a mod url
Signed-off-by: timoreo <contact@timoreo.fr>
2023-05-05 15:05:17 -07:00
timoreo
63c21c53af Added url handler for curseforge
Signed-off-by: timoreo <contact@timoreo.fr>
2023-05-05 15:05:17 -07:00
Rachel Powers
d0b6f0124b change: don't search appdata locaiton for logging rules if using custom data dir
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-05 14:13:34 -07:00
Rachel Powers
b266068644
Apply suggestions from code review
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-05 14:07:10 -07:00
Rachel Powers
74e7c13a17 feat: display license and issue tracker
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-05 13:46:38 -07:00
Rachel Powers
3cfcc83ea9 change: don't toggle a resource's enabeling just by selecting it. only if they are on the checkbox.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-05 13:46:01 -07:00
Rachel Powers
ee94be624e use 32x32 images for image column
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-05 11:28:19 -07:00
Rachel Powers
2fe3dc5960 fix: fix qchar conversion and codeql
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-05 11:13:36 -07:00
Rachel Powers
fd7338d3f3 fix: grow pixmapcache if it is evicting too fast
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-04 23:47:27 -07:00
Rachel Powers
ed185f047f feat(resourcePackPage): icon column
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-04 23:46:00 -07:00
Rachel Powers
d384d991fa feat(texturepackPage): icon column
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-04 23:45:24 -07:00
Rachel Powers
9913080a82 feat(modpage): mod icon in description and column
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-04 23:44:28 -07:00
Rachel Powers
ec157b766e feat(mod parsing): load extra mod details
- (image, license, issuetracker)

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-04 23:42:42 -07:00
Trial97
469ef3e06d
Fixed code error
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-05 00:04:24 +03:00
Trial97
107b470289
Updated required_by as dependency
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-04 23:54:46 +03:00
Rachel Powers
e0635955df fix: super lax compare
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-04 13:30:39 -07:00
Trial97
8b14b946e2
Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-04 22:35:16 +03:00
Trial97
f7b912fc9d
Fixed comments
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-04 22:25:05 +03:00
Trial97
9fbec3793f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-05-04 20:29:33 +03:00
Rachel Powers
5ec4cbf1cb fix add an addtion lax file name match with replaced with +
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-03 20:31:15 -07:00
Trial97
e4449a0ba3
Initialized variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-03 09:09:07 +03:00
Trial97
42dc3ed03f
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert 2023-05-03 00:56:26 +03:00
Trial97
f6ed2036b3
Removed comment
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-03 00:55:18 +03:00
Trial97
f8bf71e152
Moved the selected resources to one list
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-03 00:49:54 +03:00
TheKodeToad
e0380960fd Change to use future
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-02 14:23:31 +01:00
Sefa Eyeoglu
64ba5e4ed1
Merge pull request #833 from Ryex/advanced_copy_instance 2023-05-02 12:11:41 +02:00
Rachel Powers
733619ca74 feat: estimate remining time on downloads
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
9f9c829bc5 fix: prevent logspam, fix MacOS theme artifacts
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
236764adf6 refactor: Qt can handle const& in signals and slots
While most Qt types cna use implicit data sharing
pasing our own structs means copies. const& ensure
it's only copied as needed by Qt.

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
a80b425551 fix: no need for const bool
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
d7032d975c fix: no need to loop all sub tasks
pathc by flowin

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
96decbac27 feat: default qtlogging.ini file
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
0fb6a2836b refactor: propogate only only one StepProgress at a time
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
fe36471b8d refactor: logging.h -> Logging.h
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
6b28af6cc5 fix: clean up license headers for Tasks
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
6306fb564b feat: add UID to debug lines of upload tasks
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
cdccb25fe3 feat: add download size to download details alongside speed
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:48:00 -07:00
Rachel Powers
b6452215c1 feat: add details signal to Task
feat: add details to mod pack downloading
feat: add logging rule sloading form `ligging.ini at data path root
feat: add `launcher.task` `launcher.task.net` and `launcher.task.net.[down|up]load` logging categories
fix: add new subtask progress to the end of the lay out not the beginning (cuts down on flickering)

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:47:50 -07:00
Rachel Powers
f1028fa66d fix: properly map progress range
- doument PCRE used for URL compacting

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:47:31 -07:00
Rachel Powers
9d2f0e4dc8 feat: Propogated subtask progress
Oh boy this is big.

> TaskStepProgress struct is now QMetaObject compatabile and can be sent through signals
> Task now has a method to propogates sub task progress it must be signal bound by each task containing a task wishing to report progress of it's children.
> Downloads report speed
> Tasks now have UUIDS to track them
  - use when reporting
  - use when logging
  - use when storeing them or objects related to them

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:47:20 -07:00
Rachel Powers
f997529cd4 feat: better task tracking
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:45:34 -07:00
Rachel Powers
495103f72e fix: set x-xbl-contract-version header during xbox auth step
Refrencing GDlauncher and ATLauncher code for auth as well as https://learn.microsoft.com/en-us/gaming/gdk/_content/gc/reference/live/rest/additional/httpstandardheaders
it is possible some of microsoft's server's are rejecting our request because of this missing header?

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:43:31 -07:00
Rachel Powers
d80dee2a54 refactor: pass instance ptr to resource models. use it to find instance root.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-29 19:55:37 -07:00
Rachel Powers
788fa40c2a refactor: Move ini to use QSettings && drop get/setList functions
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-29 19:55:24 -07:00
Sefa Eyeoglu
ae75585b52
Merge pull request #1040 from Scrumplex/remove-modpacksch
Remove FTB modpack support
2023-04-29 08:04:53 +02:00
Sefa Eyeoglu
ff07714e8c
chore: remove FTB modpack support
We have been contacted by Feed the Beast to drop support for the FTB
modpack browser from Prism Launcher.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-04-28 11:35:20 +02:00
Sefa Eyeoglu
f54fc16718
Merge pull request #1025 from japa4551/lastLaunchTimeDate 2023-04-27 10:09:53 +02:00
Trial97
61a2355618
Removed formated but not used files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-27 01:41:26 +03:00
Trial97
248920a221
Removed extra code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-27 01:33:46 +03:00
Japa
7298f9c273
Fixed typo
Signed-off-by: Japa <japa4551@protonmail.com>
2023-04-26 16:06:17 -03:00
Trial97
b2ecb9ac09
Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop 2023-04-22 22:28:08 +03:00
Trial97
f738d7566e
Fixed code qulity
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-22 22:27:33 +03:00
Japa
672f5cf160
Update launcher/minecraft/MinecraftInstance.cpp
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Japa <japa4551@protonmail.com>
2023-04-21 19:46:33 -03:00
Trial97
1d167f8fda
Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-22 01:32:33 +03:00
Trial97
460e83207f
Fixed removeIf for Qt version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-22 01:18:27 +03:00
Trial97
75116364c6
Small Cleanup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-22 00:55:11 +03:00
Trial97
f7931c2ee2
Better version handling
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-22 00:47:51 +03:00
Kode
dfc2b9c76a
thanks flowln! :P
Signed-off-by: Kode <TheKodeToad@proton.me>
2023-04-21 20:49:47 +01:00
Trial97
22bbf1bd1f
Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 21:11:09 +03:00
Trial97
10aac4fe17
Fixed assert
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 21:03:01 +03:00
Trial97
42bc91463e
Updated links
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 20:37:17 +03:00
Trial97
b4fa6e120a
Fixed tipo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
Trial97
2c744da9f7
More cleanup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
Trial97
ffaa47bf54
Small cleanup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
Trial97
63c4469475
Merge branch 'develop' of github.com:Trial97/PrismLauncher into develop 2023-04-21 18:42:06 +03:00
Trial97
c1490cd627
Refator task to work with multiple providers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
Alexandru Ionut Tripon
1a390b6043
Merge branch 'PrismLauncher:develop' into develop 2023-04-21 18:42:06 +03:00
Trial97
fac33498db
Made some copy by reference
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
Trial97
31e84780a8
Hope to fix windows build errors
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
Trial97
f3f8f3574a
Small headers removal
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
Trial97
7bd26ce468
Semi fixed the Modrinth dependency implementation
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
Trial97
bcea19b957
Tried to fix codeQL
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
Trial97
5079ce8d64
Fixed headers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
Alexandru Ionut Tripon
f231a33f6e
Merge branch 'PrismLauncher:develop' into develop 2023-04-21 18:42:05 +03:00
Trial97
4fe497cd68
First working version with curseforge mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
Trial97
5655a33515
Added Dependency API
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
Japa
92cda68480
Update launcher/minecraft/MinecraftInstance.cpp
Co-authored-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Signed-off-by: Japa <japa4551@protonmail.com>
2023-04-21 11:18:17 -03:00
Japa
f41426f394
Instance Description displays the last launch date
Initial Draft using the Standard C++ Library, still requires testing.

Signed-off-by: Japa <japa4551@protonmail.com>
2023-04-21 00:30:38 -03:00
Tayou
87db723008
add global .editorconfig for doxygen comment style
Signed-off-by: Tayou <tayou@gmx.net>
2023-04-18 20:25:45 +02:00
DioEgizio
8dc3267925
Merge pull request #994 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2023-04-18 18:54:11 +02:00
TheKodeToad
709736d3f9 Make response const
I don't think the segfault fix was ideal :P
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-18 09:28:10 +01:00
Rachel Powers
12f0d51c0c Fix: signal/slot macro -> func pointer & network fixes
- convert qt connect calls to use function pointers instead of the signal/slot macros wherever practical (UI classes were mostly left alone, target was tasks and processes)
- give signals an explicit receivers to use the static method over the instance method wherever practical
- ensure networks tasks are using the `errorOccured` signal added in Qt5.15 over the deprecated `error` signal
- ensure all networks tasks have an sslErrors signal connected
- add seemingly missing `MinecraftAccount::authSucceeded` connection for `MSAInteractive` login flow

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-17 18:23:18 -07:00
TheKodeToad
2e9403a324 This was moved
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-17 13:19:59 +01:00
TheKodeToad
ba17efa381 Smol fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-17 13:18:25 +01:00
TheKodeToad
b8e0c8ebc6 Boring changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-17 10:16:03 +01:00
Sefa Eyeoglu
1b05303250
Merge pull request #946 from Ryex/subfolder-watch 2023-04-14 17:10:25 +02:00
renovate[bot]
51095c5a27
chore(deps): update hendrikmuhs/ccache-action action to v1.2.9 2023-04-14 06:31:06 +00:00
Rachel Powers
a02f67ed0e refactor: rename watch_subdirectories -> watch_recurisve (prevent confusion of behavior)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-12 11:30:02 -07:00
Trial97
11f8d25d94
Added missing character
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-12 00:49:50 +03:00
Trial97
4fbd5abe41
Added task to load dependencies
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-12 00:45:44 +03:00
Trial97
d524935b67
Added task to load local mod information
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-11 20:55:10 +03:00
Trial97
6d5c629b43
Added dependencies to the APIs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-10 00:04:35 +03:00
Kode
3a7961834a
Remove seek
Don't need it if the data is already in a byte array.

Signed-off-by: Kode <TheKodeToad@proton.me>
2023-04-09 21:28:40 +01:00
DioEgizio
95842ee25f
Merge pull request #983 from DioEgizio/update-qt650-win 2023-04-08 22:14:26 +02:00
DioEgizio
371c839573 chore: update Qt to 6.5.0 on Windows
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-04-08 19:38:46 +02:00
DioEgizio
1b8b044b52
Merge pull request #982 from Scrumplex/fix-theming-style 2023-04-08 19:26:43 +02:00
Sefa Eyeoglu
a988111507
fix: do not apply system theme on launch
Closes PrismLauncher/PrismLauncher#490

Regression introduced by PrismLauncher/PrismLauncher#249

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-04-08 18:48:05 +02:00
Rachel Powers
c56db0408b fix: load setting state with page. don't translate "..."
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-08 07:26:56 -07:00
Rachel Powers
2321d9c065 fix: canonical*File*Path()
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-07 18:36:35 -07:00
flow
ed085630db
Merge pull request #968 from Scrumplex/nix/sync-2023-04-02 2023-04-07 06:51:14 -07:00
flow
74d5c7c1a4
Merge pull request #972 from DioEgizio/update-qt650 2023-04-07 06:50:02 -07:00
TheKodeToad
813ccc1381 How did i-
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-07 11:03:11 +01:00
TheKodeToad
b65f4c9536 Better collectFileListRecursively error
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:59:24 +01:00
TheKodeToad
012d8bb468 Revert concurrent syntax
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:58:09 +01:00
TheKodeToad
d7a137ad13 Remove more prototype not good code
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:24:19 +01:00
TheKodeToad
073aaf9b3b Remove "prototype" field
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:19:41 +01:00
TheKodeToad
871d647c93 Use local metadata
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:18:36 +01:00
Rachel Powers
0ce3049579 fix: sysinfo libs needed too
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-03 18:48:28 -07:00
Rachel Powers
de20258aa7 fix: filelink needs network for local socket
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-03 18:30:28 -07:00
Rachel Powers
41c5e523b2 fix: add back QT::Widgets link
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-03 18:09:01 -07:00
Rachel Powers
197be9cfd0 fix: remove fixed datastream version
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-03 18:00:56 -07:00
Rachel Powers
5b50b806ec refactor: remove data duplication in statis FS Names
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-03 17:14:06 -07:00
Rachel Powers
62c59820cf fix: harden watchPath. NO DUPLICATES! >:(
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-03 15:26:26 -07:00
DioEgizio
0cf1fc72a3 chore: update to qt 6.5.0 on macos
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-04-03 18:01:23 +02:00
Rachel Powers
5ce7874280 fix: no loops in watch paths! >:(
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-02 18:55:21 -07:00
Rachel Powers
ba2b5c3a65
fix: Apply suggestions from code review
-expand columspan on new UI element
-improve tooltip

Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-02 16:39:13 -07:00
Sefa Eyeoglu
0a9081cb87
Merge pull request #965 from getchoo/update-manoghud-detection 2023-04-02 17:55:19 +02:00
flow
eea1e3b800
Merge pull request #967 from PrismLauncher/renovate/flatpak-flatpak-github-actions-6.x 2023-04-02 08:03:02 -07:00
Sefa Eyeoglu
70364884a9
feat(nix): add support for GameMode
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-04-02 11:35:35 +02:00
Sefa Eyeoglu
ea7f03770c
refactor(nix): use qtWrapperArgs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-04-02 11:33:04 +02:00
txtsd
bc1a7d2890
Merge pull request #966 from getchoo/use-ninja
use ninja in nix builds
2023-04-02 14:06:35 +05:30
renovate[bot]
732bc53692
chore(deps): update flatpak/flatpak-github-actions action to v6 2023-04-02 03:14:42 +00:00
seth
4055e34320
chore: use system architecture to detect vulkan layers
Signed-off-by: seth <getchoo@tuta.io>
2023-04-01 13:09:09 -04:00
seth
81b1406290
feat(nix): use ninja for builds
Signed-off-by: seth <getchoo@tuta.io>
2023-04-01 13:06:53 -04:00
Rachel Powers
538092b727 fix: typos, CamelCase to camelCase the new names
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-31 20:31:27 -07:00
Rachel Powers
4df4b43900
fix: Apply suggestions from code review (string changes)
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-31 18:25:29 -07:00
seth
3e3b92d4c1
chore: improve detection of newer vulkan layers
i've been scrump'd

Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: seth <getchoo@tuta.io>
2023-03-31 20:09:26 +00:00
seth
c7dc115365
fix: search for newer mangohud vulkan layers
Signed-off-by: seth <getchoo@tuta.io>
2023-03-31 15:49:09 -04:00
TheKodeToad
e42050cc8a Skip lookup if no files and fail if zipping fails
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-28 14:22:28 +01:00
Rachel Powers
df17f5e899 fix: use QDir::Filter::NoDotAndDotDot
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-27 19:11:26 -07:00
Rachel Powers
a0045ece07 feat: add setting to watch recursively
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-27 19:01:53 -07:00
DioEgizio
4c013e59f0 divide minecraftpage into tabs
this way small screen users can use the launcher settings without having window a bigger than their actual screens
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-03-25 13:12:50 +01:00
Sefa Eyeoglu
09d607f39c
Merge pull request #945 from Scrumplex/fix-logging-newlines 2023-03-25 10:37:02 +01:00
Sefa Eyeoglu
9418c62d95
refactor: reprocess log lines per instance
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-22 10:32:17 +01:00
Rachel Powers
ef50e5595e fix: don't try to watch the entier filesystem by watching parent links
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-21 12:17:01 -07:00
Rachel Powers
02bf086c09 feat: watch sub directories for mods
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-21 11:07:20 -07:00
Sefa Eyeoglu
77932061bc
chore: update ignores for Nix
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-21 18:33:41 +01:00
Sefa Eyeoglu
44bf32e729
fix: handle partial lines in LoggedProcess
Fixes PrismLauncher/PrismLauncher#930

Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-21 18:30:46 +01:00
Rachel Powers
0c986ba4d0 spelling and formatting
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 16:38:40 -07:00
Rachel Powers
a28193430c fix: adjust geometry and add missing tooltip
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:33 -07:00
Rachel Powers
0bec0046bb format: clang-format to fix windows fallout
it looked fine over in vscod on windows but
as soon as I opened it on linux via Helix
the chaos was clear

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:33 -07:00
Rachel Powers
a96519cbdc workflow: add filelink.exe to SignTool call
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:33 -07:00
Rachel Powers
458c2f38bc cleanup: code review sugestions
clean up translation strings

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:33 -07:00
Rachel Powers
dc5402349e refactor: use UUID toString mode
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:33 -07:00
Rachel Powers
ae289c923c fix: clean up initial review comments (flowin)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:33 -07:00
Rachel Powers
e0ef86340f feat: connect new help button help-pages/instance-copy
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:33 -07:00
Rachel Powers
1ca2c59f2e feat: track instance copies that use links
confirm deleations when other instances link to it

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
3ec92acfe7 fix: use noexcept overload of std::filesystem::hard_link_count
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
656bfd36f6 fix: ensure filelink.exe is included in setup.exe
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
562ae676a5 fix: mingw still missing typedefs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
72292f4e03 fix: windows compile broke
move winapi defs into #ifndef blocks don't check explicitly for __mingw__ define
function name win_ioctl_clone didn't get updated in teh last commit

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
536da704fc refactor: cleanupFilesystem.cpp
* remove now redundant reflink/clone code for windows
* remove unnessacery debug code that could slow things down

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
a0e03c41c0 fix: typos
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
a1053a4c5a feat: warnings when instance resources are linked
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
9f441a9678 feat: Add UAC icon when symlinking on windows.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
7870cf28e5 fix: add missing mingw defs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
9939367db7 feat(reflink): ioctl_clone for winbtrfs & ReFS
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
1210c3256d fix: macos compat after refactor of clonefile
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
2e8d04aad0 feat: support reflink on windows via winbtrfs!
https://github.com/maharmstone/btrfs

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
3a0e4546c2 fix: windows test compat
fix: compiler warning on int qint32 compare

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
cd2419137d fix: better test compareison (also qt5 compat)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
34ac8b3ec3 fix: Qt < 5.14.0 compat
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
2837236d81 fix: intelegent recursive links & symlink follow on export
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
bc8336a4b1 fix: cleanup UI, detect FAT and turn off links
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
397e7f0363 feat(reflink): hook up relink / clone on the copy dialog
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
c5bbe42b57 feat: reflink / Clone support!
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
c9105e525e fix: follow symlinks when exporting
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
1bed7754e0 feat(symlinks): make recursive links explicit
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
5978882378 feat(symlinks&hardlinks): linkup copy dialog
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
8ba51c7900 refactor: make complete list of links to make and send that.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
6d160a7b7e feat: successful process elevation and comunication!
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
32409a361b fix CMakeLits.txt for non MSVC windows builds
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
2ceefea5f3 qt5 compatability
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
485f156e57 working outside windows
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
Rachel Powers
f794e49bb6 we want to make links!
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:27 -07:00
TheKodeToad
46f448dfba Improve invokeMethod syntax
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-19 21:26:25 +00:00
TheKodeToad
710156b9f1 Replace native file separator - this was accidentally brought to my attention on Modrinth's guild
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-19 21:25:12 +00:00
txtsd
6dcf34acdc
Merge pull request #937 from DioEgizio/update-qt6 2023-03-19 22:17:26 +05:30
DioEgizio
d2f674e08f chore: update qt6 to 6.4.3 on windows and macos
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-03-19 17:11:16 +01:00
TheKodeToad
ec8cb056bf QRegExp -> QRegularExpression :P
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-19 11:49:24 +00:00
TheKodeToad
1893871a99
Merge branch 'PrismLauncher:develop' into mrpack-export 2023-03-18 14:02:05 +00:00
TheKodeToad
8837f06e4e Only add summary if not empty
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-18 14:01:41 +00:00
TheKodeToad
5346dfc782 Use first line of notes for summary
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-18 12:57:44 +00:00
TheKodeToad
ddca838e46 Info and error dialogs
TODO: is there a better approach?

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-18 12:24:18 +00:00
Sefa Eyeoglu
45b0367d14
Merge pull request #931 from Janrupf/feature/custom-downloads-dir 2023-03-14 13:53:51 +01:00
Sefa Eyeoglu
dce86edff0
Merge pull request #934 from heftymouse/develop 2023-03-14 13:52:44 +01:00
Sefa Eyeoglu
84e91ec3b5
Merge pull request #888 from Scrumplex/nix-stuff 2023-03-14 13:52:31 +01:00
Sefa Eyeoglu
05b6969ee5
fix: add mnemonic to downloads directory setting
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 13:35:16 +01:00
TheKodeToad
3390e84a9f
Merge branch 'PrismLauncher:develop' into skinfix 2023-03-14 12:07:05 +00:00
Nikhil B
af949f5cdd Add visual studio files to gitignore
Signed-off-by: Nikhil B <59918974+heftymouse@users.noreply.github.com>
2023-03-14 16:52:06 +05:30
Sefa Eyeoglu
7707af08e3
chore(nix): update sources
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 11:19:23 +01:00
Sefa Eyeoglu
5db4fabcad
chore(nix): add deadnix
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:59:43 +01:00
Sefa Eyeoglu
cfca82ceb3
chore(nix)!: use overlays.default
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:58:41 +01:00
Sefa Eyeoglu
a1130dace0
chore: format markdown files
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:54:50 +01:00
Sefa Eyeoglu
95a0bd61a9
feat(nix): add pre-commit-hooks.nix
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:53:51 +01:00
Sefa Eyeoglu
b324778be7
feat(nix): add devShell
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:51:47 +01:00
Sefa Eyeoglu
950f921c09
refactor(nix): use flake-utils
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:50:07 +01:00
Sefa Eyeoglu
9dff1bac83
chore(nix): format code using alejandra
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:48:19 +01:00
Janrupf
c17f6e37e5 feat: Add setting for downloads directory
Closes #641

Signed-off-by: Janrupf <business.janrupf@gmail.com>
2023-03-13 21:58:22 +01:00
Sefa Eyeoglu
e0e26a37b5
Merge pull request #927 from kthchew/fix/mingw-build 2023-03-13 21:24:48 +01:00
Sefa Eyeoglu
15a0c03664
Merge pull request #928 from PrismLauncher/renovate/actions-cache-3.x
chore(deps): update actions/cache action to v3.3.1
2023-03-13 18:14:35 +01:00
txtsd
7642e75b28
Merge pull request #929 from Scrumplex/drop-snap 2023-03-13 22:37:16 +05:30
Sefa Eyeoglu
4b36d1e3ea
chore: drop Snap packaging
We do not have a lot of expertise dealing with Snap and as it is
currently breaking our CI, it might be good to drop support for it.

This does not mean that it won't come back in the future, but as it
stands, it was effectively unmaintained and was only used for nightly
builds anyway.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-13 15:33:23 +01:00
renovate[bot]
20525bec29
chore(deps): update actions/cache action to v3.3.1 2023-03-13 10:50:27 +00:00
Kenneth Chew
430369feb8
fix: explicit conversion to C string to fix MinGW g++ 10 build
Signed-off-by: Kenneth Chew <kenneth.c0@protonmail.com>
2023-03-12 18:33:48 -04:00
Kenneth Chew
5ac3e5c958
Update tomlplusplus library
Fix build on MinGW g++ 10

Signed-off-by: Kenneth Chew <kenneth.c0@protonmail.com>
2023-03-12 18:33:48 -04:00
TheKodeToad
2e1c123c05
Merge branch 'PrismLauncher:develop' into skinfix 2023-03-10 11:17:06 +00:00
TheKodeToad
83c5264598 Stupidly small skinfixfix as requested by DioEgizio
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-10 11:04:15 +00:00
txtsd
abc2a529fb
Merge pull request #919 from PrismLauncher/renovate/actions-cache-3.x 2023-03-09 20:54:31 +05:30
renovate[bot]
c638fd9056
chore(deps): update actions/cache action to v3.3.0 2023-03-09 14:41:24 +00:00
Sefa Eyeoglu
1dd96898e1
Merge pull request #896 from TheKodeToad/modrinth-token 2023-03-09 15:10:40 +01:00
TheKodeToad
2cc9b0df06 Only select some paths by default - again!
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-08 18:10:52 +00:00
txtsd
3bd4ad7c93
Merge pull request #918 from Scrumplex/qt6-default 2023-03-08 21:18:53 +05:30
Sefa Eyeoglu
a8ffdeca2b
chore!: switch to Qt 6 by default
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-08 11:22:30 +01:00
TheKodeToad
59b15c5f08
Fix another duplicate name 🤦
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-07 21:03:09 +00:00
TheKodeToad
59cf8f678f
(hopefully) Fix duplicates names
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-07 20:50:19 +00:00
TheKodeToad
088be050b2
Apply flowln's suggestion :)
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-07 20:46:27 +00:00
TheKodeToad
5d5fcae501 Further reduce buggy behaviour
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-06 17:24:04 +00:00
TheKodeToad
970ec8187c More refactoring
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-05 18:25:57 +00:00
TheKodeToad
76f66148db Apply flowln's suggestion
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-05 18:21:24 +00:00
Sefa Eyeoglu
6bdd6ce571
Merge pull request #912 from Scrumplex/bump-ghc-filesystem
Bump ghc-filesystem
2023-03-05 17:25:38 +01:00
Sefa Eyeoglu
dd96e1819d
fix: remove unneeded alias for ghc_filesystem
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-05 14:24:40 +01:00
Sefa Eyeoglu
07702d3be7
fix: drop unneeded GHC_FILESYSTEM_WITH_INSTALL
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-05 14:23:40 +01:00
Sefa Eyeoglu
b9dfcf6d2f
chore: bump ghc-filesystem
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-05 14:21:07 +01:00
Sefa Eyeoglu
f3f0652d2b
Merge pull request #853 from kumquat-ir/nil
NilLoader mod metadata support
2023-03-05 13:39:00 +01:00
Sefa Eyeoglu
aae60334d1
Merge pull request #911 from flowln/fix_zip_extract_windows 2023-03-05 13:09:25 +01:00
Sefa Eyeoglu
b38af948b9
Merge pull request #857 from Ryex/fix_windows_default_apps 2023-03-05 13:09:11 +01:00
flow
06de728aa7 fix: use toLocalFile() instead of path()
QUrl::path() adds a '/' at the beginning of the path on Windows, causing
the world to explode every once in a while.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-03-05 08:24:56 -03:00
TheKodeToad
87384182a1 Fix abort?
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-04 11:07:07 +00:00
TheKodeToad
f583e617ec Implement abort (possible broken?) and therefore make it work without crashing!
The shared pointer was going out of scope 🤦.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-04 10:37:56 +00:00
TheKodeToad
a2716f5cf6 Improve code
Even more broken now (it is stuck loading forever)!

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-04 10:24:25 +00:00
TheKodeToad
55f928f845 More consistent naming
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-03 15:06:29 +00:00
TheKodeToad
2343aad088 Make it work! (TODO make it not crash)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-03 15:00:07 +00:00
TheKodeToad
dcaa907fed Mod loader support
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-03 11:25:11 +00:00
TheKodeToad
adcdf28d64 Move task to another thread
I don't know whether this is the prefered method.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-03 11:24:36 +00:00
TheKodeToad
f28a7b9d08 Add PackIgnoreProxy.h to cmake
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 19:50:42 +00:00
TheKodeToad
6505b0c065 Move logic to task
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 19:48:41 +00:00
TheKodeToad
88ef02474f Minify index JSON
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 17:36:44 +00:00
TheKodeToad
9ec32b2561 Fix QuaZipFile usage
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 17:36:28 +00:00
TheKodeToad
a5dd6b6cd7 Export without file urls
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 16:41:09 +00:00
TheKodeToad
46cc325f7c Add file tree
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 11:25:36 +00:00
TheKodeToad
0fadb5a2be Add *basic* interaction
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 10:31:53 +00:00
TheKodeToad
8b897ac714 Fix menu being set as central widget
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 10:31:53 +00:00
TheKodeToad
a80b820e94 UI for mrpack export (broken)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 10:31:53 +00:00
TheKodeToad
4efbf22089 Prism-ify more license headers
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 10:19:42 +00:00
TheKodeToad
5c913149c8
Merge branch 'PrismLauncher:develop' into modrinth-token 2023-03-02 10:10:46 +00:00
Sefa Eyeoglu
9265c319a9
Merge pull request #788 from flowln/other_resource_downloaders_two
Add resource pack, texture pack and shader pack downloaders
2023-03-02 10:08:45 +00:00
TheKodeToad
cbe6eff2fa Move Modrinth before CurseForge for consistency
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 09:28:14 +00:00
TheKodeToad
1f3d18ec12 Replace with exact match and add TODO to improve
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 09:26:00 +00:00
Sefa Eyeoglu
89255e34bd
fix: change wording of TP/RP download buttons
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-02 09:42:28 +01:00
TheKodeToad
a7b8092296 Add link
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-01 14:41:16 +00:00
TheKodeToad
1feb630520 Allow custom Modrinth API token
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-01 14:24:56 +00:00
flow
9f202caf93
Merge pull request #895 from Scrumplex/fix-component-creation
Use makeShared for importing components
2023-03-01 12:08:46 +00:00
Sefa Eyeoglu
651e511ff0
fix: use makeShared for importing components
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-01 12:33:00 +01:00
Sefa Eyeoglu
b46aca52ee
Merge pull request #894 from PrismLauncher/renovate/cachix-install-nix-action-20.x
chore(deps): update cachix/install-nix-action action to v20
2023-03-01 11:22:59 +00:00
Sefa Eyeoglu
0eae9355e6
Merge pull request #889 from flowln/fix_zip_extract 2023-03-01 09:51:08 +01:00
Sefa Eyeoglu
4878f1a438
Merge pull request #735 from Scrumplex/import-component 2023-03-01 09:49:47 +01:00
renovate[bot]
f986b4cd56
chore(deps): update cachix/install-nix-action action to v20 2023-03-01 07:20:11 +00:00
flow
d5c6704475
fix: prevent crash when aborting import task while extracting pack
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-24 20:34:43 -03:00
flow
fda9ca1e34
fix+refactor: fix fail to import modpacks and clean up a bit
QDir::cleanPath called by FS::PathCombine removes the trailing '/'...

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-24 20:09:02 -03:00
kumquat-ir
01c4ed232e license stuff
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-24 15:01:59 -05:00
kumquat-ir
dc8109658c review fixes
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-22 13:20:13 -05:00
Sefa Eyeoglu
8ce8055aeb
Merge pull request #846 from PrismLauncher/renovate/vedantmgoyal2009-winget-releaser-2.x 2023-02-22 16:19:11 +01:00
flow
a71b743ee3
Merge pull request #881 from PrismLauncher/renovate/actions-cache-3.x 2023-02-22 07:07:55 -08:00
renovate[bot]
c50e9ac418
chore(deps): update actions/cache action to v3.2.6 2023-02-21 12:33:23 +00:00
kumquat-ir
7973b01e81 fix metadata for mods with .nilmod extension
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-19 17:21:53 -05:00
TheKodeToad
6a5e9a59df Fix screwed up ui file
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-02-19 12:00:59 +00:00
TheKodeToad
bb62c62a03 Fix cmark again 🤦
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-02-19 11:37:59 +00:00
TheKodeToad
9cc3d9d4ce Merge remote-tracking branch 'upstream/develop' into skinfix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-02-19 11:35:26 +00:00
Sefa Eyeoglu
b977ac6df5
Merge pull request #865 from Scrumplex/codesign-windows 2023-02-17 17:56:55 +01:00
kumquat-ir
256fc322a8 minor cleanup
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-16 12:57:35 -05:00
Sefa Eyeoglu
33bf85a387
fix(actions): don't fail if code signing certificate is missing
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-02-16 16:41:40 +01:00
Sefa Eyeoglu
1f0fc61b53
Merge pull request from GHSA-gq28-qx55-mh2r
Don't extract files outside of target path
2023-02-15 21:48:06 +01:00
Sefa Eyeoglu
89c945ecc8
feat(ci): add Windows codesigning
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-02-15 20:43:33 +01:00
Sefa Eyeoglu
c15962c6c1
Merge pull request #859 from Ryex/fix-KISS-Linux-build
Add missing header to Application.cpp: Fix build failure on KISS Linux
2023-02-13 08:37:39 +01:00
kumquat-ir
9c2a3231c5 do not create nilmods folder
"it cant be that easy" - me, clueless

Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-13 01:45:23 -05:00
Rachel Powers
80840f1fdb fix: add missing header to Application.cpp
fails to compile on KISS Linux without

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-02-12 22:32:34 -07:00
Rachel Powers
7d02e1f866 feat: make shell association an optional section
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-02-12 17:34:37 -07:00
Rachel Powers
d93cb751b0 fix: oversight caused prism to be .zip windows default
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-02-12 16:23:33 -07:00
kumquat-ir
c07fff7503 switch to qdcss for parsing
make it not horrible to look at

Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-12 17:23:15 -05:00
kumquat-ir
7896dd19c1 nilmods instance page
mostly copied from the coremod page impl

Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-11 17:46:17 -05:00
kumquat-ir
f5f2d33f93 parse nil metadata
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-11 17:46:17 -05:00
renovate[bot]
4331eaae2e
chore(deps): update vedantmgoyal2009/winget-releaser action to v2 2023-02-11 15:48:00 +00:00
DioEgizio
d5d4f87236
Merge pull request #831 from PrismLauncher/renovate/cachix-install-nix-action-19.x 2023-02-11 16:47:30 +01:00
DioEgizio
5d49433326
Merge pull request #841 from RaptaG/patch-1 2023-02-11 08:45:42 +01:00
RaptaG
381d7413c8
Link license in the shield badge
So that no trash URL shows when hovering!

Signed-off-by: RaptaG <77157639+RaptaG@users.noreply.github.com>
2023-02-10 19:47:08 +02:00
Sefa Eyeoglu
e70a5a47ee
fix: ignore absolute paths when extracting
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-02-10 10:46:21 +01:00
Sefa Eyeoglu
6be7eed878
fix: don't extract files outside of target path
This should fix a security issue regarding path traversal in zip files.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-02-10 09:17:48 +01:00
Sefa Eyeoglu
a6ac832f8f
Merge pull request #839 from PrismLauncher/renovate/actions-cache-3.x
chore(deps): update actions/cache action to v3.2.5
2023-02-10 08:27:00 +01:00
renovate[bot]
104863846b
chore(deps): update actions/cache action to v3.2.5 2023-02-10 06:24:45 +00:00
Sefa Eyeoglu
5883c30b84
Merge pull request #834 from pandaninjas/patch-2 2023-02-09 09:29:13 +01:00
flow
cebaae76b4
Merge pull request #832 from ktheticdev/develop
Fix README COPR typo
2023-02-08 14:32:16 -08:00
PandaNinjas
d886d32bd8
Replace potentially ReDOSable regex
Signed-off-by: PandaNinjas <admin@malwarefight.gq>
2023-02-07 17:21:00 +00:00
ktheticdev
8440c2819b
Fix README.md typo
Signed-off-by: ktheticdev <64607352+ktheticdev@users.noreply.github.com>
2023-02-07 11:10:43 +04:00
renovate[bot]
8114d8778f
chore(deps): update cachix/install-nix-action action to v19 2023-02-06 15:31:42 +00:00
DioEgizio
f36c3a3f6c
Merge pull request #819 from Scrumplex/fix-launch-script 2023-02-06 16:26:54 +01:00
flow
46c6cc2d2b
chore: add my copyright headers
.-.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-05 17:02:56 -03:00
flow
ada5e88eb9
feat(RD): add texture pack downloader
This extends the resource pack downloader, with the custom behavior of
filtering the versions that shows up, to those <= 1.6. As always, Flame
is funky and requires a bit more workarounds than average.

This will also get a nice improvement when the Version parsing and
comparison PR gets merged! :D

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-05 17:02:56 -03:00
flow
b724607e31
feat(RD): add shader pack downloader
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-05 17:02:56 -03:00
flow
c3ea303a37
feat(RD): add resource pack downloader
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-05 17:02:52 -03:00
Sefa Eyeoglu
e89a10945c
Merge pull request #823 from BalkanMadman/linux-java
Fix https://github.com/PrismLauncher/PrismLauncher/issues/790
2023-02-05 19:09:48 +01:00
Sefa Eyeoglu
8ddc89fa01
Merge pull request #825 from Ryex/cmd_env_native_sep
fix https://github.com/PrismLauncher/PrismLauncher/issues/824
2023-02-05 18:42:19 +01:00
Sefa Eyeoglu
a47bf72b07
Merge pull request #751 from Edgars-Cirulis/develop 2023-02-05 17:48:26 +01:00
Rachel Powers
34460dd77a ensure command env vars use native path seperators
fix #824

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-02-04 12:28:52 -07:00
BalkanMadman
c125c96e88 Java installations detection fix for Linux
Signed-off-by: BalkanMadman <zurabid2016@gmail.com>
2023-02-04 16:48:06 +02:00
Sefa Eyeoglu
d2fd0fd8e8
Merge pull request #802 from KosmX/develop 2023-02-04 14:43:28 +01:00
flow
74a875bdce
Merge pull request #803 from TheLastRar/msys2-ccache 2023-02-04 05:37:23 -08:00
Sefa Eyeoglu
edaa66f622
fix: use /usr/bin/env bash in launch script
This should make it possible to run these scripts on any system, as
/bin/bash is not standard! Notably this fixes the script on NixOS.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-02-04 01:06:16 +01:00
Sefa Eyeoglu
c392db7e0d
Merge pull request #815 from Scrumplex/fix-funny 2023-02-03 18:44:07 +01:00
Sefa Eyeoglu
6ac073e779
fix: fix component uid regex
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-02-03 18:32:57 +01:00
flow
58d9ceda4b
Merge pull request #804 from flowln/improve_big_concurrent_task_test 2023-02-02 13:47:51 -08:00
flow
3781c64d41
Merge pull request #810 from flowln/error_on_bad_file_paths_as_we_should_catquake 2023-02-02 13:47:36 -08:00
flow
4166d9ab7b
fix: give error when components have bad uids
This allows other code to reject proceeding when the UID is bad, which
is generally a good idea. :p

Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-02 17:11:24 -03:00
flow
435273e08a
fix(Inst.Import): don't allow bad file path in mrpack import
This checks the URL of the path of the file to be downloaded,
ensuring that it always contains the root .minecraft target folder,
following the warning in the mrpack documentation.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-02 17:11:24 -03:00
KosmX
35a62d9787
commit requested change, make the lock static
Signed-off-by: KosmX <kosmx.mc@gmail.com>
2023-02-01 23:31:12 +01:00
TheLastRar
75683039c5 CI: Always update windows ccache
Also change name to avoid pulling the stale cache

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2023-02-01 20:13:26 +00:00
TheLastRar
1a609612f2 CI: Move mingw restore cache before setup ccache
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2023-02-01 20:13:26 +00:00
TheLastRar
121a7a9e23 CI: Log ccache stats for msys2
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2023-02-01 20:13:26 +00:00
flow
e593faf245
fix(tests): improve the reliability of the Task's stack test
This actually takes into account the amount of stuff put into the stack
in each iteration, and thus avoids having to change the stack size of
the thread, and using ad-hoc values for the other stuff. It also reduces
the time the test takes to run.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-01 16:58:33 -03:00
KosmX
ec5bb944b2
thread-safe logger
Signed-off-by: KosmX <kosmx.mc@gmail.com>
2023-02-01 14:59:11 +01:00
flow
deed49574a
Merge pull request #798 from PrismLauncher/renovate/actions-cache-3.x 2023-01-30 07:02:51 -08:00
renovate[bot]
7cc39cd357
chore(deps): update actions/cache action to v3.2.4 2023-01-30 13:29:47 +00:00
flow
a714d5966e
Merge pull request #795 from leo78913/mainwindow-fixes
closes https://github.com/PrismLauncher/PrismLauncher/issues/792
2023-01-29 10:35:26 -08:00
leo78913
2b0252d4ae Fix: fix some regressions in the main window
this removes the update action from the help button
and fixes the add to path action not showing on macos

Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-28 15:09:26 -03:00
flow
c78db5459e
Merge pull request #724 from leo78913/dot-ui-mainwindow
Closes https://github.com/PrismLauncher/PrismLauncher/issues/594
Closes https://github.com/PrismLauncher/PrismLauncher/issues/69
Closes https://github.com/PrismLauncher/PrismLauncher/issues/473
2023-01-27 10:55:49 -08:00
leo78913
a27564ed70 better fix for WideBar::insertSeparator
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-27 13:48:12 -03:00
leo78913
df8df41621 Remove unused BarEntry variable
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-27 12:40:27 -03:00
leo78913
d5a0d4b452
Update launcher/ui/MainWindow.ui
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-27 12:35:53 -03:00
leo78913
357b6ee991
Update launcher/ui/MainWindow.ui
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-27 12:35:41 -03:00
leo78913
4d2b5c2f42 refactor: clean up some MainWindow stuff
this makes the accounts button and menubar item share the same QMenu
and also refactors some code

Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-26 19:48:21 -03:00
flow
f705cf09bc
Merge pull request #787 from flowln/make_shared_ptrs_explicit 2023-01-26 10:15:28 -08:00
flow
29f7ea752f
refactor: make shared_qobject_ptr ctor explicit
This turns issues like creating two shared ptrs from a single raw ptr
from popping up at runtime, instead making them a compile error.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-25 16:57:51 -03:00
flow
9b7c8ea22d
Merge pull request #779 from TheLastRar/zlib-undo-rename 2023-01-25 11:53:51 -08:00
Sefa Eyeoglu
199a7df807
refactor: add error handling to component import
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-25 10:43:23 +01:00
Sefa Eyeoglu
5186ad95d3
Merge pull request #784 from flowln/fix_resource_folder_double_smart_ptrs 2023-01-25 10:33:01 +01:00
Sefa Eyeoglu
0546345182
Merge pull request #458 from Scrumplex/remove-updater 2023-01-25 10:32:49 +01:00
flow
90feaaf2df
fix(Tasks): don't try to start more tasks than necessary
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-24 17:04:05 -03:00
flow
6d27ef5eea
fix(ResourceFolder): don't create two smart ptrs for the same raw ptr
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-24 17:04:01 -03:00
flow
e4e8a51e5c
Merge pull request #781 from Ryex/patch-1 2023-01-24 11:15:33 -08:00
Rachel Powers
3ddf413332
Update launcher/Application.cpp
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-24 09:24:12 -07:00
flow
6eb36fb053
Merge pull request #783 from DioEgizio/update-cmark-fix-cve 2023-01-24 07:25:26 -08:00
DioEgizio
58239ff98f fix: update cmark to fix a CVE
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-01-24 15:05:13 +01:00
Sefa Eyeoglu
6e841a3b7e
Merge branch 'develop' into remove-updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-24 14:40:17 +01:00
Rachel Powers
085e067fc1
remove NDEBUG check per Scrumplex's orders
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-24 02:26:21 -07:00
Rachel Powers
c45fa016c0
fix: let jars be found from inside build dir for debug builds
debug bug builds run form inside the build dir before they are bundled can't find the jars

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-23 18:36:58 -07:00
Sefa Eyeoglu
16477a8f6c
Merge pull request #675 from flowln/generalize_mod_model 2023-01-23 23:58:52 +01:00
Sefa Eyeoglu
04e4900415
Merge pull request #758 from flowln/fix_process_events_backstab 2023-01-23 23:58:41 +01:00
TheLastRar
322f317a5b fix: Undo zlibs file rename when using bundled zlib
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2023-01-23 22:36:26 +00:00
flow
ea5020e188
fix(license): add/fix my copyright/license headers
*sobbing in messy legal stuff i know nothing about*

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-23 11:12:43 -03:00
Sefa Eyeoglu
cefa1662ef
Merge pull request #772 from TheLastRar/zlib-fallback-bundled-fix
Fix: zlib fallback not working
2023-01-23 00:07:34 +01:00
TheLastRar
2a949fcb86 fix: zlib fallback
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2023-01-22 15:04:15 +00:00
flow
445f9e5f71
feat+fix(Version): make comparsion FlexVer-compatible
... and fixes a minor issue in the parsing.

This changes the expected behavior of Versions in one significant way:
Now, Versions like 1.2 or 1.5 evaluate to LESS THAN 1.2.0 and 1.5.0
respectively. This makes sense for sorting versions, since one expects
the versions without patch release to 'contain' the ones with, so the
ones without should be evaluated uniformily with the ones with the
patch.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-21 18:47:47 -03:00
leo78913
5a25ce8c1b Fix main window icon and stuff
i forgor 💀

Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
670cf8ee07 Fix: make the newsLabel toolbutton fullwidth again
this reverts it to how it was before the MainWindow .ui port

Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
6c5f6e8900 Fix status bar name
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
4ed4fb2314 remove useless setEnabled calls
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
f16989bea9 feat(WideBar): custom context menu actions
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
55d4064335 Fix: translate actionNoDefaultAcount text
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
3b38a4c690 Fix: translate NoAccountsAdded text
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
ada595663d fix(widebar): fix insertSeparator
WideBar::insertSeparator was adding the separator to the end of the toolbar

Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
b2de01b076 feat(WideBar): Allow disabling alt shortcuts
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
f3acf35aea refactor: Port the main window to a .ui file
some stuff still needs to be done in the c++ side because qt designer is dumb >:(

the instance toolbar icon and instance name buttons are still added manually inside MainWindow.cpp

looks almost identical, with some minor tweaks:
- the instance toolbar is now a WideBar, so you can customize what actions you want :D
- the instance toolbar buttons are now fullwidth
- the close window button is now at the end of the file menu
- the help menu has some layout changes

this also fixes some stuff:
- menus not having tooltips
- the top toolbar not connecting to the title bar in kde
- the instance toolbar separators looking weird after you move the toolbar

Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
leo78913
3da1d6a464 feat: add Widebar::InsertWidgetBefore method
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:44:39 -03:00
flow
b9df10c8bd
Merge pull request #766 from TayouVR/change-cat-on-settings-change
closes https://github.com/PrismLauncher/PrismLauncher/issues/763
2023-01-20 08:36:08 -08:00
flow
ec1f73c827
fix(tests): add some comments on the stack overflow Task test
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-20 12:55:38 -03:00
Tayou
cdc9f93f71
make MainWindow cat update instantly
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-20 15:16:25 +01:00
flow
bcebb1920f
refactor: clean up Section struct
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-20 11:15:26 -03:00
flow
81848e05f1
refactor: simplify Version operators
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-20 11:15:26 -03:00
flow
5ae69c079a
feat(tests): add FlexVer test vector to the Version tests
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-20 11:15:26 -03:00
Edgars Cīrulis
0199d8a74f
Version.cpp: Add new line
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-19 14:12:59 +02:00
Edgars Cīrulis
f49ad2ee03
Version.h: Fix comparison of null version in Version class
Co-authored-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-19 10:40:30 +02:00
Rachel Powers
7ed993b54e
fix: proper null padded version comparison
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-19 09:51:11 +02:00
Rachel Powers
9934537e19
feat: add debug printing for Version
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-19 09:50:45 +02:00
flow
00d42d296e
fix: call processEvents() before adding new tasks to the task queue
This allows the ongoing task to go off the stack before the next one is
started.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-18 16:23:30 -03:00
flow
ad74fedfba
feat(tests): add test for stack overflow in ConcurrentTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-18 16:23:30 -03:00
Edgars Cīrulis
730f714e97
Version.cpp: Remove unnecessary QStringList include
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-17 22:39:19 +02:00
Edgars Cīrulis
3bec4a80b3
Version.cpp: Decompose version strings according to flexver
Co-authored-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-17 22:39:12 +02:00
Edgars Cīrulis
a84e4b0e07
Version.cpp: Format parse function code using clang-format
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-17 07:14:49 +02:00
Edgars Cīrulis
198139feb4
Version.cpp: Simplify Version::parse by using const auto& current_char
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-17 07:14:37 +02:00
Edgars Cīrulis
de11017552
Version.cpp: Use anonymous function to eliminate code duplication
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-17 07:14:29 +02:00
Edgars Cīrulis
6fb837c529
Version.cpp: Add version string parser to split on '.' character
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-17 07:14:05 +02:00
Edgars Cīrulis
c0c3892064
Version.cpp: Improve version parsing to handle mixed numeric and alphabetic characters
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-17 07:13:24 +02:00
Sefa Eyeoglu
1a35fec134
Merge pull request #696 from Ryex/import-all-the-things
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/581
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/700
2023-01-16 10:04:09 +01:00
flow
f1247d2224
Merge pull request #753 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2023-01-15 11:39:50 -03:00
renovate[bot]
7992b7eb89
chore(deps): update hendrikmuhs/ccache-action action to v1.2.8 2023-01-15 13:40:16 +00:00
Sefa Eyeoglu
cd893e18d2
chore: update license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-14 17:21:52 +01:00
Sefa Eyeoglu
a5c8b166fe
Merge pull request #746 from RaptaG/patch-1 2023-01-14 17:17:49 +01:00
RaptaG
72a9b98ef0
We're in 2023 :)
Signed-off-by: RaptaG <77157639+RaptaG@users.noreply.github.com>
2023-01-14 17:55:56 +02:00
flow
cf022524d1
Merge pull request #743 from flowln/fix_mods_with_wrong_modListVersion 2023-01-14 12:19:12 -03:00
flow
ebb0596c1a
fix: don't fail mod parsing when encountering invalid modListVersion
The spec (admitely a very old one) states that this entry should always
have the value "2". However, some mods do not follow this convention,
causing issues.

One notable example is the 1.6 version of Aether II for 1.7.10, that has
this value set at "5" for whatever reason.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 21:15:10 -03:00
flow
3de681d2d6
Merge pull request #685 from byteduck/instance-accounts 2023-01-13 17:21:12 -03:00
Rachel Powers
f7b0ba88da Apply suggestions from code review
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-13 13:15:13 -07:00
flow
c95c81d42f
fix(ModUpdater): ensure instead of require icon_url
The spec says that this can be null, and indeed some mods have it set to
null, and should still be considered as valid.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:59:37 -03:00
flow
9407596b12
fix(ModUpdater): fail mods individually when there's errors in the JSON
Prevents a single problematic mod from invalidating all the API
response.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:49:21 -03:00
flow
c294c2d1df
refactor(RD): allow setting custom folder target for downloaded resources
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:09 -03:00
flow
bd36f8e220
fix(RD): set resource strings for ReviewMessageBox too
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:09 -03:00
flow
3a168ba6dd
feat(tests): add very basic ResourceModel test
______very_____ basic indeed, creating tests is super boring :c

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:09 -03:00
flow
1919069b12
fix(RD): don't assert search offset on fetchMore() in ResourceModel
This allows the standard QAbstractItemModelTester to work without
shenanigans!

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:09 -03:00
flow
ba677a8cb7
refactor: change some ResourceAPI from NetJob to Task
This makes it easier to create resource apis that aren't network-based.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:09 -03:00
flow
e62e1d9701
refactor(RD): move BaseInstance dep. to subclasses of ResourceModel
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:08 -03:00
flow
b3330cb0da
fix(RD): correctly set the strings for the specific resource names
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:08 -03:00
flow
7d128c79a3
fix: CodeQL warnings about the rule of two
shush

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:08 -03:00
flow
3cff23dae2
refactor(RD): move success callbacks from ModModel to ResourceModel
While implementing the resource pack downloader in another branch, I
noticed that most of the code in the success callback was identical in
both cases, safe for a few minute differences in strings. So, this tries
to make it easier to share this piece of code.

However, it still leaves the possibility of extending the methods in
ResourceModel to accomodate for cases where this similarity may not
hold.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:08 -03:00
flow
c3f0139f76
refactor(RD): add helper in ResourceModel to find current sorting
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:08 -03:00
flow
563fe8d515
fix(RD): separate search and versions/info tasks
This allows us to check whether a search request is already on-going, in
which case we don't need to make another one (and shouldn't).

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:08 -03:00
flow
38e20eb148
fix(RD): pass copy of IndexedPack to callbacks instead of ref.
This prevents a crash in which the pack list gets updated in a search
request meanwhile a versions / extra info request is being processed.
Previously, this situation would cause the reference in the latter
callbacks to be invalidated by an internal relocation of the pack list.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:07 -03:00
flow
36571c5e22
refactor(RD): clear up sorting methods
This refactors the sorting methods to join every bit of it into a single
list, easing maintanance. It also removes the weird index contraint on
the list of methods by adding an index field to the DS that holds the
method.

Lastly, it puts the available methods on their respective API, so other
resources on the same API can re-use them later on.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:07 -03:00
flow
c8eca4fb85
fix: build with qt5.12 on Linux and pedantic flag
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:07 -03:00
flow
0e207aba6c
feat(RD): add roleNames and Q_PROPERTY to ResourceModel
in preparation for QML interop.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:07 -03:00
flow
45d1319891
refactor(RD): decouple ResourceModels from ResourcePages
This makes it so that we don't need a reference to the parent page in
the model. It will be useful once we change the page from a widget-based
one to a QML page.

It also makes tasks be created in the dialog instead of the page, so
that the dialog can also have the necessary information to mark versions
as selected / deselected easily. It also makes the task pointers into
smart pointers.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:07 -03:00
flow
39b7ac90d4
refactor(RD): unify download dialogs into a single file
No need for multiple files since the subclasses are so small now

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:06 -03:00
flow
ef87bdf18a
fix(RD): prevent weird behavior of progress widget
when i.e. clicking on links or just using the downloader at all, this
prevents some flickering and the widget never getting hidden in some
cases.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:06 -03:00
flow
433a802c6e
refactor: put resource downloading classes in common namespace
Puts them all inside the 'ResourceDownload' namespace, so that it's a
bit clearer from the outside that those belong to the same 'module'.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:06 -03:00
flow
6a18079953
refactor: generalize mod models and APIs to resources
Firstly, this abstract away behavior in the mod download models that can
also be applied to other types of resources into a superclass, allowing
other resource types to be implemented without so much code duplication.

For that, this also generalizes the APIs used (currently, ModrinthAPI
and FlameAPI) to be able to make requests to other types of resources.

It also does a general cleanup of both of those. In particular, this
makes use of std::optional instead of invalid values for errors and,
well, optional values :p

This is a squash of some commits that were becoming too interlaced
together to be cleanly separated.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:00 -03:00
flow
b937d33436
Merge pull request #714 from redstrate/cmark 2023-01-13 16:16:00 -03:00
Sefa Eyeoglu
f7244fbf68
Merge pull request #737 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x
chore(deps): update hendrikmuhs/ccache-action action to v1.2.7
2023-01-13 08:17:59 +01:00
Aaron
4e80d1fc79
DCO Remediation Commit for Aaron <10217842+byteduck@users.noreply.github.com>
I, Aaron <10217842+byteduck@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 160dd09fc2

Signed-off-by: Aaron <10217842+byteduck@users.noreply.github.com>
2023-01-12 20:16:48 -08:00
Aaron Sonin
b2f48eaeb8
Merge branch 'PrismLauncher:develop' into instance-accounts 2023-01-12 20:11:46 -08:00
Aaron
160dd09fc2
Fix instance account selector face for offline accounts 2023-01-12 20:03:31 -08:00
renovate[bot]
80eea05deb
chore(deps): update hendrikmuhs/ccache-action action to v1.2.7 2023-01-12 22:06:50 +00:00
Sefa Eyeoglu
5e89ba7079
Merge pull request #732 from DioEgizio/actually-fix-openssl3-mac-failures 2023-01-12 16:31:03 +01:00
DioEgizio
ff7878217d fix: add cmark:p to mingw build
this way we can just dynamically link it on that build instead of building it ourselves and statically linking it

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-01-12 10:08:52 -05:00
Joshua Goins
807da6a035 fix: Remove extra line breaks for modrinth descriptions
Signed-off-by: Joshua Goins <josh@redstrate.com>
2023-01-12 10:08:52 -05:00
Joshua Goins
4e2a958896 fix(flatpak): enable builddir
Signed-off-by: Joshua Goins <josh@redstrate.com>
2023-01-12 10:08:52 -05:00
Sefa Eyeoglu
3ee0ec7cd0 fix(nix): add cmark dependency
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-12 10:08:52 -05:00
Sefa Eyeoglu
22a2b7ac46 refactor: support system and bundled cmark
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-12 10:08:52 -05:00
Joshua Goins
aa7c910e26 build: remove hoedown vendored source
Signed-off-by: Joshua Goins <josh@redstrate.com>
2023-01-12 10:08:52 -05:00
Joshua Goins
24a4bd3a1c refactor: replace hoedown markdown parser with cmark
Signed-off-by: Joshua Goins <josh@redstrate.com>
2023-01-12 10:08:52 -05:00
Sefa Eyeoglu
fff52cb247
feat: add button to import component JSONs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-11 13:50:57 +01:00
Sefa Eyeoglu
219c5b323d
Merge pull request #731 from flowln/windows_server_trash 2023-01-11 09:49:20 +01:00
DioEgizio
14278a9e35 fix: set HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK to 1
should fix some random failures

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-01-10 20:02:20 +01:00
Sefa Eyeoglu
dd013209e8
Merge pull request #730 from DioEgizio/aaaaaaaa-revert
Revert "Merge pull request #729 from DioEgizio/fix-mac-openssl3-failing"
2023-01-10 17:44:23 +01:00
flow
96d5438633
Merge pull request #249 from TayouVR/theme-selector-first-time-wizard 2023-01-10 13:28:57 -03:00
flow
391ef64c22
fix(FileSystem): don't attempt to trash items on Windows Server
For some reason this makes some of our CI test runs super slow, and
sometimes fail miserably.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-10 12:50:56 -03:00
DioEgizio
d45a62b3a6 Revert "Merge pull request #729 from DioEgizio/fix-mac-openssl3-failing"
it was necessary :/

This reverts commit 976e550aa7, reversing
changes made to 61144f7a21.

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-01-10 16:47:28 +01:00
Sefa Eyeoglu
976e550aa7
Merge pull request #729 from DioEgizio/fix-mac-openssl3-failing
fix: just use github runner's openssl 1.1 instead of installing 3 on …
2023-01-10 16:28:02 +01:00
Tayou
668b19d119
Add hint about Cat
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:09:57 +01:00
Sefa Eyeoglu
5c48f0b458
fix: set minimum size for setup wizard
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-10 16:06:50 +01:00
Tayou
689fe1e2c7
CRLF -> LF
damn you visual studio for creating CRLF files everywhere...
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:06:50 +01:00
Tayou
7d440402ad
Update launcher/Application.cpp with suggestion from scrumplex
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:06:42 +01:00
Tayou
6daa457838
Implement Suggestions from flow & Scrumplex
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:06:42 +01:00
Tayou
49d317b19a
UX tweak + formatting + added cat to wizard
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:06:24 +01:00
Tayou
1b80ae0fca
add theme setup wizard
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:06:01 +01:00
DioEgizio
a113ecca8b fix: just use github runner's openssl 1.1 instead of installing 3 on macos signing
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-01-10 15:03:28 +01:00
Sefa Eyeoglu
61144f7a21
Merge pull request #726 from TheLastRar/qt6-win-darkmode
Closes https://github.com/PrismLauncher/PrismLauncher/issues/158
2023-01-10 08:48:17 +01:00
Rachel Powers
574af2c795 chore: cleanup review suggestions
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-09 17:18:08 -07:00
Rachel Powers
a4870d4834 fix: fix #700
fixed by properly converting from a file path and converting to native seperators.
should have known naive handling of file path as a URL would come back to bite us cross platform.

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-09 17:00:12 -07:00
TheLastRar
78bbcac0ea ui: Let Qt 6.4.2 handle dark mode titlebar
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2023-01-09 19:44:11 +00:00
TheKodeToad
d4b346b7ae Fix oversights
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-09 10:48:46 +00:00
Sefa Eyeoglu
ca9b2525c8
Merge pull request #715 from getchoo/add-teawie 2023-01-09 09:46:31 +01:00
Sefa Eyeoglu
bb1c387a98
Merge pull request #722 from PrismLauncher/renovate/actions-cache-3.x 2023-01-09 09:41:32 +01:00
Sefa Eyeoglu
38ce37b6fd
Merge pull request #720 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2023-01-09 09:41:03 +01:00
renovate[bot]
7fdc81236e
chore(deps): update actions/cache action to v3.2.3 2023-01-09 07:54:22 +00:00
renovate[bot]
fca40c1c6b
chore(deps): update hendrikmuhs/ccache-action action to v1.2.6 2023-01-08 22:40:41 +00:00
TheKodeToad
52b3a54e4b
Fix cloaks conflicting with join server endpoint
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-08 15:36:36 +00:00
flow
d5d5d66e03
Merge pull request #716 from DioEgizio/qt6.4.2-winmsvc
closes https://github.com/PrismLauncher/PrismLauncher/issues/288
2023-01-08 11:33:13 -03:00
DioEgizio
0481ae187a chore: update windows msvc to qt 6.4.2
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-01-08 10:34:45 +01:00
seth
9de6927c3f
feat: add CC BY-SA 4.0 info for teawie images
Signed-off-by: seth <getchoo@tuta.io>
2023-01-07 19:18:22 -05:00
Rachel Powers
30b01ef053 fix: *sigh* no implicit QString->QFileInfo conversion in Qt6, again...
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-07 15:04:23 -07:00
Rachel Powers
03b75bf2a9 feat: Import all the things!
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-07 15:04:22 -07:00
Sefa Eyeoglu
f3f628410d
Merge pull request #576 from Ryex/identify-zip-packs
fix https://github.com/PrismLauncher/PrismLauncher/issues/349
2023-01-07 17:33:34 +01:00
Sefa Eyeoglu
9901ecda49
Merge pull request #710 from byquanton/develop
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/708
2023-01-07 17:18:10 +01:00
flow
39becf607e
Merge pull request #713 from redstrate/fix-html-rendering 2023-01-07 12:57:35 -03:00
seth
f5955a4738
feat: add bday teawie
Signed-off-by: seth <getchoo@tuta.io>
2023-01-07 04:47:53 -05:00
seth
e018b30875
fix: make spooky teawie load
gimp fail

Signed-off-by: seth <getchoo@tuta.io>
2023-01-07 04:38:26 -05:00
seth
2dbd775cf3
feat: add xmas teawie
Signed-off-by: seth <getchoo@tuta.io>
2023-01-07 04:37:41 -05:00
seth
a5051327db
feat: add spooky teawie
Signed-off-by: seth <getchoo@tuta.io>
2023-01-07 03:42:53 -05:00
seth
8140f5136d
feat: add teawie
drawn by sympathytea (https://github.com/SympathyTea)

Signed-off-by: seth <getchoo@tuta.io>
2023-01-06 22:28:15 -05:00
Joshua Goins
f04703f09b Strip certain HTML tags when rendering mod pages
Some mod pages use certain tags for centering purposes, but trips up
hoedown.

Signed-off-by: Joshua Goins <josh@redstrate.com>
2023-01-06 15:05:19 -05:00
TheKodeToad
be7f81421a Finishing touches
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-06 10:46:43 +00:00
TheKodeToad
17317ea308 Move legacy support classes to another jar
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-06 09:23:36 +00:00
TheKodeToad
cb32711077 Slim skin fix - thanks to @craftycodie and @DelofJ
!

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-06 09:21:43 +00:00
byquanton
2faf8332ee
fix: Add 1.16+ Forge library prefix in TechnicPackProcessor.cpp
Signed-off-by: byquanton <32410361+byquanton@users.noreply.github.com>
2023-01-06 02:44:10 +01:00
Aaron Sonin
e0e3d4d8fe
Merge branch 'PrismLauncher:develop' into instance-accounts 2023-01-02 11:59:29 -07:00
Aaron
ba81ad1ac3 Reword instance-specific account settings, apply clang-format
Signed-off-by: Aaron <10217842+byteduck@users.noreply.github.com>
2023-01-02 11:17:19 -07:00
Aaron Sonin
eefb259ddf Remove unecessary delete in InstanceSettingsPage destructor
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Aaron Sonin <10217842+byteduck@users.noreply.github.com>
Signed-off-by: Aaron <10217842+byteduck@users.noreply.github.com>
2023-01-02 11:17:19 -07:00
Aaron Sonin
9b8add1961 Properly connect signal in instance settings for account selector
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Aaron Sonin <10217842+byteduck@users.noreply.github.com>
Signed-off-by: Aaron <10217842+byteduck@users.noreply.github.com>
2023-01-02 11:17:19 -07:00
Aaron Sonin
e186523878 Add null check for face in instance account settings selector
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Aaron Sonin <10217842+byteduck@users.noreply.github.com>
Signed-off-by: Aaron <10217842+byteduck@users.noreply.github.com>
2023-01-02 11:17:19 -07:00
Aaron Sonin
021e6c02d7 Replace unecessary type check with assertion in InstanceSettingsPage
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Aaron Sonin <10217842+byteduck@users.noreply.github.com>
Signed-off-by: Aaron <10217842+byteduck@users.noreply.github.com>
2023-01-02 11:17:19 -07:00
Aaron
cba3d68063 Fix conflicting layout name in InstanceSettingsPage
Signed-off-by: Aaron <10217842+byteduck@users.noreply.github.com>
2023-01-02 11:17:19 -07:00
Aaron
7e2d78bab5 Allow selecting a default account to use with an instance
Signed-off-by: Aaron <10217842+byteduck@users.noreply.github.com>
2023-01-02 11:17:19 -07:00
DioEgizio
4b12c85d91
Merge pull request #673 from PrismLauncher/renovate/flatpak-flatpak-github-actions-5.x
chore(deps): update flatpak/flatpak-github-actions action to v5
2022-12-30 19:23:10 +01:00
Rachel Powers
0ebf04a021
fix newlines
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-30 10:21:49 -07:00
flow
d55f47077a
Merge pull request #626 from leo78913/mods-provider-column
closes https://github.com/PrismLauncher/PrismLauncher/issues/402
2022-12-30 11:39:03 -03:00
Sefa Eyeoglu
11df4845b7
fix: remove Flatpak cache key workaround
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-30 15:36:35 +01:00
Rachel Powers
7f438425aa refactor: add an identify function to make easy to reuse
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-29 19:47:19 -07:00
Rachel Powers
c470f05abf refactor: use std::filesystem::rename insted of copy and then moving.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-29 17:21:54 -07:00
flow
141e94369e
feat(Mods): hide 'Provider' column when no mods have providers
This makes the mod list look a bit less polluted in the common case of
mods having no provider whatsoever.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-29 13:21:49 -03:00
flow
257970c27d
refactor(Mods): make provider() return a std::optional
This makes it easier to check if a mod has a provider or not, without
having to do a string comparison.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-29 13:21:49 -03:00
flow
67ac3da8a0
Merge pull request #684 from Scrumplex/logging-categories
Prevents private credentials from leaking in the logs of general users
2022-12-28 09:54:23 -08:00
Sefa Eyeoglu
c1e5179b5f
Merge pull request #680 from AshtakaOOf/flathub-screenshots 2022-12-28 13:48:39 +01:00
Sefa Eyeoglu
7a651bdc53
feat: install launcher logging categories
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-27 18:10:01 +01:00
Sefa Eyeoglu
f33f596584
refactor: use ECM logging categories instead
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-27 17:34:21 +01:00
Sefa Eyeoglu
c8d8046412
refactor: add logging category for credentials
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-27 17:04:42 +01:00
Sefa Eyeoglu
4d334b645d
Merge pull request #681 from PrismLauncher/renovate/actions-cache-3.x 2022-12-27 13:54:00 +01:00
renovate[bot]
58d3779efb
chore(deps): update actions/cache action to v3.2.2 2022-12-27 12:20:21 +00:00
Rachel Powers
3691f3a296 fix: cleanup and suggested changes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-26 14:50:15 -07:00
Adrien
463b4fbe0c Fix
Me when me when me when

Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-12-26 20:09:47 +01:00
Adrien
9f1c79a5ec Update org.prismlauncher.PrismLauncher.metainfo.xml.in
Add ModpackUpdate and change some lines

Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-12-26 19:59:46 +01:00
Adrien
70573b6f31 Update org.prismlauncher.PrismLauncher.metainfo.xml.in
Should be the right properties (I hope)

Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-12-26 19:24:17 +01:00
Sefa Eyeoglu
6ea1234a3b
Merge pull request #618 from TheKodeToad/safer-destructive-actions
Fixes https://github.com/PolyMC/PolyMC/issues/948
2022-12-26 17:48:43 +01:00
TheKodeToad
434f639b0c Use optional instead of hardcoded cancelled string
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-26 14:58:37 +00:00
TheKodeToad
bf04becc9e About to -> you are about to
You're is used in some other places but im lazy

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-26 14:45:04 +00:00
chmodsayshello
e8ee4497f7 store logs in sperate directory
Signed-off-by: chmodsayshello <chmodsayshello@hotmail.com>
2022-12-26 09:59:26 +01:00
Rachel Powers
b2082bfde7 fix: explicit QFileInfo converison for qt6
fix: validatePath in validateZIPResouces

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-25 17:16:26 -07:00
Rachel Powers
78984eea3a feat: support installing worlds during flame pack import.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-25 16:49:56 -07:00
TheKodeToad
5c96b1c628
Remove MIT license from JsonParser
I don't mind, and it's my code.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-25 09:45:42 +00:00
Rachel Powers
8422e3ac01 feat: zip resource validation check for flame
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 20:43:17 -07:00
Rachel Powers
cfce54fe46 fix: update parse tests
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 20:43:17 -07:00
Rachel Powers
a7c9b2f172 feat: validate world saves
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 20:43:17 -07:00
Rachel Powers
eb31a951a1 feat: worldSave parsing and validation
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 20:43:01 -07:00
Rachel Powers
ccfe605920 feat: add shaderpack validation
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 15:55:10 -07:00
Rachel Powers
878614ff68 feat: add a ModUtils::validate
moves the reading of mod files into `ModUtils` namespace

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 09:42:02 -07:00
Rachel Powers
25e23e50ca fix: force add of ignored testdata files
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 09:42:02 -07:00
Rachel Powers
64c51a70a3 feat: add initial support for parseing datapacks
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 09:42:02 -07:00
renovate[bot]
e4296c48c8
chore(deps): update flatpak/flatpak-github-actions action to v5 2022-12-24 16:20:44 +00:00
flow
dd3848d7b1
Merge pull request #666 from getchoo/pls-scrump
scrump heard your pleads, rejoice!
2022-12-24 06:38:49 -08:00
flow
56ac1a0813
Merge pull request #665 from flowln/logging_categories 2022-12-24 03:58:49 -08:00
TheKodeToad
cbe5af235c Make requested changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-24 08:59:55 +00:00
seth
f932ffcc5b
fix: check if GIT_REFSPEC is empty
Signed-off-by: seth <getchoo@tuta.io>
2022-12-23 20:50:08 -05:00
flow
0a50c5bf40
Merge pull request #644 from RaptaG/new-readme 2022-12-23 04:39:57 -08:00
flow
e416e5d301
Merge pull request #667 from PrismLauncher/renovate/actions-cache-3.x 2022-12-23 04:00:43 -08:00
TheKodeToad
884bd85495 Skin fix -> online fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-23 09:35:29 +00:00
TheKodeToad
94067f34cf Try to make some of the suggested changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-23 09:34:26 +00:00
renovate[bot]
3227859992
chore(deps): update actions/cache action to v3.2.1 2022-12-23 08:18:30 +00:00
seth
01139c3b50
fix: assume builds are stable when git isn't installed
Signed-off-by: seth <getchoo@tuta.io>
2022-12-22 19:25:04 -05:00
flow
ee3e65d759
feat(docs): add note about logging env variables in man page
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-22 19:18:16 -03:00
flow
c85867395d
feat: use Qt logging facilities instead of our own
This system allows us to globally define categories, and control whether
they are shown or not at runtime. It also does some things by it's own,
so we can remove some (uhhh) code.

Lastly, this allows changing the behavior of the logger at runtime via
environment variables that Qt takes care of for us.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-22 19:15:50 -03:00
flow
bf2ce54076
Merge pull request #656 from PrismLauncher/renovate/actions-cache-3.x 2022-12-21 07:30:23 -08:00
renovate[bot]
07de285299
chore(deps): update actions/cache action to v3.2.0 2022-12-21 14:46:35 +00:00
Sefa Eyeoglu
8c194cd245
Merge pull request #649 from Scrumplex/fix-winget-release-no9999999 2022-12-19 16:36:42 +01:00
Sefa Eyeoglu
8cbec3d5a0
fix: update installers-regex for winget releaser again
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-19 16:31:50 +01:00
Sefa Eyeoglu
cdf05e74c8
Merge pull request #647 from Scrumplex/update-flake 2022-12-19 16:09:55 +01:00
Sefa Eyeoglu
b98b4f1027
chore(nix): update flakes
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-19 15:54:10 +01:00
Sefa Eyeoglu
fc11dfd6b4
refactor(nix): use tomlplusplus from nixpkgs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-19 15:54:09 +01:00
Sefa Eyeoglu
483a5b6cae
fix(nix): use jdk17 instead of jdk
See NixOS/nixpkgs#206806

Co-authored-by: Infinidoge <infinidoge@doge-inc.net>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-19 15:44:05 +01:00
Sefa Eyeoglu
df1b7f1656
Merge pull request #628 from flowln/fix_multiple_resource_packs_crash
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/624
2022-12-19 15:35:34 +01:00
RaptaG
a566d1c5de
Change numbered list to bullet list
Signed-off-by: RaptaG <77157639+RaptaG@users.noreply.github.com>
2022-12-18 18:01:44 +02:00
Sefa Eyeoglu
11c8237d8b
Merge pull request #642 from DioEgizio/dont-ship-unnecessary-tlsbackends
fix: exclude unused tls backends
2022-12-18 16:27:48 +01:00
RaptaG
6dc19c85a8
Improve the README
Not very serious changes, just some enhancements to make it look better!

Signed-off-by: RaptaG <77157639+RaptaG@users.noreply.github.com>
2022-12-18 15:23:22 +02:00
DioEgizio
6e07c11f65 fix: exclude unused tls backends
makes bundles slightly smaller on windows and macos:

- qopensslbackend will not be used neither on macos nor on qt6 windows, so let's just not copy it
- qcertonlybackend won't be used and wouldn't work for prism anyways as it doesn't support some features we use

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-18 11:03:48 +01:00
Sefa Eyeoglu
8da6667816
Merge pull request #636 from flowln/fix_component_version_when_updating
Correctly set component versions in Modrinth pack updating
2022-12-17 17:26:34 +01:00
flow
81fedbf03c
refactor(Tasks): remove 'm_total_size' from ConcurrentTask
We can use the queues directly instead.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-17 13:10:19 -03:00
flow
0516055b31
Merge pull request #630 from leo78913/yeet-scrollbars 2022-12-17 08:02:41 -08:00
flow
e3f8d99087
refactor(Inst. Import): use m_* for member variables in MR components
Makes it clearer what is being changed when.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-17 12:41:10 -03:00
flow
22aebc2215
fix(Inst. Import): correctly set component versions when updating
This makes it so that the later call to parse the old manifest doesn't
change the class data, so that the new data con continue there and be
reflected on the component list later.

Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-17 12:38:58 -03:00
leo78913
3653e9d5e3 let the theme decide the notes page right margin
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-17 12:05:20 -03:00
flow
40f16b6d62
Merge pull request #631 from getchoo/better-msvc-flags 2022-12-17 05:53:17 -08:00
seth
a61daa40dc
fix: re-enable /GS and only use some flags on release builds
Signed-off-by: seth <getchoo@tuta.io>
2022-12-16 16:05:12 -05:00
flow
ee67b5f1ad
Merge pull request #607 from flowln/dont_crash_on_zip_import
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/609
2022-12-16 07:22:22 -08:00
leo78913
aa3633d2d7
fix: translate unknown mod provider
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-16 11:13:54 -03:00
seth
7b805a38b9
feat: improve msvc build flags
- adds /GL, /Gy, and /LTCG for better optimizations
- adds /Gw for a smaller binary size
- adds /guard:cf for added security at runtime
- removes unneeded /GS flag as that's already enabled by default

Signed-off-by: seth <getchoo@tuta.io>
2022-12-15 18:50:35 -05:00
leo78913
c8d8dda79a fix: only show scrollbars when needed
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-15 16:34:52 -03:00
flow
c440f33122
fix(ResourceModel): use a single ConcurrentTask for parsing tasks
This avoids creating a bunch of threads that fills up the maximum amount
allowed by QThreadPool, and causes a deadlock between the helper threads
and the main thread (main thread tries to create threads in painting
code, but isn't able to, so it keeps waiting for a thread to free up,
but all the threads are waiting on the main thread to process some
events).

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-15 13:51:07 -03:00
flow
b0c866bfaa
feat(Tasks): allow adding subtasks while running in ConcurrentTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-15 13:48:53 -03:00
flow
dd578354c4
feat(Tasks): add ConcurrentTask::clear to allow re-using tasks
This way old runs won't pile up in the internal DSs

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-15 13:45:50 -03:00
flow
fdac978c84
Merge pull request #625 from Edgars-Cirulis/develop 2022-12-15 07:55:28 -08:00
Sefa Eyeoglu
3b81ada1c3
Merge pull request #593 from Scrumplex/fix-winget-release-no999999 2022-12-15 16:35:15 +01:00
TheKodeToad
87bcefd08a Automatically add add-opens if Java version >= 9
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 15:28:24 +00:00
leo78913
4ee29b388d feat: add a provider column to the mods page
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-15 12:02:08 -03:00
TheKodeToad
8a6776731a Use reflection to access DatatypeConverter
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
TheKodeToad
bfa5fe1598 Better skin fix error handling
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
TheKodeToad
ead59c0246 Improve the skin fix code
- Spoof 404 instead of keeping original URL.
- Move JsonParseException to the package.
- Pass proxy as null to reduce code duplication.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
TheKodeToad
cfeadf858e Add workaround to warning
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
TheKodeToad
7534eaf006 Only use DatatypeConverter as a fallback
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
TheKodeToad
8a81aaaa0a Add separate util class
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
TheKodeToad
b544661e81 Experimental skin fix, inspired by craftycodie's
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:38 +00:00
Edgars Cīrulis
52dc9068e5
ApplicationMessage: Use QHash instead of QMap
QHash provides faster lookup times than QMap because it uses a hash table to store the elements, while QMap uses a self-balancing binary tree.

Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2022-12-15 16:17:19 +02:00
flow
4f1ea712da
Merge pull request #605 from flowln/fix_crash_in_downloader_image
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/590
2022-12-15 04:47:56 -08:00
Sefa Eyeoglu
849b92665e
Merge branch 'develop' into remove-updater 2022-12-14 23:22:27 +01:00
Sefa Eyeoglu
d193ed9eeb
Merge pull request #561 from leo78913/iconpicker-stuff
closes https://github.com/PrismLauncher/PrismLauncher/issues/494
2022-12-14 23:15:21 +01:00
TheKodeToad
ee003cd9ee Add confirmation on customised components
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-14 15:40:20 +00:00
TheKodeToad
127b094c41 Improve handling of destructive actions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-14 15:20:42 +00:00
Sefa Eyeoglu
b2285be5bc
Merge pull request #612 from DioEgizio/move-cat-right
closes https://github.com/PrismLauncher/PrismLauncher/issues/611
2022-12-14 13:04:41 +01:00
Sefa Eyeoglu
6ede02bb84
Merge pull request #608 from Scrumplex/bump-7.0 2022-12-14 11:33:46 +01:00
DioEgizio
821c424b66 move cat to bottom right
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-14 08:36:35 +01:00
flow
5450e0edf3
fix(Inst.Import): don't set managed pack info from imported ZIPs
This prevents the Managed Pack page from showing up even though there's
no way for it to work correctly.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-13 13:43:27 -03:00
flow
e05ccc0e55
Merge pull request #601 from Scrumplex/fix-translations-3 2022-12-13 07:01:23 -08:00
Sefa Eyeoglu
4f3786c2e1
chore: bump to 7.0
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-13 11:10:05 +01:00
Sefa Eyeoglu
107977f3d1
fix: update source strings
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-13 10:40:35 +01:00
Sefa Eyeoglu
813663485d
Merge pull request #604 from flowln/fix_crash_with_gtk2
fix: crash with GTK2 theme due to QProxyStyle in ManagedPackPage
2022-12-13 08:31:52 +01:00
flow
64585d8f78
fix(Inst.Import): don't assert extra data when importing from ZIP
ZIPs don't have the necessary data in those cases.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-13 00:31:41 -03:00
flow
756d933d1a
fix: bind image fetch callback lambda to the parent object
Fixes a possible crash with the callback being called after the image
object was already deleted.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-12 23:51:22 -03:00
flow
83deccf266
fix(ManagedPackPage): crash with GTK2 theme due to QProxyStyle
Seemingly related issue: https://bugreports.qt.io/browse/QTBUG-49940

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-12 23:31:10 -03:00
flow
aaef448959
Merge pull request #600 from TheLastRar/reset-stylesheet
Resolves https://github.com/PrismLauncher/PrismLauncher/issues/510
2022-12-12 13:28:24 -08:00
TheLastRar
7e96077ed7 Fix: Reset stylesheet before setting style
Resolves #510

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-12-12 20:22:08 +00:00
Sefa Eyeoglu
c44f931059
fix: update installers-regex for winget releaser
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-12 19:03:32 +01:00
flow
15084c8d6d
Merge pull request #587 from unascribed/patch/libraries-wording 2022-12-11 16:57:45 -08:00
Una
822c5a530e
Not all libraries are from Mojang
Signed-off-by: Una <me@unascribed.com>
2022-12-11 16:11:32 -08:00
flow
6eb641ae56
Merge pull request #585 from DioEgizio/remove-leftover-todo 2022-12-11 13:02:08 -08:00
DioEgizio
9eb14e6b9b fix: remove leftover TODO
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-11 20:35:39 +01:00
Sefa Eyeoglu
7cc42269a9
Merge pull request #569 from Jan200101/PR/fix-mangohud 2022-12-11 18:31:05 +01:00
flow
c45442760c
Merge pull request #584 from TayouVR/fix-breeze-colors-and-matrix-icon 2022-12-11 09:24:53 -08:00
Tayou
83f0611200
fix breeze icon colors and matrix icon
Signed-off-by: Tayou <tayou@gmx.net>
2022-12-11 17:36:05 +01:00
flow
d95625ed88
Merge pull request #486 from flowln/wide_bar_customization 2022-12-11 04:16:45 -08:00
flow
5622bcc563
Merge pull request #461 from flowln/fix_big_resource_pack_imgs
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/360
2022-12-11 04:16:21 -08:00
Jan200101
deb9c98630
chore: replace naive mangohud preload with vklayer detection
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
2022-12-11 11:01:34 +01:00
Jan200101
2c1e887c8d
chore: replace naive mangohud detection with vulkan layer detection
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
2022-12-11 11:01:33 +01:00
flow
4a13d72997
Merge pull request #32 from flowln/modpack_update_page
Closes https://github.com/PrismLauncher/PrismLauncher/issues/180
Closes https://github.com/PrismLauncher/PrismLauncher/issues/170
2022-12-10 06:34:18 -08:00
leo78913
2d5820e910
Update launcher/icons/IconList.cpp
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-10 10:31:44 -03:00
leo78913
6cb857b895
Update launcher/icons/IconList.cpp
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-10 10:31:30 -03:00
Sefa Eyeoglu
590875d022
Merge pull request #575 from Ryex/blockedmods-only-drop-local
Prevent potental crash if droping non local files in BlockedModsDialog
2022-12-10 02:46:55 +01:00
Rachel Powers
8f30237765 fix: prevent potental crash if droping non local files
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-09 17:21:40 -07:00
flow
cb0339b492
Merge pull request #572 from DioEgizio/breeze-icons-improvements 2022-12-09 04:14:36 -08:00
Sefa Eyeoglu
e427174ff0
Merge pull request #571 from Ryex/blocked-targetFolder
fix(blockedmods): Track and use targetFolder for blocked files
2022-12-09 08:33:10 +01:00
DioEgizio
fc4c57f0d9 feat: improve new.svg in breeze icon packs
makes it better and more similar to the one in legacy

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-09 07:49:16 +01:00
flow
9ad4ae5340
Merge pull request #568 from leo78913/flatpak-shortcuts 2022-12-08 17:53:33 -08:00
Rachel Powers
0f48e0fc06 fix(blockedmods): Track and use targetFolder for blocked files
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-08 18:42:51 -07:00
leo78913
37ad1b40d8 fix: fix creating instance shortcuts in flatpak
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-08 20:18:07 -03:00
Jan200101
514e7ae6a0
fix: re-add LD_LIBARY_PATH to mangohud
Upstream officially supports the use of $LIB/mangohud/

Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
2022-12-08 23:09:14 +01:00
leo78913
ab2f3bb5bc make removeButton a member of IconPickerDialog
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-08 11:13:53 -03:00
flow
34230bfcf4
fix: don't try updating Flame instance names when updating versions
Since the exact version string is only available in the manifest,
there's no easy way of getting it before commiting to the update, so
there's not much of a good way of showing the updated name in the UI,
and using the displayName is weird and gives some buggy behavior.

We may want to re-enable it in the future if we find a reliable way of
showing the correct info on the UI before starting the update.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-07 18:05:46 -03:00
flow
c390e211ee
Merge pull request #565 from DioEgizio/shortcut-menu-bar 2022-12-07 12:57:46 -08:00
DioEgizio
b0d69db878 fix: add instance shortcut creation action to menubar
also moves deleteinstance to the same place as the instance toolbar

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-07 16:52:06 +01:00
flow
b373beee21
Merge pull request #511 from Scrumplex/fix-blocked-mods-usability 2022-12-07 06:12:09 -08:00
leo78913
8c99edd3c5 feat+refactor: trash instance icons
also refactor IconList::deleteIcon

Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-06 20:25:42 -03:00
leo78913
8036272e87 fix: disable remove icon button for default icons
pressing this button in the icon picker dialog when a default icon is selected does nothing so why not disable it

Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-06 20:10:30 -03:00
flow
6f50809457
fix(FlamePage): don't assert / suggest blocked modpacks
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:35 -03:00
flow
bb386a1162
fix(ManagedPackPage): only update the current instance exactly
Also carry on the original ID to avoid updating the wrong instance.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
flow
80054e4db2
fix(ManagedPackPage): preserve pack ID from Modrinth update
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
flow
1630a23fb0
refactor(InstanceImport): require rvalue from 'extra_info' mappings
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
flow
4e75419e08
fix(ManagedPagePage): don't reload pack info when not needed
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
flow
089018015a
refactor(ManagedPackPage): use smart pointers instead of raw ones
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
flow
feb6f285ce
feat(ManagedPackPage): add reload button when in a fail state
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
flow
cb12c51afc
fix(ManagedPackPage): check app capabilities for creating the CF page
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
flow
c5c426ecbc
chore(ManagedPackPage): format and add headers
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
flow
74f7039abf
fix(ManagedPackPage): clear combo boxes when adding new versions
Prevents versions to undergo mitosis.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
flow
57b905be24
feat(ManagedPackPage): implement Flame modpack updating button
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
flow
34794cc4af
fix(ManagedPackPage): give extra_info to InstanceImportTask in MR packs
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
flow
38f59fdf39
fix(ManagedPackPage): add warning about old bug with pack IDs
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
flow
527c1113f1
feat(ManagedPackPage): add Flame UI
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
flow
04dbe28793
fix(ManagedPackPage): better changelog text when fetching / no changelog
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
flow
968366c2ae
feat+fix: allow forwarding extra info to InstanceImportTask
This allows us to pass to the creation instances their actual pack ID
and version ID, that in Flame's case, are only available before starting
to create an instance.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
7f5dea28bb
feat(ManagedPackPage): add link to the Modrinth's pack page
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
d4979974b4
fix(ManagedPackPage): better UX for when network requests fail / are pending
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
9539230915
fix: do not display managed pack page for providers without an impl. yet
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
25cfa26e7b
fix: use rich text in changelog for modrinth modpacks
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
0ff8891c66
feat: add ManagedPackPage to the instance pages
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
58d2c15ffa
feat: add functionality to MR modpack update in the page :D
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
82699cc297
feat: allow skipping the update confirmation dialog
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
flow
08d008a5aa
refactor: abstract away update confirmation dialog
... so that we can avoid code duplication.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:29 -03:00
flow
9e17ff884f
feat: add PageContainer::getPage
This allows us to directly access a page from outside. This will be
useful for telling the ManagedPackPage who is the window it's on, so
that we can close it when updating :^)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 16:54:54 -03:00
flow
1c567232e3
feat: add (current) indicator to the currently installed version in MR
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 16:54:54 -03:00
flow
cba2608c1c
feat: add logic for the modrinth instance modpack page
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 16:54:54 -03:00
flow
e5c42f68c2
feat: add basic ManagedPackPage classes
The idea is to have a base class that defines common behavior, and
subclasses for each modpack provider, adding specific behavior.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 16:54:54 -03:00
flow
02b4468bcd
feat(ui): add ManagedPackPage ui
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 16:54:50 -03:00
Sefa Eyeoglu
746f6945da
fix: remove rogue notr
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:52:32 +01:00
Sefa Eyeoglu
5cab4d8864
chore: reformat code
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:52:31 +01:00
Sefa Eyeoglu
5cedfcbfaf
chore: add license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:52:14 +01:00
Sefa Eyeoglu
c06abd9b6b
refactor: replace Open All with Open Missing
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:52:13 +01:00
Sefa Eyeoglu
e08d97825d
feat: implement lax filename match in BlockedModsDialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:51:18 +01:00
Sefa Eyeoglu
d61323aa6d
fix: improve resize behavior of BlockedModsDialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:51:18 +01:00
flow
5ae044db93
Merge pull request #556 from DioEgizio/modrinth-icon-larger 2022-12-06 11:50:35 -08:00
flow
c6e4fdac7e
Merge pull request #557 from Scrumplex/fix-fswatcher-segfault
Closes https://github.com/PrismLauncher/PrismLauncher/issues/555
2022-12-06 11:50:03 -08:00
Sefa Eyeoglu
9669377b06
Merge pull request #560 from edgarogh/fix-minutes-unit
Closes https://github.com/PrismLauncher/PrismLauncher/issues/553
2022-12-06 14:45:46 +01:00
Sefa Eyeoglu
c8c3fe1023
chore: add license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 13:18:50 +01:00
Sefa Eyeoglu
85bddbed86
chore: reformat code
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 13:16:27 +01:00
Edgar Onghena
318a2a429c
Fix minutes unit
Replaced "m" with "min" in `Time::prettifyDuration`

Signed-off-by: Edgar Onghena <dev@edgar.bzh>
2022-12-06 13:01:43 +01:00
Sefa Eyeoglu
07359865c6
fix: don't allocate BlockedsModsDialog
Fixes temporary memory leak!

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-05 21:39:26 +01:00
Sefa Eyeoglu
2fd7338cd3
dix: disable FS watcher after closing BlockedModsDialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-05 21:39:24 +01:00
DioEgizio
ce3cfa212c fix: make modrinth icon larger
before it was considerably smaller than the other modpack platform icons which looked weird

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-05 20:27:29 +01:00
DioEgizio
b29c99656e
Merge pull request #546 from DioEgizio/add-server-icon
feat: add a proper server icon
2022-12-05 07:49:55 +01:00
Sefa Eyeoglu
45b0762096
Merge pull request #547 from flowln/fix_copying_instance
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/545
2022-12-04 23:47:09 +01:00
DioEgizio
aceafb28f6 feat: add server icon to simple colored icons too
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Co-Authored-By: leo78913 <leo3758@riseup.net>
2022-12-04 21:29:00 +01:00
flow
928939cbe3
fix(Inst.Copy): create FS::copy object inside the secundary thread
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-04 12:29:38 -03:00
DioEgizio
2462b8e524 feat+fix: better flat icon
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-04 13:30:24 +01:00
DioEgizio
263a72879d fix: oyxgen is lgpl3!
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-04 12:50:40 +01:00
DioEgizio
70620d5137 feat: add a proper server icon
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-04 12:45:39 +01:00
Sefa Eyeoglu
79d5beff8d
Merge pull request #541 from ryanccn/warn-before-trash-instance
Closes https://github.com/PrismLauncher/PrismLauncher/issues/192
closes https://github.com/PrismLauncher/PrismLauncher/issues/462
2022-12-03 15:20:49 +01:00
Ryan Cao
fa3caf091a
fix: warn before trashing instances
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-12-03 21:54:41 +08:00
Sefa Eyeoglu
93707560cb
Merge pull request #506 from Protrikk/develop 2022-12-02 22:04:33 +01:00
Sefa Eyeoglu
5c6f325071
Remove blue-ish tint from remaining flat white icons
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-02 20:47:11 +01:00
Sefa Eyeoglu
b9a17f5999
Merge branch 'upstream/develop' into develop
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-02 20:46:04 +01:00
flow
ab23f542c6
Merge pull request #423 from TheKodeToad/addagent
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/414
2022-12-02 06:40:18 -08:00
flow
fa98bf1ee7
Merge pull request #481 from ryanccn/import-resource-pack-dialog-uwu 2022-12-02 06:39:54 -08:00
flow
3cc987a5b4
fix: explicitly set scheme for local file in -I argument
Otherwise isLocalFile() will return false for local files without the
file:// thingy.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-01 22:54:03 -03:00
Sefa Eyeoglu
d1a1b8b6e8
Merge pull request #524 from DioEgizio/woa
add windows on arm builds
2022-12-01 23:09:37 +01:00
Sefa Eyeoglu
0d08e082be
Merge pull request #538 from flowln/fix_some_cf_imports
A couple fixes for CF instance imports
2022-12-01 23:06:35 +01:00
flow
386fb28a35
fix(FileResolvingTask): Fail instead of crash when there's API errors
Also remove non-used variable (rip).

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-01 15:33:35 -03:00
flow
79b79b752c
fix(Inst.Import): Show error reason in fail dialog
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-01 15:32:26 -03:00
flow
a116778402
fix(Inst.Import): don't search inside 'overrides/' for the manifest
It will never be there anyways, and saves a **bunch** of time when the
overrides folder is big and we traverse all the tree when searching for
the MMC 'instance.cfg' file.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-01 15:15:15 -03:00
DioEgizio
4c1c26a0e6 chore: drop Windows-MinGW-w64-Legacy
this brings back the number of builds as the same as before the pr

this is one of the slowest builds + windows 7/8.1 users can just use Windows-MSVC-Legacy

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-30 18:45:34 +01:00
Sefa Eyeoglu
9e1653ebb4
Merge pull request #436 from Scrumplex/feat-change-maxmem
Closes https://github.com/PrismLauncher/PrismLauncher/issues/426
2022-11-30 18:22:55 +01:00
DioEgizio
99dd9874df refactor+fix: refactor the windows part of the release workflow and add arm to it
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-30 13:46:55 +01:00
TheLastRar
24193163e1 Maybe fix ResourceFolderModel Clang64 test failure
Previously this test would fail sometimes without including ECMQueryQt

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-30 13:46:55 +01:00
TheLastRar
94d164c0f2 Remove unused QT_DATA_DIR/QT_MKSPECS_DIR
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-30 13:46:55 +01:00
TheLastRar
efef2e95ab Use ECMQueryQt Only with Qt5
Qt6 provides CMake variables for the paths we need

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-30 13:46:55 +01:00
DioEgizio
5efa725e92 feat(actions) add arm64 build
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-30 13:46:55 +01:00
flow
42c00213ce
Merge pull request #238 from santiagocezar/new-icons 2022-11-29 14:30:29 -08:00
flow
b7d1b9ac61
Merge pull request #527 from DioEgizio/revert-6.4.1-winmsvc 2022-11-29 14:27:29 -08:00
Sefa Eyeoglu
52d06ed814
chore: move instance_icons.svg
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-29 20:07:00 +01:00
Sefa Eyeoglu
46a1c855a9
Merge pull request #528 from Scrumplex/fix-resourcepages-runningstate 2022-11-29 19:50:00 +01:00
TheKodeToad
31dc82b1a6 Make requested changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-29 09:43:08 +00:00
flow
4e27e132a0
fix: don't disable interaction on non-mod models when inst. is running
It is still useful for mods though, since we don't wnt to allow
disabling mods when the instance is running, as that wouldn't affect the
running instance, possibly causing confusion

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-28 12:02:38 -03:00
Sefa Eyeoglu
a5b0b4800a
fix: make resource buttons work when instance is running
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-27 23:10:32 +01:00
Santiago Cézar
e6244c937a
Merge branch 'develop' into new-icons
Signed-off-by: Santiago Cézar <48573316+santiagocezar@users.noreply.github.com>
2022-11-27 16:28:42 -03:00
Santiago Cézar
3cbf8d4993 resolving reviews
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-27 16:24:45 -03:00
Sefa Eyeoglu
f3279a0697
Merge remote-tracking branch 'upstream/develop' into import-resource-pack-dialog-uwu 2022-11-27 20:05:21 +01:00
Sefa Eyeoglu
8cac61f0be
fix: check resource pack validity solely using pack format
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-27 18:41:52 +01:00
Sefa Eyeoglu
236c196e68
fix: improve code readability
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-27 18:38:56 +01:00
DioEgizio
6c09efd630 fix: use qt 6.4.0 on windows msvc for now
qt 6.4.1 has a very bad scaling regression

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-27 15:24:15 +01:00
DioEgizio
cc92e1b0b6
Merge pull request #521 from Scrumplex/missing-icons 2022-11-26 19:02:03 +01:00
DioEgizio
c90f2c3ac6 fix: use monochrome icon for breeze
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-26 15:05:08 +01:00
Sefa Eyeoglu
6bdd27a08e
Merge pull request #493 from Scrumplex/cachix
Closes https://github.com/PrismLauncher/PrismLauncher/issues/491
2022-11-26 14:24:06 +01:00
Sefa Eyeoglu
80ff0b1418
Merge pull request #492 from Scrumplex/update-nix 2022-11-26 14:03:51 +01:00
Santiago Cézar
a8943ce1ee remove unused ftb icon
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:15:08 -03:00
Santiago Cézar
71d35dc70b meat is now round
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:15:08 -03:00
Santiago Cézar
9daf2a2996 resize to 24x24
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:15:07 -03:00
Santiago Cézar
f5d6aea942 forgot ftb
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:15:07 -03:00
Santiago Cézar
5850447fd0 merge with upstream
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:14:52 -03:00
Santiago Cézar
e12a7a4415 gradients!
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 14:22:49 -03:00
Santiago Cézar
81d84b8d02 initial icons
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 14:22:49 -03:00
flow
bae0a0530b
fix(RPImportDialog): allow changing item size to accomodate wrapped text
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-25 11:51:08 -03:00
Sefa Eyeoglu
cbf4159c7e
fix: add missing shortcut icons
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-25 14:03:10 +01:00
flow
4a1d082614
reafctor(WideBar): connect to signal instead of overriding menu method
This makes stuff more standard and closer to what we do in other places
in the codebase.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-25 09:33:05 -03:00
Sefa Eyeoglu
fd8b4c5368
Merge pull request #227 from Leo40Git/feature/instance-shortcuts
Closes https://github.com/PrismLauncher/PrismLauncher/issues/210
2022-11-25 13:11:00 +01:00
Sefa Eyeoglu
5872c34315
Merge pull request #412 from leo78913/legacy-icons
add the missing icons to the legacy icon theme
2022-11-25 08:36:42 +01:00
flow
b60fe08d44
Merge pull request #514 from DioEgizio/force-bundled-libs-win 2022-11-23 15:11:45 -08:00
DioEgizio
6a51eda361 fix: force bundled libs on win msvc
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-23 19:53:55 +01:00
TheKodeToad
96e8217b00 Button to add agent
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-23 09:46:55 +00:00
Sefa Eyeoglu
e6cb6cae11
Merge pull request #508 from TheLastRar/ForceBundledLibs 2022-11-23 09:49:24 +01:00
TheLastRar
980f03dd20 Fix: Launcher_FORCE_BUNDLED_LIBS Failing to find bundled zlib
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-22 19:23:09 +00:00
flow
20c281d6f8
fix: reset wide bar settings when the list of actions changes
This prevents changes to the actions to cause non-intuitive issues in
the Wide bar, hiding items that previously weren't hidden.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-22 14:30:54 -03:00
Trisave
66f9fed2f2
Remove blue-ish tint from flat white icons
Signed-off-by: Trisave <42098407+Protrikk@users.noreply.github.com>
2022-11-22 18:30:21 +01:00
flow
68b7aa0a4d
Merge pull request #498 from Scrumplex/fix-copy-signal 2022-11-21 13:44:43 -08:00
Ryan Cao
f916ce8752
Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import-resource-pack-dialog-uwu 2022-11-21 23:19:50 +08:00
Sefa Eyeoglu
fdbd8d9d2b
refactor: remove old updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-21 16:18:05 +01:00
Sefa Eyeoglu
4208c2c72a
fix: actually emit fileCopied
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-21 15:47:15 +01:00
DioEgizio
5cc91965d0
Merge pull request #487 from TayouVR/breeze-icon-themes 2022-11-21 14:43:58 +01:00
Sefa Eyeoglu
c74f852364
Merge pull request #243 from Scrumplex/migration-dialog
Closes https://github.com/PrismLauncher/PrismLauncher/issues/46
Closes https://github.com/PrismLauncher/PrismLauncher/issues/204
2022-11-21 12:14:49 +01:00
Sefa Eyeoglu
c1b3a3adb4
fix(actions): don't ignore nix files
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-21 11:43:46 +01:00
Ryan Cao
7096f02b88
fix: text wrapping
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-21 18:15:03 +08:00
Sefa Eyeoglu
70a11935a8
feat(actions): add Nix build
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-21 00:22:25 +01:00
Sefa Eyeoglu
f601135cc0
refactor(nix): synchronize changes from nixpkgs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-20 23:49:11 +01:00
Sefa Eyeoglu
884fe0d574
feat: validate maximum memory allocation in wizard
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-20 18:16:19 +01:00
DioEgizio
ffcbf97dcc fix: add Breeze copyright notice to COPYING
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-20 17:48:44 +01:00
flow
f55fc51e9b
fix: remove commented-out assertions
They may not hold true at all times, and that's fine.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-20 11:11:08 -03:00
flow
df0f9259c0
refactor: move RP/TP validation to their respective utils
This makes it easier to validate individual resources, and allows the
logic to be used in other places in the future, if we need to.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-20 11:10:26 -03:00
Tayou
bb7a321c6e
add breeze themes
Signed-off-by: Tayou <tayou@gmx.net>
2022-11-20 05:24:10 +01:00
flow
2d69d63efe
feat(InstancePages): save/load wide bar visibility settings
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-19 18:41:31 -03:00
flow
479843f56b
feat(WideBar): allow loading/unloading visibility via a byte array
I really wanted to use a QBitArray :c

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-19 18:41:31 -03:00
flow
6e1639551b
feat(WideBar): allow hiding buttons with right-click
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-19 18:41:30 -03:00
flow
2367903ac6
refactor: clean up WideBar a bit
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-19 18:41:30 -03:00
Sefa Eyeoglu
30607c34a1
Merge pull request #291 from TheKodeToad/betterjavalauncher 2022-11-19 18:45:15 +01:00
Sefa Eyeoglu
817947c928
Merge pull request #483 from jopejoe1/patch-1 2022-11-19 18:44:09 +01:00
Sefa Eyeoglu
29926a59bb
Merge pull request #482 from DioEgizio/fix-cache-flatpak 2022-11-19 18:10:03 +01:00
Ryan Cao
d92ae530d7
fix: stray include
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-20 00:34:44 +08:00
Ryan Cao
e0e428ce38
fix: add support for CLI and drag and drop
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-20 00:28:35 +08:00
jopejoe1
d1db7a0e23
Fix New Zealand English display
Signed-off-by: jopejoe1 <34899572+jopejoe1@users.noreply.github.com>
2022-11-19 16:28:27 +00:00
DioEgizio
c27ebde575 fix(actions): fix cache on flatpak
currently there's a [bug](https://github.com/flatpak/flatpak-github-actions/issues/80) on the stable version of the flatpak action which causes the cache key to be wrong. this commit work arounds it

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-19 17:14:19 +01:00
Ryan Cao
a99cd16422
fix: resource pack import dialog icons and add message
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-20 00:14:16 +08:00
Ryan Cao
1f6b8f9d2b
fix instance IDs and resource pack imports
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-19 23:59:30 +08:00
Ryan Cao
a33b804923
fix: add resource pack format for 1.19.3
Co-authored-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-19 23:47:47 +08:00
Ryan Cao
f527958cb3
fix: check if packFormat is valid for resourcepack parsing
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-19 23:42:56 +08:00
Ryan Cao
b1bdc6f745
fix resource packs and add support for texture packs
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-19 23:38:05 +08:00
Ryan Cao
8dacbafc8b
feat: initial support for smart resource pack parsing on file handler
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-19 23:14:57 +08:00
TheKodeToad
70fa92f22c Remove dirty printStackTrace hacks
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-19 13:59:22 +00:00
flow
3482076a20
Merge pull request #476 from Scrumplex/matrix 2022-11-19 05:07:33 -08:00
Sefa Eyeoglu
f7239f7f8a
chore: update community links
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-19 13:34:02 +01:00
flow
20ba787c00
Merge pull request #474 from Scrumplex/translations-maybe2 2022-11-19 03:41:54 -08:00
TheKodeToad
669eef92eb Make requested changes and utilise AssertionError
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-19 08:54:17 +00:00
Sefa Eyeoglu
c6d9edb78f
chore: improve display names of more languages
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-18 22:21:55 +01:00
Sefa Eyeoglu
347ae0a9ad
Merge pull request #456 from DioEgizio/flatpak-build
closes https://github.com/PrismLauncher/PrismLauncher/issues/62
2022-11-18 21:37:14 +01:00
DioEgizio
dbd01d35e6
Merge pull request #455 from leo78913/menubar-stuff 2022-11-18 17:20:50 +01:00
flow
b24c09665f
Merge pull request #439 from Ryex/better-blocked-mods 2022-11-17 11:29:28 -08:00
Sefa Eyeoglu
fa96ebd382
Merge pull request #471 from IDeletedSystem64/develop 2022-11-17 20:28:42 +01:00
Rachel Powers
52d43f843b feat(BlockModsDialog): remove redundant Ui info
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-17 11:46:14 -07:00
Sophie Marie
90376749f0
Fix AUR qt5-git and git having the wrong AUR links
Signed-off-by: Sophie Marie <twilightsparkle@duck.com>
2022-11-17 12:42:34 -06:00
flow
5cf2a8b5fc
Merge pull request #454 from RedsonBr140/menu-themes 2022-11-17 09:47:55 -08:00
Redson
f72ac94c11
fix: Fix usage below
Signed-off-by: Redson <redson@riseup.net>
2022-11-17 06:39:05 -03:00
RedsonBr140
bd3a693e70
chore: Change var name
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: RedsonBr140 <redson@riseup.net>
2022-11-17 06:20:53 -03:00
Sefa Eyeoglu
298871e207
Merge pull request #467 from Scrumplex/fix-meta-extensions-json
Fix serialization of components with custom metadata
2022-11-16 23:54:26 +01:00
Sefa Eyeoglu
ce958f4ffd
refactor: use isEmpty instead of size for lists
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-16 23:20:47 +01:00
Sefa Eyeoglu
2de150bfc8
Merge pull request #431 from FayneAldan/version 2022-11-16 18:20:32 +01:00
Sefa Eyeoglu
40970a1a87
fix: serialize metadata extensions
Prism has introduced a few extensions to the meta component version
format, which were not exported as JSON in the launcher. This caused the
`Customize` button on the version page to not write these new properties
to the custom component file.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-16 18:11:18 +01:00
Sefa Eyeoglu
8aae652be1
fix: remove unnecessary condition
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-16 18:10:54 +01:00
RedsonBr140
37a117d2ef
chore: Var definition inside the for loop
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: RedsonBr140 <redson@riseup.net>
2022-11-16 12:24:28 -03:00
txtsd
debc1659e1
Merge pull request #464 from DioEgizio/qt-6.4.1 2022-11-16 15:23:52 +05:30
flow
23e411c42b
Merge pull request #459 from Scrumplex/bump-tomlplusplus 2022-11-16 01:34:15 -08:00
DioEgizio
88feebe499 chore: use qt 6.4.1 on Windows-MSVC
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-16 09:55:46 +01:00
Fayne Aldan
e8b871ac72
Merge branch 'PrismLauncher:develop' into version 2022-11-15 18:34:24 -07:00
Fayne Aldan
9f30c6d94b Add commit hash to --version
Signed-off-by: Fayne Aldan <FayneAldan@gmail.com>
2022-11-15 18:33:51 -07:00
flow
c4c1e75de8
fix: use QPixmapCache only from the main thread
It's a required condition.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-15 18:14:03 -03:00
Sefa Eyeoglu
c1763cc4b0
fix: disable FLOAT16 in toml++
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-15 21:23:20 +01:00
Sefa Eyeoglu
ee096edfff
chore: bump tomlplusplus
Should fix issues with builds on aarch64

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-15 20:58:07 +01:00
DioEgizio
464b9ebc95 feat: add flatpak builds to the ci for testing
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-15 17:45:12 +01:00
flow
7705f290ca
fix: don't retry to load RP images that can't fit in the cache
Avoids an infinite loop when the image is too big.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-15 12:07:11 -03:00
leo78913
7439fd6bcb fix: Fix some stuff in the menu bar
- Remove duplicated launch actions
 - Enable the add instance action icon in menus
 - Remove ugly separator at the end of the help menu if the updater is disabled
 - Add icons to the help and news menu items

Signed-off-by: leo78913 <leo3758@riseup.net>
2022-11-15 10:56:41 -03:00
Redson
6fe626ab9a
feat: Make the changes persistent.
Signed-off-by: Redson <redson@riseup.net>
2022-11-15 06:09:13 -03:00
Redson
a12f892841
fix: Check the box when the theme is changed via settings
Signed-off-by: Redson <redson@riseup.net>
2022-11-15 05:46:24 -03:00
Redson
aa3ea79f94
fix: Check the current theme box on startup.
Signed-off-by: Redson <redson@riseup.net>
2022-11-15 05:38:31 -03:00
Redson
ef53455b66
fix: Build on QT6
Signed-off-by: Redson <redson@riseup.net>
2022-11-15 05:19:46 -03:00
ADudeCalledLeo
ba46ff6692
Merge remote-tracking branch 'upstream/develop' into feature/instance-shortcuts 2022-11-15 10:05:04 +02:00
leo78913
0e916244f0
feat: Add themes and their logic.
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-11-14 21:10:48 -03:00
RedsonBr140
1e4ee02cbc
Merge branch 'PrismLauncher:develop' into menu-themes 2022-11-14 21:09:37 -03:00
flow
cedc7754d9
Merge pull request #428 from DioEgizio/fixes-to-CI 2022-11-14 14:16:01 -08:00
flow
fece9e207b
Merge pull request #448 from TheLastRar/fixup-warnings 2022-11-14 14:15:46 -08:00
ADudeCalledLeo
cca052ccc9
Restore QRC headers
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-14 22:46:41 +02:00
Sefa Eyeoglu
5be9472912
fix: fix potentially uninitialized variable
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-14 21:20:38 +01:00
Sefa Eyeoglu
f60b09568c
Merge pull request #112 from ryanccn/macos-add-to-path 2022-11-14 21:12:36 +01:00
Redson
be765f8d88
feat: Add empty menu
Signed-off-by: Redson <redson@riseup.net>
2022-11-14 16:33:25 -03:00
leo78913
8d6aecd944 add the missing icons to the legacy icon theme
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-11-14 16:16:52 -03:00
TheLastRar
aef5349aee Pass index.parent() as parent parameter for rowCount
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:57 +00:00
TheLastRar
ac993aa31f Use Q_UNUSED instead of [[maybe_unused]] in onParseFailed
Qt5 on Ubuntu cannot handle [[maybe_unused]] in this function

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:57 +00:00
TheLastRar
fce323b945 Check parent in rowCount/columnCount/canFetchMore
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:57 +00:00
TheLastRar
5558f3d2cc Mark paramaters of dropMimeData as unused
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:57 +00:00
TheLastRar
08f8623cb7 Mark paramaters of onParseFailed as unused
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:56 +00:00
TheLastRar
f8a137a26e Mark loadExtraPackInfo abstract
All classes that inherit from ModModel override this method

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:56 +00:00
TheLastRar
3cba359d38 Mark paramater runtimeContext as unused
Base class uses variable, but ImplicitRule does not

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:56 +00:00
TheLastRar
b8d7aedb2c Mark paramater line as unused in guessLevel()
The base method doesn't use this variable, but classes overriding this method do

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:56 +00:00
TheLastRar
55c7b291e1 Remove unused qhash function
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:56 +00:00
TheLastRar
472d931b4b Prefix member variables in HttpMetaCache
MSVC warns about shadowing variables

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:56 +00:00
ADudeCalledLeo
ce892c9e77
Add icon
NOTE: Currently missing on Legacy, Flat and Flat (White)
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-14 21:02:31 +02:00
Sefa Eyeoglu
e14b998da3
refactor: improve readability
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-14 18:38:12 +01:00
Ryan Cao
2c9452efaf
Merge branch 'develop' into macos-add-to-path 2022-11-14 19:26:31 +08:00
Ryan Cao
97a7af855f
slight reword: "install to PATH"
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-14 19:21:47 +08:00
ADudeCalledLeo
5be8545edc
Windows, Linux: prevent segfault on missing icon
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-13 20:18:51 +02:00
txtsd
0a04c3a2a7 fix: Fix the error that CodeQL caught
Signed-off-by: txtsd <code@ihavea.quest>
2022-11-13 18:54:55 +01:00
DioEgizio
dcfc15a0a1 feat+fix: move codeql to its own workflow
i think it's better practice, it should slightly improve linux qt6 build times and i noticed ccache? is messing up with it because alerts get randomly fixed

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-13 18:54:55 +01:00
DioEgizio
841c2e9166 fix: disable caching Qt on release
it's good practice to not cache on release builds

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-13 18:54:55 +01:00
DioEgizio
07392d493c fix: disable building snaps on release
the snap infra should already be able to deal with it, i think

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-13 18:54:55 +01:00
ADudeCalledLeo
acd50969e0
Linux: remove TryExec entry from .desktop files
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-13 19:50:27 +02:00
Sefa Eyeoglu
074b53eb6b
Merge pull request #445 from flowln/optimize_edit_instance 2022-11-13 17:18:06 +01:00
ADudeCalledLeo
c4cfec1e94
Undo accidental tomlplusplus downgrade
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-13 18:00:18 +02:00
ADudeCalledLeo
b0269e6dfc
Linux: fixes
- Fix shortcut icons
- Possibly fix shortcut creation on AppImages
- Fix shortcut not working if path to launcher contains spaces

Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-13 17:51:29 +02:00
ADudeCalledLeo
43b9d9484d
tabs -> spaces
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-13 15:49:28 +02:00
ADudeCalledLeo
69bbb29328
Mac: attempt 2
- create .command files instead of .sh
- fix shortcuts not working if path to Prism Launcher contains spaces
- fix path to executable in shortcutss
- add check for running from extracted folder (prevents creating shortcuts)

Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-13 15:47:37 +02:00
flow
577069cfb4
fix: don't have the clear button on instance page filters
This thing is otherworldly unoptimized. o.O

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-12 19:23:57 -03:00
Sefa Eyeoglu
fe94c3609e
fix: implement code review suggestions
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
Sefa Eyeoglu
173aed7fd8
chore: add REUSE headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
Sefa Eyeoglu
335bec68fb
fix: prevent abort for un-abortable tasks
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
Sefa Eyeoglu
bbb7e9f5c7
feat: show current copy operation in migration dialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
Sefa Eyeoglu
086304f7f2
feat: add initial Migration dialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
Sefa Eyeoglu
bd7065eece
feat: add SimplePrefixMatcher
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
Sefa Eyeoglu
15aaff7c1c
feat: add dryRun to copy operation
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:29 +01:00
Sefa Eyeoglu
e048bce13e
refactor: allow copy operation with whitelist
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:27:13 +01:00
Sefa Eyeoglu
ddfb449b28
fix: remove PolyMC data paths
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:27:13 +01:00
ADudeCalledLeo
5322155b19
Mac: fix build
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:48:21 +02:00
ADudeCalledLeo
45ce72593a
Windows: remove icon if shortcut creation fails
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:43:58 +02:00
ADudeCalledLeo
b813c867b5
refactor #if checks
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:41:52 +02:00
ADudeCalledLeo
f7d7d76ee8
Mac: now supported! [UNTESTED]
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:36:49 +02:00
ADudeCalledLeo
7e5076b068
Linux: fix path shortcut is written to
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:32 +02:00
ADudeCalledLeo
dbe0553b4a
Move addAction call above left-align loop
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:31 +02:00
ADudeCalledLeo
9be48f1dc4
this ain't static, falco
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:31 +02:00
ADudeCalledLeo
6043444e4e
Apply suggestions from code review
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:30 +02:00
ADudeCalledLeo
487e352642
Fix nested #if directive
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:29 +02:00
ADudeCalledLeo
cc5f82bfac
Windows: fix window icon being replaced
Dunno why it happens but the fix was literally 2 lines, so whatever I guess

Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:28 +02:00
ADudeCalledLeo
4d4dfab388
Windows: add instance icon to shortcut
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:28 +02:00
ADudeCalledLeo
b83f9be1bd
Add missing fail check for CoInitialize
Add a few comments

Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:27 +02:00
ADudeCalledLeo
6ae3b183fd
Remove unnessecary "is defined" check
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:27 +02:00
ADudeCalledLeo
f12117c532
[UNTESTED] Linux: add icons to shortcuts
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:26 +02:00
ADudeCalledLeo
70768189ba
Windows: implement FS::createShortcut
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:25 +02:00
ADudeCalledLeo
30b266622c
Add 'Create shortcut' button to instance toolbar
Implemented on Windows only rn!

Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:18:49 +02:00
Rachel Powers
25b306b7e1 feat: mark folder paths as links
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 18:32:11 -07:00
Rachel Powers
9af1b00df5 feat: add list of watched folders
move explanation text into dialog class and it's own label

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 18:05:19 -07:00
Rachel Powers
51c27e2748 always use the pending path set to avoid task duplication.
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 16:33:52 -07:00
Rachel Powers
b9e2c3524c chore: clang format & cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 16:07:57 -07:00
Rachel Powers
3f6cc17818 properly handle a currently running hashing task
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 15:45:40 -07:00
Rachel Powers
5909af9878 drag&drop + add folder to watch
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 14:17:33 -07:00
flow
64576f4c4c
Merge pull request #304 from Ryex/move-downloads
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/222
2022-11-11 12:48:53 -08:00
DioEgizio
21dbd28a2f
Merge pull request #266 from Ryex/windows-file-association 2022-11-11 15:46:03 +01:00
Sefa Eyeoglu
b57fee1a44
fix: swap spin box and state icon
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-11 15:24:14 +01:00
Sefa Eyeoglu
cabd887866
feat: use icons to show memory allocation state
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-11 15:22:16 +01:00
Sefa Eyeoglu
863a168cb5
feat: raise memory limits to 1TiB
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-11 15:05:00 +01:00
Sefa Eyeoglu
5ee4fb3522
feat: validate maximum memory allocation
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-11 15:04:05 +01:00
Rachel Powers
bb8ac9b99a changed name of file type association
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 05:46:41 -07:00
Rachel Powers
2f10fa8b61 add some extra debug logs for CF blocked mods
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 05:41:32 -07:00
flow
46a8e18841
Merge pull request #367 from TheKodeToad/linkjumping
fix https://github.com/PrismLauncher/PrismLauncher/issues/363
2022-11-10 08:08:44 -08:00
flow
6c53e68a52
Merge pull request #406 from Scrumplex/fix-clear-metadata 2022-11-10 07:50:14 -08:00
Sefa Eyeoglu
392452d422
Merge pull request #397 from flowln/windows_mod_updater_fixes_maybe
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/226
2022-11-10 14:34:15 +01:00
TheKodeToad
99ed0b6c2c Implement flowln's suggestions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-10 11:14:58 +00:00
Sefa Eyeoglu
e6d057fe6d
Merge pull request #415 from TayouVR/fix-main-warning 2022-11-09 18:27:40 +01:00
flow
9ad6eb11a3
refactor: fix CodeQL warnings in StringUtils::naturalCompare
I have no idea why this function exists, so better to just let it exist.
=D

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-09 14:14:25 -03:00
TheKodeToad
32c2ad2bbd A lot more cleanup
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 17:51:18 +00:00
TheKodeToad
f2ca9a6b31 Revert switch to JUL for better colours
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 17:38:23 +00:00
TheKodeToad
50d40257fe Always use this for consistency
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 17:38:23 +00:00
TheKodeToad
d90eff64d0 Add StringUtils to CMakeLists.txt
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
TheKodeToad
e6dc34fe10 More license fixing
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
TheKodeToad
745c331311 Remove last case of printStackTrace
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
TheKodeToad
1ea2e85415 Implicit is generally prefered
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
TheKodeToad
4a2df30f92 Try to use more standard exit codes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
TheKodeToad
922220c11e More consistent logging text
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
TheKodeToad
56d5035c63 Fix the warnings properly
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
TheKodeToad
4abf3a20c6 More standard code formatting profile
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:25 +00:00
TheKodeToad
5912ef3b45 Just ignore empty lines
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:00 +00:00
TheKodeToad
9931c9a286 Remove arguments being passed twice
Passing the classpath into stdin has no effect. Java is already provided the classpath with -cp, which pretty much takes up the largest part of the arguments anyway, which leads me to wonder, what's the point of stdin arguments at all?

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:00 +00:00
TheKodeToad
1da834f650 *opinionated change* Remove LauncherFactory
Factories in OOP are a classic example of over-enginneering. When you only have two launchers I personally think that it's not very useful.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:00 +00:00
TheKodeToad
fb677a7489 So turns out we can have nice things
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:36:55 +00:00
TheKodeToad
404796d4b2 Sorry for reverting a lot but copying a list just hurts me
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:36:35 +00:00
TheKodeToad
5b9bfe8891 Attempt to mimic clang-format
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:36:33 +00:00
TheKodeToad
779bc2c63d Fix WrongMethodTypeException. Invoke exact don't work like that
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:35:46 +00:00
TheKodeToad
cae1ba7cd8 Less needless verbosity, and return fallback
Needlessly verbose commit message ik.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:35:46 +00:00
TheKodeToad
8ce78dcc54 Try to improve consistency
- Makes code formatting more consistent with the C++ codebase. Probably removes some trailing whitespace. Maybe it would be best to commit an Eclipse or IntelliJ code format preferences file?
- Removes obscure suppressions. I personally think it's better to only suppress warnings that javac complains about. Suppressing a lot of non-standardised warnings (many of them turned off by default even in IntelliJ) just creates needless clutter.
- Fixes some trivial warnings instead of suppressing them. serialVersionUID is sort of stupid, but I'd rather mentally ignore it or just fix it if it's really that annoying.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:35:43 +00:00
solonovamax
afe088dba1 Fix license headers
- Update license headers in several files to remove multimc apache reference, when unneeded
  - LauncherFactory: we've entirely rewritten this class at this point, so it's fully under GPL code
  - Launcher: this interface contains zero logic, and only a single method named `launch`, so I doubt you can actually copyright that
  - LauncherProvider: same as above
  - ParseException, ParameterNotFoundException: same as above; this class contains almost no logic (And the logic that was added is under GPL)
  - ReflectionUtils, StringUtils: add license header
  - Everything else: modify the program name in the license header from "PolyMC - Minecraft Launcher" to "Prism Launcher"

Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
solonovamax
e899e31745 More informative exceptions in entrypoint
Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
solonovamax
dabb84f62a Cleanup launcher classes
Cleanup a bunch of the code in launcher classes
- Migrate the majority of the reflection to ReflectionUtils
- Decrease logic in AbstractLauncher
- Add logging to launcher classes at FINE level
- make mcParams in AbstractLauncher an immutable list to prevent runtime manipulation
  - StandardLauncher instead copies the list to modify it

Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
solonovamax
9b8096c699 Get rid of gross HashMap being used by LauncherFactory and instead use *fancy* enum
Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
solonovamax
ac5b74301e Cleanup splitting string into a pair
Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
TheKodeToad
609b30110b Make main static
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>

Inline local variable

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
TheKodeToad
35d200356f Create launcher.impl.legacy
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
TheKodeToad
0cd1d7aa7e Excessive safety
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
TheKodeToad
ade7526f5f Remove the need for LegacyUtils
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
TheKodeToad
a7b1700d42 Better variable naming
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
TheKodeToad
c0b8c53e69 Attempt to sort out copyright headers
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
TheKodeToad
e86fbc697f Fix formatting
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
solonovamax
e5622ce824 Code cleanup to net.minecraft.Launcher
No code logic has been changed, only:
- add @Override annotatons
- change setVisible(boolean b) -> setVisible(boolean visible)
- Change block commend on class -> javadoc comment

Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
solonovamax
99d9868116 Cleanup EntryPoint code
- Don't return an int from listen(). An enum is preferred.
- Make parseLine() static, and pass Parameters to it.

Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
solonovamax
107fa6b4f7 Code refactors
- Refactor LauncherFactory.LauncherProvider to LauncherFactory
- Refactor all launcher related components to launcher package
- some basic code cleanup
- Rename all, allSafe -> getList and first, firstSafe -> getString
- Rename Utils -> LegacyUtils

Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
solonovamax
9062d28704 Get rid of singleton, and refactor LauncherFactory to be a static class
Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
TheKodeToad
e68dcea6bc Various tweaks to the Java component of the launcher
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:24:55 +00:00
txtsd
787c5a515f
Merge pull request #407 from AshtakaOOf/readme 2022-11-08 17:25:19 +05:30
txtsd
ce2df4b36f
chore(readme): Specify openSUSE Tumbleweed
Signed-off-by: txtsd <code@ihavea.quest>
2022-11-08 17:24:00 +05:30
txtsd
fcb9733df0
Merge pull request #392 from PrismLauncher/max_ram_logic 2022-11-08 12:23:24 +05:30
Adrien
245928a064 Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-07 20:33:09 +01:00
flow
589d160515
fix: use cross-platform toStdString in FlameHasher
Almost the same issue from toml++ :p

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-07 14:04:48 -03:00
Adrien
380e76a2e3
Add Tumbleweed
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-07 17:14:16 +01:00
Tayou
9ac6114b63
Fix warning in main function
main could according to the compiler end up not returning. of course it will always return, but I satisfied the compiler by adding a default case.

Signed-off-by: Tayou <tayou@gmx.net>
2022-11-07 14:33:37 +01:00
DioEgizio
d558ff305a
Merge pull request #411 from TheLastRar/configurationless-install
Fix: Configuration-less config for Qt Install
2022-11-07 13:30:39 +01:00
Adrien
89aaac3a70 Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-06 21:56:02 +01:00
TheLastRar
456999eee6 Fix: Configuration-less config for Qt Install
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-06 14:25:38 +00:00
TheKodeToad
16e3b786fc Implement Scrumplex's suggestions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-06 10:09:06 +00:00
DioEgizio
126bbd67f7
Merge pull request #405 from AshtakaOOf/spooky 2022-11-06 07:27:39 +01:00
Adrien
38e1d44dbb
Update README.md
Add copr

Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-06 03:42:51 +01:00
Sefa Eyeoglu
9fb80a2687
Merge pull request #242 from marcelohdez/more-copy-options 2022-11-06 01:10:24 +01:00
Sefa Eyeoglu
d5d224d89a
fix: save metacache after clearing
If the user closes the launcher right after clearing, it probably
didn't actually clear the cache yet.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-06 01:05:13 +01:00
Sefa Eyeoglu
4708ce4226
refactor: rename halloween cats to -spooky
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-06 00:47:33 +01:00
Sefa Eyeoglu
a0580946dc
fix: allow -ween variants for all cats
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-06 00:04:43 +01:00
Sefa Eyeoglu
e68fd7c1e3
Merge pull request #383 from leo78913/toolbar-lock 2022-11-06 00:00:47 +01:00
Adrien
369419870e add: Spooky Rory
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-05 23:55:43 +01:00
leo78913
0938f80b41
Update launcher/ui/MainWindow.cpp
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-11-05 18:10:36 -03:00
flow
9f462dcc27
fix: update tomlplusplus submodule
This fixes an issue with Windows TOML file parsing with non-latin
characters.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-05 16:28:54 -03:00
Rachel Powers
96008d3bb2 add -I import flag & don't clobber .zip assoc
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-05 08:07:58 -07:00
Rachel Powers
c05f744ec2 windows file association is *hard*
new macros!

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-05 08:07:58 -07:00
Ryan Cao
3df31579a1
fix: @timoreo22
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-05 22:31:38 +08:00
Ryan Cao
f1d3481a29
fix: remove dumb FS::symlink function
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-05 22:25:22 +08:00
Ryan Cao
cf3aad9c41
fix: use osascript to get admin privileges
inspired from VSCode's approach

Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-05 22:18:05 +08:00
Ryan Cao
7b1e68bfa8
initial support for add to PATH action
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-05 22:17:59 +08:00
DioEgizio
82256a2fe8
Merge pull request #400 from DioEgizio/bump-6.0 2022-11-05 14:35:21 +01:00
DioEgizio
016b3448e8 chore: bump to 6.0
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-05 13:34:02 +01:00
Sefa Eyeoglu
2dde26e485
Merge pull request #399 from ryanccn/readme-adaptive-logo-fix 2022-11-05 13:07:53 +01:00
Ryan Cao
2999afe781
fix: width="50%"
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-05 19:20:08 +08:00
Ryan Cao
bfc5a6488b
fix(docs): use new format for adaptive images in README
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-05 19:16:56 +08:00
Sefa Eyeoglu
4af22d663a
Merge pull request #229 from ryanccn/macos-drag-n-drop 2022-11-05 11:17:21 +01:00
Sefa Eyeoglu
ba8322aa5c
Merge pull request #396 from leozamboni/develop 2022-11-05 11:17:13 +01:00
Sefa Eyeoglu
e4bd82190a
Merge pull request #149 from TayouVR/better-custom-themes 2022-11-05 11:16:41 +01:00
Sefa Eyeoglu
695734636f
Merge pull request #294 from piperswe/add-snapcraft-yml 2022-11-05 11:09:51 +01:00
Sefa Eyeoglu
bdac2a5f4d
fix: add missing newline
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-05 11:09:35 +01:00
Sefa Eyeoglu
f8ea6212c7
fix: fix icon install path
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-05 10:42:44 +01:00
Sefa Eyeoglu
5e9b26dbef
Merge pull request #366 from TheLastRar/MSVC-Build 2022-11-04 23:49:54 +01:00
Sefa Eyeoglu
67c99369ab
fix: use KDEInstallDirs for manpage
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-04 23:43:18 +01:00
flow
d35c2db41e
fix: separate types of std::string in Packwiz
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-04 16:53:25 -03:00
flow
dff5fea976
feat: add more separation between types of std::string in StringUtils
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-04 16:53:25 -03:00
flow
ab6c7244fc
refactor: move FS's toStdString to StringUtils
This is so that anyone can use it :)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-04 16:53:25 -03:00
flow
353b51f11e
refactor: move MMCStrings -> StringUtils
General utilities can go in here >:)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-04 16:53:24 -03:00
flow
76050880f1
fix: use unicode variant for marking '.index' hidden
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-04 16:53:21 -03:00
TheLastRar
396a7994f9 Workflow: Add MSVC Builds to release workflow
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:39 +00:00
TheLastRar
e29259cd55 Fix: Resolve ambiguous overload errors
Clang-cl fails to select the correct function and instead errors

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:39 +00:00
TheLastRar
79a728d7d2 Fix: Conflicting types for hoedown functions
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:39 +00:00
TheLastRar
98444bd865 CI: Add VC variables before packaging on Windows
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:39 +00:00
TheLastRar
3f75e1cb1d CI: Build MSVC Legacy as 32bit
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:39 +00:00
TheLastRar
4f327120ac CI: Link to release libraries even in debug
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:39 +00:00
TheLastRar
cc8456ec6b CI: Use msbuild generator for msvc builds
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:38 +00:00
TheLastRar
f8ad1a052f CMake: Support multi-configuration generators
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:38 +00:00
TheLastRar
372ce588cd CI: Add MSVC Builds
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:38 +00:00
TheLastRar
12632ec404 CMake: Build flags for MSVC
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:37 +00:00
TheLastRar
e777c26a14 CMake: Add fallback to bundled ECM
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:37 +00:00
TheLastRar
1d38248194 Libraries: Add ECM
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:36 +00:00
TheLastRar
d52868c6c5 CI: Exclude zlib tests
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:36 +00:00
TheLastRar
29c1639b1d CMake: Force bundled zlib to take our IPO settings
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:36 +00:00
TheLastRar
653a953d2f CMake: Add zlib
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:35 +00:00
leozamboni
9f5537d936
feat: spooky cat for halloween
Signed-off-by: leozamboni <leonardonunes169@gmail.com>
2022-11-04 15:09:57 -03:00
Sefa Eyeoglu
21a7af535c
Merge branch 'develop' into macos-drag-n-drop 2022-11-04 18:30:42 +01:00
Sefa Eyeoglu
a241d3f187
refactor(cmake): use KDEInstallDirs for Linux install paths
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-04 18:29:19 +01:00
txtsd
8f045af867
Merge pull request #374 from flowln/fix_lto 2022-11-04 15:39:41 +05:30
TheLastRar
6d4efc0443 Libraries: Add zlib
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-03 21:35:28 +00:00
TheLastRar
e2e6d00064 CMake: Remove CMP0020 OLD
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-03 21:35:28 +00:00
TheLastRar
e682c3e9b8 Fix: Correct exclusions for debug QT plugins
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-03 21:35:28 +00:00
TheLastRar
fe347262e9 Fix: Using uint8_t in std::uniform_int_distribution is undefined
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-03 21:35:27 +00:00
TheLastRar
c993209b76 Fix: Explicitly specify Version.h path
MSVC uses a different search mechanism that ends up picking the mete Version.h

Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-03 21:35:27 +00:00
Sefa Eyeoglu
2cf4d5f8ec
Merge pull request #389 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2022-11-03 21:58:29 +01:00
renovate[bot]
c6ab9718ae
chore(deps): update hendrikmuhs/ccache-action action to v1.2.5 2022-11-03 19:50:27 +00:00
txtsd
3e3ef03855
Merge pull request #379 from TheLastRar/win-stacksize 2022-11-03 10:52:36 +05:30
Tayou
c2f37716e5
clang_format for PR files
I'm getting a rendezvous... I thought I did this already

Signed-off-by: Tayou <tayou@gmx.net>
2022-11-03 05:05:07 +01:00
Tayou
e9bfd43ff7
added requested changes
Signed-off-by: Tayou <tayou@gmx.net>
2022-11-03 05:04:36 +01:00
flow
2958ffa73f
Merge pull request #382 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2022-11-02 16:50:47 -07:00
leo78913
3d11d044d2 add an option to lock the toolbars
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-11-02 20:33:02 -03:00
renovate[bot]
7eb0b1c69a
chore(deps): update hendrikmuhs/ccache-action action to v1.2.4 2022-11-02 23:02:32 +00:00
TheLastRar
8d39a9ea61 Fix: Increase stack size on Windows to 8MiB
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-02 20:13:44 +00:00
TheKodeToad
cb796dbdfb
Remove unnecessary block
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 16:38:32 +00:00
Ryan Cao
4254c20eda
experimental: install mime info in CMake
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-02 23:28:42 +08:00
Sefa Eyeoglu
094b57bb23
Merge pull request #372 from santiagocezar/rory 2022-11-02 12:06:08 +01:00
Santiago Cézar
9ca4f19aea remove logcat
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-02 07:45:43 -03:00
TheKodeToad
a29d88c313 Even more fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 09:59:58 +00:00
TheKodeToad
a1ed8154f7 Another fix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 09:31:39 +00:00
TheKodeToad
6c45a990ef A good use of auto
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 09:13:44 +00:00
TheKodeToad
8dfa3393dc Formatting and forward-declaration
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 08:43:46 +00:00
txtsd
d12323396f
Merge pull request #346 from ryanccn/more-user-friendly-java-warning-text-ahaha 2022-11-02 10:38:26 +05:30
Santiago Cézar
48d34741f3 keyboard navigation is important
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-01 22:53:45 -03:00
Santiago Cézar
76203018e9 forgot the qrc
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-01 20:21:34 -03:00
flow
7956e6f04e
fix: don't use forward-declared Ptr types in meta/
This would cause ODR violations when those headers were included in
other places that also included stuff like "Version.h" (note the
"meta/Version.h"), which can cause problems, especially in LTO.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-01 19:48:26 -03:00
Santiago Cézar
668342b470 add rory flat too (and holiday variants)
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
Co-authored-by: Ashtaka <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-01 19:31:37 -03:00
Santiago Cézar
0a0ce74105 add rory
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
Co-authored-by: Ashtaka <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-01 19:06:27 -03:00
Sefa Eyeoglu
f6a3fa55b1
Merge pull request #368 from PrismLauncher/credits 2022-11-01 21:56:26 +01:00
txtsd
718a9a3559
change: Update credits
Replaces txtsd's GitHub link with their website
Moves DioEgizio and flowln from contributors to dev team

Signed-off-by: txtsd <code@ihavea.quest>
2022-11-02 01:20:58 +05:30
Sefa Eyeoglu
5485c5aaed
Merge pull request #365 from Scrumplex/fix-logo 2022-11-01 20:34:23 +01:00
Tayou
afcdf4b9cf
condensed icon theme code
Signed-off-by: Tayou <tayou@gmx.net>
2022-11-01 20:18:07 +01:00
Tayou
a3f5ea3598
added suggested changes
Signed-off-by: Tayou <tayou@gmx.net>
2022-11-01 20:17:53 +01:00
Tayou
fef60a9da0
add support for multiple custom themes
also moved theme related code from Application.cpp to new ui/themes/ThemeManager.cpp, this class should cleanly isolate theme related functions and help avoid code duplication in future theme related additions.
Themes can now be just qss or css files, they won't have color pallette information with them in that case

Signed-off-by: Tayou <tayou@gmx.net>
2022-11-01 20:10:12 +01:00
TheKodeToad
576867605d Add another fallback
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 18:40:12 +00:00
TheKodeToad
d1626d20bd Slight cleanup
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 18:30:11 +00:00
TheKodeToad
c890aa18f7 Only select correct mod
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 18:25:54 +00:00
TheKodeToad
6c7d040439 Hacky tweaks
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 18:12:27 +00:00
TheKodeToad
d03ae34b61 Auto-select first result
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 17:19:54 +00:00
TheKodeToad
b9547adce7 Add more license headers
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 17:02:24 +00:00
TheKodeToad
7f32c6464d Initial better mod browser link implementation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 16:58:22 +00:00
Rachel Powers
209a1650e4 clang_format and code cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 07:06:36 -07:00
Sefa Eyeoglu
b142e2a7a7
fix: fix logo name
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-01 13:59:11 +01:00
Rachel Powers
6010ce0dc5 chore(remove FS::copyFile):
Now that #333 is merged and FS::copy works on non directory copyFile can be removed.

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:28:57 -07:00
Rachel Powers
a7a331a26e ensure FS::copyFile is marked for removal
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
Rachel Powers
fda2c116be code quality cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
Rachel Powers
d2f3dbaa29 fix mispellings and wrap strings for translation
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
Rachel Powers
e9d4793b1e minor clean up and add some docs
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
Rachel Powers
13c7efa058 copy found mods to instance (FTB and Flame)
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
Rachel Powers
1598d65824 watch filesystem, compute and match hashes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
Rachel Powers
028e086960 send blocked mod info to dialog & prototype UI
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
timoreo
04b39294ba
Merge pull request #333 from flowln/fix_atl_packs_post_modpack_update 2022-11-01 09:56:16 +01:00
timoreo
3a446c410c
Merge pull request #329 from flowln/only_safe_workarounds 2022-11-01 09:55:43 +01:00
DioEgizio
35edea2141
Merge pull request #359 from Chrono-byte/develop 2022-11-01 08:17:14 +01:00
Chrono
ce1a4857cc
Merge branch 'PrismLauncher:develop' into develop 2022-10-31 20:06:59 -04:00
Chrono
dfdf739282
remove one space
Signed-off-by: Chrono <me@disilla.org>
2022-10-31 19:44:55 -04:00
Sefa Eyeoglu
7086b1e65c
Merge pull request #351 from Scrumplex/fix-trash 2022-10-31 22:56:07 +01:00
Sefa Eyeoglu
f2d445d27b
fix: fix undo key sequence
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-31 11:34:48 +01:00
Sefa Eyeoglu
29d362a6e0
fix: do not trash instances in Flatpak
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-31 11:34:46 +01:00
DioEgizio
c8adc4e356
Merge pull request #354 from Scrumplex/translations-maybe
Improve display names of certain languages
2022-10-31 08:43:43 +01:00
Ryan Cao
8467daa0ec
oop
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-31 14:58:38 +08:00
DioEgizio
13e14b712e
Merge pull request #352 from TheLastRar/Win-setDarkWinTitlebar-10OrGreater 2022-10-31 07:51:13 +01:00
Ryan Cao
27dfe30fe6
Update VerifyJavaInstall.cpp
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-31 14:44:11 +08:00
flow
d89a541a8d
Merge pull request #353 from FayneAldan/accounts-consistency 2022-10-30 16:52:36 -07:00
Sefa Eyeoglu
42350e689d
chore: improve display names of certain languages
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-30 23:50:57 +01:00
Fayne Aldan
b7d5fee995 Change Profiles to Accounts for consistency
Signed-off-by: Fayne Aldan <FayneAldan@gmail.com>
2022-10-30 15:56:45 -06:00
TheLastRar
fd099166c6 Fix: Check if Windows 10 before calling setDarkWinTitlebar()
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-10-30 20:49:56 +00:00
Sefa Eyeoglu
b4be28b9bb
fix: fix disabled trash undo action
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-30 18:37:06 +01:00
Ryan Cao
19a8d51bf3
fix: more user friendly Java warning text
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-30 11:56:43 +08:00
Marcelo Hernandez
5d1aac3c53
added option to not copy screenshots
+ moved select all checkbox to top row, centered.

Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-29 22:27:31 -04:00
txtsd
87b0d3fe11
Merge pull request #342 from fn2006/prism-svg-fix 2022-10-30 01:51:14 +05:30
fn2006
98891a036d use existing variables
Signed-off-by: fn2006 <usernamefn2006alreadyused@protonmail.com>
2022-10-29 17:35:37 +01:00
fn2006
b142a6da5b fix hardcoded svg
Signed-off-by: fn2006 <usernamefn2006alreadyused@protonmail.com>
2022-10-29 16:42:37 +01:00
Sefa Eyeoglu
1c0139c5f4
Merge pull request #340 from PrismLauncher/repology 2022-10-29 16:16:12 +02:00
Sefa Eyeoglu
1b7ae4321d
Merge pull request #338 from Scrumplex/fix-credits-1 2022-10-29 16:15:34 +02:00
txtsd
7f991ed897
feat: Add Repology badge to README
Signed-off-by: txtsd <code@ihavea.quest>
2022-10-29 19:37:00 +05:30
Sefa Eyeoglu
5ed7eb9d53
chore: update credits
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-29 13:12:51 +02:00
Marcelo Hernandez
c00f96c7ca
create getters and setters for InstanceCopyPrefs
+ use pragma once like other .h files in this directory

Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-29 00:55:33 -04:00
flow
81333515e0
feat(tests): add test for FS::copy with files
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-28 20:55:25 -03:00
flow
be3c9abcfe
fix: copy single files too in FS::copy
eek

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-28 20:54:58 -03:00
Sefa Eyeoglu
177f17450a
Merge pull request #173 from Scrumplex/fix-icons 2022-10-29 00:35:48 +02:00
Sefa Eyeoglu
150a3adaaf
Merge pull request #267 from leo78913/toolbar-icons 2022-10-28 21:28:44 +02:00
leo78913
76146e0f17 add a flat white version of the launch icon
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-10-28 15:51:20 -03:00
leo78913
4500e345b3
Merge branch 'PrismLauncher:develop' into toolbar-icons 2022-10-28 15:46:02 -03:00
Sefa Eyeoglu
e885f3c26a
Merge pull request #65 from he3als/develop 2022-10-28 18:43:30 +02:00
flow
e6e92f2b0e
fix: only allow workarounds for blocked mods from MR when 100% safe
If a version on Modrinth has more than a single mod loader associated,
it means that it's possible we might get the wrong file for download,
since individual files don't really have this kind of metadata in the
API response.

So, in such cases, it's best to let the user take care of it instead.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-28 13:31:21 -03:00
Ryan Cao
03b48554b1
fix(style): convert tabs to spaces
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-29 00:01:22 +08:00
txtsd
f229574758
Merge pull request #322 from DioEgizio/64bit-it 2022-10-28 18:43:32 +05:30
Sefa Eyeoglu
7b446dd30f
Merge pull request #319 from Scrumplex/fix-avoid-mr-segfault 2022-10-28 13:40:52 +02:00
DioEgizio
a5be974f1a feat: use clang64 on qt6 builds
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-28 08:05:31 +02:00
DioEgizio
952615eadb
Merge pull request #301 from DioEgizio/clang-attempt
feat(actions): use clang32 for building on windows
2022-10-28 07:54:17 +02:00
Sefa Eyeoglu
93894f62ff
fix: avoid segfault for unexpected API reponse
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-28 00:08:15 +02:00
Sefa Eyeoglu
2051de51b5
Merge pull request #318 from TheLastRar/manifest-platform
Fix: Don't specify x86 in manifest
2022-10-27 22:53:15 +02:00
Sefa Eyeoglu
2ba3de79d8 chore: add comment about copy bug
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-27 21:23:17 +02:00
DioEgizio
d35c985d2e feat(actions): use clang32 for building on windows
*way* faster

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-27 21:23:17 +02:00
TheLastRar
b18466da84 Fix: Don't specify x86 in manifest
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-10-27 18:37:08 +01:00
flow
90714a93f3
Merge pull request #315 from AshtakaOOf/develop
Remove appveyor from README
2022-10-27 13:15:53 -03:00
Adrien
990cfb7b33
Remove appveyor
I forgor 💀 
But seriously I forgor to remove the &logo=appveyor thing AAAAAH!!!

Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-10-27 18:08:56 +02:00
Piper McCorkle
aacf7938ae Add CI build for Snap
Signed-off-by: Piper McCorkle <contact@piperswe.me>
2022-10-26 09:25:58 -05:00
Piper McCorkle
2e0f818905 Add a snapcraft.yml for building Snaps
The included snapcraft.yml can be used to build a Snap (the application
format used by Canonical's modern package manager) out of Prism. If the
project wants in the future, Prism can publish these Snaps to the Snap
Store so the Prism Launcher can be installed through the Ubuntu Software
app on vanilla Ubuntu.

I haven't registered the Snap name, so it's currently free for anyone to
reserve. I'd suggest that a Prism developer register the name
prismlauncher at https://snapcraft.io/register-snap to ensure the name
belongs to the project, even if there are no plans of setting up CI to
publish snaps in the short term.

I have also modified JavaUtils.cpp to be able to autodetect the Java
versions included in the Snap, and added "*.snap" to the .gitignore so
the compiled Snap isn't accidentally committed to the repository.

Signed-off-by: Piper McCorkle <contact@piperswe.me>
2022-10-26 09:25:54 -05:00
Marcelo Hernandez
63b6c6685c
Abstract away InstanceCopyPrefs' internals through new getSelectedFiltersAsRegex() function
+ fix typo in comment
+ remove unused import
+ add [[nodiscard]] to methods

Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-26 00:20:36 -04:00
Adrien
610b971117
Improve a bit README.md (#305)
Add Open Collective and fix some stuff.
2022-10-25 21:09:45 -03:00
Sefa Eyeoglu
318f657c31
Merge pull request #231 from tobimori/patch-1 2022-10-25 20:15:31 +02:00
tobimori
482d3a1d76 update macos copyright year
Signed-off-by: tobimori <tobias@moeritz.cc>
2022-10-25 15:24:41 +02:00
DioEgizio
b516dd970f
Merge pull request #206 from flowln/changelog_height_fix 2022-10-25 11:29:14 +02:00
tobimori
d9463620e6 move .app rename to packaging process, update mac copyright string
Signed-off-by: tobimori <tobias@moeritz.cc>
2022-10-25 09:34:07 +02:00
Marcelo Hernandez
385c452ddf
remove checkBool function, add updateSelectAllCheckbox function
Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-24 20:49:40 -04:00
Marcelo Hernandez
a89df42561
Simplify bool check in CopyInstanceDialog.cpp
Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-24 19:31:40 -04:00
Sefa Eyeoglu
08cd5d52fa
Merge pull request #283 from flowln/fix_abort_on_autosearch 2022-10-24 23:00:02 +02:00
Sefa Eyeoglu
d0e668e1d8
Merge pull request #211 from Hibiii/show-instace-arg 2022-10-24 22:51:30 +02:00
Ryan Cao
eeb95f89e1
add .mrpack mime type
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-25 00:12:27 +08:00
flow
e4e0c27e1c
Merge pull request #281 from Scrumplex/fix-nsis-displayname 2022-10-24 11:09:23 -03:00
flow
b638a6ae95
fix: retry mod search job after aborting it
This way, we don't get stuck with an aborted job in our way! :o

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-24 09:09:24 -03:00
Sefa Eyeoglu
74b98af8e5
fix: use display name in NSIS
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-24 12:43:13 +02:00
Sefa Eyeoglu
6a474a0125
fix: update icon generate script
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-24 11:18:53 +02:00
Sefa Eyeoglu
224304813a
Merge pull request #274 from Protrikk/patch-1 2022-10-24 11:13:42 +02:00
Marcelo Hernandez
4caf06bc99
Check "Select all" checkbox if all options are already selected
+ code cleanup

Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-23 19:30:41 -04:00
Marcelo Hernandez
15593b5c09
Add "Select all" checkbox + ui revamp + code cleanup
Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-23 19:30:41 -04:00
Marcelo Hernandez
e7e56eb1e3
add more options to copy instance dialog
- Copy game options, copy resource packs, copy shaders,
copy servers, and copy mods
- Also made a new InstanceCopyPrefs struct to store those
options rather than passing 7 different booleans into
InstanceCopyTask's constructor

Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-23 19:30:28 -04:00
leo78913
43bf601f12 add icons to the instance toolbar
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-10-23 20:04:19 -03:00
Trisave
d5109f024b
Better dark theme selection contrast
Tweak background of the selection background in order to make text more readable

Signed-off-by: Trisave <42098407+Protrikk@users.noreply.github.com>
2022-10-23 20:32:04 +02:00
flow
7f441f5b87
Merge pull request #228 from bensuperpc/change_cast 2022-10-23 14:28:33 -03:00
he3als
0aac85dda1 Replace tab with spaces in flat_white.qrc
Signed-off-by: he3als <65787561+he3als@users.noreply.github.com>
2022-10-23 14:35:33 +01:00
he3als
4777a45722 Fix new flat white icons
Signed-off-by: he3als <65787561+he3als@users.noreply.github.com>
2022-10-23 14:32:35 +01:00
Sefa Eyeoglu
29e6e170cc
Merge pull request #240 from jn64/fix/version-label-width 2022-10-23 02:07:29 +02:00
jn64
01db80d19a Fix version labels width
Make labels fit to the contents, so Ibeam cursor doesn't appear
over empty space. Should have been done with 90025ed.

Signed-off-by: jn64 <23169302+jn64@users.noreply.github.com>
2022-10-23 03:35:23 +08:00
flow
8b28ed67ae
Merge pull request #234 from AliceDTRH/fix/dedupejava 2022-10-22 13:14:26 -03:00
Ryan Cao
f35a30d371
oops
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-22 23:47:53 +08:00
Ryan Cao
1a8de111a3
add linux support
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-22 23:46:53 +08:00
flow
9bb62e1bba
Merge pull request #233 from jamierocks/atl-fix-aborting-installs 2022-10-22 12:19:58 -03:00
AliceDTRH
b2789fef0f
Use correct variable for Windows
Signed-off-by: AliceDTRH <57547425+AliceDTRH@users.noreply.github.com>
2022-10-22 17:19:34 +02:00
he3als
46fe7e77b3 DCO Remediation Commit for he3als <65787561+he3als@users.noreply.github.com>
I, he3als <65787561+he3als@users.noreply.github.com>, hereby add my Signed-off-by to this commit: d87f743a2b
I, he3als <65787561+he3als@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 92dfd659f1
I, he3als <65787561+he3als@users.noreply.github.com>, hereby add my Signed-off-by to this commit: a6e65dfc7a
I, he3als <65787561+he3als@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 99e1c13e80

Signed-off-by: he3als <65787561+he3als@users.noreply.github.com>
2022-10-22 16:14:50 +01:00
he3als
99e1c13e80 fix: add flat_white to code 2022-10-22 15:50:06 +01:00
he3als
a6e65dfc7a Add new flat white icons 2022-10-22 15:40:39 +01:00
AliceDTRH
1471eddc7e
Deduplicates java installs before passing it on
Signed-off-by: AliceDTRH <57547425+AliceDTRH@users.noreply.github.com>
2022-10-22 16:40:31 +02:00
he3als
89fd84d916
Merge branch 'PrismLauncher:develop' into develop 2022-10-22 15:30:40 +01:00
Jamie Mansfield
0e17eee096
ATLauncher: Fix pack installation always aborting
I made a mistake during when cherry picking a previous commit, this
applies the change - and fixes installing ATLauncher packs.
2022-10-22 15:22:30 +01:00
flow
81f1305270
Merge pull request #215 from forkiesassds/develop 2022-10-22 10:48:00 -03:00
Sefa Eyeoglu
2ec4310104
Merge pull request #230 from Scrumplex/add-pr-template 2022-10-22 15:32:00 +02:00
Sefa Eyeoglu
24e4db676a
Merge pull request #224 from jamierocks/atl-abort-close-optional-mods-dialog 2022-10-22 15:31:53 +02:00
Sefa Eyeoglu
6e21a9829d
Merge pull request #225 from Scrumplex/fix-segfault-fileresolver 2022-10-22 15:31:46 +02:00
flow
4e99e10cbd
Merge pull request #218 from getchoo/change-jars-path 2022-10-22 10:18:58 -03:00
Tobias Möritz
500a7eceab
update macOS build process to work with new .app
Signed-off-by: Tobias Möritz <tobias@moeritz.cc>
2022-10-22 15:10:32 +02:00
Tobias Möritz
1dad35ca76
update macos plist contents (fixes #132)
Signed-off-by: Tobias Möritz <tobias@moeritz.cc>
2022-10-22 15:00:52 +02:00
Sefa Eyeoglu
8b3093e758
chore: add PR template
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-22 14:59:57 +02:00
Ryan Cao
a406aeb3ea
feat: register as zip/mrpack handler on macOS
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-22 20:51:46 +08:00
Sefa Eyeoglu
970e4b020e
fix: fix segfault when resolving Flame resources
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-22 14:11:51 +02:00
Jamie Mansfield
a4f4f2891c
DCO Remediation Commit for a6b13487
I, Jamie Mansfield <jmansfield@cadixdev.org>, hereby add my
Signed-off-by to this commit: a6b13487f0

Signed-off-by: Jamie Mansfield <jmansfield@cadixdev.org>
2022-10-22 12:58:56 +01:00
Jamie Mansfield
a6b13487f0
ATLauncher: Abort install if optional mods dialog is closed
This matches the behaviour of ATLauncher.
2022-10-22 12:35:34 +01:00
Bensuperpc
56ae4e5b6a
Change old style cast to C++ cast
Change old style cast to C++ cast

Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2022-10-22 13:04:48 +02:00
Sefa Eyeoglu
54c26b05fa
Merge pull request #185 from flowln/fix_blocked_mods_crash 2022-10-22 12:44:20 +02:00
Sefa Eyeoglu
bd376d5217
Merge pull request #203 from Scrumplex/fix-dont-build-renove-branches
Don't build renovate branches
2022-10-22 10:59:49 +02:00
seth
2592c69021
semicolon fail
i was off by one key :(

Signed-off-by: seth <getchoo@tuta.io>
2022-10-21 21:40:21 -04:00
seth
4a2b25e841
fix: use correct variable for jars path
Signed-off-by: seth <getchoo@tuta.io>
2022-10-21 21:40:21 -04:00
seth
ba4af1a890
fix: make jars path specific to prism
Signed-off-by: seth <getchoo@tuta.io>
2022-10-21 21:40:20 -04:00
forkiesassds
9b17cde019 CurseForge modpack page improvements
Signed-off-by: forkiesassds <icanttellyou@memeware.net>
2022-10-22 01:20:08 +03:00
flow
7a8c963722
Merge pull request #147 from Minion3665/enhancement/update-nix-derivation 2022-10-21 19:04:35 -03:00
Hibi
82d1dbf173
DCO Remediation Commit for Hibi <69405847+Hibiii@users.noreply.github.com>
I, Hibi <69405847+Hibiii@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 1288b92615
I, Hibi <69405847+Hibiii@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 5b75869c0b

Signed-off-by: Hibi <69405847+Hibiii@users.noreply.github.com>
2022-10-21 17:59:35 -03:00
Sefa Eyeoglu
aefb8b353e
Merge pull request #187 from leo78913/menu-icons 2022-10-21 22:39:35 +02:00
Hibi
5b75869c0b
Add --show to manual page 2022-10-21 16:10:03 -03:00
Hibi
1288b92615
Add argument to show instance window 2022-10-21 15:40:28 -03:00
flow
7eecf454e8
fix: remove max height logic for mod update changelogs
It's not worth it to keep this, it's just a heuristic that fails from
time to time.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-21 14:07:43 -03:00
leo78913
ccf7d1e0c4 material design icons
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-10-21 14:04:04 -03:00
leo78913
e4b5cd23e6 the trashcan icons dont look like trash now
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-10-21 13:49:31 -03:00
txtsd
819296cc9c
Merge pull request #198 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2022-10-21 22:13:09 +05:30
txtsd
67c7d80f41
Merge pull request #197 from PrismLauncher/renovate/actions-cache-3.x 2022-10-21 22:12:48 +05:30
Sefa Eyeoglu
919f8c54d7
fix: don't build renovate branches
They will be built using the pull_requests event anyway.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-21 17:42:39 +02:00
Sefa Eyeoglu
cbaf71f581
Merge pull request #201 from Scrumplex/add-netlify-sponsor 2022-10-21 17:37:18 +02:00
Sefa Eyeoglu
f118c602e6
Merge pull request #202 from Heath123/patch-1 2022-10-21 17:37:09 +02:00
circuit10
ff2f40f5e1
Fix typo
Signed-off-by: circuit10 <heath.mitchell27@gmail.com>
2022-10-21 16:28:04 +01:00
Sefa Eyeoglu
9758c9b2a2
chore: add Netlify as sponsor
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-21 17:04:21 +02:00
renovate[bot]
09e4e100a2
chore(deps): update hendrikmuhs/ccache-action action to v1.2.3 2022-10-21 14:55:49 +00:00
renovate[bot]
bdd5c180d3
chore(deps): update actions/cache action to v3.0.11 2022-10-21 14:55:42 +00:00
DioEgizio
749b085063
Merge pull request #196 from PrismLauncher/renovate/configure 2022-10-21 16:55:17 +02:00
renovate[bot]
c5a796ad8e
chore(deps): add renovate.json 2022-10-21 14:43:02 +00:00
Sefa Eyeoglu
12d8409e65
Merge pull request #39 from Sebbl0508/mod_dialog_fontsize 2022-10-21 15:25:28 +02:00
leo78913
8db89b4cfb
Merge branch 'PrismLauncher:develop' into menu-icons 2022-10-20 17:54:43 -03:00
leo78913
31dc92dafe add icons to the instance menu and 4 new icons:
delete
rename
tag
export

Signed-off-by: leo78913 <leo3758@riseup.net>
2022-10-20 17:48:57 -03:00
flow
01b90809e8
fix: memory leak when finishing blocked mods job
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-20 16:55:22 -03:00
flow
0a7383a4e1
fix: hide ProgressDialog when failing/succeeding tasks
WHY IS QT LIKE THAT AAAAAAAA

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-20 16:54:39 -03:00
Sefa Eyeoglu
5e86a34925
Merge pull request #184 from Chrono-byte/develop 2022-10-20 21:52:24 +02:00
Chrono-byte
ece206b81c
Remove erroneous space
Signed-off-by: Chrono-byte <me@disilla.org>
2022-10-20 15:22:04 -04:00
Chrono-byte
88341b923a
fix contributor notices in AboutDialog.cpp for license compliance
Signed-off-by: Chrono-byte <me@disilla.org>
2022-10-20 15:14:26 -04:00
flow
5d27633821
fix: show a single line in ProjectItem's desc. when there's no more space
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-20 15:03:46 -03:00
DioEgizio
a9d4370ad4
Merge pull request #47 from TheOPtimal/develop 2022-10-20 10:01:46 +02:00
Sefa Eyeoglu
8a0318c779
Merge pull request #119 from Scrumplex/update-readme-sponsors 2022-10-20 09:59:00 +02:00
Sefa Eyeoglu
8e754d9a56
fix: update README
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-20 09:54:23 +02:00
Sefa Eyeoglu
0e209dcb02
Merge pull request #148 from ZombieNub/prismlauncher-rename 2022-10-20 09:44:25 +02:00
Zeke
6f2d6425a2
update meta to not break flatpak
Signed-off-by: Zeke <ezekielsmith@protonmail.com>
2022-10-20 16:54:57 +10:00
Sebastian Rueth
b46c4a81e0
check space requirements of project description
if there isn't enough space for 2 lines of project description, only
draw one

Signed-off-by: Sebastian Rueth <sebastian.rueth@protonmail.com>
2022-10-20 08:02:05 +02:00
TheOPtimal
b6aa33f3a6 Add Matrix Room
Co-authored-by: Fayne Aldan <FayneAldan@gmail.com>
Signed-off-by: TheOPtimal <41379516+TheOPtimal@users.noreply.github.com>
Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-10-20 09:13:37 +04:00
TheOPtimal
ab68d9198d PrismLauncher → Prism Launcher (again)
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: TheOPtimal <41379516+TheOPtimal@users.noreply.github.com>
Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-10-20 09:13:37 +04:00
TheOPtimal
32eebd3ca7 PrismLauncher → Prism Launcher
Co-authored-by: Fayne Aldan <FayneAldan@gmail.com>
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: TheOPtimal <41379516+TheOPtimal@users.noreply.github.com>
Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-10-20 09:13:37 +04:00
TheOPtimal
3f2e5633b4 Add OpenCollective
Co-authored-by: Fayne Aldan <FayneAldan@gmail.com>
Signed-off-by: TheOPtimal <41379516+TheOPtimal@users.noreply.github.com>
Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-10-20 09:13:37 +04:00
Jacob Gogichaishvili
a99b9e80b8 Remove PolyMC's OpenCollective
Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-10-20 09:13:37 +04:00
Jacob Gogichaishvili
42ed7e4626 Remove Matrix room link until one is created
Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-10-20 09:13:37 +04:00
Jacob Gogichaishvili
ae910eea62 Change issue templates to Prism branding
Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-10-20 09:13:37 +04:00
flow
d35920f356
Merge pull request #123 from MMK21Hub/patch-1 2022-10-19 22:00:23 -03:00
IroncladLandship
c29e7477f0
Merge branch 'develop' into prismlauncher-rename
Signed-off-by: IroncladLandship <jack.huffstutler@gmail.com>
2022-10-19 19:21:08 -05:00
flow
86bbc7939c
Merge pull request #100 from TheEvilSkeleton/improve-approachability 2022-10-19 21:15:37 -03:00
Skyler Grey
dab091a7b7
Update NIX.md so it has more methods + is clearer
- Add proper headings
- Change flake codeblocks so that configuration stuff isn't in the same
  place as flake.nix stuff
- Add instructions for not using the overlay with flakes
- Add instructions for running ad-hoc with flakes

Signed-off-by: Skyler Grey <skyler3665@gmail.com>
2022-10-19 23:50:48 +01:00
Skyler Grey
513d93cfc7
Change the derivation to have parity with nixpkgs
- Symlink rather than copying libraries
- Update maintainers
- Reformat with nixpkgs-fmt

Signed-off-by: Skyler Grey <skyler3665@gmail.com>
2022-10-19 23:48:56 +01:00
Jackson Huffstutler
d7478c14fd Renamed inappropriate instances of "PrismLauncher" to "Prism Launcher"
Signed-off-by: IroncladLandship <jack.huffstutler@gmail.com>
2022-10-19 16:03:18 -05:00
TheEvilSkeleton
297c593edd
Improve approachability
Signed-off-by: TheEvilSkeleton <theevilskeleton@riseup.net>
2022-10-19 15:10:35 -04:00
MMK21Hub
6439ef11aa
Fix incorrect release titles
Signed-off-by: MMK21Hub <KAGfan2018@outlook.com>
2022-10-19 19:21:48 +01:00
flow
d6479e133d fix: properly center project descriptions
In particular, this takes into account the space used by the title, so
(hopefully) there won't be problems with custom themes with that.

Signed-off-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Sebastian Rüth <sebastian.rueth@protonmail.com>
2022-10-19 20:12:50 +02:00
Sebastian Rüth
50bbf2aacc fix text clipping
Signed-off-by: Sebastian Rüth <sebastian.rueth@protonmail.com>
2022-10-19 20:12:50 +02:00
Sefa Eyeoglu
41032aaac2
Merge pull request #110 from Scrumplex/fix-nsis-shortcut 2022-10-19 14:28:36 +02:00
Sefa Eyeoglu
4e08f28246
Merge pull request #31 from flowln/who_needs_webview 2022-10-19 14:28:29 +02:00
Sefa Eyeoglu
46c57e120f
Merge pull request #27 from flowln/ftb_install_improve 2022-10-19 13:51:35 +02:00
Sefa Eyeoglu
6b52ee61ae
Merge pull request #92 from Scrumplex/new-logo 2022-10-19 13:41:56 +02:00
Sefa Eyeoglu
61fbc5a791
refactor: replace with new logo
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-19 13:08:23 +02:00
Sefa Eyeoglu
22365205f9
fix: use display name for NSIS
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-19 12:17:06 +02:00
DioEgizio
c6515c1dad
Merge pull request #54 from Samisafool/develop 2022-10-19 12:13:13 +02:00
Samisafool
8201d1df02
Rename
Signed-off-by: Samisafool <thenerdiestguy@gmail.com>
2022-10-19 15:02:43 +05:30
timoreo
ddf168c536
Merge pull request #75 from Gideon9212/develop 2022-10-19 06:27:09 +02:00
Gideon9212
c9f81f56e9
Fix banner
Removed boosted URL for plain

Signed-off-by: Gideon9212 <gideon_gallagher@zoho.com>
2022-10-18 18:35:03 -07:00
Gideon9212
570264e1e9
Merge branch 'develop' into develop
Signed-off-by: Gideon9212 <gideon_gallagher@zoho.com>
2022-10-18 17:28:42 -07:00
flow
325e58d98c
Merge pull request #88 from FayneAldan/multimc-fallback
go all the way up the fork chain!
2022-10-18 19:27:24 -03:00
flow
23a2960aa3
Merge pull request #60 from jitterdev/develop 2022-10-18 18:53:30 -03:00
Fayne Aldan
888a87463e
Add fallback for multimc.cfg
Signed-off-by: Fayne Aldan <FayneAldan@gmail.com>
2022-10-18 14:40:34 -06:00
Sefa Eyeoglu
2ebaf46095
Merge pull request #82 from flowln/i_broke_something_again 2022-10-18 22:15:08 +02:00
flow
3a95a3b7c1
fix: don't take item from a possibly empty list
The list gets destroyed when we take the last object, so things explode.
😔

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-18 16:51:42 -03:00
Gideon9212
c4edffb388
Update banner
Changed to Join instead of Support server.

Signed-off-by: Gideon9212 <gideon_gallagher@zoho.com>
2022-10-18 12:10:29 -07:00
Gideon9212
5eec7cc788
Change discord invite to a banner
To help direct people to support with a big banner.

Signed-off-by: Gideon9212 <gideon_gallagher@zoho.com>
2022-10-18 11:40:23 -07:00
DioEgizio
fb4cf0b75d
Merge pull request #55 from flowln/config_add_fallback 2022-10-18 19:50:34 +02:00
Sefa Eyeoglu
5584884fe6
Merge pull request #68 from nightsnowlinouo/develop 2022-10-18 19:43:02 +02:00
Sefa Eyeoglu
3bb1068ef0
Merge pull request #59 from CutestNekoAqua/bug-35 2022-10-18 19:26:57 +02:00
雪鈴 SnowLin
b1b85313ae
Fix hosted weblate translation website URL
Signed-off-by: 雪鈴 SnowLin <113241163+nightsnowlinouo@users.noreply.github.com>
2022-10-19 01:22:58 +08:00
he3als
92dfd659f1 Fix .QRC file for flat white icons 2022-10-18 17:54:26 +01:00
he3als
d87f743a2b Add flat white icons
This is mainly for dark mode users, as I think that the regular colour of the flat icons do not look good with dark mode.
2022-10-18 17:49:35 +01:00
Jitter
aec3e7b0fc
correct non-proper noun
Signed-off-by: Jitter <64605731+jitterdev@users.noreply.github.com>
2022-10-18 11:14:27 -05:00
Sefa Eyeoglu
243600b75b
Merge pull request #61 from pog5/develop 2022-10-18 18:03:34 +02:00
Nightly
3d89d126d0
PlaceholderMC => PrismLauncher
Small Correction

Signed-off-by: Nightly <62222436+pog5@users.noreply.github.com>
2022-10-18 15:52:32 +00:00
Jitter
54281e53a1
Update README.md
Signed-off-by: Jitter <64605731+jitterdev@users.noreply.github.com>
2022-10-18 10:35:00 -05:00
Jitter
6befd2be81
Update README.md
Signed-off-by: Jitter <64605731+jitterdev@users.noreply.github.com>
2022-10-18 10:34:27 -05:00
Jitter
1f0ca9ed92
Update README.md
Signed-off-by: Jitter <64605731+jitterdev@users.noreply.github.com>
2022-10-18 10:34:11 -05:00
Sefa Eyeoglu
f3db9c3920
Merge pull request #48 from flowln/fix_nbt 2022-10-18 17:31:46 +02:00
Cleo John
83ceb26151 Streamline Button changes to improve source readability. 2022-10-18 17:28:23 +02:00
flow
32cdfb871c
fix: add fallback for polymc.cfg
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-18 12:22:42 -03:00
flow
801e7da5ee
feat: allow specifying fallbacks to INI files
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-18 12:22:42 -03:00
flow
2cf1ab7ec5
Merge pull request #43 from SSUPII/develop 2022-10-18 11:31:38 -03:00
Sefa Eyeoglu
d049c1afaf
chore: update flake
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 16:28:30 +02:00
flow
9f45389bc1
Merge pull request #45 from NotNite/update-readme 2022-10-18 11:23:10 -03:00
flow
d875481969
fix: update libnbtplusplus submodule's URL
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-18 11:11:34 -03:00
Sergio
17a1e1245c
Updated HTML tags to Markdown
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 16:04:28 +02:00
Sergio
06d28c3eec
Updated project naming
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 15:57:43 +02:00
NotNite
684982c25c
README: PlaceholderMC -> Prism Launcher
Also cleaned it up a bit to make my Markdown linter happy.
2022-10-18 09:52:36 -04:00
Sergio
421522a61a
Added further clarifications
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 15:52:00 +02:00
Sergio
f3b29d67f4
Merge branch 'PrismLauncher:develop' into develop 2022-10-18 15:39:29 +02:00
Sergio
2ee5c6b2a1
Totally skipped a typo
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 15:38:32 +02:00
Sergio
5083772c6f
Fixed markdown errors
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 15:37:11 +02:00
Sergio
fd51e5df47
Added build instructions for Linux
Added build instructions in the main repository as a temporary reference

Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 15:35:40 +02:00
Sefa Eyeoglu
3405fd91c6
Merge pull request #33 from DioEgizio/remove-useless-actions 2022-10-18 15:31:32 +02:00
DioEgizio
194822f11e
Merge pull request #28 from flowln/fix_copy 2022-10-18 15:27:53 +02:00
Sefa Eyeoglu
98963d4cdf
Merge pull request #29 from Scrumplex/feat-clear-metadata 2022-10-18 15:25:56 +02:00
DioEgizio
804ef36b20
Merge pull request #26 from Scrumplex/armhf 2022-10-18 15:24:33 +02:00
Sefa Eyeoglu
3c6ff8fddf
Merge pull request #36 from DioEgizio/fix-copying 2022-10-18 15:05:31 +02:00
DioEgizio
511893d535 update COPYING
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-18 14:47:20 +02:00
DioEgizio
e05fe77bfe feat: remove redundant actions from instance toolbar and redundant "instance"s
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-18 14:43:29 +02:00
DioEgizio
2b7b9a2abb
Merge pull request #25 from PlaceholderMC/fix-data-path
Fix Data path
2022-10-18 14:05:22 +02:00
Sefa Eyeoglu
6db3f68ae1
refactor: use correct data path
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 13:58:50 +02:00
timoreo
3773f2e7a5
Merge pull request #23 from PlaceholderMC/new-cf-key 2022-10-18 13:29:36 +02:00
Sefa Eyeoglu
1f8bffc15a
fix: new CurseForge key
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 13:24:57 +02:00
Sefa Eyeoglu
afaef4e83b
Merge pull request #13 from PlaceholderMC/rebrand 2022-10-18 13:05:24 +02:00
Sefa Eyeoglu
b746f723cb
fix: add Prism copyright header
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 13:01:32 +02:00
Sefa Eyeoglu
cfaf44f57b
fix: add sparkle public key
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 12:49:08 +02:00
Sefa Eyeoglu
eed541201e
fix: add new MSA client id
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 10:37:35 +02:00
Sefa Eyeoglu
a8bcb85f7b
fix(actions): change to PrismLauncher
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 10:13:44 +02:00
txtsd
981e9cf290
Merge pull request #14 from leumasme/develop 2022-10-18 13:27:10 +05:30
Sefa Eyeoglu
3ac398ac49
fix: use display name in code
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 09:50:27 +02:00
Temm
2d0728395f
Update README.md discord vanity link 2022-10-18 09:44:50 +02:00
Sefa Eyeoglu
722194405a
refactor: initial rebrand
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 09:37:59 +02:00
cozyGalvinism
0868a5e534
Merge pull request #11 from AshtakaOOf/temp-readme
More readable README.md :)
2022-10-18 01:42:54 +02:00
Adrien
a86b9c82ce
Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-10-18 01:38:49 +02:00
Adrien
f8642548c8
Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-10-18 01:35:30 +02:00
Adrien
27873f7ed4
Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-10-18 01:27:51 +02:00
cozyGalvinism
b3eda6bcbb
Merge pull request #5 from AshtakaOOf/AshtakaOOf-readme
Temporary README.md
2022-10-17 23:08:21 +02:00
Adrien
1c7799e292
Update README.md
Change some stuff temporarily

Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-10-17 22:53:02 +02:00
flow
aecd158d3c
Merge pull request #1208 from DioEgizio/fix-unused-libs
Removes `classparser` and `xz-embedded`
2022-10-16 10:41:43 -03:00
DioEgizio
87d35f0d16 fix: remove some unused libs
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-15 20:16:15 +02:00
Sefa Eyeoglu
c089f9b59f
Merge pull request #1203 from DioEgizio/macos-legacy 2022-10-15 15:24:30 +02:00
flow
82d7f9f5a4
chore(tests): add test for FS copy with dot folders/files
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-15 09:40:00 -03:00
flow
8bc529be3d
fix: include hidden files when copying instances
fixes instance ccopy on linux .-.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-15 09:20:31 -03:00
Sefa Eyeoglu
924c1634d3
Merge pull request #1194 from flowln/fix_opted_out_on_any_filter 2022-10-15 13:18:35 +02:00
Sefa Eyeoglu
03d077e915
fix(nix): add ghc_filesystem dependency
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-15 13:13:56 +02:00
Sefa Eyeoglu
303628bb05
refactor: support system ghc-filesystem
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-15 13:13:38 +02:00
Sefa Eyeoglu
3b92ec8e82
chore: clang-format RuntimeContext
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-15 12:43:15 +02:00
Sefa Eyeoglu
545944cb0d
refactor: support armhf
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-15 12:41:16 +02:00
flow
c90a88b6b6
fix: correct ftb legacy too
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-14 12:18:06 -03:00
DioEgizio
89e45a61b3 fix: workaround ghc::filesystem bug
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-14 16:45:13 +02:00
DioEgizio
2aff7bac4a fix: disable updater on macOS-Legacy
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-14 15:58:16 +02:00
flow
124097d3a5 feat!: use ghc/filesystem in place of std's one if needed
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-14 14:08:48 +02:00
flow
c520faed6d feat: add gulrak/filesystem submodule
... for old macs that don't have std::filesystem in their stdlib.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-14 14:08:42 +02:00
DioEgizio
5bdb3703ed fix: stop forcing libc++ on macOS
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-14 14:08:05 +02:00
DioEgizio
2901039a48 feat(actions): macOS-Legacy package
still no updater part though

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-14 14:08:05 +02:00
flow
dfa220ef02
fix: issues with aborts (again)
i hate it

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-13 15:10:35 -03:00
flow
f26be00571
fix: abort search if we're already trying to download a pack
Meaning we don't have to wait for the searches to finish in the
background to finally start the modpack download, when we have already
selected it -_-

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-13 13:49:06 -03:00
flow
83654a193e
refactor+fix: Make FTB install task similar to other install tasks
In particular, this changes the order so that the instance gets created
before downloading the mods (like other install tasks), and the mod download
directly puts the files in the staging folder (like the others), instead
of that weird makeCached and copy stuff.

This fixes some issues with modpack downloads from FTB, like creating an
instance with no mods in it.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-13 13:27:52 -03:00
flow
b2a5d8daf4
fix: don't include opted out versions with the 'Any' filter on the MD
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-12 10:26:14 -03:00
flow
19ee736e1d
Merge pull request #1190 from TayouVR/merged-launch-button1 2022-10-11 16:21:41 -03:00
flow
fda3f1352e
feat: add image support for the news reader :^)
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-11 16:11:08 -03:00
flow
d194b02e28
fix: prevent images overriding content when changing pages
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-11 15:51:54 -03:00
Tayou
aaba99dc10
Update launcher/ui/MainWindow.cpp
make " Offline" string for profilers translatable

Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Tayou <31988415+TayouVR@users.noreply.github.com>
2022-10-11 14:58:34 +02:00
Tayou
93a2e0f777
Merge Launch Buttons
Signed-off-by: Tayou <tayou@gmx.net>
2022-10-10 23:23:06 +02:00
Sefa Eyeoglu
71f3c6b461
feat: add clear metadata action
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-10 12:48:25 +02:00
Sefa Eyeoglu
aabcca5059
Merge pull request #1175 from Ozynt/patch-1 2022-10-09 20:20:05 +02:00
Ozynt
7e67fd8c79
Update LaunchController.cpp
Signed-off-by: Ozynt <104643560+Ozynt@users.noreply.github.com>
2022-10-09 13:20:50 +02:00
Ozynt
fecf1ffcb9
Update LaunchController.cpp
Signed-off-by: Ozynt <104643560+Ozynt@users.noreply.github.com>
2022-10-09 13:19:38 +02:00
Sefa Eyeoglu
fafc9cf9ca
Merge pull request #1033 from Scrumplex/multi-arch-support 2022-10-08 20:12:40 +02:00
Sefa Eyeoglu
3111e6a721
chore: add missing license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-08 20:12:07 +02:00
flow
e436f471a0
Merge pull request #1177 from DioEgizio/codeql
bye LGTM 👋
2022-10-08 15:04:23 -03:00
flow
28f84902f6
Merge pull request #1185 from DioEgizio/fix-tooltip
Fix outdated 'Disable mod metadata' button's warning message.
2022-10-08 14:34:59 -03:00
Trisave
ebee50eedc
Improve default light and dark themes (#1174) 2022-10-08 14:33:24 -03:00
flow
e0ef09dfe1
Merge pull request #1183 from Scrumplex/fix-capabilities-first-run 2022-10-08 14:29:14 -03:00
flow
d7992ab29d
feat: add image support for FTB packs
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-08 14:12:05 -03:00
flow
60f19f305e
feat: add image support for modrinth modpack pages
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-08 14:12:03 -03:00
flow
d99976f5d7
fix: make mod and modpack caches separate for Modrinth
This makes it similar to CF mods / modpacks. The mods cache is
maintained with the same name because it most likely has more data it
in, so this commit will affect existing caches as minimally as possible.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-08 14:11:20 -03:00
flow
db158a5735
feat: add image support for mod pages
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-08 14:11:20 -03:00
flow
ea3be17220
feat: add widget for a text browser with image support
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-08 14:11:20 -03:00
DioEgizio
f26049009e fix: mod updating isn't upcoming anymore :p
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-08 16:20:46 +02:00
Sefa Eyeoglu
787234a53a
Merge pull request #1163 from flowln/fix_list_icons 2022-10-08 12:12:38 +02:00
Sefa Eyeoglu
fc3a64056c
Merge pull request #1154 from Scrumplex/epic-formatting-codes 2022-10-08 12:12:26 +02:00
Sefa Eyeoglu
6ebc9abb80
fix: update capabilities before first-run wizard
On first run, the condition for the wizard would return, before running
updateCapabilities(). This moves that call up, as its only dependency is
the settings system.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-06 14:46:13 +02:00
DioEgizio
80e9eed35a fix: remove old unused lgtm.yml, exclude cpp/fixme-comment
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-04 16:17:57 +02:00
DioEgizio
23b3990f99 feat(code scanning): enable security-and-quality query
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-04 16:17:57 +02:00
DioEgizio
41276403df feat(actions): add codeql code scanning
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-04 16:17:57 +02:00
Sefa Eyeoglu
e3e9e39498
Merge pull request #1171 from vedantmgoyal2009/patch-1 2022-10-02 15:08:59 +02:00
txtsd
f315025a8d
Merge pull request #1167 from Scrumplex/epic-commandline 2022-10-02 00:41:34 +05:30
stoltsvensk
8e43d97133
Microsoft account only
Signed-off-by: stoltsvensk <104643560+stoltsvensk@users.noreply.github.com>
2022-10-01 16:47:23 +02:00
flow
c97a47dc62
Merge pull request #1172 from Scrumplex/fix-includes 2022-09-30 18:08:45 -03:00
Sefa Eyeoglu
7ccafdc993
fix: add missing includes to fix Qt 6.4 build
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-30 19:56:01 +02:00
Sefa Eyeoglu
0dca9cb6b8
Merge pull request #1162 from Trial97/feature/Replace-toml-library 2022-09-30 19:44:45 +02:00
Vedant
be3d780720
Update winget.yml
Signed-off-by: Vedant <83997633+vedantmgoyal2009@users.noreply.github.com>
2022-09-30 22:51:47 +05:30
Sefa Eyeoglu
0f59a1dde1
fix(nix): add tomlplusplus
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 15:42:45 +02:00
Sefa Eyeoglu
7c6bb80cee
fix: move toml++ find call
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:46:01 +02:00
Sefa Eyeoglu
62841c5b23
fix: pin tomlplusplus to latest release
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:44:28 +02:00
Sefa Eyeoglu
aad4f8d1f7
fix: update Git modules
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:44:28 +02:00
Sefa Eyeoglu
11c44c676c
fix: remove unused MACOS_HINT
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:28:46 +02:00
flow
370c3aa598
Merge pull request #894 from flowln/update_from_external_source
epic PR
2022-09-26 08:25:12 -03:00
Sefa Eyeoglu
1cdadafdf8
refactor: use QCommandLineParser instead
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:21:27 +02:00
timoreo
dd6f670dec
fix: Fixed memory leak
Signed-off-by: timoreo <contact@timoreo.fr>
2022-09-26 11:50:55 +02:00
timoreo
9ff364b0d3
huge nit: added const refs, everywhere
Signed-off-by: timoreo <contact@timoreo.fr>
2022-09-26 11:50:31 +02:00
Sefa Eyeoglu
58a5331f7b
Merge pull request #1164 from Scrumplex/fix-sort-languages 2022-09-25 19:50:55 +02:00
Alexandru Ionut Tripon
ed261f0af9
Update launcher/minecraft/mod/tasks/LocalModParseTask.cpp
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
2022-09-25 20:38:55 +03:00
flow
c01b475cbf
Merge pull request #1165 from ErogigGit/develop 2022-09-25 09:33:29 -03:00
ErogigGit
3d4feeec8d DCO Remediation Commit for ErogigGit <eric.hagerstrand@gmail.com>
I, ErogigGit <eric.hagerstrand@gmail.com>, hereby add my Signed-off-by to this commit: 8a4f1c66f8

Signed-off-by: ErogigGit <eric.hagerstrand@gmail.com>
2022-09-24 23:31:30 +02:00
Trial97
a1800ec23f
Prefer the system tomlplusplus
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2022-09-25 00:20:01 +03:00
ErogigGit
8a4f1c66f8 Allow double clicking to mark for dowload
Signed-off-by: Erogig <erogigabyte@gmail.com>
2022-09-24 22:37:51 +02:00
Sefa Eyeoglu
b187231b0e
fix: sort languages by their name instead of key
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-24 11:53:41 +02:00
Sefa Eyeoglu
60b38de69f
fix: fallback for languages without a native name
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-24 11:48:33 +02:00
Trial97
600c49f7f0
Replaced tomlc99 with tomlplusplus
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2022-09-24 00:10:27 +03:00
flow
e7380e70a3
fix: use placeholder icon when the project has no icon in MR
Projects with no icon return a null icon URL in Modrinth's API.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-23 18:05:58 -03:00
flow
3df8594f19
feat: change project item delegate for modrinth modpacks
more info! \ ^-^/

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-23 16:59:40 -03:00
flow
ee4a829293
fix: remove manual icon resize in ModModel
THis fixes a FIXME, now that we fixed the issue :o

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-23 16:59:40 -03:00
flow
1862f3c124
fix: set icon sizes correctly in ProjectItemDelegate
no more dumb hacks with icons!!

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-23 16:59:40 -03:00
Sefa Eyeoglu
777ab3416f
feat: also format resource/texture pack names
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-21 15:00:28 +02:00
Sefa Eyeoglu
ecf5ab75e7
feat: support more formatting codes
also fix some crashes

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-21 14:59:01 +02:00
flow
4f6d964217
fix: don't change groups when updating an instance
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:10 -03:00
flow
06019f01e3
feat: add dialog to ask whether to chaneg instance's name
This prevents custom names from being lost when updating, by only
changing the name if the old instance name constains the old version,
so that we can update it if the user whishes to.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:10 -03:00
flow
ddde885084
fix: show warning in case there's no old index when updating
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:10 -03:00
flow
be8c6f218c
refactor: setAbortStatus -> setAbortable
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:10 -03:00
flow
9eb35ea7c8
fix: don't load specific settings for managed pack info
This avoids loading all settings for all instances when searching for
one with a specific managed pack name.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:10 -03:00
flow
d2fdbec41d
fix: move file deletion to the end of the instance update
This makes it harder for problems in the updating process to affect the
current instance. Network issues, for instance, will no longer put the
instance in an invalid state.

Still, a possible improvement to this would be passing that logic to
InstanceStaging instead, to be handled with the instance commiting
directly. However, as it is now, the code would become very spaguetti-y,
and given that the override operation in the commiting could also put
the instance into an invalid state, it seems to me that, in order to
fully error-proof this, we would need to do a copy operation on the
whole instance, in order to modify the copy, and only in the end
override everything an once with a rename. That also has the possibility
of corrupting the instance if done without super care, however, so I
think we may need to instead create an automatic backup system, with an
undo command of sorts, or something like that. This doesn't seem very
trivial though, so it'll probably need to wait until another PR. In the
meantime, the user is advised to always backup their instances before
doing this kind of action, as always.

What a long commit message o.O

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
2dd372600c
fix: some abort-related issues
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
eda6cf11ef
feat(ui): improve info dialog before updating an instance
Adds a 'Cancel' option, and add a note about doing a backup before
updating.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
68facd6b93
fix(ui): hook up abort status signal in ProgressDialog
Now we have a visual indication on when tasks are abortable!

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
87002fb8f8
fix: hook up setAbortStatus in instance import tasks
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
6a50fa35ec
feat: add canAbort() status change in Task
By now, it's a recurring pattern of wanting to restrict aborting in
certain situations. This avoids further code duplication, and adds a
signal that external users can hook up to to respond to such change.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
6541570969
fix: simplify abort handling and add missing emits
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
4b0ceea894
fix: correctly set managed pack fields in CF pack
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
flow
8c0816c166
feat: add override awareness to CF modpack updating
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
be769d07f1
fix: correctly set all managed pack fields in Modrinth pack
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
3a9d58e31c
feat: add override handling in modrinth pack update
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
7024acac06
feat: add override helper functions
These help us keep track of relevant metadata information about
overrides, so that we know what they are when we update a pack.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
6131346e2f
refactor: change the way instance names are handled
While working on pack updating, instance naming always gets in the way,
since we need both way of respecting the user's name choice, and a
standarized way of getting the original pack name / version.

This tries to circunvent such problems by abstracting away the naming
schema into it's own struct, holding both the original name / version,
and the user-defined name, so that everyone can be happy and world peace
can be achieved! (at least that's what i'd hope :c).

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
eed73c9078
refactor: clean up InstanceImportTask a bit
Also removes a divide by two in the download progress
(why was it there???)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
795d6f35ee
feat: add curseforge modpack updating
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
ebd46705d5
refactor: move creation of CF file download task to a separate function
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
flow
72d2ca234e
refactor: move flame modpack import to separate file
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:07 -03:00
flow
2246c3359b
refactor: add throw_on_blocked arg to Flame file parse
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:07 -03:00
flow
242fb156a2
feat: add 'getFiles' by fileIds route in Flame API
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:07 -03:00
flow
208ed73e59
feat: add early modrinth pack updating
Still some FIXMEs and TODOs to consider, but the general thing is here!

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:06 -03:00
flow
4441b37338
refactor: move modrinth modpack import to separate file
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:32:36 -03:00
flow
941d75824a
refactor: add instance creation abstraction and move vanilla
This is so that 1. Code is more cleanly separated, and 2. Allows to more
easily add instance updating :)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:32:36 -03:00
flow
ec9ddc4f22
chore: add helper function for copying managed pack data between insts.
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:32:36 -03:00
Sefa Eyeoglu
98b6f90172
fix: add more legacy architectures
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 16:01:08 +02:00
Sefa Eyeoglu
7e280de361
refactor: drop 64-bit check
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 16:01:08 +02:00
Sefa Eyeoglu
7bd8bd13fe
feat: support multiarch system classifiers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 16:01:06 +02:00
Sefa Eyeoglu
09e85e948c
refactor: introduce RuntimeContext
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 15:59:43 +02:00
Sefa Eyeoglu
9ec1c00887
fix: register JavaRealArchitecture for MinecraftInstance
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 15:58:56 +02:00
Sefa Eyeoglu
c6bcb6228b
Merge pull request #1108 from Scrumplex/better_texture_packs 2022-09-20 13:28:33 +02:00
Sefa Eyeoglu
a24d589845
fix: ensure all resource folders exist
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 10:39:05 +02:00
Sefa Eyeoglu
ebbcc9f6da
fix: actually render color codes for texture packs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 10:26:15 +02:00
Sefa Eyeoglu
23fc453fae
fix: comments and naming of texture pack stuff
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 10:26:15 +02:00
Sefa Eyeoglu
aad6f74db6
fix: tests
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 10:26:15 +02:00
Sefa Eyeoglu
07dcefabcb
feat: add texture pack parsing
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 10:26:15 +02:00
txtsd
40c68595d7
Merge pull request #1150 from flowln/fix_crash_on_game_quit 2022-09-20 09:41:59 +05:30
txtsd
fe9a4fece4
Merge pull request #1142 from flowln/better_fs 2022-09-20 09:00:19 +05:30
Sefa Eyeoglu
098327f128
Merge pull request #903 from jopejoe1/demo-launch 2022-09-18 14:41:25 +02:00
flow
0873b8d304
fix: prevent container detaching in ResourceFolderModel
and use const accessors whenever we can!

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-16 20:12:31 -03:00
flow
c9eb584ac8
fix: prevent deletes by shared pointer accidental creation
This fixes the launcher crashing when opening the game :iea:

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-16 20:12:30 -03:00
flow
10493bd44a
fix: move newly allocated resources to the main thread
This avoids them getting deleted when the worker thread exits, due to
thread affinity on the created thread.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-16 20:12:30 -03:00
flow
9e35230467
fix: memory leak when getting mods from the mods folder
friendly reminder to always delete your news.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-16 20:12:30 -03:00
flow
81e326571b
fix: enable demo launch only on supported instances
e.g. >= 1.3.1 instances

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-15 19:27:42 -03:00
flow
1b2a7de4e2 fix: show 'demo' instead of 'offline' in log when in demo mode
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-15 18:44:18 -03:00
flow
11216d200c change: move demo action to "Play offline" menu
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-15 18:44:18 -03:00
jopejoe1
777be6a48d Add 'Ctrl+Alt+O' Shortcut to launch demo instance.
Signed-off-by: jopejoe1 <johannes@joens.email>
2022-09-15 18:44:18 -03:00
flow
5765a1fdf1 fix: allow demo for older versions
We were not propagating the '--demo' flag in the legacy launcher,
unconditionally setting the 'demo' parameter to false.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-15 18:44:18 -03:00
jopejoe1
29dcb9d274 Added Launch Demo button.
Signed-off-by: jopejoe1 <johannes@joens.email>
2022-09-15 18:44:18 -03:00
flow
8674ac4f68
Merge pull request #1146 from Scrumplex/fix-launch-rd 2022-09-15 17:55:08 -03:00
Sefa Eyeoglu
684b8f24f3
fix: allow starting rd- versions
Using `Collections.emptyList()` doesn't allow us to later append stuff
into that list. Use an empty `ArrayList` instead.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-15 09:29:48 +02:00
Sefa Eyeoglu
1ca2be0039
Merge pull request #982 from DavidoTek/windarkmode2 2022-09-14 13:17:17 +02:00
flow
8c41ff68f7
chore(actions)!: bump macOS required version to 10.15
This is needed for std::filesystem support in macOS's libc.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 18:41:13 -03:00
flow
931d6c280a
chore(tests): add test for copy operation with blacklist
I almost 💀 because no tests used this x.x

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:12:55 -03:00
flow
ee0fb2d0e0
fix: use std::wstring for Windows filenames
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:24 -03:00
flow
c496ad1237
chore: make DirNameFromString add normal duplicate identifier
Wrap the number in parenthesis to be similar to other software.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:24 -03:00
flow
277fa21f5f
refactor: remove Win32 'crap' in FileSystem
We should use std::filesystem symlink and hardlink functions instead.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:23 -03:00
flow
1cf949226e
refactor: use std::filesystem for overrides
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:23 -03:00
flow
be3fae6511
refactor: use std::filesystem for path deletion
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:23 -03:00
flow
5932f36285
refactor: use std::filesystem for file copy
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:23 -03:00
flow
30abb65368
Merge pull request #1133 from Scrumplex/refactor-tests
Move tests to a separate folder, to fix issues and improve maintenance
2022-09-12 12:57:55 -03:00
txtsd
64a06b5ed6
Merge pull request #1123 from flowln/fix_abort_inst 2022-09-12 17:11:19 +05:30
DioEgizio
69d18f17a5
fix(actions, win): only copy openssl libs on qt5 builds (#1130) 2022-09-12 07:57:18 -03:00
Sefa Eyeoglu
4c7d3a103c
refactor: restructure tests
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-11 22:29:01 +02:00
flow
10320bdeb4
Merge pull request #1129 from dada513/metainfo_fix
Fixes FlatHub's image metadata for the 1.4.2 release
2022-09-11 09:39:21 -03:00
dada513
4261dcff39
fix meta
Signed-off-by: dada513 <dada513@protonmail.com>
2022-09-11 10:45:42 +02:00
flow
a091245793
fix: emit signals when aborting NetJob
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-10 09:10:16 -03:00
timoreo
ca282f9fb3
Merge pull request #1117 from flowln/fix_updater
Fix the mod updater not working as intended
2022-09-08 09:28:05 +02:00
flow
7cf2c3be0f
fix: start at least one task in ConcurrentTask
This allows us to emit all the necessary stuff when we're finished in
the case of starting a task with no subtasks. In particular, this caused
the mod updater to not work properly :)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-07 12:11:42 -03:00
flow
f65d506f26
Merge pull request #997 from flowln/fix_major_version_filter 2022-09-07 10:34:50 -03:00
flow
333dbca01e
Merge pull request #1105 from flowln/better_resource_packs
Add basic resource pack parsing and fix issues
2022-09-07 08:30:36 -03:00
flow
42eb265624
refactor: create mod pages and filter widget by factory methods
This takes most expensive operations out of the constructors.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-07 08:29:58 -03:00
flow
8a65726e9d
fix: use more robust method of finding matches for major version
This uses the proper version list to find all MC versions matching the
major number (_don't say anything about SemVer_ 🔫).

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-07 08:27:53 -03:00
flow
1b0ca47682
Merge pull request #939 from flowln/mod_downloader_improve
Some more UI / UX improvements to the mod downloader!
2022-09-07 08:27:11 -03:00
flow
8e3f5c3305
Merge pull request #966 from flowln/refactor_tasks
Reduce code duplication in tasks, fix some bugs and add some tests
2022-09-07 08:26:28 -03:00
flow
3c0a6987cd
Merge pull request #1113 from timoreo22/develop
Fix compilation warning due to uninitiated variables.
2022-09-06 18:50:46 -03:00
txtsd
e37f70b9f7
Merge pull request #1114 from DioEgizio/bump-installqtaction-v3 2022-09-06 20:36:35 +05:30
DioEgizio
03c148ce50 chore: update install-qt-action to v3
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-09-06 15:41:32 +02:00
timoreo
4817f0312d
Fixed up a warning
Signed-off-by: timoreo <contact@timoreo.fr>
2022-09-06 14:32:19 +02:00
Sefa Eyeoglu
b70a82c609
Merge pull request #1111 from PolyMC/revert-1067-classpath-epicness 2022-09-05 20:06:33 +02:00
Sefa Eyeoglu
25d1e0c4e6
Merge pull request #1107 from DioEgizio/smaller-about 2022-09-05 17:52:16 +02:00
Sefa Eyeoglu
8e3356f11a
Merge pull request #1034 from Scrumplex/detect-performance-features 2022-09-05 17:45:17 +02:00
Sefa Eyeoglu
1b559c7776
Revert "Move classpath definition into NewLaunch itself"
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-05 17:37:10 +02:00
DioEgizio
d5583f0f02 make the about dialog smaller
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-09-04 14:32:33 +02:00
flow
bedd3c50b6
fix: improve handling of unrecognized pack formats
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 15:05:23 -03:00
flow
43a7af3f44
fix: removing mods with their metadata as well
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:23 -03:00
flow
9db27c6acc
fix: crash when adding resource packs directly in the folder
This fixes an issue in which, when adding a new resource pack externally
to PolyMC, when the resource pack view was open, would crash poly.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:22 -03:00
flow
42c81395b3
fix: race condition on ResourceFolderModel tests
This (hopefully) fixes the race contiditions that sometimes got
triggered in tests.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:22 -03:00
flow
3b13e692d2
feat: move resource pack images to QPixmapCache
This takes care of evicting entries when the cache gets too big for us,
so we can add new entries without much worries.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:22 -03:00
flow
0331f5a1eb
feat(tests): add tests for resource pack parsing
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:22 -03:00
flow
8a7e117f6b
refactor: move resource pack file parsing utilities to separate namespace
This makes it easier to use that logic in other contexts.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:22 -03:00
flow
9b984cedac
feat: add image from pack.png to resource packs
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:22 -03:00
flow
dd9e30b24a
feat: add resource icon to InfoFrame
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:21 -03:00
flow
6a93688b2e
fix: filtering in regex search in resource packs
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:21 -03:00
flow
3ab17a97a8
fix: sorting by pack format
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:21 -03:00
flow
f21ae66265
feat: add basic resource pack parsing of pack.mcmeta
This parses the pack format ID and the description from the local file,
from both a ZIP and a folder, and hooks it into the model.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:21 -03:00
flow
afa1a5e932
feat: modify InfoFrame and ResourcePackPage to show ResourcePack info
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:21 -03:00
flow
050768c266
feat: add more resource pack info
Adds pack format id and description to ResourcePack, that'll be parsed
from pack.mcmeta.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:21 -03:00
flow
cda2bfc240
feat: allow specifying factory for resources in BasicFolderLoadTask
This allows us to hook our own resource type, that possibly has more
content than the base Resource, to it.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:20 -03:00
Sefa Eyeoglu
2f167b1512
Merge pull request #1095 from flowln/ensure_file_path_in_override 2022-09-01 09:54:22 +02:00
flow
ba3ac85356
Merge pull request #1067 from Scrumplex/classpath-epicness
Move classpath definition into NewLaunch itself
2022-08-31 18:28:29 -03:00
flow
ec29cedeb7
Merge pull request #1080 from flowln/eternal_cache
Never invalidate libraries cache entries by time elapsed
2022-08-31 18:28:07 -03:00
flow
064ae49d2b
fix: make MultipleOptionsTask inherit directly from SequentialTask
It's not a good idea to have multiple concurrent tasks running on a
sequential thing like this one.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:02 -03:00
flow
247f99ce2f
feat(test): add more tests to Tasks
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
flow
7b6d269904
refactor: make NetJob inherit from ConcurrentTask as well!
Avoids lots of code duplication

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
flow
87a0482b8b
refactor: make MultipleOptionsTask inherit from ConcurrentTask too
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
flow
e899699918
refactor: make SequentialTask inherit from ConcurrentTask
In a way, sequential tasks are just concurrent tasks with only a single
task running concurrently, so we can remove LOTS of duplicated logic :)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
flow
bdf464e792
fix: abort logic running subsequent tasks anyways some times
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
flow
c410bb4ecb
fix: 'succeeded while not running' spam in ConcurrentTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
flow
a720bcc637
fix: bogus progress update when the total step progress was zero
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
flow
369a8cdc74
fix: only try to start tasks that are really there
This fixes an annoying issue where concurrent tasks would try to start
multiple tasks even when there was not that many tasks to run in the
first place, causing some amount of log spam.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:00 -03:00
flow
3f4e55be4f
fix: ensure destination file paths exist when overriding folders
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:28:23 -03:00
flow
9171f471ab
Merge pull request #1094 from flowln/fix_the_thing
Fix build due to merge without rebase messing things up :p
2022-08-28 16:27:41 -03:00
flow
2186b134a4
fix: Mod type enum -> Resource type enum
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 14:47:52 -03:00
Sefa Eyeoglu
f371ec210c
Merge pull request #1052 from flowln/resource_model 2022-08-28 16:52:53 +02:00
Sefa Eyeoglu
afcd669d2f
Merge pull request #965 from flowln/fat_files_in_memory
Refactor a bit EnsureMetadataTask and calculate hashes in a incremental manner
2022-08-28 11:03:12 +02:00
flow
fbf542d205
Merge pull request #1087 from DioEgizio/fix-ftblegacy-url
fix: fix urls on ftb legacy
2022-08-24 20:37:07 -03:00
DioEgizio
13184eb8e9 fix: fix urls on ftb legacy
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-08-24 12:31:38 +02:00
flow
ddf1e1ccee
fix: make FML libraries cache eternal
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-21 13:47:49 -03:00
flow
5ac4e73697
fix: make libraries cache eternal
This restores the behavior prior to PR #920.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-21 13:47:49 -03:00
flow
6be59b53f1
feat: add eternal cache entries
Those are entries that don't get stale over time, so we don't invalidate
them if they 'expire'.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-21 13:47:49 -03:00
flow
bb54fec907
Merge pull request #1073 from DioEgizio/update-copying
fix(COPYING): fix COPYING.md by adding some missing copyright notices
2022-08-21 13:09:30 -03:00
flow
0b81b283bf
fix: LGTM warnings
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:49:56 -03:00
flow
e2ab2aea32
change: add enable/disable to resources
TIL that zip resource packs, when disabled, actually have the effect of
not showing up in the game at all. Since this can be useful to someone,
I moved the logic for it to the resources.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:49:54 -03:00
flow
c3ceefbafb
refactor+fix: add new tests for Resource models and fix issues
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:49:23 -03:00
flow
e7cf9932a9
refactor: simplify Mod structure
No need to keep track of pointers left and right. A single one already
gives enough headaches!

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:48:51 -03:00
flow
0c9d03f5df
fix(tests): add timeout on ModFolderModel's tests
If the update never ends, the signal is not emitted and we become stuck
in the event loop forever. So a very lenient timer is added to prevent
that.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:48:01 -03:00
flow
92aa24ae34
fix: don't give shared pointer to obj. external to the model
It causes some weird problems and adds refcounting overhead.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:48:00 -03:00
flow
97a74d5c1f
refactor: adapt rest of the codebase to the new resource model
In order to access the ModFolderModel from the ModFolderPage, i created
a new m_model for the correct type, shadowing the m_model of type
ResourceFolderModel. This creates two shared_ptr references to the same object,
but since they will have the same lifetime, it doesn't generate a memory
leak.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:47:58 -03:00
flow
256f8094f5
refactor: make Resource Pack model inherit from ResourceFolderModel
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:47:11 -03:00
flow
1e2f0ab308
refactor: move more tied logic to model and move logic to the resources
This moves the QSortFilterProxyModel to the resource model files,
acessible via a factory method, and moves the sorting and filtering to
the objects themselves, decoupling the code a bit.

This also adds a basic implementation of methods in the
ResourceFolderModel, simplifying the process of constructing a new model
from it.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:47:08 -03:00
flow
af2cf2734d
refactor: move things around in the mod model
Makes the method order in the cpp file the same as in the header file.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:46:33 -03:00
flow
ec62d8e973
refactor: move general code from mod model to its own model
This aims to continue decoupling other types of resources (e.g. resource
packs, shader packs, etc) from mods, so that we don't have to
continuously watch our backs for changes to one of them affecting the
others.

To do so, this creates a more general list model for resources, based on
the mods one, that allows you to extend it with functionality for other
resources.

I had to do some template and preprocessor stuff to get around the
QObject limitation of not allowing templated classes, so that's sadge :c

On the other hand, I tried cleaning up most general-purpose code in the
mod model, and added some documentation, because it looks nice :D

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:45:01 -03:00
flow
3225f514f6
refactor: move general info from Mod to Resource
This allows us to create other resources that are not Mods, but can
still share a significant portion of code.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:41:59 -03:00
flow
2d63c86022
feat: make Task a QRunnable
This makes it possible to run a task in another thread.

I added a variable to toggle debug prints because they seem to trigger
an assertion on Qt internals when the task in on another thread. Of
course, this isn't awesome, but can wait until we improve our logging.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:41:59 -03:00
flow
2dcff83be7
Merge pull request #1035 from Scrumplex/fix-coremods
Make Coremods / Mods seperation more clear
2022-08-20 10:15:50 -03:00
Sefa Eyeoglu
afb9ebcd99
fix: distinguish Coremods
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-20 12:53:13 +02:00
Sefa Eyeoglu
92d7e44525
Merge pull request #878 from flowln/lazy_settings 2022-08-20 12:50:56 +02:00
Sefa Eyeoglu
a517f442ea
Merge pull request #1023 from flowln/better_shared_ptr 2022-08-20 12:50:50 +02:00
Sefa Eyeoglu
311758233b
Merge pull request #1044 from flowln/better_orphan_fix 2022-08-20 12:50:43 +02:00
Sefa Eyeoglu
6e086eb808
Merge pull request #992 from Scrumplex/refactor-version 2022-08-20 12:50:25 +02:00
Sefa Eyeoglu
7e8644430c
Merge pull request #1007 from Gingeh/disable-update-button 2022-08-20 12:50:19 +02:00
Sefa Eyeoglu
70a8f6743a
Merge pull request #919 from kumquat-ir/download-all-blocked 2022-08-20 12:50:01 +02:00
dada513
69eafd0e11
Merge pull request #1058 from DioEgizio/fix-update-org.polymc.PolyMC.metainfo.xml.in 2022-08-19 20:34:11 +02:00
DioEgizio
6b6a095b91 fix(COPYING): fix COPYING.md by adding some missing copyright notices
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-08-19 18:42:26 +02:00
Sefa Eyeoglu
d5a2185030
Merge pull request #1068 from TayouVR/improvedWindowsJavaCheck 2022-08-19 14:26:36 +02:00
Tayou
26f31e9288
use qEnvironmentVariable instead of qgetenv in JavaUtils
Signed-off-by: Tayou <tayou@gmx.net>
2022-08-18 23:59:35 +02:00
Sefa Eyeoglu
e654e66839
Merge pull request #1049 from flowln/waiting_for_news_-_- 2022-08-18 22:53:41 +02:00
Tayou
bb4861cf0d check for java installs in PATH on windows
this should find java installs from scoop as well as any other installer, that registers java in the PATH environment variable.

Signed-off-by: Tayou <tayou@gmx.net>
2022-08-18 18:24:32 +02:00
Sefa Eyeoglu
01505910f4
refactor: move classpath definition into NewLaunch itself
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-18 18:14:01 +02:00
Sefa Eyeoglu
ab766a0598
Merge pull request #968 from magneticflux-/utf8-logging
Decode process lines as UTF-8
2022-08-18 10:44:01 +02:00
DioEgizio
51c664a678
fix: update org.polymc.PolyMC.metainfo.xml.in to not make flatpak break next release
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-08-15 20:34:56 +02:00
Mitchell Skaggs
3c4b45c9e7
Use C locale codec for decoding
This should correctly decode multi-byte non-UTF-8 text, such as Windows-936 (Simplified Chinese)

Signed-off-by: Mitchell Skaggs <skaggsm333@gmail.com>
2022-08-13 10:39:05 -05:00
flow
93507a263b
fix: hide 'More news...' button if the news aren't loaded yet
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-12 17:41:11 -03:00
Sefa Eyeoglu
1175461030
refactor: switch to new versioning scheme
The new versioning system is based on the versioning system used by the
GNOME Foundation for the GNOME desktop.

We are dropping the "major version" as defined by SemVer and move to a
version number with a most and least significant number.

The most significant number must be incremented, if there are new
features or significant changes since last major release.

Otherwise, the least significant number must be incremented, if there
are only minor changes since the last release. New features or
significant changes mustn't be introduced by a bump of the least
significant number.

If a minor change would introduce small user-facing changes (like a
message-box or slight UI changes), it could still be classified as a
minor change.
At the end of the day, a human shall decide, if a change is minor or
significant, as there is no clear line that would separate a "minor" and
a "significant" change in a GUI-application.

Definitions:

feature: New user-facing functionality
significant change: Something that changes user-facing behavior
minor change: Something that fixes unexpected behavior

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-12 14:22:24 +02:00
flow
2f5e55bea0
fix: only remove orphaned metadata on first opening
This avoids deleting the metadata while one is updating their mods.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-11 13:11:56 -03:00
timoreo
c375e7b4df
Merge pull request #897 from jamierocks/atl-updating-initial 2022-08-11 08:50:05 +02:00
timoreo
5d188c69ed
Merge pull request #1039 from budak7273/fix-world-safety-nag-title-text 2022-08-11 07:33:13 +02:00
timoreo
6bff7751d0
Merge pull request #909 from txtsd/markdownlint 2022-08-11 07:33:04 +02:00
timoreo
1a5986abe0
Merge pull request #920 from flowln/metacache_fix 2022-08-11 07:32:43 +02:00
Robb
cebac3c10e
Make new title strings translatable
Signed-off-by: Robb <computerguy440+gh@gmail.com>
2022-08-10 12:07:24 -05:00
timoreo
a5da3db966
Merge pull request #1018 from Scrumplex/fix-infinite-auth-loop 2022-08-10 18:14:26 +02:00
Robb
cd30f75173
fix: Make world safety nag title text match the action being performed instead of always saying 'Copy World'
Signed-off-by: Robb <computerguy440+gh@gmail.com>
2022-08-09 16:01:21 -05:00
Mitchell Skaggs
94df4ceb36
Fix use of Qt 5.14 enum
Signed-off-by: Mitchell Skaggs <skaggsm333@gmail.com>
2022-08-09 00:17:53 -05:00
Mitchell Skaggs
a14476c5fb
Replace local 8-bit decoding with UTF-8 decoding
Handles incomplete byte sequences using `QTextDecoder`

Signed-off-by: Mitchell Skaggs <skaggsm333@gmail.com>
2022-08-08 23:54:01 -05:00
Sefa Eyeoglu
d82bb29919
fix: don't apply GameMode/MangoHud, if they aren't supported
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-08 21:19:46 +02:00
Sefa Eyeoglu
33af0c6a7c
refactor: don't include mangohud's library path
This could cause issues on some environments. Users should just put
MangoHud libs into global LD_LIBRARY_PATH, just like with any other
library

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-08 21:16:37 +02:00
Sefa Eyeoglu
68f3f98bc3
feat: detect GameMode and MangoHud's presence
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-08 21:16:37 +02:00
Sefa Eyeoglu
f873cd5b1a
refactor: store current capabilities
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-08 21:16:37 +02:00
txtsd
fa8df286d9
chore(ci): Add markdownlint config to ignored paths
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:57 +05:30
txtsd
76aa0c434a
feat(markdown): Add markdownlint config
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:57 +05:30
txtsd
78dc0cfdf3
chore(markdown): MD001 Heading levels should only increment by one level at a time
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:57 +05:30
txtsd
9654728bfb
chore(markdown): Align inline HTML correctly
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:57 +05:30
txtsd
123d1864f4
chore(markdown): MD037 Spaces inside emphasis markers
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:57 +05:30
txtsd
96a91e988d
chore(markdown): MD010 Hard tabs
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:56 +05:30
txtsd
19ecb1701e
chore(markdown): MD031 Fenced code blocks should be surrounded by blank lines
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:56 +05:30
txtsd
8085b2728d
chore(markdown): MD032 Lists should be surrounded by blank lines
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:56 +05:30
txtsd
56cad31a36
chore(markdown): MD034 Bare URL used
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:46 +05:30
txtsd
3275bc4e93
chore(markdown): MD009 Trailing spaces
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:57:30 +05:30
txtsd
8963378039
chore(markdown): MD007 Unordered list indentation
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:57:30 +05:30
txtsd
c7d435bb7a
chore(markdown): MD025 Multiple top-level headings in the same document
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:57:11 +05:30
txtsd
06cc7e4ea0
chore(markdown): MD046 Code block style
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:55:11 +05:30
txtsd
fba20e2cfb
chore(markdown): MD040 Fenced code blocks should have a language specified
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:55:11 +05:30
txtsd
358f080c76
chore(markdown): MD012 Multiple consecutive blank lines
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:55:11 +05:30
txtsd
8cea57ff0f
chore(markdown): MD022 Headings should be surrounded by blank lines
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:53:50 +05:30
flow
7b27f200b1
fix: don't mutate QHash while iterating over it
Even though it was using a QMutableHashIterator, sometimes it didn't
work quite well, so this is a bit better.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-05 16:30:12 -03:00
flow
f4b207220c
fix: add some more nullptr checks / protection
die sigsegv 🔫

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-05 15:10:44 -03:00
flow
d835e1d14e
refactor: simplify smart pointers more
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-05 11:38:46 -03:00
flow
75f92de8f8
Merge pull request #1017 from flowln/kill_orphan_metadata
Remove orphaned metadata to avoid problems with auto-updating instances
2022-08-04 12:57:20 -07:00
flow
293c1deee5
Merge pull request #1014 from DioEgizio/downgrade-qt-macos
chore: downgrade to Qt 6.3.0 on macos
2022-08-04 12:56:55 -07:00
flow
4dee05a967
Merge pull request #1006 from DioEgizio/appimage-ubuntu-moment
fix: work around ubuntu 22.04 openssl appimage issues by copying openssl libs
2022-08-04 12:56:38 -07:00
Sefa Eyeoglu
8d6414d74a
Merge pull request #1019 from Scrumplex/fix-openbsd-root
Add root path detection on OpenBSD
2022-08-04 21:47:35 +02:00
flow
362ecdb583
refactor+fix: use QSharedPointer for shared_qobject_ptr
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-04 15:33:51 -03:00
LennyMcLennington
058b9f9272
Merge pull request #994 from Scrumplex/fix-winget-releaser
Fix WinGet releaser
2022-08-04 16:20:23 +01:00
Sefa Eyeoglu
355762aa30
fix: emit abort in LaunchController
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-04 10:07:36 +02:00
Sefa Eyeoglu
be4fb65470
fix: Add root path detection on OpenBSD
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-03 21:14:32 +02:00
Sefa Eyeoglu
4ed296bad4
fix: allow user to interrupt launch after 3 tries
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-03 20:38:40 +02:00
Gingeh
a8aa862919 Move large condition into a new lambda
Signed-off-by: Gingeh <39150378+Gingeh@users.noreply.github.com>
2022-08-03 16:39:30 +10:00
flow
31ba1de53b
fix: remove orphaned metadata to avoid problems with auto-updating insts
Just as my master has taught me. 🔫

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-02 16:15:39 -03:00
DioEgizio
bca1fef2b2 chore: downgrade to Qt 6.3.0 on macos
seems to fix some emoji-related issues

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-08-02 10:59:54 +02:00
Gingeh
f33b31e048 Check for running instance when re-opening the mod folder page and when selecting mods
Signed-off-by: Gingeh <39150378+Gingeh@users.noreply.github.com>
2022-08-02 14:14:45 +10:00
Gingeh
0d10ebb7ca Update launcher/ui/pages/instance/ModFolderPage.h
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Gingeh <39150378+Gingeh@users.noreply.github.com>
2022-08-02 12:50:25 +10:00
flow
4a8abc948e
fix: prevent segfault due to callbacks into deleted objects
Since network requests are, for the most part, asynchronous, there's a
chance a request only comes through after the request sender has already
been deleted.

This adds a global (read static) hash table relating models for the mod
downloader to their status (true = alive, false = destroyed). It is a
bit of a hack, but I couldn't come up with a better way of doing this.

To reproduce the issue before this commit: scroll really quickly through
CF mods, to trigger network requests for their versions and description.
Then, in the middle of it close the mod downloader. Sometimes this will
create a crash.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 18:34:15 -03:00
Sefa Eyeoglu
6fd3672618
Merge pull request #1012 from DioEgizio/patch-10
fix: remove iconfix from libraries/README.MD
2022-08-01 20:31:11 +02:00
DioEgizio
abd090bd48
fix: remove iconfix from libraries/README.MD
someone forgor (💀) to remove it

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-08-01 20:21:19 +02:00
Sefa Eyeoglu
bd9140f1f3
Merge pull request #1008 from DioEgizio/qt-version-issue-template
chore: update issue template to ask about Qt version
2022-08-01 18:40:11 +02:00
DioEgizio
9d78b2d259 Update .github/ISSUE_TEMPLATE/bug_report.yml
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-08-01 14:51:19 +02:00
DioEgizio
9c9528838a chore: update issue template to ask about Qt version
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-08-01 14:40:55 +02:00
Gingeh
77b640b76b Disable "Check for Updates" and "Download Mods" while the game is running
Signed-off-by: Gingeh <39150378+Gingeh@users.noreply.github.com>
2022-08-01 20:56:05 +10:00
Gingeh
a8dfe98b1a Disable "Check for Updates" if all mods are removed
Signed-off-by: Gingeh <39150378+Gingeh@users.noreply.github.com>
2022-08-01 20:56:05 +10:00
flow
cee41b87f7
fix(ui): force redraw of mod list when (de)selecting a mod
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:31 -03:00
flow
7a95314e42
feat(ui): remember mod download dialog's geometry
Makes it consistent with other modal dialogs.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:31 -03:00
flow
6aaf1f4f21
feat: lazy-load CF mod descriptions
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
368a0ddd44
feat: add mod descriptions to CF mods
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
0808a10b7b
feat: cache mod versions
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
6f052baa94
refactor: use function cb instead of class cb in getVersions
I've discovered even more functional programming! :^)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
5bc67d3f6b
feat: cache extra mod info (like links and body)
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
74c6c5cfbc
refactor: use function cb instead of class cb in getModInfo
I've discovered functional programming :^)
This makes this route more fit for general use.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
158b7fd166
feat+refactor: clean up ProgressWidget and add progress indicatior to
mod downloader

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
c3f647dc96
feat: add (semi) instant searching in mod downloader
It has a delay of 350ms from the last typed character to search, in
order to cache small changes while typing.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
flow
5936c7b65c
change: preserve search term across different mod providers
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:29 -03:00
flow
a8bcd85c93
feat+refactor: add shortcuts to mod downloader and clean up
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:29 -03:00
flow
127b558f95
change: change button names to be more user-friendly
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:29 -03:00
flow
6e9a27f40f
feat: display the 'body' of a MR mod on the mod downloader
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:29 -03:00
flow
4a13dbe3bb
feat: create delegate for project item views
This allows us to define custom painting for list view items. In
particular, this is applied to the mod downloader, in order to allow
displaying both the mod name and mod description, and settings their
effects (like bold or underline) independent of each other.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:29 -03:00
flow
0f61f5ba03
fix(ui): missing tr() in mod download dialog's title
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:29 -03:00
DioEgizio
5f1efbeb67 fix: work around ubuntu 22.04 openssl appimage issues by copying openssl libs
terrible hack but it works™️

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-08-01 09:57:14 +02:00
kumquat-ir
9c105914f0 use BlockedModsDialog for ftb packs as well
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2022-07-31 15:05:47 -04:00
kumquat-ir
579582740e Merge remote-tracking branch 'origin/develop' into download-all-blocked
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2022-07-31 14:54:50 -04:00
Ryan Cao
b15544c163
Trash instances instead of deleting (when possible) (#549)
Squashed because of :pofat: commit history
2022-07-30 14:42:33 -03:00
LennyMcLennington
94a63e3859
Merge pull request #941 from Scrumplex/bump-cxx-standard
Bump to C++17
2022-07-30 17:10:59 +01:00
LennyMcLennington
842b7e6c39
use c11 instead
c17 dont work properly with lgtm's build system and c11 is already almost identical to c17 at least in gcc
2022-07-30 15:35:48 +01:00
Sefa Eyeoglu
22f5011451
fix(winget): strictly match non-Legacy setup
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-29 16:25:12 +02:00
timoreo
74120fe1f3
Merge pull request #699 from Scrumplex/resolve-ftb-mods-cf 2022-07-28 09:43:39 +02:00
DavidoTek
b4e8abd0ad feat: win32 enable dark titlebar for dark theme
Signed-off-by: DavidoTek <54072917+DavidoTek@users.noreply.github.com>
2022-07-26 23:25:17 +02:00
flow
336f1f4f50
Merge pull request #974 from flowln/accounts_qt6
Fix adding multiple accounts in Qt6
2022-07-26 16:08:05 -03:00
txtsd
1c256d8876
Merge pull request #958 from jopejoe1/readme 2022-07-27 00:16:35 +05:30
flow
1ce0f0e7a5
fix: progress dialog going away even if the task was not aborted
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 20:33:33 +02:00
flow
fbf1901d86
refactor: shuffle some things around to improve readability
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 20:33:33 +02:00
flow
0382f33c46
fix(ui): pump events to show "Copying modpack files..." text
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 20:33:33 +02:00
flow
13372f3f99
chore: clean up FTBPackInstallTask a bit and connect missing signals
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 20:33:33 +02:00
flow
e741cb7f0a
fix: add abort handlign in Flame's FileResolvingTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 20:33:33 +02:00
Sefa Eyeoglu
fb289c6b17
chore: add license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-26 20:33:29 +02:00
Sefa Eyeoglu
75a7ea55d4
feat: implement mod resolving for FTB
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-26 20:33:10 +02:00
Sefa Eyeoglu
86573a5ccd
Merge pull request #961 from flowln/fix_resource_filter 2022-07-26 20:14:18 +02:00
flow
6fe55a79f1
fix: use const qualifier for operator==() and allow other comparisons
This fixes an implicit behavior changed by C++17.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 15:11:56 -03:00
flow
1a6cb9ee99
chore: add some debugging prints in AccountList
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 15:11:56 -03:00
txtsd
a495d9eca5
chore: Normalize sentence in readme
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-07-26 22:00:40 +05:30
LennyMcLennington
65a945f968
Merge pull request #956 from flowln/jar_mods_aa
Fix segmentation fault when using jar mods
2022-07-25 06:57:40 +01:00
flow
a9e8ed5087
fix: pump events and do a queued start for concurrent tasks
Heavy workloads can consume a ton of time doing their stuff, and starve
the event loop out of events. This adds an event processing call after
every concurrent task has been completed, to decrease the event loop
stravation on such loads.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:54 -03:00
flow
00520b6a0e
feat: add hashing tasks to the sequential task in ModUpdateDialog
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:54 -03:00
flow
e6f2a3893a
refactor+feat: improve code separation in ensure metadata
... and avoid calculating the same hash multiple times

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:54 -03:00
flow
24c034ff6a
change(libs): use a 4MiB buffer by default in murmur2 hashing
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:54 -03:00
flow
631a93bcd8
refactor: add a HashUtils place for hashing stuff
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:54 -03:00
flow
b1763353ea
feat: do incremental calculation of CF's hash
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:53 -03:00
flow
f95bcf45ad
feat(libs): add incremental version of murmurhash2 calculation
This does two passes for a given file, which is kinda slow, but I don't
know how else to get the size excluding the filtered ones :<

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:53 -03:00
flow
15ec1abb6a
feat: use QIODevice for calcuating the JAR hash on Modrinth
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:53 -03:00
flow
cfda8dbb2b
refactor: use QIODevice instead of a whole QByteArray for hash calc.
This allows Qt to do its thing and optimize the data gathering from the
JAR.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:53 -03:00
flow
3aa2003951
fix: filter in external resource pages not working
For some reason, using setFilterFixedString() doesn't seem to update the
QRegularExpression object with a new value, instead leaving it empty. It
updates QRegExp just fine, so maybe that's an Qt bug? o.O

Anyway, using regex in the filter is kinda cool actually :D

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-23 23:50:56 -03:00
flow
0e473f4570
Merge pull request #951 from flowln/performace_tab_fix
Hide the entire performance tab on the instance settings in non-Linux OSes
2022-07-23 18:31:04 -03:00
jopejoe1
bfa824ee71 Fix broken url in readme
Signed-off-by: jopejoe1 <johannes@joens.email>
2022-07-23 23:22:39 +02:00
flow
1157436a24
fix: sigsegv when trying to use jar mods
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-23 14:24:24 -03:00
LennyMcLennington
4596e78df0
Merge pull request #952 from Scrumplex/fix-pre-post-launch
Fix variable substitution in pre launch/post exit hooks
2022-07-23 18:06:12 +01:00
flow
813dfbd2d3
fix: hide the entire performance tab on instance settings in non-Linux
"just woke up after a major release has just been made" coding style

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-23 13:29:39 -03:00
Sefa Eyeoglu
ba7dfb360c
fix: actually substitute variables in pre/post launch
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-23 17:51:58 +02:00
timoreo
6aad750fe0
Merge pull request #893 from Scrumplex/refactor-env-handling 2022-07-23 14:08:10 +02:00
Sefa Eyeoglu
5e443ae347
fix(nix): change license to gpl3Only
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-23 14:00:11 +02:00
Sefa Eyeoglu
c65f5f7728
Merge pull request #877 from Scrumplex/refactor-offline-accounts 2022-07-23 13:54:36 +02:00
timoreo
74b62727af
Merge pull request #947 from flowln/unicode_uhh 2022-07-23 13:38:48 +02:00
Sefa Eyeoglu
2e94562f79
fix: treat accounts as offline, if auth servers are down
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-23 12:38:01 +02:00
txtsd
061ea5648e
Merge pull request #922 from DioEgizio/qt6-tarballs
feat(actions): package and deliver qt6 tarballs
2022-07-23 14:18:00 +05:30
flow
439e7bbf4e
change: unicode chars for folders and disabled mods in mod list
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-22 17:45:27 -03:00
Sefa Eyeoglu
0f1d51f866
Update .github/workflows/build.yml
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-22 22:11:53 +02:00
txtsd
75cfaf0672
Merge pull request #938 from Scrumplex/fix-i18n3 2022-07-22 22:45:53 +05:30
txtsd
ceaa732e5f
Merge pull request #932 from Scrumplex/fix-nix 2022-07-22 22:43:57 +05:30
txtsd
deb2a2bd14
Merge pull request #930 from TheOPtimal/develop 2022-07-22 22:43:00 +05:30
flow
33853b6107
fix: use single-space unicode char for checkmark in mod list
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-22 11:48:08 -03:00
flow
ab6e1b112b
change(cache): use cache-specific http headers for their lifetime
This uses the 'Age', 'Cache-Control' and 'Expires' HTTP headers to more
accurately set up the cache lifetime, falling back to a static 1-week
time if they're not present in the response.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-21 19:19:24 -03:00
Jacob Gogichaishvili
220e823c8d DCO Remediation Commit for Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
I, Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>, hereby add my Signed-off-by to this commit: 3746a2566d

Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-07-20 23:27:07 +04:00
Sefa Eyeoglu
c666c3e251
refactor!: bump to C++17 and C17
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-20 14:22:10 +02:00
Sefa Eyeoglu
9cc1773fa7
fix: move HTML code outside of translation
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-20 10:15:21 +02:00
Sefa Eyeoglu
e78c7af715
Merge pull request #936 from Scrumplex/fix-windows-crap-2 2022-07-20 10:07:10 +02:00
Sefa Eyeoglu
b96e76134a
fix(nix): switch to LD_LIBRARY_PATH
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 18:09:48 +02:00
Sefa Eyeoglu
fd2b206997
fix: support LD_* for OpenBSD
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 18:07:58 +02:00
Sefa Eyeoglu
2d53c7c5b2
refactor: filter values in environment variables
Before this change, you had to specify custom LD_* variables using the
prefix GAME_LD_*. Now instead of dropping all LD_* variables by default,
we should just filter them and remove the values we *know* are from our
start script.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 18:07:58 +02:00
Sefa Eyeoglu
28ae5d710e
fix: fix translations for mod updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 18:03:45 +02:00
DioEgizio
7a13412ec7 feat(actions): package and deliver qt6 tarballs
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-07-19 17:07:34 +02:00
flow
c86610b917
Merge pull request #934 from virchau13/fix-non-nixos-libraries
fix(nix): only load stdenv.cc.cc.lib on NixOS
2022-07-19 11:28:08 -03:00
Sefa Eyeoglu
502750492c
Merge pull request #929 from flowln/dark_theme_dark_font 2022-07-19 11:17:40 +02:00
Sefa Eyeoglu
8fc1653b0c
fix: fix Java Checker on Windows, again
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 11:12:11 +02:00
Vir Chaudhury
6841ebc31d
fix(nix): only load stdenv.cc.cc.lib on NixOS
On non-NixOS, launching any external process from Minecraft (e.g.
clicking on links) will fail due to a conflict between the system
libraries and the Nix stdenv.cc.cc.lib. This works around that issue by
only loading stdenv.cc.cc.lib on NixOS.

Signed-off-by: Vir Chaudhury <virchau13@hexular.net>
2022-07-19 09:03:54 +08:00
Sefa Eyeoglu
8757281467
fix(nix): switch to PolyMC libnbtplusplus
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-18 20:34:36 +02:00
kumquat-ir
20b1723e78 merge origin/develop
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2022-07-18 14:05:23 -04:00
kumquat-ir
be78afeee5 qtcreator moment
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2022-07-18 14:03:06 -04:00
Jacob Gogichaishvili
3746a2566d Add more Nix meta information 2022-07-18 21:47:26 +04:00
flow
0cb47cf7d7
fix: dark placeholder text in dark background on dark theme
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-18 14:25:00 -03:00
flow
dec81c4f27
Merge pull request #588 from flowln/mod_update
Implement mod updater (😎)
2022-07-18 12:40:25 -03:00
flow
54b335711a
fix: raw-pointers and leaks in ModFolderLoadTask
Co-authored-by: timoreo <contact@timoreo.fr>
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:56:23 -03:00
flow
6bb8332b4b
fix: bogus returns in EnsureMetadataTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:43:12 -03:00
flow
de9e304236
fix: std::list -> QList
Qt6 removed Qlist::toStdList() 😭

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:45 -03:00
flow
650af5eb64
change: use ModStatus as a simple member instead of a pointer
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
47bdcb6050
feat: make second metadata pass concurrent
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
58dc3e93d3
fix: clean up execWithTask in Progress Dialog
This prevents weird problems, such as dialogs being non-modal when they
should be!

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
79b0a16f7a
fix: try finding a good height for short changelogs
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
2b65ee433f
fix: changelogs with too much space between lines
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
001bbef9ee
fix: don't use shared_ptr for a background task T_T
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
c4316e81e6
change: make Mod a QObject used as a pointer
Prevents problems when copying it around!

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
fac63541a4
fix: work around HoeDown bug(?) in changelog line breaks
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
dfd6cb29be
feat: improve changelog and sort updatable mods
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
flow
5f75e531e6
fix: handling around disabled mods
Don't update disabled mods to prevent mod duplication. Also, chop
filename in the metadata with a '.disabled'.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
a7648d60ce
fix: don't require non-essential items in mod index
Also adds slug field.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
52c45c2d32
feat: add some mod api calls
- Get Project: Already existed but required a specific caller type. This
  is more general.
- Get Projects: A single call to multiple of the above

Both providers support these calls.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
fd6755c93f
change: mod metadata improvements
- Use slug instead of name
- Keep temporary status before having local details

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
a53ee2e35c
fix: mod parsing of 'String-fied' version (i.e. OpenBlocks)
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
4e6978ff6f
feat: improve metadata gen. networking and performance
This makes the metadata generation code a lot messier and harder to use,
but there's not really much else that can be done about it while
preserving all it's capabilities :(

At least we now have speed

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
91a5c4bdcb
feat: add metadata get/delete via mod id
This is, in many cases, more reliable than name comparisons, so it's
useful specially in cases where a mod changes name between versions

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
9a07ede615
fix: filter out opted-out mods in mod downloader
Maintains Pre-Updater behaviour

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:43 -03:00
flow
dfab55112b
feat: remove existing mod when updating/redownloading it
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
1709b47bb7
fix: don't double add mods in mod downloader/updater
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
2d10c246a8
feat: add update mods to the ui / mod model
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
6e2869834f
feat: add mod update dialog
This subclasses the Review mods dialog to make a "Update review" one.
Also, all the necessary components built until now are put together in a
coherent unity that checks and generates metadata on-the-fly and checks for
mod updates, while giving and receiving feedback to the user.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
b8b71c7dd2
feat: add mod update check tasks
Those tasks take a list of mods and check on the mod providers for
updates. They assume that the mods have metadata already.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
c3f6c3dd82
feat: add changelog to mod providers
The Modrinth changelog is fairly straight-forward, as it's given to us
directly with the API call we already did. Flame, on the other hand,
requires us to do another call to get the changelog, so it can introduce
quite a heavy performance impact. This way, we make it optional to get
such changelog.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
844b245776
feat: add EnsureMetadataTask
This task is responsible for checking if the mod has metadata for a
specific provider, and create it if it doesn't.

In the context of the mod updater, this is not the best architecture,
since we do a single task for each mod. However, this way of structuring
it allows us to use it later on in more diverse scenarios.

This way we decouple this task from the mod updater, trading off some performance
(though that will be mitigated when we have a way of running arbitrary tasks
concurrently).

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
4bcf8e6975
feat: add api call to flame
Call added:
- Get Fingerprints Matches
- Get Mod File Changelog

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
flow
0e52112016
feat: add some api calls to modrinth
Calls added:
- Get version from hash
- Get versions from hashes
- Latest version of a project from a hash, loader(s), and game version(s)
- Latest versions of multiple project from hashes, loader(s), and game version(s)

Some of those are not used yet, but may be of use later on, so we have
it if we need it :)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
flow
32a9545360
libs: add murmur2 library
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
flow
9a44c92211
feat: add MultipleOptionsTask
This is a variation of a Sequential Task, in which a subtask failing
will prompt the next one to execute, and a subtask being successful will
stop the task.

This way, this can be used for easily managing fallbacks with tasks. :D

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
flow
dd6aabf9ab
feat: add ChooseProviderDialog
Allows you to prompt the user for choosing a (mod) provider. This should
be fairly independent of the mod updater logic, so it can be used for
other ends later down the road :^)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
flow
91776311c7
fix: allow aborting upload tasks
This maintains the same behaviour as the Download task.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
flow
882c82f82c
fix: always update global progress of sequential tasks
Previously, it would not update the global counter if the subTask didn't
update its progress, even though progress was being made.

This also prevents a segmentation fault while aborting the task.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
flow
43b9db6e45
change: allow deleting mods while preserving their metadata
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
flow
032ceefa1d
feat: add some helping methods to WideBar
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
flow
05fa266e6b
fix: provide default value to is_indexed in ModDownloadTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:40 -03:00
Sefa Eyeoglu
56085310cb
Merge pull request #913 from Gingeh/cape-without-skin 2022-07-17 09:57:03 +02:00
kumquat-ir
6a1d611fd1 Restore ScrollMessageBox
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2022-07-17 02:40:27 -04:00
flow
c8a72c876d
fix: add missing HttpMetaCache entry for CF mods
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-16 21:25:29 -03:00
flow
ec87a8ddfc
fix: add expiration time to cache entries
This is to prevent problems where the cache entry would still be used
way after the remote resource got updated. The limit is hardcoded for 1
week, which I think is a reasonable time, but this could be further
tweaked.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-16 21:25:28 -03:00
kumquat-ir
33e34ebb83 Add "Open All" button to blocked mods dialog
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2022-07-16 19:14:54 -04:00
dada513
dce435c882
Merge pull request #917 from Scrumplex/fix-translations-2 2022-07-16 22:27:03 +02:00
Sefa Eyeoglu
396b3c3952
fix: add missing full-stop to message
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-16 21:26:23 +02:00
Sefa Eyeoglu
8cf42f4e15
Merge pull request #902 from Scrumplex/fix-unicode-windows 2022-07-16 21:15:55 +02:00
Sefa Eyeoglu
17ea51ce27
fix: fix memory leak on Windows
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-16 20:08:08 +02:00
txtsd
04818ca626
Merge pull request #914 from DioEgizio/cacheqt 2022-07-16 00:42:44 +05:30
txtsd
6732b77594
chore(actions): Remove superfluous whitespace
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-07-15 22:40:12 +05:30
DioEgizio
3e4346e321 feat(actions): bring back qt caching
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-07-15 10:02:11 +02:00
Gingeh
4dfc01899a Make skin upload optional
Signed-off-by: Gingeh <39150378+Gingeh@users.noreply.github.com>
2022-07-15 12:23:11 +10:00
Sefa Eyeoglu
b0b8ccfd4a
Merge pull request #911 from Scrumplex/fix-release-workflow-2 2022-07-14 07:59:34 +02:00
Sefa Eyeoglu
4d35c66af3
fix(actions): fix release workflow
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-13 22:47:55 +02:00
flow
509f7bd018
fix: move time record overrides to BaseInstance
This is needed so that we can show time stats in the UI without having
to load all type-specific settings, which would make all the previous
changes useless :c

This is apparently done with console settings too, so I don't think
there's a problem doing this too :>

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-12 21:15:59 -03:00
txtsd
42b9b3d72a
Merge pull request #905 from DioEgizio/fix-copying 2022-07-12 19:19:09 +05:30
DioEgizio
e280f9fe3e chore(COPYING): update COPYING.MD a bit
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-07-12 15:20:26 +02:00
flow
89493a2f1d
Merge pull request #904 from virchau13/add-stdenv-lib
fix(nix): add stdenv.cc.cc.lib to GAME_LIBRARY_PATH
2022-07-12 07:47:06 -03:00
flow
e259bffca6
Merge pull request #810 from Scrumplex/refactor-launcher-version
Hide channel from version for tagged commits
2022-07-12 07:46:46 -03:00
Vir Chaudhury
ba9164022d
fix(nix): add stdenv.cc.cc.lib to GAME_LIBRARY_PATH
Some mods (like DiscordRichPresence) require libstdc++.
This commit adds stdenv.cc.cc.lib to $GAME_LIBRARY_PATH so that these
mods function correctly.

Signed-off-by: Vir Chaudhury <virchau13@hexular.net>
2022-07-12 05:16:32 +08:00
Sefa Eyeoglu
a4672ba00f
fix: remove unnecessary code for Windows
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-11 19:09:20 +02:00
Sefa Eyeoglu
c0bf267bae
fix: fix unicode issue with JavaChecker on Windows
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-11 18:53:20 +02:00
timoreo
1a26a53659
Merge pull request #901 from txtsd/scdoc 2022-07-11 14:56:19 +02:00
Sefa Eyeoglu
8f4d7ac655
Merge pull request #678 from Scrumplex/improvements-around-proprietary-services 2022-07-11 14:56:09 +02:00
Sefa Eyeoglu
c5625d8d32
Merge pull request #847 from EliteTK/switch-to-scdoc 2022-07-11 14:47:44 +02:00
flow
548a2a1d64
Merge pull request #900 from DioEgizio/CI/fix
fix(actions): fix ccache on windows
2022-07-11 08:02:27 -03:00
txtsd
df01a58099
feat(ci): Install scdoc to build manpage
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-07-11 14:30:46 +05:30
Sefa Eyeoglu
ac8ee9f981
Merge pull request #479 from kthchew/feature/sparkle-mac 2022-07-11 09:02:41 +02:00
DioEgizio
b1805b70ea
fix(actions): fix ccache on windows
Also removes some unnecessary dependencies for the generic Linux package

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-07-11 08:13:02 +02:00
Kenneth Chew
eae8a2914e
Remove use of obsolete method
Fixes Qt 6 build

Signed-off-by: Kenneth Chew <kenneth.c0@protonmail.com>
2022-07-10 19:09:58 -04:00
Kenneth Chew
03429db528
Switch to production Sparkle appcast
DCO Remediation Commit for Kenneth Chew <kenneth.c0@protonmail.com>

I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: 92b913ca37
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: 7eb61a28be
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: ea4ef1655b
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: b5bdfa6c2e
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: f9f46609ee
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: 34adcec616
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: 05cd30ac06
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: f3c72f4f08
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: b1f486518e
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: 3bc02b9662

Signed-off-by: Kenneth Chew <kenneth.c0@protonmail.com>
2022-07-10 18:51:52 -04:00
Jamie Mansfield
10f27250ee
DCO Remediation Commit for bf560f4
I, Jamie Mansfield <jmansfield@cadixdev.org>, hereby add my
Signed-off-by to this commit: bf560f4594

Signed-off-by: Jamie Mansfield <jmansfield@cadixdev.org>
2022-07-10 19:14:05 +01:00
Jamie Mansfield
aed7963d11
DCO Remediation Commit for a7fc23d
I, Jamie Mansfield <jmansfield@cadixdev.org>, hereby add my
Signed-off-by to this commit: a7fc23dd96

Signed-off-by: Jamie Mansfield <jmansfield@cadixdev.org>
2022-07-10 19:13:34 +01:00
Jamie Mansfield
2810413112
DCO Remediation Commit for 9e69b8f
I, Jamie Mansfield <jmansfield@cadixdev.org>, hereby add my
Signed-off-by to this commit: 9e69b8fe1b

Signed-off-by: Jamie Mansfield <jmansfield@cadixdev.org>
2022-07-10 19:12:57 +01:00
Jamie Mansfield
31fd92e071
DCO Remediation Commit for e0ae631
I, Jamie Mansfield <jmansfield@cadixdev.org>, hereby add my
Signed-off-by to this commit: e0ae631d59

Signed-off-by: Jamie Mansfield <jmansfield@cadixdev.org>
2022-07-10 19:12:08 +01:00
Sefa Eyeoglu
b3b76d5d56
Merge branch 'develop' into feature/sparkle-mac
# Conflicts:
#	.github/workflows/build.yml
2022-07-10 19:38:30 +02:00
Sefa Eyeoglu
cd948dceae
Merge pull request #575 from Scrumplex/qt6 2022-07-10 19:21:01 +02:00
Sefa Eyeoglu
eb33a87ff5
fix: remove TODOs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 18:11:13 +02:00
Jamie Mansfield
bf560f4594
ATLauncher: Move the UI support implementation into it's own class
This will allow it to be used in multiple locations.
2022-07-10 11:27:42 +01:00
Sefa Eyeoglu
d77237ca5d
refactor(actions): rename Windows builds
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
211d596fdd
refactor(actions): switch to system QuaZip on Windows
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
f464b347b2
fix: install TLS plugins for release builds
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
203c3ec233
refactor(actions): speed up package installations for Windows
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
e2a74dfc30
feat(actions): enable Windows-i686 Qt 6 builds
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
4e99da7b62
refactor: query Qt variables using ECM
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
eb5ed50824
fix: set UNICODE and _UNICODE for Qt 5 builds
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
3b4539de79
chore: update license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
3e4d1c04de
fix: include TLS plugins in bundle
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
fdf5748029
feat(actions): use Qt 6 on macOS and AppImage
Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
3562e94650
Revert "fix: ignore deprecation again"
We want to see deprecation warnings now

This reverts commit 47d0da2d96bc375410f5d494ac9371d47adf33d5.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
15c5bbcf22
fix: fix slots for Qt 6
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
c363423718
refactor: fix deprecation up to Qt 6
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
Sefa Eyeoglu
e58158c3cd
feat: add Qt 6 support to CMake
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:14 +02:00
Sefa Eyeoglu
ff2cd50bfa
refactor: replace QRegExp with QRegularExpression
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:17:52 +02:00
Sefa Eyeoglu
984692dc62
refactor: fix deprecation up to Qt 5.15
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:17:52 +02:00
Jamie Mansfield
a7fc23dd96
ATLauncher: Reset existing directory if required 2022-07-10 11:15:48 +01:00
txtsd
c1bcbf8c63
Merge pull request #880 from Scrumplex/fix-loader-importance
Make loader components not important
2022-07-10 15:44:17 +05:30
Jamie Mansfield
9e69b8fe1b
ATLauncher: Parse keeps and deletes from pack manifests 2022-07-10 11:05:11 +01:00
Jamie Mansfield
e0ae631d59
ATLauncher: Add modes to install task and display appropriate message
This will display the update/reinstall message for the installation
method currently in use..
2022-07-10 10:55:05 +01:00
dada513
3b187b5246
Merge pull request #876 from Scrumplex/revert-updater-stuff
Revert "fix: remove updater if it is not used"
2022-07-10 10:50:03 +02:00
Tomasz Kramkowski
20666763f0 Rewrite polymc.6 in scdoc, build, and install it
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
Signed-off-by: Tomasz Kramkowski <tomasz@kramkow.ski>
2022-07-09 23:25:09 +01:00
Sefa Eyeoglu
f591c87665
Merge pull request #851 from russellbanks/patch-1 2022-07-09 01:16:07 +02:00
Sefa Eyeoglu
e6fe701727
Merge pull request #808 from Scrumplex/fix-lgtm-warnings 2022-07-09 01:10:59 +02:00
flow
35a698ef72
Merge pull request #884 from jopejoe1/ftbuifixed
Updated FTB Classic layout
2022-07-08 16:19:14 -03:00
flow
998271414e
Merge pull request #890 from Scrumplex/fix-technic-forge
Fix Technic instances using Forge
2022-07-08 16:18:59 -03:00
Sefa Eyeoglu
1749f25420
Merge pull request #881 from gytis-ivaskevicius/develop 2022-07-08 17:29:12 +02:00
Sefa Eyeoglu
4ab0e70a9a
fix(technic): map loader libraries to components properly
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 17:28:06 +02:00
Sefa Eyeoglu
08989bde5e
Merge pull request #839 from flowln/modrinth_packs_bug_hunt 2022-07-08 16:25:35 +02:00
Sefa Eyeoglu
87cbff391c
fix: disable MSA login if it is NOT supported
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
Sefa Eyeoglu
962923bbce
chore: add missing license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
Sefa Eyeoglu
311b081e60
feat: add validation for Flame key and MSA client ID
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
Sefa Eyeoglu
4103948132
feat: track capabilities of application
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
Sefa Eyeoglu
906f26698b
fix: spelling of CF
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
Sefa Eyeoglu
8a1a583afe
refactor: rename references to CurseForge to Flame
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
jopejoe1
9e19b73ce6 Updated FTB Classic layout
Signed-off-by: jopejoe1 <johannes@joens.email>
2022-07-07 23:18:13 +02:00
Gytis Ivaskevicius
e11706d99d Cleanup flake.nix
Signed-off-by: Gytis Ivaskevicius <me@gytis.io>
2022-07-07 19:25:14 +03:00
Sefa Eyeoglu
301b811310
fix: make loader components not important
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-07 09:58:03 +02:00
flow
273cf3d565
feat: lazy-load MinecraftInstance settings
Makes the startup go fast!

vrum

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-06 17:17:54 -03:00
flow
f432cfd73a
change: put settings initialization in a separate function
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-06 16:18:09 -03:00
Sefa Eyeoglu
ffa756ccee
fix: remove tests for updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-06 18:13:51 +02:00
Sefa Eyeoglu
e210a4b244
Revert "fix: remove updater if it is not used"
This reverts commit 2ff0aa09e3.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-06 18:13:51 +02:00
Sefa Eyeoglu
f1902a4471
Merge pull request #794 from Scrumplex/resolve-jars-dynamically 2022-07-06 17:40:09 +02:00
Sefa Eyeoglu
04b865adae
Merge pull request #707 from Jan200101/PR/gamemode
Add Performance related settings
2022-07-06 17:11:43 +02:00
txtsd
00df092a99
chore(readme): Reword and place entry in alphabetical order
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-07-06 09:34:17 +02:00
Jan200101
cad581388f
Add Performance related settings
Integrates support for Feral Gamemode, discrete GPU support for Mesa and the proprietary Nvidia driver and MangoHud support

Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
2022-07-06 09:34:14 +02:00
timoreo
e7ed3abb79
Merge pull request #871 from Scrumplex/configure-dco 2022-07-03 18:16:25 +02:00
flow
e5f6dc1b14
fix: aborts when using a Qt build with assertions enabled
Preventing undefined behaviour hooray! :D

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:44:19 -03:00
flow
145da82cd8
fix: show invalid version even when there's none
Having a blank instead of _anything_ is bad UX. Instead, even when
there's not a valid version (most likely disabled redistribution), we
show a message in the UI, to differentiate from the loading state.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:43:05 -03:00
flow
64776d6bac
feat+fix: cache Flame modpack versions
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:43:05 -03:00
flow
64d123f524
fix: use better naming for Modrinth pack versions
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:43:04 -03:00
flow
0ec4ade683
feat+fix: cache versions and extra info in Modrinth packs
When you change a copy thinking you're changing the original data smh

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:43:04 -03:00
flow
4bfc445cf8
fix: add progress indicator on Flame mod resolution dialog
This code is super :pofat: omg

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:43:04 -03:00
flow
4232b1cedb
fix: don't use uniform sizes in Modrinth modpack viewer
Apparently, when Qt sees an icon with the height smaller than the rest,
with this option set, it will change the height of all other items to be
that one, causing #828.

While we do lose some performance changing this option, the issue is
gone, so :|

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:43:00 -03:00
Sefa Eyeoglu
474d77ac57
feat: resolve JARs dynamically
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:31:01 +02:00
Sefa Eyeoglu
3c40355d7c
chore(DCO): allow remediation
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:28:01 +02:00
Sefa Eyeoglu
cbc1aad58d
fix: don't assume stable channel, if tag is unset
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:23:13 +02:00
Sefa Eyeoglu
89a30a47c5
fix: use semver format for build tag
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:23:13 +02:00
Sefa Eyeoglu
881a5603dc
feat: hide channel if git tag is set
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:23:13 +02:00
Sefa Eyeoglu
68c48b2c8a
feat: store git tag in buildconfig
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:23:13 +02:00
Sefa Eyeoglu
0f9260869b
chore: update Git CMake module
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:23:13 +02:00
Ezekiel Smith
412fdb0f7b
Merge pull request #870 from Scrumplex/fix-release-build
Fix release builds
2022-07-04 00:25:03 +10:00
flow
81d52b6169
Merge pull request #869 from DarkKirb/nix-ecm
fix: Add extra-cmake-modules to the nix build
2022-07-03 11:07:11 -03:00
Sefa Eyeoglu
278d2169da
fix: initialize accountIsOnline to fix build
CMAKE_BUILD_TYPE=Release makes the build fail otherwise.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 14:32:31 +02:00
Sefa Eyeoglu
5599b5a337
Merge pull request #855 from Gingeh/account-list 2022-07-03 12:55:36 +02:00
Charlotte 🦝 Delenk
471d6d6031
fix: Add extra-cmake-modules to the nix build
Signed-off-by: Charlotte 🦝 Delenk <lotte@chir.rs>
2022-07-03 10:30:45 +01:00
Ezekiel Smith
b90d6b0f26
Merge pull request #857 from Scrumplex/dco
Add Developer's Certificate of Origin (DCO)
2022-07-03 16:23:25 +10:00
flow
cd22da9c62
Merge pull request #864 from ivanpu/uncensored-offline
Don't censor "offline" word when that's the access token
2022-07-02 17:56:04 -03:00
flow
fb75c23f4e
Merge pull request #784 from Scrumplex/refactor-cmake
Refactor tests
2022-07-02 17:50:08 -03:00
Ezekiel Smith
7f22994f68
Merge pull request #831 from flowln/abort_connections
Add missing connections to the abort signal in some tasks
2022-07-03 01:50:36 +10:00
Ezekiel Smith
7aba7b6064
Merge pull request #818 from flowln/tiny_mod_icons
Always scale mod icons to the right size
2022-07-03 01:49:09 +10:00
Ezekiel Smith
e32030f364
Merge pull request #860 from kthchew/fix/status-version
Show MC version of instance in status bar
2022-07-03 01:47:27 +10:00
Ivan Puntiy
b40619bcbd don't censor offline access token 2022-07-02 18:05:33 +03:00
timoreo
fe2e1d931f
Merge pull request #786 from flowln/concurrent_tasks_slimmed 2022-07-01 20:09:18 +02:00
timoreo
2e17e78052
Merge pull request #845 from flowln/news_in_launcher 2022-07-01 20:04:06 +02:00
Sefa Eyeoglu
f2fa82fd3c
Merge pull request #863 from Scrumplex/fix-braindead-moment
update NewLaunch package name
2022-07-01 19:55:01 +02:00
Sefa Eyeoglu
8cec4b60a6
fix: update NewLaunch package name 2022-07-01 19:50:41 +02:00
flow
bf9888099c
Merge pull request #800 from Scrumplex/refactor-newlaunch-package
Rename NewLaunch package
2022-07-01 10:05:07 -03:00
flow
02201631e7
feat: use ConcurrentTask for mod downloads
Way faster :)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-01 08:34:17 -03:00
flow
8e80b4bfc1
feat: add ConcurrentTask
This tasks (or rather, meta-task) has the ability to run several other
sub tasks concurrently.

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-01 08:34:10 -03:00
Sefa Eyeoglu
63dfc0633f
Merge pull request #652 from flowln/mod_page 2022-07-01 10:00:36 +02:00
Sefa Eyeoglu
50f1847904
Merge pull request #785 from icelimetea/reformat-javacheck 2022-07-01 10:00:08 +02:00
Kenneth Chew
79840f0fca
Remove redundant type name from status bar
The type name is always "Minecraft", so it showed "Minecraft X.X.X (Minecraft)"
2022-06-30 23:02:56 -04:00
Kenneth Chew
06bf7b0f31
Fix Minecraft version not appearing in status bar 2022-06-30 23:02:56 -04:00
Gingeh
dbb63b97bd
Merge branch 'PolyMC:develop' into account-list 2022-07-01 10:43:41 +10:00
Sefa Eyeoglu
3039cb5c02
chore: add DCO requirement
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-06-30 16:37:13 +02:00
Gingeh
b5d2570fe2
Change Online status to Ready 2022-06-30 22:17:15 +10:00
flow
5f951e8f21
change: better regex for removing 'The' when sorting mods
Teh :|

Co-authored-by: timoreo22 <timo.oreo34@gmail.com>
2022-06-30 07:04:47 -03:00
Sefa Eyeoglu
286f82cc99
Merge pull request #826 from kthchew/fix/kill-menubar 2022-06-30 11:50:43 +02:00
timoreo22
ed5415aeb8
Merge pull request #837 from DioEgizio/fix-sort-mr 2022-06-30 08:24:51 +02:00
Gingeh
bef79df6bb Disable the refresh button for offline accounts 2022-06-30 09:08:53 +10:00
Gingeh
2edabe0f99 Merge remote-tracking branch 'origin/account-list' into account-list
# Conflicts:
#	launcher/minecraft/auth/AccountData.cpp
2022-06-30 09:00:21 +10:00
Gingeh
91b5f0228d add tr() to offline account name
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-06-30 08:59:41 +10:00
Gingeh
d639da741b
add tr() to offline account name
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-06-30 08:49:40 +10:00
Gingeh
84bd5ace6c Move account checkboxes to the profile column (oops) 2022-06-29 19:58:41 +10:00
Gingeh
63589d2ba9 Rename profile column to username and update the tooltip 2022-06-29 18:49:06 +10:00
Gingeh
d6f4ff26b5 Disable skin buttons for offline accounts 2022-06-29 18:46:39 +10:00
Gingeh
b606a2e040 Make the profile and account name columns use all available space 2022-06-29 18:45:36 +10:00
Gingeh
f685139d89 Move the profile name column to the left 2022-06-29 18:43:29 +10:00
Gingeh
68d6ce60a9 Don't show account name for offline accounts 2022-06-29 18:42:01 +10:00
Russell Banks
2bba64fe3a
Create winget.yml 2022-06-28 12:11:52 +01:00
Ezekiel Smith
774ed044fc
Merge pull request #827 from kthchew/fix/menubar-separator
Workaround Qt bug to fix menu bar separators on macOS
2022-06-27 01:14:15 +10:00
Ezekiel Smith
9cc235cde0
Merge pull request #811 from jn64/fix/window-title
Fix duplicate name in window title
2022-06-27 01:13:58 +10:00
Ezekiel Smith
91375e4c6d
Merge pull request #834 from DioEgizio/reword-flame-warning
chore(flame): reword warning
2022-06-27 01:12:18 +10:00
flow
0ef8da64e0
Merge pull request #724 from Zetvue/patch-1
* Resize PolyMC logo

Co-authored-by: Tatsuya Noda <topia@clovery.jp>
2022-06-26 08:31:18 -03:00
flow
9ef38171e2
fix: use clicked instead of pressed signal for button clicks
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-06-26 08:10:52 -03:00
flow
455e4de6f3
feat: add news reader dialog
Makes it easier to read about new blog posts! Yay :D
2022-06-25 20:15:16 -03:00
flow
4e319254dd
fix: use right name for the content of a News entry 2022-06-25 20:14:27 -03:00
DioEgizio
04e8780dd0
fix(modrinth): fix sorting 2022-06-24 10:47:02 +02:00
DioEgizio
0fe4384067
Update launcher/ui/pages/modplatform/flame/FlamePage.ui
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-06-23 17:58:54 +02:00
DioEgizio
bdfcd0b99e chore(flame): reword warning 2022-06-23 17:06:49 +02:00
flow
5da87d1904
fix: add missing connections to the abort signal
Beginning with efa3fbff39, we separated
the failing and the aborting signals, as they can mean different
things in certain contexts. Still, some places are not yet changed to
reflect this modification. This can cause aborting of progress dialogs
to not work, instead making the application hang in an unusable satte.

This goes through some places where it's not hooked up yet, fixing their
behaviour in those kinds of situation.
2022-06-22 20:20:39 -03:00
flow
821edf0f51
Merge pull request #830 from Scrumplex/fix-launchermeta
Replace old reference to launchermeta
2022-06-22 18:12:20 -03:00
Sefa Eyeoglu
04e822acfb
fix: remove old reference to launchermeta 2022-06-22 20:47:47 +02:00
Kenneth Chew
c31fce3621
Workaround Qt bug to fix menu bar separators on macOS 2022-06-22 00:34:04 -04:00
Kenneth Chew
5c05cf2206
Disable launch actions in menu bar when last instance is deleted
This caused a crash when the action was selected!
2022-06-21 19:19:55 -04:00
Kenneth Chew
d4e544c62c
Separate the kill and launch instance actions 2022-06-21 19:19:55 -04:00
Ezekiel Smith
d232248268
Merge pull request #807 from Scrumplex/lgtm-config
Add LGTM config
2022-06-22 01:14:08 +10:00
Ezekiel Smith
90025ed45d
Merge pull request #812 from jn64/fix/about-labels
Make version labels in About dialog selectable
2022-06-22 01:13:43 +10:00
Ezekiel Smith
964151d9c7
Merge pull request #817 from flowln/zip_ensure_path
Don't create unnecessary folders when extracting ZIPs
2022-06-22 01:13:23 +10:00
Ezekiel Smith
409c9bf9d2
Merge pull request #778 from Scrumplex/track-real-architecture
Track real CPU architecture for instances
2022-06-22 01:13:10 +10:00
flow
a135c06bcf
fix: scale mod icons to the right size 2022-06-21 06:41:56 -03:00
Sefa Eyeoglu
efb1f4abf2
Merge pull request #797 from kthchew/fix/update-shortcut 2022-06-21 11:29:15 +02:00
Sefa Eyeoglu
036a826b3a
Merge pull request #788 from kthchew/fix/win-install-version 2022-06-21 11:29:06 +02:00
Sefa Eyeoglu
8d2b66a0fd
Merge pull request #715 from Heath123/patch-1 2022-06-21 11:18:37 +02:00
Ezekiel Smith
31d6278b31
Merge pull request #729 from OldWorldOrdr/develop
Update bug_report.yml to use latest version as the version suggestion
2022-06-21 01:12:04 +10:00
OldWorldOrdr
5558d7eef8
Update bug_report.yml 2022-06-20 11:03:22 -04:00
OldWorldOrdr
6103d86a47
Merge branch 'PolyMC:develop' into develop 2022-06-20 11:02:40 -04:00
flow
b8899a534d
Merge pull request #633 from Scrumplex/chore-remove-unused-workflows
Remove unused GH Workflows
2022-06-20 11:42:53 -03:00
jn64
fa6829a6a1 Set beam cursor on selectable labels 2022-06-20 14:28:38 +08:00
jn64
5335540c33 Rename main window 2022-06-20 13:45:36 +08:00
flow
7f62de3854
fix: don't create unnecessary folders when extracting ZIPs 2022-06-19 22:03:02 -03:00
jn64
0afa2e92d5 Make GitHub link focusable by keyboard 2022-06-18 22:20:38 +08:00
jn64
6d1b166ad7 Make labels selectable
User can copy version/build info easily.
2022-06-18 22:19:23 +08:00
jn64
4b6ddfb89b Add version to Qt applicationDisplayName 2022-06-18 20:00:28 +08:00
Sefa Eyeoglu
9ec260619b
fix: fix warnings reported by LGTM.com 2022-06-17 16:34:32 +02:00
Sefa Eyeoglu
4c6ac9e4fe
chore: add LGTM config 2022-06-17 16:24:06 +02:00
Sefa Eyeoglu
08fc3ea2e0
fix: add classpath exception to launcher library
Signed-off-by: icelimetea <fr3shtea@outlook.com>
2022-06-16 17:58:38 +02:00
flow
03e454b71d
Merge pull request #694 from Technous285/develop-1
Add OpenBSD support
2022-06-15 06:32:14 -03:00
flow
c527ea83fb
Merge pull request #799 from DioEgizio/fix-oopsie
fix websiteurl in cf modpacks (part 2)
2022-06-15 06:28:09 -03:00
Sefa Eyeoglu
8b9ac63657
chore: update COPYING.md 2022-06-15 10:15:35 +02:00
Sefa Eyeoglu
0ba02f0830
refactor: rename NewLaunch package 2022-06-15 10:05:35 +02:00
DioEgizio
1f6cef6f8a
fix https://github.com/PolyMC/PolyMC/issues/798 2022-06-15 09:11:23 +02:00
Kenneth Chew
251942323e
Deselect desktop shortcut by default
Follows the guidelines at https://docs.microsoft.com/en-us/windows/win32/uxguide/winenv-desktop
2022-06-15 00:46:34 -04:00
Kenneth Chew
8e3efec40f
Unselect shortcut installation by default if PolyMC is already installed
This is the same behavior as the `/NoShortcuts` switch.
2022-06-15 00:41:52 -04:00
Sefa Eyeoglu
3d0740f80e
fix(cmake): allow disabling tests 2022-06-14 21:42:44 +02:00
txtsd
707a68cb4f
Merge pull request #787 from DioEgizio/macos-12-gha
update macos runner to macos 12
2022-06-14 23:30:41 +05:30
Ezekiel Smith
e6b1a1fa76
Merge pull request #716 from flowln/mod_perma_2
Hide index folder on Windows
2022-06-14 23:58:35 +10:00
Ezekiel Smith
3e8d450741
Merge pull request #665 from jamierocks/h-managed-packs
PackPlatforms: Record where packs come from
2022-06-14 23:54:44 +10:00
Ezekiel Smith
d0881b7420
Merge pull request #731 from Scrumplex/update-readme-macstadium
Add sponsors to README
2022-06-14 23:52:38 +10:00
Ezekiel Smith
27239b2dde
Merge pull request #634 from flowln/donate_links
More links for CF / Modrinth mods / modpacks
2022-06-14 23:52:00 +10:00
Sefa Eyeoglu
3fbbaddece
fix(actions): install extra-cmake-modules 2022-06-14 14:44:49 +02:00
Sefa Eyeoglu
effe46db86
refactor: move away from UnitTest.cmake 2022-06-14 14:44:49 +02:00
Sefa Eyeoglu
ba939c92ec
feat(actions): test before packaging 2022-06-14 14:44:49 +02:00
Sefa Eyeoglu
e25cdd9d12
refector: move download action to ExternalResourcesPage 2022-06-14 07:04:31 -03:00
flow
d394235ee0
refactor: Create a more clear hierarchy for some instance pages
Previously, the Shaders, Texture packs and Resource packs tabs had as
parent the ModFolderPage, making it so that making changes only to the
Mods page would require checking the id of the page for the correct one.
This was hackish and error-prone.

Now, those pages all inherit from a single class, ExternalResourcesPage,
that handles the basic behaviour of all of them, while allowing for
individual modification in code.

This is still not a clear separation, since internally, all those
resources are derived from Mods, so for now there's still some awkward
common code :/
2022-06-14 07:04:31 -03:00
Sefa Eyeoglu
349fc4143d
Merge pull request #714 from Scrumplex/fix-tests
Fix mod metadata tests
2022-06-13 23:10:35 +02:00
Sefa Eyeoglu
4be9e6a0bc
refactor: make is_indexed false by default
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-06-13 22:07:42 +02:00
Sefa Eyeoglu
cb258146c4
Merge pull request #782 from Scrumplex/chore-bump-1.4.0 2022-06-13 22:05:40 +02:00
Kenneth Chew
9f039cef72
Set correct installer properties and uninstall registry keys 2022-06-12 14:21:56 -04:00
Sefa Eyeoglu
d08815bbc1
Merge pull request #759 from flowln/mod_perma_3 2022-06-12 19:17:08 +02:00
DioEgizio
c04e38d011
update macos runner to macos 12 2022-06-12 19:13:19 +02:00
flow
794022d399
Merge pull request #783 from Scrumplex/fix-avoid-settings-register-warnings
Avoid re-registering InstanceType
2022-06-12 13:46:46 -03:00
icelimetea
8e43190984
Compile JavaCheck for Java 7 2022-06-12 17:46:40 +01:00
Sefa Eyeoglu
2212a6e40f
Merge pull request #679 from kthchew/fix/win-install-version 2022-06-12 18:12:42 +02:00
icelimetea
63b69c0b0c
Change formatting of JavaCheck 2022-06-12 16:29:39 +01:00
Sefa Eyeoglu
278219b1d8
fix(installer): use Windows version number format 2022-06-12 16:24:05 +02:00
Sefa Eyeoglu
2ce4ce9064
fix(installer): add version info to installer 2022-06-12 14:52:54 +02:00
flow
4448418b63
fix: segfault when the same mod is present enabled and disabled at once
This maintains the previous behaviour
2022-06-12 09:44:03 -03:00
flow
9f1f37e780
fix: correctly handle disabled mods with metadata
im stupid
2022-06-12 09:25:25 -03:00
flow
40ccd1a469
fix: handling of incomplete mods
(i.e. mods without ModDetails that may have metadata)
2022-06-12 09:25:21 -03:00
Sefa Eyeoglu
a4ef0940ed
chore: add license headers 2022-06-12 13:50:58 +02:00
Sefa Eyeoglu
2ff0aa09e3
fix: remove updater if it is not used 2022-06-12 13:39:47 +02:00
Sefa Eyeoglu
32217a774f
fix(tests): wait until ModFolderModel has updated 2022-06-12 13:33:17 +02:00
Sefa Eyeoglu
8856c8cd62
refactor(test): fix loading mod metadata setting 2022-06-12 13:33:17 +02:00
flow
e843b8e188
fix(test): fix packwiz test 2022-06-12 13:33:17 +02:00
Sefa Eyeoglu
c4f2e3a955
Merge pull request #771 from flowln/modrinth_multiple_downloads 2022-06-12 10:50:57 +02:00
Sefa Eyeoglu
91301ec7fe
Merge pull request #632 from ryanccn/macos-app-heuristic 2022-06-12 10:46:49 +02:00
Ryan Cao
13b03e7e50
Update Application.cpp 2022-06-12 11:44:04 +08:00
Sefa Eyeoglu
8a0aa5a0c8
fix: avoid re-registering InstanceType 2022-06-11 23:06:42 +02:00
dada513
2bd8e7dca4
Merge pull request #780 from flowln/guo_ext_2 2022-06-11 19:45:51 +02:00
dada513
d75571ffa1
Merge pull request #773 from vancez/fix-launch-button 2022-06-11 19:41:02 +02:00
Sefa Eyeoglu
8683d529fc
chore: bump version 2022-06-11 19:35:40 +02:00
dada513
2ee4b6768d
Merge pull request #770 from flowln/technic_links 2022-06-11 19:34:59 +02:00
dada513
a9f0a85590
Merge pull request #764 from Scrumplex/fix-compile-flags 2022-06-11 19:34:01 +02:00
flow
37160f973f
fix: account for the dequeued url when checking the number of urls
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-06-11 14:31:50 -03:00
dada513
9bbf50e864
Merge pull request #720 from icelimetea/fix-legacy-issues 2022-06-11 19:29:59 +02:00
Sefa Eyeoglu
51258ab28c
Merge pull request #709 from Scrumplex/fix-instancetypes
Always store InstanceType
2022-06-11 19:29:46 +02:00
flow
29e5a213a5
fix: dequeue first added file in mrpack import
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-06-11 14:19:51 -03:00
Sefa Eyeoglu
2d261607df
Merge pull request #732 from MrMelon54/develop 2022-06-11 19:14:26 +02:00
flow
54144154f9
fix: apply client overrides in mrpacks
another oopsie x.x
2022-06-11 13:44:31 -03:00
Sefa Eyeoglu
81daffe68e
fix: remove file filter from translation 2022-06-11 14:10:42 +02:00
flow
2ea20a8b29
fix: allow discovering mrpacks in languages without dot 2022-06-11 07:12:59 -03:00
Sefa Eyeoglu
2257c875f5
Merge pull request #708 from ryanccn/custom-user-agent 2022-06-11 10:53:58 +02:00
Sefa Eyeoglu
8a2e8ad953
feat: track real CPU architecture for instances 2022-06-11 10:48:58 +02:00
Vance
fa5b1d9978
change slot name 2022-06-10 15:48:18 +08:00
Ryan Cao
529fb07b42
I changed my mind 2022-06-10 15:18:47 +08:00
Vance
4a261cac1a
fix: update toolbar when instance state changes 2022-06-10 10:25:13 +08:00
flow
b3c8f9d508
revert: don't check modrinth whitelisted hosts
people didn't seem to like it, and its not required
2022-06-09 19:57:51 -03:00
flow
1b878030aa
fix: enable using more than one download url in mrpacks
Kinda, it's ugly and hackish, since we don't have the facilities to
do this properly (yet!)
2022-06-09 19:54:50 -03:00
flow
46e403b20b
fix: properly parse mrpacks without the 'env' field
It's optional, so some files may not have it (like most of FO).
2022-06-09 19:53:29 -03:00
flow
1b1f728c58
fix: allow opening external links in technic modpack page 2022-06-09 18:46:19 -03:00
txtsd
309013efb3
Merge pull request #762 from muscaln/flake
Bump flake lock
2022-06-09 05:58:42 +05:30
txtsd
705cf6499e
Merge pull request #734 from babbaj/extra-jdks
nix: add package argument for extra jdks
2022-06-09 05:57:23 +05:30
Zetvue
f2ed4a92e2
Update README.md
Co-authored-by: Tatsuya Noda <topia@clovery.jp>
2022-06-08 15:55:28 -04:00
Sefa Eyeoglu
0c8ca1b3c0
fix: remove debug CXX flags 2022-06-08 21:04:27 +02:00
Mustafa Çalışkan
6ee5ee496e flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/41cc1d5d9584103be4108c1815c350e07c807036' (2022-05-23)
  → 'github:nixos/nixpkgs/43ecbe7840d155fa933ee8a500fb00dbbc651fc8' (2022-06-08)
2022-06-08 14:32:08 +03:00
Zetvue
7f8aa2099c
Make it responsive 2022-06-07 18:58:02 -04:00
MrMelon
1d9797660b
QString::locateAwareCompare() is better for human-like sorting 2022-06-07 15:27:57 +01:00
Sefa Eyeoglu
cd0d8a76c5
chore: add sponsors to README 2022-06-07 10:33:09 +02:00
Babbaj
3f1251e78b
nix: add package argument for extra jdks 2022-06-06 22:13:10 -04:00
MrMelon
89d4405563
Simplify sorting logic to a single std::sort call 2022-06-06 22:18:19 +01:00
flow
8966364648
Merge pull request #685 from kthchew/fix/technic-quilt
Add Quilt support for Technic modpacks
2022-06-06 18:03:05 -03:00
MrMelon
1c60e9b4fc
Add initial sorting function 2022-06-06 21:51:08 +01:00
OldWorldOrdr
843c860d98
Update bug_report.yml 2022-06-06 13:52:50 -04:00
Zetvue
6587e39992
Resize PolyMC logo 2022-06-05 18:05:09 -04:00
Ryan Cao
757fa1410c
Update launcher/Application.cpp
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-06-05 23:52:21 +08:00
icelimetea
dd6d8e0002
Make Launcher class to look more like original 2022-06-05 02:43:14 +01:00
icelimetea
cd49406bfe
Fix launching process for some legacy Forge versions 2022-06-05 01:18:59 +01:00
Sefa Eyeoglu
7a3acc3249
refactor(ui): use tabs for APIPage 2022-06-04 22:04:36 +02:00
Sefa Eyeoglu
db1c804812
Merge pull request #718 from DioEgizio/revert-unfunny-pr 2022-06-04 21:49:15 +02:00
flow
493d58f358
Merge pull request #719 from RaptaG/patch-1
Capitalization fix in the README
2022-06-04 16:16:15 -03:00
RaptaG
fcd56dddc2
Capitalization fix 2022-06-04 22:08:35 +03:00
DioEgizio
91b85f9919 Revert "Merge pull request #315 from txtsd/display_scaling"
This reverts commit fcf728f3b5.
2022-06-04 17:09:11 +02:00
Ryan Cao
4cecba8787
make $LAUNCHER_VER actually work 2022-06-04 22:59:57 +08:00
Ryan Cao
5930acc418
change UI to scroll
let me just say, this does not look right
2022-06-04 22:54:05 +08:00
circuit10
61d36c1723
Clarify the forking policy a bit more 2022-06-04 15:20:49 +01:00
flow
c2a43c6f40
fix: hide .index folder on Windows 2022-06-04 11:02:59 -03:00
Sefa Eyeoglu
1ab00ca8b2
Merge pull request #426 from flowln/mod_perma
Add on-disk mod metadata information
2022-06-04 13:23:38 +02:00
Sefa Eyeoglu
778baa6dbe
fix: always store InstanceType 2022-06-04 11:59:12 +02:00
Ryan Cao
25ab121e42
feat: custom user-agent 2022-06-04 15:33:17 +08:00
TheOPtimal
cf4949b4f5
Prepare for Nix 2.7 (#286)
* Prepare for Nix 2.7

* Fix embarassing oopsie
2022-06-03 22:26:46 -03:00
Sefa Eyeoglu
4ca634d229
Merge pull request #701 from jn64/patch-1
Add "mc" keyword to desktop file
2022-06-03 09:30:36 +02:00
jn64
ca21b31696
Add "mc" keyword to desktop file
Certain launchers (e.g. GNOME) only search from word boundaries, so typing "mc" doesn't currently match to "PolyMC".
2022-06-03 09:58:57 +08:00
Technous285
38ff76d2b8
Add OpenBSD support
Adds OpenBSD support.
2022-06-02 02:02:42 +10:00
Sefa Eyeoglu
147bde5294
Merge pull request #692 from glowiak/patch-6 2022-06-01 17:46:12 +02:00
glowiak
1a004f0c4d
Update MCEditTool.cpp 2022-06-01 15:50:43 +02:00
glowiak
7d21bf15e8
Update UpdateController.cpp 2022-06-01 15:50:02 +02:00
Sefa Eyeoglu
a88ad8025b
Merge pull request #682 from istudyatuni/fix-add-account-behaviour 2022-06-01 10:13:35 +02:00
Ryan Cao
e06bf17d13
Merge branch 'PolyMC:develop' into macos-app-heuristic 2022-06-01 00:12:14 +08:00
Sefa Eyeoglu
04a3669fc4
Merge pull request #687 from PolyMC/LennyMcLennington-patch-1
Change forking policy a bit
2022-05-31 08:22:33 +02:00
LennyMcLennington
795075f90d
Update README.md 2022-05-30 23:59:48 +01:00
LennyMcLennington
2727df704f
change the wording a bit 2022-05-30 23:52:12 +01:00
LennyMcLennington
8ce8aadd9b
fix typo 2022-05-30 23:50:35 +01:00
LennyMcLennington
2999e69f0f
Change forking policy a bit
Ask people forking PolyMC to make it clear that their fork is not endorsed by us.
2022-05-30 23:05:29 +01:00
Kenneth Chew
7ac16ed073
Use QStringList instead of QSet<QString>
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-05-30 14:40:20 -04:00
Kenneth Chew
3585e4764b
Add Quilt support for Technic modpacks 2022-05-30 14:14:03 -04:00
Kenneth Chew
065e38c6aa
Move Windows installer configure to program_info 2022-05-30 12:56:29 -04:00
Sefa Eyeoglu
9054ee18a1
Merge pull request #505 from flowln/improve_download_ux 2022-05-30 13:41:02 +02:00
Ilia
9d8b95107d fix: do not show the "profile select" dialog if the user refused to add an account 2022-05-30 13:33:07 +03:00
Kenneth Chew
8731c86d0d
Use CMake for Windows installer branding
As a side effect, fixes an issue where the installer wrote the incorrect version to the registry.
2022-05-29 19:50:44 -04:00
Jamie Mansfield
80da1f1bb9
ATLauncher: Use ATLauncher rather than FTB in error messages 2022-05-29 00:04:28 +01:00
Jamie Mansfield
febdb85f96
ModpacksCH: Use ModpacksCH rather than FTB in error messages 2022-05-29 00:04:28 +01:00
Jamie Mansfield
96b76c8f5c
ModpacksCH: Make packs managed when installing 2022-05-29 00:04:27 +01:00
Jamie Mansfield
411bf3be03
ATLauncher: Make packs managed when installing 2022-05-29 00:04:27 +01:00
Jamie Mansfield
a98b6663e1
ATLauncher: Pass the full pack name through to the install task 2022-05-29 00:04:27 +01:00
Jamie Mansfield
e7f35e6ca3
API: Add settings to support managed packs
Managed packs means an installation of a modpack through a modpack
provider. Managed packs track their origins (pack platform, name, id),
so that in future features can exist around this - such as updating, and
reinstalling.
2022-05-29 00:04:26 +01:00
flow
f8e7fb3d48
fix: better handle corner case 2022-05-24 20:27:25 -03:00
flow
e644380160
feat: add links to curseforge modpacks 2022-05-24 12:27:32 -03:00
flow
c5eb6fe6fb
feat: add links for curseforge mods
NOT DOWNLOAD LINKS! (someone would ask it i'm sure :p)
2022-05-24 12:14:08 -03:00
flow
ae2ef324f2
feat: add remaining links to modrinth mods 2022-05-24 11:58:11 -03:00
flow
d0337da8ea
feat: add remaining links to modrinth modpacks 2022-05-24 11:52:27 -03:00
flow
5e17d53c7f
fix: missing tr() and update donate message 2022-05-24 11:11:40 -03:00
flow
22e0527502
feat: add donate info to modrinth modpacks 2022-05-24 09:46:58 -03:00
flow
ca3c6c5e8a
feat: add donate links for modrinth mods 2022-05-24 09:38:48 -03:00
Sefa Eyeoglu
4bd30f5e72
chore: remove unused GH Workflows 2022-05-24 14:17:44 +02:00
Ryan Cao
9673dac22b
add more #ifdefs 2022-05-24 16:18:02 +08:00
Ryan Cao
0426149580
standard macOS app behavior 2022-05-24 13:35:01 +08:00
flow
5a1de15332
fix: use a more robust method of finding metadata indexes
Often times, mods can have their name in different forms, changing one
letter to caps or the other way (e.g. JourneyMaps -> Journeymaps).
This makes it possible to find those as well, which is not perfect by
any means, but should suffice for the majority of cases.
2022-05-23 14:58:15 -03:00
flow
42f8ec5b14
fix: do modrinth changes on flame too
Also fix a dumb moment
2022-05-23 14:58:14 -03:00
flow
2fc1b99911
chore: add license headers
Prevents a massive inload of Scrumplex ditto's :)

I didn't add it to every file modified in this PR because the other
changes are pretty minor, and would explode the diff of the PR. I hope
that's not a problem O_O
2022-05-23 14:58:14 -03:00
flow
3a923060ce
fix: use correct hash_type when creating metadata
also fix: wrong parameter name in LocalModUpdateTask's constructor
also fix: correct hash_format in CF
2022-05-23 14:58:14 -03:00
flow
0985adfd74
change: support newest changes with packwiz regarding CF 2022-05-23 14:58:08 -03:00
flow
59d628208b
feat: allow trying to use multiple hash types 2022-05-23 14:43:31 -03:00
flow
5c5699bba5
refactor: move individual pack version parsing to its own function 2022-05-23 14:43:31 -03:00
flow
67e0214fa5
fix: don't try to delete mods multiple times
Shows a more helpful message if there's a parsing error when reading the
index file.

Also fixes a clazy warning with using the `.data()` method in a
temporary QByteArray object.
2022-05-23 14:43:10 -03:00
flow
e17b6804a7
fix: implement PR suggestions
Some stylistic changes, and get hashes from the mod providers when
building the metadata.
2022-05-23 14:43:09 -03:00
flow
96e36f0604
refactor: make mod metadata presence (or lack of) easier to find out 2022-05-23 14:43:09 -03:00
flow
a99858c64d
refactor: move code out of ModIndex.h
Now it's in ModIndex.cpp
2022-05-23 14:43:07 -03:00
flow
ba50765c30
tidy: apply clang-tidy to some files
Mostly the ones created in this PR + Mod.h / Mod.cpp / ModDetails.h
2022-05-23 14:42:28 -03:00
flow
d7f6b36990
test+fix: add basic tests and fix issues with it 2022-05-23 14:42:28 -03:00
flow
4439666e67
feat: allow disabling mod metadata usage 2022-05-23 14:42:28 -03:00
flow
23febc6d94
feat: cache metadata in ModDetails
Allows for more easy access to the metadata by outside entities
2022-05-23 14:42:28 -03:00
flow
fab4a7a602
refactor: abstract metadata handling and clarify names 2022-05-23 14:42:28 -03:00
flow
092d2f8917
feat: add support for converting builtin -> packwiz mod formats
Also adds more documentation.
2022-05-23 14:42:28 -03:00
flow
e9fb566c07
refactor: remove unused mod info and organize some stuff 2022-05-23 14:42:27 -03:00
flow
5a34e8fd7c
refactor: move mod tasks to their own subfolder
Makes the launcher/minecraft/mod/ folder a little more organized.
2022-05-23 14:42:27 -03:00
flow
fcfb2cfc3d
feat: use mod metadata for getting mod information
For now this doesn't mean much, but it will help when we need data
exclusive from the metadata, such as addon id and mod provider.

Also removes the metadata when the mod is deleted, and make the Mod.h
file a little more pleasing to look at :)
2022-05-23 14:42:27 -03:00
flow
e93b9560b5
feat: add method to delete mod metadata
Also moves indexDir setting from LocalModUpdateTask -> ModFolderModel
2022-05-23 14:42:27 -03:00
flow
8e4438b375
feat: add parser for current impl of packwiz mod.toml
This reads a local mod.toml file and extract information from it. Using
C libs in C++ is kind of a pain tho :(
2022-05-23 14:42:27 -03:00
flow
eaa5ce4467
feat(ui): adapt SequentialTask to nested SequentialTasks 2022-05-23 14:42:27 -03:00
flow
c86c719e1a
feat: add mod index updating to ModDownloadTask
This makes ModDownloadTask into a SequentialTask with 2 subtasks:
Downloading the mod files and updating the index with the new
information.

The index updating is done first so that, in the future, we
can prompt the user before download if, for instance, we discover
there's another version already installed.
2022-05-23 14:42:27 -03:00
flow
b30b88716e
feat: add very early mod.toml packwiz support
Also use it as a on-disk format for storing mod metadata. This will be
used later on to make better mod managment.
2022-05-23 14:42:22 -03:00
Kenneth Chew
3bc02b9662
Fix Sparkle signing step 2022-05-21 13:23:02 -04:00
flow
166f872712
fix: various issues with ProgressDialog and SequentialTasks
- Fix aborting sequential tasks
- Fix displaying wrong number of tasks concluded
- Fix text cutting when the URL is too big
2022-05-21 08:36:36 -03:00
flow
8f2c485c92
feat(ui): make selected mods in downloader bold with underline
Makes it easier to find which mods are selected in case you want to
change those.
2022-05-21 08:04:26 -03:00
flow
613f2fc447
feat: allow deselecting mods from the mod confirmation dialog
This adds a checkbox to each mod on the dialog that shows up when
confirming the mods to download, so you can deselect some of those if
you want to.
2022-05-21 08:02:27 -03:00
Kenneth Chew
b1f486518e
Use GitHub Actions to get signature for Sparkle
Requires a secret called `SPARKLE_ED25519_KEY`, in the format of a private key file
2022-05-21 00:32:14 -04:00
Kenneth Chew
f3c72f4f08
Actually install the full Sparkle.framework
CMake's `fixup_bundle` did not copy everything in the framework, which caused the app to crash when updating. Oops.
2022-05-19 20:22:45 -04:00
Kenneth Chew
05cd30ac06
Refactor code, create abstract class ExternalUpdater
(Hopefully) this makes implementing updaters using external libraries easier on other platforms. To implement an updater on a new platform, create a new class that implements the pure virtual methods from `ExternalUpdater` and add code in the `UpdateChecker` initializer to initialize the new class.
2022-05-19 15:16:37 -04:00
Kenneth Chew
34adcec616
Add functionality to (Sparkle) updater settings on macOS
Also remove a debug line I accidentally left in
2022-05-19 15:16:37 -04:00
Kenneth Chew
f9f46609ee
Use my public key and appcast URL for testing purposes
This is for testing the PR only. If merged, this must be removed.
2022-05-19 15:16:37 -04:00
Kenneth Chew
b5bdfa6c2e
Implement automatic and manual updates on macOS 2022-05-19 15:16:37 -04:00
Kenneth Chew
ea4ef1655b
Create SparkleUpdater class for access from Qt/C++
To actually get automatic updates going, all that needs to happen is that `SparkleUpdater` needs to be initialized.

The rest of the functions can be connected to elements in the UI.
2022-05-19 15:16:37 -04:00
Kenneth Chew
7eb61a28be
Add build options for Sparkle updater
Two new build options are added:

`MAC_SPARKLE_PUB_KEY`: the public key used to verify the signatures of the appcast
`MAC_SPARKLE_APPCAST_URL`: the URL where the `appcast.xml` is located

If the updater should be disabled on macOS, set either of these to an empty string.
2022-05-19 15:16:37 -04:00
Kenneth Chew
92b913ca37
Add Sparkle Updater framework to macOS build 2022-05-19 15:16:37 -04:00
txtsd
6961a39cd2
feat: Assign java max mem based on system RAM
If the system has <6GB RAM, it uses (system RAM / 1.5)
If the system has >=6GB, it uses 4GB

Signed-off-by: txtsd <code@ihavea.quest>
2022-01-23 02:12:03 +05:30
1504 changed files with 103871 additions and 55425 deletions

View File

@ -1,16 +1,17 @@
---
Language: Cpp
BasedOnStyle: Chromium
BasedOnStyle: Chromium
IndentWidth: 4
AlignConsecutiveMacros: false
AlignConsecutiveAssignments: false
AllowShortIfStatementsOnASingleLine: false
ColumnLimit: 140
---
Language: Cpp
AlignConsecutiveMacros: None
AlignConsecutiveAssignments: None
BraceWrapping:
AfterFunction: true
AfterFunction: true
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: false
BreakBeforeBraces: Custom
BreakConstructorInitializers: BeforeComma
ColumnLimit: 140
Cpp11BracedListStyle: false

4
.clang-tidy Normal file
View File

@ -0,0 +1,4 @@
Checks:
- modernize-use-using
SystemHeaders: false

8
.editorconfig Normal file
View File

@ -0,0 +1,8 @@
# EditorConfig specs and documentation: https://EditorConfig.org
# top-most EditorConfig file
root = true
# C++ Code Style settings
[*.{c++,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}]
cpp_generate_documentation_comments = doxygen_slash_star

2
.envrc Normal file
View File

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

4
.git-blame-ignore-revs Normal file
View File

@ -0,0 +1,4 @@
# .git-blame-ignore-revs
# tabs -> spaces
bbb3b3e6f6e3c0f95873f22e6d0a4aaf350f49d9

2
.github/FUNDING.yml vendored
View File

@ -1 +1 @@
open_collective: polymc
open_collective: prismlauncher

View File

@ -8,9 +8,9 @@ body:
If you need help with running Minecraft, please visit us on our Discord before making a bug report.
Before submitting a bug report, please make sure you have read this *entire* form, and that:
* You have read the [PolyMC wiki](https://polymc.org/wiki/) and it has not answered your question.
* You have read the [Prism Launcher wiki](https://prismlauncher.org/wiki/) and it has not answered your question.
* Your bug is not caused by Minecraft or any mods you have installed.
* Your issue has not been reported before, [make sure to use the search function!](https://github.com/PolyMC/PolyMC/issues)
* Your issue has not been reported before, [make sure to use the search function!](https://github.com/PrismLauncher/PrismLauncher/issues)
**Do not forget to give your issue a descriptive title.** "Bug in the instance screen" makes it hard to distinguish issues at a glance.
- type: dropdown
@ -25,9 +25,16 @@ body:
- Other
- type: textarea
attributes:
label: Version of PolyMC
description: The version of PolyMC used in the bug report.
placeholder: PolyMC 1.2.2
label: Version of Prism Launcher
description: The version of Prism Launcher used in the bug report.
placeholder: Prism Launcher 5.0
validations:
required: true
- type: textarea
attributes:
label: Version of Qt
description: The version of Qt used in the bug report. You can find it in Help -> About Prism Launcher -> About Qt.
placeholder: Qt 6.3.0
validations:
required: true
- type: textarea

View File

@ -1,5 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: PolyMC Matrix Support Room
url: https://matrix.to/#/#support:polymc.org
- name: Prism Launcher Matrix Support Room
url: https://matrix.to/#/#prism-support:matrix.org
about: Please ask for support here before opening an issue.

View File

@ -6,7 +6,7 @@ body:
- type: markdown
attributes:
value: |
### Use this form to suggest a larger change for PolyMC.
### Use this form to suggest a larger change for Prism Launcher.
- type: textarea
attributes:
label: Goal
@ -18,7 +18,7 @@ body:
attributes:
label: Motivation
description: |
Introduce the topic. If this is a not-well-known section of PolyMC, a detailed explanation of the background is recommended.
Introduce the topic. If this is a not-well-known section of Prism Launcher, a detailed explanation of the background is recommended.
Some example points of discussion:
- What specific problems are you facing right now that you're trying to address?
- Are there any previous discussions? Link to them and summarize them (don't force your readers to read them though!).

View File

@ -5,25 +5,25 @@ body:
- type: markdown
attributes:
value: |
### Use this form to suggest a feature for PolyMC.
### Use this form to suggest a feature for Prism Launcher.
- type: input
attributes:
label: Role
description: In what way do you use PolyMC that needs this feature?
description: In what way do you use Prism Launcher that needs this feature?
placeholder: I play modded Minecraft.
validations:
required: true
- type: input
attributes:
label: Suggestion
description: What do you want PolyMC to do?
description: What do you want Prism Launcher to do?
placeholder: I want the cat button to meow.
validations:
required: true
- type: input
attributes:
label: Benefit
description: Why do you need PolyMC to do this?
description: Why do you need Prism Launcher to do this?
placeholder: so that I can always hear a cat when I need to.
validations:
required: true

3
.github/codeql/codeql-config.yml vendored Normal file
View File

@ -0,0 +1,3 @@
query-filters:
- exclude:
id: cpp/fixme-comment

2
.github/dco.yml vendored Normal file
View File

@ -0,0 +1,2 @@
allowRemediationCommits:
individual: true

9
.github/pull_request_template.md vendored Normal file
View File

@ -0,0 +1,9 @@
<!--
Hey there! Thanks for your contribution.
Please make sure that your commits are signed off first.
If you don't know how that works, check out our contribution guidelines: https://github.com/PrismLauncher/PrismLauncher/blob/develop/CONTRIBUTING.md#signing-your-work
If you already created your commits, you can run `git rebase --signoff develop` to retroactively sign-off all your commits and `git push --force` to override what you have pushed already.
Note that signing and signing-off are two different things!
-->

View File

@ -1,19 +1,32 @@
name: Backport PR to stable
name: Backport
on:
pull_request:
branches: [ develop ]
types: [ closed ]
pull_request_target:
types: [closed, labeled]
# WARNING:
# When extending this action, be aware that $GITHUB_TOKEN allows write access to
# the GitHub repository. This means that it should not evaluate user input in a
# way that allows code injection.
permissions:
contents: read
jobs:
release_pull_request:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'backport')
backport:
permissions:
contents: write # for korthout/backport-action to create branch
pull-requests: write # for korthout/backport-action to create PR to backport
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
steps:
- name: checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Backport PR by cherry-pick-ing
uses: Nathanmalnoury/gh-backport-action@master
with:
pr_branch: 'stable'
github_token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Create backport PRs
uses: korthout/backport-action@v2.1.0
with:
# Config README: https://github.com/korthout/backport-action#backport-action
pull_description: |-
Bot-based backport to `${target_branch}`, triggered by a label in #${pull_number}.

View File

@ -7,6 +7,29 @@ on:
description: Type of build (Debug, Release, RelWithDebInfo, MinSizeRel)
type: string
default: Debug
is_qt_cached:
description: Enable Qt caching or not
type: string
default: true
secrets:
SPARKLE_ED25519_KEY:
description: Private key for signing Sparkle updates
required: false
WINDOWS_CODESIGN_CERT:
description: Certificate for signing Windows builds
required: false
WINDOWS_CODESIGN_PASSWORD:
description: Password for signing Windows builds
required: false
CACHIX_AUTH_TOKEN:
description: Private token for authenticating against Cachix cache
required: false
GPG_PRIVATE_KEY:
description: Private key for AppImage signing
required: false
GPG_PRIVATE_KEY_ID:
description: ID for the GPG_PRIVATE_KEY, to select the signing key
required: false
jobs:
build:
@ -14,22 +37,64 @@ jobs:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
qt_ver: 5
- os: ubuntu-20.04
- os: ubuntu-20.04
appimage: true
qt_ver: 6
qt_host: linux
qt_arch: ""
qt_version: "6.2.4"
qt_modules: "qt5compat qtimageformats"
qt_tools: ""
- os: windows-2022
name: "Windows-i686"
msystem: mingw32
name: "Windows-MinGW-w64"
msystem: clang64
vcvars_arch: "amd64_x86"
- os: windows-2022
name: "Windows-x86_64"
msystem: mingw64
name: "Windows-MSVC"
msystem: ""
architecture: "x64"
vcvars_arch: "amd64"
qt_ver: 6
qt_host: windows
qt_arch: ''
qt_version: '6.6.0'
qt_modules: 'qt5compat qtimageformats'
qt_tools: ''
- os: macos-11
- os: windows-2022
name: "Windows-MSVC-arm64"
msystem: ""
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: ''
- os: macos-12
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: ""
runs-on: ${{ matrix.os }}
@ -40,40 +105,61 @@ jobs:
INSTALL_APPIMAGE_DIR: "install-appdir"
BUILD_DIR: "build"
CCACHE_VAR: ""
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1
steps:
##
# PREPARE
##
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: 'true'
submodules: "true"
- name: 'Setup MSYS2'
if: runner.os == 'Windows'
- name: "Setup MSYS2"
if: runner.os == 'Windows' && matrix.msystem != ''
uses: msys2/setup-msys2@v2
with:
msystem: ${{ matrix.msystem }}
update: true
install: >-
git
mingw-w64-x86_64-binutils
pacboy: >-
toolchain:p
cmake:p
extra-cmake-modules:p
ninja:p
qt5:p
qt6-base:p
qt6-svg:p
qt6-imageformats:p
quazip-qt6:p
ccache:p
nsis:p
qt6-5compat:p
cmark:p
- name: Force newer ccache
if: runner.os == 'Windows' && matrix.msystem == '' && inputs.build_type == 'Debug'
run: |
choco install ccache --version 4.7.1
- name: Setup ccache
if: runner.os != 'Windows' && inputs.build_type == 'Debug'
uses: hendrikmuhs/ccache-action@v1.2.1
if: (runner.os != 'Windows' || matrix.msystem == '') && inputs.build_type == 'Debug'
uses: hendrikmuhs/ccache-action@v1.2.10
with:
key: ${{ matrix.os }}-${{ matrix.appimage }}
key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}-${{ matrix.architecture }}
- name: Setup ccache (Windows)
if: runner.os == 'Windows' && inputs.build_type == 'Debug'
- name: Retrieve ccache cache (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug'
uses: actions/cache@v3.3.2
with:
path: '${{ github.workspace }}\.ccache'
key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }}
restore-keys: |
${{ matrix.os }}-mingw-w64-ccache
- name: Setup ccache (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug'
shell: msys2 {0}
run: |
ccache --set-config=cache_dir='${{ github.workspace }}\.ccache'
@ -88,69 +174,123 @@ jobs:
run: |
echo "CCACHE_VAR=ccache" >> $GITHUB_ENV
- name: Retrieve ccache cache (Windows)
if: runner.os == 'Windows' && inputs.build_type == 'Debug'
uses: actions/cache@v3.0.2
with:
path: '${{ github.workspace }}\.ccache'
key: ${{ matrix.os }}-${{ matrix.msystem }}
restore-keys: |
${{ matrix.os }}-${{ matrix.msystem }}
- name: Set short version
shell: bash
run: |
ver_short=`git rev-parse --short HEAD`
echo "VERSION=$ver_short" >> $GITHUB_ENV
- name: Install Qt (macOS)
if: runner.os == 'macOS'
run: |
brew update
brew install qt@5 ninja
- name: Update Qt (AppImage)
if: runner.os == 'Linux' && matrix.appimage == true
run: |
sudo add-apt-repository ppa:savoury1/qt-5-15
sudo add-apt-repository ppa:savoury1/kde-5-80
sudo add-apt-repository ppa:savoury1/gpg
sudo add-apt-repository ppa:savoury1/ffmpeg4
- name: Install Qt (Linux)
- name: Install Dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get -y update
sudo apt-get -y install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 ninja-build qt5-image-formats-plugins
sudo apt-get -y install ninja-build extra-cmake-modules scdoc appstream
- name: Install Dependencies (macOS)
if: runner.os == 'macOS'
run: |
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
with:
aqtversion: "==3.1.*"
py7zrversion: ">=0.20.2"
version: ${{ matrix.qt_version }}
host: "windows"
target: "desktop"
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
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 }}
tools: ${{ matrix.qt_tools }}
cache: ${{ inputs.is_qt_cached }}
- name: Install MSVC (Windows MSVC)
if: runner.os == 'Windows' # We want this for MinGW builds as well, as we need SignTool
uses: ilammy/msvc-dev-cmd@v1
with:
vsversion: 2022
arch: ${{ matrix.vcvars_arch }}
- name: Prepare AppImage (Linux)
if: runner.os == 'Linux' && matrix.appimage == true
if: runner.os == 'Linux' && matrix.qt_ver != 5
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/AppImageCommunity/AppImageUpdate/releases/download/continuous/AppImageUpdate-x86_64.AppImage"
${{ 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
##
# CONFIGURE
##
- name: Configure CMake (macOS)
if: runner.os == 'macOS'
if: runner.os == 'macOS' && matrix.qt_ver == 6
run: |
cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DQt5_DIR=/usr/local/opt/qt@5 -DCMAKE_PREFIX_PATH=/usr/local/opt/qt@5 -DLauncher_BUILD_PLATFORM=macOS -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -G Ninja
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 (Windows)
if: runner.os == 'Windows'
- 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
- 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=${{ matrix.name }} -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -G Ninja
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
- name: Configure CMake (Windows MSVC)
if: runner.os == 'Windows' && matrix.msystem == ''
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
- 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=Linux -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -G Ninja
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
##
# BUILD
@ -161,12 +301,37 @@ jobs:
run: |
cmake --build ${{ env.BUILD_DIR }}
- name: Build (Windows)
if: runner.os == 'Windows'
- name: Build (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != ''
shell: msys2 {0}
run: |
cmake --build ${{ env.BUILD_DIR }}
- name: Build (Windows MSVC)
if: runner.os == 'Windows' && matrix.msystem == ''
run: |
cmake --build ${{ env.BUILD_DIR }} --config ${{ inputs.build_type }}
##
# TEST
##
- name: Test
if: runner.os != 'Windows'
run: |
ctest -E "^example64|example$" --test-dir build --output-on-failure
- name: Test (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != ''
shell: msys2 {0}
run: |
ctest -E "^example64|example$" --test-dir build --output-on-failure
- name: Test (Windows MSVC)
if: runner.os == 'Windows' && matrix.msystem == '' && matrix.architecture != 'arm64'
run: |
ctest -E "^example64|example$" --test-dir build --output-on-failure -C ${{ inputs.build_type }}
##
# PACKAGE BUILDS
##
@ -177,70 +342,149 @@ jobs:
cmake --install ${{ env.BUILD_DIR }}
cd ${{ env.INSTALL_DIR }}
chmod +x "PolyMC.app/Contents/MacOS/polymc"
sudo codesign --sign - --deep --force --entitlements "../program_info/App.entitlements" --options runtime "PolyMC.app/Contents/MacOS/polymc"
tar -czf ../PolyMC.tar.gz *
chmod +x "PrismLauncher.app/Contents/MacOS/prismlauncher"
sudo codesign --sign - --deep --force --entitlements "../program_info/App.entitlements" --options runtime "PrismLauncher.app/Contents/MacOS/prismlauncher"
mv "PrismLauncher.app" "Prism Launcher.app"
tar -czf ../PrismLauncher.tar.gz *
- name: Package (Windows)
if: runner.os == 'Windows'
- 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)
rm ed25519-priv.pem
cat >> $GITHUB_STEP_SUMMARY << EOF
### Artifact Information :information_source:
- :memo: Sparkle Signature (ed25519): \`$signature\`
EOF
else
cat >> $GITHUB_STEP_SUMMARY << EOF
### Artifact Information :information_source:
- :warning: Sparkle Signature (ed25519): No private key available (likely a pull request or fork)
EOF
fi
- name: Package (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != ''
shell: msys2 {0}
run: |
cmake --install ${{ env.BUILD_DIR }}
touch ${{ env.INSTALL_DIR }}/manifest.txt
for l in $(find ${{ env.INSTALL_DIR }} -type f); do l=$(cygpath -u $l); l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_DIR }}/}; l=${l#./}; echo $l; done >> ${{ env.INSTALL_DIR }}/manifest.txt
- name: Package (Windows MSVC)
if: runner.os == 'Windows' && matrix.msystem == ''
run: |
cmake --install ${{ env.BUILD_DIR }} --config ${{ inputs.build_type }}
cd ${{ env.INSTALL_DIR }}
if [ "${{ matrix.msystem }}" == "mingw32" ]; then
cp /mingw32/bin/libcrypto-1_1.dll /mingw32/bin/libssl-1_1.dll ./
elif [ "${{ matrix.msystem }}" == "mingw64" ]; then
cp /mingw64/bin/libcrypto-1_1-x64.dll /mingw64/bin/libssl-1_1-x64.dll ./
fi
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 }}
- name: Package (Windows, portable)
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
- name: Fetch codesign certificate (Windows)
if: runner.os == 'Windows'
shell: bash # yes, we are not using MSYS2 or PowerShell here
run: |
echo '${{ secrets.WINDOWS_CODESIGN_CERT }}' | base64 --decode > codesign.pfx
- name: Sign executable (Windows)
if: runner.os == 'Windows'
run: |
if (Get-Content ./codesign.pfx){
cd ${{ env.INSTALL_DIR }}
# We ship the exact same executable for portable and non-portable editions, so signing just once is fine
SignTool sign /fd sha256 /td sha256 /f ../codesign.pfx /p '${{ secrets.WINDOWS_CODESIGN_PASSWORD }}' /tr http://timestamp.digicert.com prismlauncher.exe prismlauncher_updater.exe prismlauncher_filelink.exe
} else {
":warning: Skipped code signing for Windows, as certificate was not present." >> $env:GITHUB_STEP_SUMMARY
}
- name: Package (Windows MinGW-w64, portable)
if: runner.os == 'Windows' && matrix.msystem != ''
shell: msys2 {0}
run: |
cp -r ${{ env.INSTALL_DIR }} ${{ env.INSTALL_PORTABLE_DIR }} # cmake install on Windows is slow, let's just copy instead
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} --component portable
for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); do l=$(cygpath -u $l); l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done >> ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt
- name: Package (Windows MSVC, portable)
if: runner.os == 'Windows' && matrix.msystem == ''
run: |
cp -r ${{ env.INSTALL_DIR }} ${{ env.INSTALL_PORTABLE_DIR }} # cmake install on Windows is slow, let's just copy instead
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_PORTABLE_DIR }} --component portable
Get-ChildItem ${{ env.INSTALL_PORTABLE_DIR }} -Recurse | ForEach FullName | Resolve-Path -Relative | %{ $_.TrimStart('.\') } | %{ $_.TrimStart('${{ env.INSTALL_PORTABLE_DIR }}') } | %{ $_.TrimStart('\') } | Out-File -FilePath ${{ env.INSTALL_DIR }}/manifest.txt
- name: Package (Windows, installer)
if: runner.os == 'Windows'
shell: msys2 {0}
run: |
cd ${{ env.INSTALL_DIR }}
makensis -NOCD "-DVERSION=${{ env.VERSION }}" "-DMUI_ICON=${{ github.workspace }}/program_info/polymc.ico" "-XOutFile ${{ github.workspace }}/PolyMC-Setup.exe" "${{ github.workspace }}/program_info/win_install.nsi"
makensis -NOCD "${{ github.workspace }}/${{ env.BUILD_DIR }}/program_info/win_install.nsi"
- name: Sign installer (Windows)
if: runner.os == 'Windows'
run: |
if (Get-Content ./codesign.pfx){
SignTool sign /fd sha256 /td sha256 /f codesign.pfx /p '${{ secrets.WINDOWS_CODESIGN_PASSWORD }}' /tr http://timestamp.digicert.com PrismLauncher-Setup.exe
} else {
":warning: Skipped code signing for Windows, as certificate was not present." >> $env:GITHUB_STEP_SUMMARY
}
- name: Package (Linux)
if: runner.os == 'Linux' && matrix.appimage != true
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 ../PolyMC.tar.gz *
tar --owner root --group root -czf ../PrismLauncher.tar.gz *
- name: Package (Linux, portable)
if: runner.os == 'Linux' && matrix.appimage != true
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 ../PolyMC-portable.tar.gz *
tar -czf ../PrismLauncher-portable.tar.gz *
- name: Package AppImage (Linux)
if: runner.os == 'Linux' && matrix.appimage == true
if: runner.os == 'Linux' && matrix.qt_ver != 5
shell: bash
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
run: |
cmake --install ${{ env.BUILD_DIR }} --prefix ${{ env.INSTALL_APPIMAGE_DIR }}/usr
export OUTPUT="PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage"
mv ${{ env.INSTALL_APPIMAGE_DIR }}/usr/share/metainfo/org.prismlauncher.PrismLauncher.metainfo.xml ${{ env.INSTALL_APPIMAGE_DIR }}/usr/share/metainfo/org.prismlauncher.PrismLauncher.appdata.xml
export "NO_APPSTREAM=1" # we have to skip appstream checking because appstream on ubuntu 20.04 is outdated
export OUTPUT="PrismLauncher-Linux-x86_64.AppImage"
chmod +x linuxdeploy-*.AppImage
mkdir -p ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-{8,17}-openjdk
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/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"
@ -248,7 +492,24 @@ jobs:
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/jvm/java-17-openjdk/lib"
export LD_LIBRARY_PATH
./linuxdeploy-x86_64.AppImage --appdir ${{ env.INSTALL_APPIMAGE_DIR }} --output appimage --plugin qt -i ${{ env.INSTALL_APPIMAGE_DIR }}/usr/share/icons/hicolor/scalable/apps/org.polymc.PolyMC.svg
chmod +x AppImageUpdate-x86_64.AppImage
cp AppImageUpdate-x86_64.AppImage ${{ env.INSTALL_APPIMAGE_DIR }}/usr/bin
export UPDATE_INFORMATION="gh-releases-zsync|${{ github.repository_owner }}|${{ github.event.repository.name }}|latest|PrismLauncher-Linux-x86_64.AppImage.zsync"
if [ '${{ secrets.GPG_PRIVATE_KEY_ID }}' != '' ]; then
export SIGN=1
export SIGN_KEY=${{ secrets.GPG_PRIVATE_KEY_ID }}
mkdir -p ~/.gnupg/
echo "$GPG_PRIVATE_KEY" > ~/.gnupg/private.key
gpg --import ~/.gnupg/private.key
else
echo ":warning: Skipped code signing for Linux AppImage, as gpg key was not present." >> $GITHUB_STEP_SUMMARY
fi
./linuxdeploy-x86_64.AppImage --appdir ${{ env.INSTALL_APPIMAGE_DIR }} --output appimage --plugin qt -i ${{ env.INSTALL_APPIMAGE_DIR }}/usr/share/icons/hicolor/scalable/apps/org.prismlauncher.PrismLauncher.svg
mv "PrismLauncher-Linux-x86_64.AppImage" "PrismLauncher-Linux-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage"
##
# UPLOAD BUILDS
@ -258,49 +519,92 @@ jobs:
if: runner.os == 'macOS'
uses: actions/upload-artifact@v3
with:
name: PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}
path: PolyMC.tar.gz
name: PrismLauncher-${{ matrix.name }}-${{ env.VERSION }}-${{ inputs.build_type }}
path: PrismLauncher.tar.gz
- name: Upload binary zip (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v3
with:
name: PolyMC-${{ matrix.name }}-${{ env.VERSION }}-${{ inputs.build_type }}
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
with:
name: PolyMC-${{ matrix.name }}-Portable-${{ env.VERSION }}-${{ inputs.build_type }}
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
with:
name: PolyMC-${{ matrix.name }}-Setup-${{ env.VERSION }}-${{ inputs.build_type }}
path: PolyMC-Setup.exe
name: PrismLauncher-${{ matrix.name }}-Setup-${{ env.VERSION }}-${{ inputs.build_type }}
path: PrismLauncher-Setup.exe
- name: Upload binary tarball (Linux)
if: runner.os == 'Linux' && matrix.appimage != true
- name: Upload binary tarball (Linux, Qt 5)
if: runner.os == 'Linux' && matrix.qt_ver != 6
uses: actions/upload-artifact@v3
with:
name: PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}
path: PolyMC.tar.gz
name: PrismLauncher-${{ runner.os }}-Qt5-${{ env.VERSION }}-${{ inputs.build_type }}
path: PrismLauncher.tar.gz
- name: Upload binary tarball (Linux, portable)
if: runner.os == 'Linux' && matrix.appimage != true
- name: Upload binary tarball (Linux, portable, Qt 5)
if: runner.os == 'Linux' && matrix.qt_ver != 6
uses: actions/upload-artifact@v3
with:
name: PolyMC-${{ runner.os }}-Portable-${{ env.VERSION }}-${{ inputs.build_type }}
path: PolyMC-portable.tar.gz
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
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.appimage == true
if: runner.os == 'Linux' && matrix.qt_ver != 5
uses: actions/upload-artifact@v3
with:
name: PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage
path: PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage
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
with:
name: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage.zsync
path: PrismLauncher-Linux-x86_64.AppImage.zsync
- name: ccache stats (Windows MinGW-w64)
if: runner.os == 'Windows' && matrix.msystem != ''
shell: msys2 {0}
run: |
ccache -s
flatpak:
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.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

35
.github/workflows/codeql.yml vendored Normal file
View File

@ -0,0 +1,35 @@
name: "CodeQL Code Scanning"
on: [ push, pull_request, workflow_dispatch ]
jobs:
CodeQL:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: 'true'
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
config-file: ./.github/codeql/codeql-config.yml
queries: security-and-quality
languages: cpp, java
- name: Install Dependencies
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
- name: Configure and Build
run: |
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DLauncher_QT_VERSION_MAJOR=5 -G Ninja
cmake --build build
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

View File

@ -1,61 +0,0 @@
name: Comment on pull request
on:
workflow_run:
workflows: ['Build Application']
types: [completed]
jobs:
pr_comment:
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v5
with:
# This snippet is public-domain, taken from
# https://github.com/oprypin/nightly.link/blob/master/.github/workflows/pr-comment.yml
script: |
async function upsertComment(owner, repo, issue_number, purpose, body) {
const {data: comments} = await github.rest.issues.listComments(
{owner, repo, issue_number});
const marker = `<!-- bot: ${purpose} -->`;
body = marker + "\n" + body;
const existing = comments.filter((c) => c.body.includes(marker));
if (existing.length > 0) {
const last = existing[existing.length - 1];
core.info(`Updating comment ${last.id}`);
await github.rest.issues.updateComment({
owner, repo,
body,
comment_id: last.id,
});
} else {
core.info(`Creating a comment in issue / PR #${issue_number}`);
await github.rest.issues.createComment({issue_number, body, owner, repo});
}
}
const {owner, repo} = context.repo;
const run_id = ${{github.event.workflow_run.id}};
const pull_requests = ${{ toJSON(github.event.workflow_run.pull_requests) }};
if (!pull_requests.length) {
return core.error("This workflow doesn't match any pull requests!");
}
const artifacts = await github.paginate(
github.rest.actions.listWorkflowRunArtifacts, {owner, repo, run_id});
if (!artifacts.length) {
return core.error(`No artifacts found`);
}
let body = `Download the artifacts for this pull request:\n`;
for (const art of artifacts) {
body += `\n* [${art.name}.zip](https://nightly.link/${owner}/${repo}/actions/artifacts/${art.id}.zip)`;
}
core.info("Review thread message body:", body);
for (const pr of pull_requests) {
await upsertComment(owner, repo, pr.number,
"nightly-link", body);
}

View File

@ -3,28 +3,35 @@ name: Build Application
on:
push:
branches-ignore:
- 'stable'
- "renovate/**"
paths-ignore:
- '**.md'
- '**/LICENSE'
- 'flake.lock'
- '**.nix'
- 'packages/**'
- '.github/ISSUE_TEMPLATE/**'
- "**.md"
- "**/LICENSE"
- "flake.lock"
- "packages/**"
- ".github/ISSUE_TEMPLATE/**"
- ".markdownlint**"
pull_request:
paths-ignore:
- '**.md'
- '**/LICENSE'
- 'flake.lock'
- '**.nix'
- 'packages/**'
- '.github/ISSUE_TEMPLATE/**'
- "**.md"
- "**/LICENSE"
- "flake.lock"
- "packages/**"
- ".github/ISSUE_TEMPLATE/**"
- ".markdownlint**"
workflow_dispatch:
jobs:
build_debug:
name: Build Debug
uses: ./.github/workflows/build.yml
with:
build_type: Debug
is_qt_cached: true
secrets:
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 }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_PRIVATE_KEY_ID: ${{ secrets.GPG_PRIVATE_KEY_ID }}

View File

@ -3,15 +3,22 @@ name: Build Application and Make Release
on:
push:
tags:
- '*'
- "*"
jobs:
build_release:
name: Build Release
uses: ./.github/workflows/build.yml
with:
build_type: Release
is_qt_cached: false
secrets:
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 }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_PRIVATE_KEY_ID: ${{ secrets.GPG_PRIVATE_KEY_ID }}
create_release:
needs: build_release
@ -20,10 +27,10 @@ jobs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: 'true'
path: 'PolyMC-source'
submodules: "true"
path: "PrismLauncher-source"
- name: Download artifacts
uses: actions/download-artifact@v3
- name: Grab and store version
@ -32,22 +39,40 @@ jobs:
echo "VERSION=$tag_name" >> $GITHUB_ENV
- name: Package artifacts properly
run: |
mv ${{ github.workspace }}/PolyMC-source PolyMC-${{ env.VERSION }}
mv PolyMC-Linux-Portable*/PolyMC-portable.tar.gz PolyMC-Linux-Portable-${{ env.VERSION }}.tar.gz
mv PolyMC-Linux*/PolyMC.tar.gz PolyMC-Linux-${{ env.VERSION }}.tar.gz
mv PolyMC-*.AppImage/PolyMC-*.AppImage PolyMC-Linux-${{ env.VERSION }}-x86_64.AppImage
mv PolyMC-macOS*/PolyMC.tar.gz PolyMC-macOS-${{ env.VERSION }}.tar.gz
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
tar -czf PolyMC-${{ env.VERSION }}.tar.gz PolyMC-${{ env.VERSION }}
tar --exclude='.git' -czf PrismLauncher-${{ env.VERSION }}.tar.gz PrismLauncher-${{ env.VERSION }}
for d in PolyMC-Windows-*; do
for d in PrismLauncher-Windows-MSVC*; do
cd "${d}" || continue
ARCH="$(echo -n ${d} | cut -d '-' -f 3)"
LEGACY="$(echo -n ${d} | grep -o Legacy || true)"
ARM64="$(echo -n ${d} | grep -o arm64 || true)"
INST="$(echo -n ${d} | grep -o Setup || true)"
PORT="$(echo -n ${d} | grep -o Portable || true)"
NAME="PolyMC-Windows-${ARCH}"
NAME="PrismLauncher-Windows-MSVC"
test -z "${LEGACY}" || NAME="${NAME}-Legacy"
test -z "${ARM64}" || NAME="${NAME}-arm64"
test -z "${PORT}" || NAME="${NAME}-Portable"
test -z "${INST}" || mv PolyMC-*.exe ../${NAME}-Setup-${{ env.VERSION }}.exe
test -z "${INST}" || mv PrismLauncher-*.exe ../${NAME}-Setup-${{ env.VERSION }}.exe
test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" *
cd ..
done
for d in PrismLauncher-Windows-MinGW-w64*; do
cd "${d}" || continue
INST="$(echo -n ${d} | grep -o Setup || true)"
PORT="$(echo -n ${d} | grep -o Portable || true)"
NAME="PrismLauncher-Windows-MinGW-w64"
test -z "${PORT}" || NAME="${NAME}-Portable"
test -z "${INST}" || mv PrismLauncher-*.exe ../${NAME}-Setup-${{ env.VERSION }}.exe
test -n "${INST}" || zip -r -9 "../${NAME}-${{ env.VERSION }}.zip" *
cd ..
done
@ -55,22 +80,28 @@ jobs:
- name: Create release
id: create_release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ github.ref }}
name: PolyMC ${{ env.VERSION }}
name: Prism Launcher ${{ env.VERSION }}
draft: true
prerelease: false
files: |
PolyMC-Linux-${{ env.VERSION }}.tar.gz
PolyMC-Linux-Portable-${{ env.VERSION }}.tar.gz
PolyMC-Linux-${{ env.VERSION }}-x86_64.AppImage
PolyMC-Windows-i686-${{ env.VERSION }}.zip
PolyMC-Windows-i686-Portable-${{ env.VERSION }}.zip
PolyMC-Windows-i686-Setup-${{ env.VERSION }}.exe
PolyMC-Windows-x86_64-${{ env.VERSION }}.zip
PolyMC-Windows-x86_64-Portable-${{ env.VERSION }}.zip
PolyMC-Windows-x86_64-Setup-${{ env.VERSION }}.exe
PolyMC-macOS-${{ env.VERSION }}.tar.gz
PolyMC-${{ env.VERSION }}.tar.gz
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
PrismLauncher-Windows-MinGW-w64-Setup-${{ env.VERSION }}.exe
PrismLauncher-Windows-MSVC-arm64-${{ env.VERSION }}.zip
PrismLauncher-Windows-MSVC-arm64-Portable-${{ env.VERSION }}.zip
PrismLauncher-Windows-MSVC-arm64-Setup-${{ env.VERSION }}.exe
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-${{ env.VERSION }}.tar.gz

30
.github/workflows/update-flake.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Update Flake Lockfile
on:
schedule:
# run weekly on sunday
- cron: "0 0 * * 0"
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
update-flake:
if: github.repository == 'PrismLauncher/PrismLauncher'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@6a9a9e84a173d90b3ffb42c5ddaf9ea033fad011 # v23
- uses: DeterminateSystems/update-flake-lock@v20
with:
commit-msg: "chore(nix): update lockfile"
pr-title: "chore(nix): update lockfile"
pr-labels: |
Linux
packaging
simple change
changelog:omit

15
.github/workflows/winget.yml vendored Normal file
View File

@ -0,0 +1,15 @@
name: Publish to WinGet
on:
release:
types: [released]
jobs:
publish:
runs-on: windows-latest
steps:
- uses: vedantmgoyal2009/winget-releaser@v2
with:
identifier: PrismLauncher.PrismLauncher
version: ${{ github.event.release.tag_name }}
installers-regex: 'PrismLauncher-Windows-MSVC(:?-arm64|-Legacy)?-Setup-.+\.exe$'
token: ${{ secrets.WINGET_TOKEN }}

11
.gitignore vendored
View File

@ -11,10 +11,14 @@ html/
*.pro.user
CMakeLists.txt.user
CMakeLists.txt.user.*
CMakeSettings.json
/CMakeFiles
CMakeCache.txt
/.project
/.settings
/.idea
/.vscode
/.vs
cmake-build-*/
Debug
@ -42,8 +46,13 @@ run/
.cache/
# Nix/NixOS
result/
.direnv/
.pre-commit-config.yaml
result
# Flatpak
.flatpak-builder
flatbuild
# Snap
*.snap

26
.gitmodules vendored
View File

@ -1,8 +1,24 @@
[submodule "depends/libnbtplusplus"]
path = libraries/libnbtplusplus
url = https://github.com/PolyMC/libnbtplusplus.git
pushurl = git@github.com:PolyMC/libnbtplusplus.git
[submodule "libraries/quazip"]
path = libraries/quazip
url = https://github.com/stachenov/quazip.git
[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
[submodule "libraries/zlib"]
path = libraries/zlib
url = https://github.com/madler/zlib.git
[submodule "libraries/extra-cmake-modules"]
path = libraries/extra-cmake-modules
url = https://github.com/KDE/extra-cmake-modules
[submodule "libraries/cmark"]
path = libraries/cmark
url = https://github.com/commonmark/cmark.git
[submodule "flatpak/shared-modules"]
path = flatpak/shared-modules
url = https://github.com/flathub/shared-modules.git

12
.markdownlint.yaml Normal file
View File

@ -0,0 +1,12 @@
# MD013/line-length - Line length
MD013: false
# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
MD024:
siblings-only: true
# MD033/no-inline-html Inline HTML
MD033: false
# MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading
MD041: false

2
.markdownlintignore Normal file
View File

@ -0,0 +1,2 @@
libraries/nbtplusplus
libraries/quazip

View File

@ -1,5 +1,3 @@
# Build Instructions
Build instructions are available on [the website](https://polymc.org/wiki/development/build-instructions/).
If you would like to contribute or fix an issue with the Build instructions you can do so [here](https://github.com/PolyMC/polymc.github.io/blob/master/src/wiki/development/build-instructions.md).
Full build instructions are available on [the website](https://prismlauncher.org/wiki/development/build-instructions/).

View File

@ -1,19 +1,12 @@
cmake_minimum_required(VERSION 3.15) # minimum version required by QuaZip
if(WIN32)
# In Qt 5.1+ we have our own main() function, don't autolink to qtmain on Windows
cmake_policy(SET CMP0020 OLD)
endif()
project(Launcher)
include(CTest)
string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BUILD_DIR}" IS_IN_SOURCE_BUILD)
if(IS_IN_SOURCE_BUILD)
message(FATAL_ERROR "You are building the Launcher in-source. Please separate the build tree from the source tree.")
endif()
##################################### Set CMake options #####################################
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
@ -31,12 +24,61 @@ set(CMAKE_JAVA_TARGET_OUTPUT_DIR ${PROJECT_BINARY_DIR}/jars)
######## Set compiler flags ########
set(CMAKE_CXX_STANDARD_REQUIRED true)
set(CMAKE_C_STANDARD_REQUIRED true)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)
include(GenerateExportHeader)
set(CMAKE_CXX_FLAGS "-Wall -pedantic -Werror -Wno-deprecated-declarations -D_GLIBCXX_USE_CXX11_ABI=0 -fstack-protector-strong --param=ssp-buffer-size=4 ${CMAKE_CXX_FLAGS}")
if(UNIX AND APPLE)
set(CMAKE_CXX_FLAGS "-stdlib=libc++ ${CMAKE_CXX_FLAGS}")
if(MSVC)
# /GS Adds buffer security checks, default on but incuded anyway to mirror gcc's fstack-protector flag
# /permissive- specify standards-conforming compiler behavior, also enabled by Qt6, default on with std:c++20
# Use /W4 as /Wall includes unnesserey warnings such as added padding to structs
set(CMAKE_CXX_FLAGS "/GS /permissive- /W4 ${CMAKE_CXX_FLAGS}")
# /EHs Enables stack unwind semantics for standard C++ exceptions to ensure stackframes are unwound
# and object deconstructors are called when an exception is caught.
# without it memory leaks and a warning is printed
# /EHc tells the compiler to assume that functions declared as extern "C" never throw a C++ exception
# This appears to not always be a defualt compiler option in CMAKE
set(CMAKE_CXX_FLAGS "/EHsc ${CMAKE_CXX_FLAGS}")
# LINK accepts /SUBSYSTEM whics sets if we are a WINDOWS (gui) or a CONSOLE programs
# This implicitly selects an entrypoint specific to the subsystem selected
# qtmain/QtEntryPointLib provides the correct entrypoint (wWinMain) for gui programs
# Additinaly LINK autodetects we use a GUI so we can omit /SUBSYSTEM
# This allows tests to still use have console without using seperate linker flags
# /LTCG allows for linking wholy optimizated programs
# /MANIFEST:NO disables generating a manifest file, we instead provide our own
# /STACK sets the stack reserve size, ATL's pack list needs 3-4 MiB as of November 2022, provide 8 MiB
set(CMAKE_EXE_LINKER_FLAGS "/LTCG /MANIFEST:NO /STACK:8388608 ${CMAKE_EXE_LINKER_FLAGS}")
# /GL enables whole program optimizations
# /Gw helps reduce binary size
# /Gy allows the compiler to package individual functions
# /guard:cf enables control flow guard
foreach(lang C CXX)
set("CMAKE_${lang}_FLAGS_RELEASE" "/GL /Gw /Gy /guard:cf")
endforeach()
# See https://github.com/ccache/ccache/issues/1040
# Note, CMake 3.25 replaces this with CMAKE_MSVC_DEBUG_INFORMATION_FORMAT
# See https://cmake.org/cmake/help/v3.25/variable/CMAKE_MSVC_DEBUG_INFORMATION_FORMAT.html
foreach(config DEBUG RELWITHDEBINFO)
foreach(lang C CXX)
set(flags_var "CMAKE_${lang}_FLAGS_${config}")
string(REGEX REPLACE "/Z[Ii]" "/Z7" ${flags_var} "${${flags_var}}")
endforeach()
endforeach()
if(CMAKE_MSVC_RUNTIME_LIBRARY STREQUAL "MultiThreadedDLL")
set(CMAKE_MAP_IMPORTED_CONFIG_DEBUG Release "")
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release "")
endif()
else()
set(CMAKE_CXX_FLAGS "-Wall -pedantic -fstack-protector-strong --param=ssp-buffer-size=4 ${CMAKE_CXX_FLAGS}")
# 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}")
endif()
endif()
# Fix build with Qt 5.13
@ -44,9 +86,44 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_DEPRECATED_WARNINGS=Y")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_DISABLE_DEPRECATED_BEFORE=0x050C00")
# Fix aarch64 build for toml++
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTOML_ENABLE_FLOAT16=0")
# set CXXFLAGS for build targets
set(CMAKE_CXX_FLAGS_DEBUG "-O2 -D_FORTIFY_SOURCE=2 ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -D_FORTIFY_SOURCE=2 ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -D_FORTIFY_SOURCE=2 ${CMAKE_CXX_FLAGS_RELEASE}")
option(DEBUG_ADDRESS_SANITIZER "Enable Address Sanitizer in Debug builds" OFF)
# If this is a Debug build turn on address sanitiser
if ((CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") AND DEBUG_ADDRESS_SANITIZER)
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
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")
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")
link_libraries("asan")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
message(STATUS "Address Sanitizer available on MSVC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fsanitize=address /Oy-")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fsanitize=address /Oy-")
else()
message(STATUS "Address Sanitizer not available on compiler ${CMAKE_CXX_COMPILER_ID}")
endif()
endif()
option(ENABLE_LTO "Enable Link Time Optimization" off)
@ -54,63 +131,105 @@ if(ENABLE_LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_supported OUTPUT ipo_error)
if(ipo_supported AND (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel"))
message(STATUS "IPO / LTO enabled")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
elseif(ipo_supported)
message(STATUS "Not enabling IPO / LTO on debug builds")
if(ipo_supported)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL TRUE)
if(CMAKE_BUILD_TYPE)
if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
message(STATUS "IPO / LTO enabled")
else()
message(STATUS "Not enabling IPO / LTO on debug builds")
endif()
else()
message(STATUS "IPO / LTO will only be enabled for release builds")
endif()
else()
message(STATUS "IPO / LTO not supported: <${ipo_error}>")
endif()
endif()
option(BUILD_TESTING "Build the testing tree." ON)
find_package(ECM QUIET NO_MODULE)
if(NOT ECM_FOUND)
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/libraries/extra-cmake-modules/CMakeLists.txt")
message(STATUS "Using bundled ECM")
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/libraries/extra-cmake-modules/modules;${CMAKE_MODULE_PATH}")
else()
message(FATAL_ERROR
" Could not find ECM\n \n"
" Either install ECM using the system package manager or clone submodules\n"
" Submodules can be cloned with 'git submodule update --init --recursive'")
endif()
else()
set(CMAKE_MODULE_PATH "${ECM_MODULE_PATH};${CMAKE_MODULE_PATH}")
endif()
include(CTest)
include(ECMAddTests)
if(BUILD_TESTING)
enable_testing()
endif()
##################################### Set Application options #####################################
######## Set URLs ########
set(Launcher_NEWS_RSS_URL "https://polymc.org/feed/feed.xml" CACHE STRING "URL to fetch PolyMC's news RSS feed from.")
set(Launcher_NEWS_OPEN_URL "https://polymc.org/news" CACHE STRING "URL that gets opened when the user clicks 'More News'")
set(Launcher_HELP_URL "https://polymc.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_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 version numbers ########
set(Launcher_VERSION_MAJOR 1)
set(Launcher_VERSION_MINOR 3)
set(Launcher_VERSION_HOTFIX 1)
set(Launcher_VERSION_MAJOR 8)
set(Launcher_VERSION_MINOR 0)
# Build number
set(Launcher_VERSION_BUILD -1 CACHE STRING "Build number. -1 for no build number.")
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")
# Build platform.
set(Launcher_BUILD_PLATFORM "" CACHE STRING "A short string identifying the platform that this build was built for. Only used to display in the about dialog.")
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.")
# Channel list URL
set(Launcher_UPDATER_BASE "" CACHE STRING "Base URL for the updater.")
# Github repo URL with releases for updater
set(Launcher_UPDATER_GITHUB_REPO "https://github.com/PrismLauncher/PrismLauncher" CACHE STRING "Base github URL for the updater.")
# Name to help updater identify valid artifacts
set(Launcher_BUILD_ARTIFACT "" CACHE STRING "Artifact name to help the updater identify valid artifacts.")
# The metadata server
set(Launcher_META_URL "https://meta.polymc.org/v1/" CACHE STRING "URL to fetch Launcher's meta files from.")
set(Launcher_META_URL "https://meta.prismlauncher.org/v1/" CACHE STRING "URL to fetch Launcher's meta files from.")
# Imgur API Client ID
set(Launcher_IMGUR_CLIENT_ID "5b97b0713fba4a3" CACHE STRING "Client ID you can get from Imgur when you register an application")
# Bug tracker URL
set(Launcher_BUG_TRACKER_URL "https://github.com/PolyMC/PolyMC/issues" CACHE STRING "URL for the bug tracker.")
set(Launcher_BUG_TRACKER_URL "https://github.com/PrismLauncher/PrismLauncher/issues" CACHE STRING "URL for the bug tracker.")
# Translations Platform URL
set(Launcher_TRANSLATIONS_URL "https://hosted.weblate.org/projects/polymc/polymc/" CACHE STRING "URL for the translations platform.")
set(Launcher_TRANSLATIONS_URL "https://hosted.weblate.org/projects/prismlauncher/launcher/" CACHE STRING "URL for the translations platform.")
# Matrix Space
set(Launcher_MATRIX_URL "https://matrix.to/#/#polymc:matrix.org" CACHE STRING "URL to the Matrix Space")
set(Launcher_MATRIX_URL "https://prismlauncher.org/matrix" CACHE STRING "URL to the Matrix Space")
# Discord URL
set(Launcher_DISCORD_URL "https://discord.gg/Z52pwxWCHP" CACHE STRING "URL for the Discord guild.")
set(Launcher_DISCORD_URL "https://prismlauncher.org/discord" CACHE STRING "URL for the Discord guild.")
# Subreddit URL
set(Launcher_SUBREDDIT_URL "https://www.reddit.com/r/PolyMCLauncher/" CACHE STRING "URL for the subreddit.")
set(Launcher_SUBREDDIT_URL "https://prismlauncher.org/reddit" CACHE STRING "URL for the subreddit.")
# Builds
set(Launcher_FORCE_BUNDLED_LIBS OFF CACHE BOOL "Prevent using system libraries, if they are available as submodules")
set(Launcher_QT_VERSION_MAJOR "5" CACHE STRING "Major Qt version to build against")
set(Launcher_QT_VERSION_MAJOR "6" CACHE STRING "Major Qt version to build against")
# Native libraries
if(UNIX AND APPLE)
set(Launcher_GLFW_LIBRARY_NAME "libglfw.dylib" CACHE STRING "Name of native glfw library")
set(Launcher_OPENAL_LIBRARY_NAME "libopenal.dylib" CACHE STRING "Name of native openal library")
elseif(UNIX)
set(Launcher_GLFW_LIBRARY_NAME "libglfw.so" CACHE STRING "Name of native glfw library")
set(Launcher_OPENAL_LIBRARY_NAME "libopenal.so" CACHE STRING "Name of native openal library")
elseif(WIN32)
set(Launcher_GLFW_LIBRARY_NAME "glfw.dll" CACHE STRING "Name of native glfw library")
set(Launcher_OPENAL_LIBRARY_NAME "OpenAL.dll" CACHE STRING "Name of native openal library")
endif()
# API Keys
# NOTE: These API keys are here for convenience. If you rebrand this software or intend to break the terms of service
@ -121,34 +240,46 @@ set(Launcher_QT_VERSION_MAJOR "5" CACHE STRING "Major Qt version to build agains
# By using this key in your builds you accept the terms of use laid down in
# https://docs.microsoft.com/en-us/legal/microsoft-identity-platform/terms-of-use
set(Launcher_MSA_CLIENT_ID "549033b2-1532-4d4e-ae77-1bbaa46f9d74" CACHE STRING "Client ID you can get from Microsoft Identity Platform when you register an application")
set(Launcher_MSA_CLIENT_ID "c36a9fb6-4f2a-41ff-90bd-ae7cc92031eb" CACHE STRING "Client ID you can get from Microsoft Identity Platform when you register an application")
# By using this key in your builds you accept the terms and conditions laid down in
# https://support.curseforge.com/en/support/solutions/articles/9000207405-curse-forge-3rd-party-api-terms-and-conditions
# NOTE: CurseForge requires you to change this if you make any kind of derivative work.
set(Launcher_CURSEFORGE_API_KEY "$2a$10$1Oqr2MX3O4n/ilhFGc597u8tfI3L2Hyr9/rtWDAMRjghSQV2QUuxq" CACHE STRING "CurseForge API Key")
# This key was issued specifically for Prism Launcher
set(Launcher_CURSEFORGE_API_KEY "$2a$10$wuAJuNZuted3NORVmpgUC.m8sI.pv1tOPKZyBgLFGjxFp/br0lZCC" CACHE STRING "API key for the CurseForge platform")
set(Launcher_COMPILER_NAME ${CMAKE_CXX_COMPILER_ID})
set(Launcher_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION})
set(Launcher_COMPILER_TARGET_SYSTEM ${CMAKE_SYSTEM_NAME})
set(Launcher_COMPILER_TARGET_SYSTEM_VERSION ${CMAKE_SYSTEM_VERSION})
set(Launcher_COMPILER_TARGET_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR})
#### Check the current Git commit and branch
include(GetGitRevisionDescription)
git_get_exact_tag(Launcher_GIT_TAG)
get_git_head_revision(Launcher_GIT_REFSPEC Launcher_GIT_COMMIT)
message(STATUS "Git commit: ${Launcher_GIT_COMMIT}")
message(STATUS "Git tag: ${Launcher_GIT_TAG}")
message(STATUS "Git refspec: ${Launcher_GIT_REFSPEC}")
set(Launcher_RELEASE_VERSION_NAME "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_HOTFIX}")
set(Launcher_RELEASE_VERSION_NAME4 "${Launcher_RELEASE_VERSION_NAME}.0")
set(Launcher_RELEASE_VERSION_NAME4_COMMA "${Launcher_VERSION_MAJOR},${Launcher_VERSION_MINOR},${Launcher_VERSION_HOTFIX},0")
string(TIMESTAMP TODAY "%Y-%m-%d")
set(Launcher_RELEASE_TIMESTAMP "${TODAY}")
#### Custom target to just print the version.
add_custom_target(version echo "Version: ${Launcher_RELEASE_VERSION_NAME}")
add_custom_target(tcversion echo "\\#\\#teamcity[setParameter name=\\'env.LAUNCHER_VERSION\\' value=\\'${Launcher_RELEASE_VERSION_NAME}\\']")
set(Launcher_BUILD_TIMESTAMP "${TODAY}")
################################ 3rd Party Libs ################################
# Successive configurations of cmake without cleaning the build dir will cause zlib fallback to fail due to cached values
# Record when fallback triggered and skip this find_package
if(NOT Launcher_FORCE_BUNDLED_LIBS AND NOT FORCE_BUNDLED_ZLIB)
find_package(ZLIB QUIET)
endif()
if(NOT ZLIB_FOUND)
set(FORCE_BUNDLED_ZLIB TRUE CACHE BOOL "")
mark_as_advanced(FORCE_BUNDLED_ZLIB)
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)
@ -160,30 +291,68 @@ if(Launcher_QT_VERSION_MAJOR EQUAL 5)
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)
set(QT_VERSION_MAJOR 6)
find_package(Qt6 REQUIRED COMPONENTS Core CoreTools Widgets Concurrent Network Test Xml Core5Compat)
list(APPEND Launcher_QT_LIBS Qt6::Core5Compat)
if(NOT Launcher_FORCE_BUNDLED_LIBS)
find_package(QuaZip-Qt6 1.3 QUIET)
endif()
if (NOT QuaZip-Qt6_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()
else()
message(FATAL_ERROR "Qt version ${Launcher_QT_VERSION_MAJOR} is not supported")
endif()
# The Qt5 cmake files don't provide its install paths, so ask qmake.
include(QMakeQuery)
query_qmake(QT_INSTALL_PLUGINS QT_PLUGINS_DIR)
query_qmake(QT_INSTALL_IMPORTS QT_IMPORTS_DIR)
query_qmake(QT_INSTALL_LIBS QT_LIBS_DIR)
query_qmake(QT_INSTALL_LIBEXECS QT_LIBEXECS_DIR)
query_qmake(QT_HOST_DATA QT_DATA_DIR)
set(QT_MKSPECS_DIR ${QT_DATA_DIR}/mkspecs)
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()
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()
include(ECMQtDeclareLoggingCategory)
####################################### Program Info #######################################
set(Launcher_APP_BINARY_NAME "polymc" CACHE STRING "Name of the Launcher binary")
set(Launcher_APP_BINARY_NAME "prismlauncher" CACHE STRING "Name of the Launcher binary")
add_subdirectory(program_info)
####################################### Install layout #######################################
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)
endif()
if(NOT (UNIX AND APPLE))
# Install "portable.txt" if selected component is "portable"
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/${Launcher_Portable_File}" DESTINATION "." COMPONENT portable EXCLUDE_FROM_ALL)
@ -193,6 +362,7 @@ if(UNIX AND APPLE)
set(BINARY_DEST_DIR "${Launcher_Name}.app/Contents/MacOS")
set(LIBRARY_DEST_DIR "${Launcher_Name}.app/Contents/MacOS")
set(PLUGIN_DEST_DIR "${Launcher_Name}.app/Contents/MacOS")
set(FRAMEWORK_DEST_DIR "${Launcher_Name}.app/Contents/Frameworks")
set(RESOURCES_DEST_DIR "${Launcher_Name}.app/Contents/Resources")
set(JARS_DEST_DIR "${Launcher_Name}.app/Contents/MacOS/jars")
@ -200,46 +370,57 @@ if(UNIX AND APPLE)
set(APPS "\${CMAKE_INSTALL_PREFIX}/${Launcher_Name}.app")
# Mac bundle settings
set(MACOSX_BUNDLE_BUNDLE_NAME "${Launcher_Name}")
set(MACOSX_BUNDLE_INFO_STRING "${Launcher_Name}: A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once.")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.polymc.${Launcher_Name}")
set(MACOSX_BUNDLE_BUNDLE_VERSION "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_HOTFIX}")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_HOTFIX}")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.${Launcher_VERSION_HOTFIX}")
set(MACOSX_BUNDLE_BUNDLE_NAME "${Launcher_DisplayName}")
set(MACOSX_BUNDLE_INFO_STRING "${Launcher_DisplayName}: A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once.")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.prismlauncher.${Launcher_Name}")
set(MACOSX_BUNDLE_BUNDLE_VERSION "${Launcher_VERSION_NAME}")
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 "Copyright 2021-2022 ${Launcher_Copyright}")
set(MACOSX_BUNDLE_COPYRIGHT "© 2022-2023 ${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_DIR "${CMAKE_BINARY_DIR}/frameworks/Sparkle")
# directories to look for dependencies
set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${MACOSX_SPARKLE_DIR})
if(NOT MACOSX_SPARKLE_UPDATE_PUBLIC_KEY STREQUAL "" AND NOT MACOSX_SPARKLE_UPDATE_FEED_URL STREQUAL "")
set(Launcher_ENABLE_UPDATER YES)
endif()
# install as bundle
set(INSTALL_BUNDLE "full")
set(INSTALL_BUNDLE "full" CACHE STRING "Use fixup_bundle to bundle dependencies")
# Add the icon
install(FILES ${Launcher_Branding_ICNS} DESTINATION ${RESOURCES_DEST_DIR} RENAME ${Launcher_Name}.icns)
elseif(UNIX)
include(KDEInstallDirs)
set(BINARY_DEST_DIR "bin")
set(LIBRARY_DEST_DIR "lib${LIB_SUFFIX}")
set(JARS_DEST_DIR "share/jars")
set(LAUNCHER_DESKTOP_DEST_DIR "share/applications" CACHE STRING "Path to the desktop file directory")
set(LAUNCHER_METAINFO_DEST_DIR "share/metainfo" CACHE STRING "Path to the metainfo directory")
set(LAUNCHER_ICON_DEST_DIR "share/icons/hicolor/scalable/apps" CACHE STRING "Path to the scalable icon directory")
set(LAUNCHER_MAN_DEST_DIR "share/man/man6" CACHE STRING "Path to the man page directory")
set(JARS_DEST_DIR "share/${Launcher_Name}")
# install as bundle with no dependencies included
set(INSTALL_BUNDLE "nodeps")
set(INSTALL_BUNDLE "nodeps" CACHE STRING "Use fixup_bundle to bundle dependencies")
# Set RPATH
SET(Launcher_BINARY_RPATH "$ORIGIN/")
# jars path is determined on runtime, relative to "Application root path", generally /usr or the root of the portable bundle
set(Launcher_APP_BINARY_DEFS "-DLAUNCHER_JARS_LOCATION=${JARS_DEST_DIR}")
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${Launcher_Desktop} DESTINATION ${KDE_INSTALL_APPDIR})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${Launcher_MetaInfo} DESTINATION ${KDE_INSTALL_METAINFODIR})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${Launcher_SVG} DESTINATION "${KDE_INSTALL_ICONDIR}/hicolor/scalable/apps")
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${Launcher_mrpack_MIMEInfo} DESTINATION ${KDE_INSTALL_MIMEDIR})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${Launcher_Desktop} DESTINATION ${LAUNCHER_DESKTOP_DEST_DIR})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${Launcher_MetaInfo} DESTINATION ${LAUNCHER_METAINFO_DEST_DIR})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${Launcher_SVG} DESTINATION ${LAUNCHER_ICON_DEST_DIR})
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${Launcher_ManPage} DESTINATION ${LAUNCHER_MAN_DEST_DIR} RENAME "${Launcher_APP_BINARY_NAME}.6")
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/launcher/qtlogging.ini" DESTINATION "share/${Launcher_Name}")
if(Launcher_ManPage)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${Launcher_ManPage} DESTINATION "${KDE_INSTALL_MANDIR}/man6")
endif()
# Install basic runner script if component "portable" is selected
configure_file(launcher/Launcher.in "${CMAKE_CURRENT_BINARY_DIR}/LauncherScript" @ONLY)
@ -259,11 +440,13 @@ elseif(WIN32)
set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
# install as bundle
set(INSTALL_BUNDLE "full")
set(INSTALL_BUNDLE "full" CACHE STRING "Use fixup_bundle to bundle dependencies")
else()
message(FATAL_ERROR "Platform not supported")
endif()
################################ Included Libs ################################
include(ExternalProject)
@ -275,10 +458,34 @@ option(NBT_BUILD_TESTS "Build NBT library tests" OFF) #FIXME: fix unit tests.
add_subdirectory(libraries/libnbtplusplus)
add_subdirectory(libraries/systeminfo) # system information library
add_subdirectory(libraries/hoedown) # markdown parser
add_subdirectory(libraries/launcher) # java based launcher part for Minecraft
add_subdirectory(libraries/javacheck) # java compatibility checker
add_subdirectory(libraries/xz-embedded) # xz compression
if(FORCE_BUNDLED_ZLIB)
message(STATUS "Using bundled zlib")
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) # Suppress cmake warnings and allow INTERPROCEDURAL_OPTIMIZATION for 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.
# 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)
# zlib's cmake script renames a file, dirtying the submodule, see https://github.com/madler/zlib/issues/162
message(STATUS "Undoing Rename")
message(STATUS " ${CMAKE_CURRENT_SOURCE_DIR}/libraries/zlib/zconf.h")
file(RENAME "${CMAKE_CURRENT_SOURCE_DIR}/libraries/zlib/zconf.h.included" "${CMAKE_CURRENT_SOURCE_DIR}/libraries/zlib/zconf.h")
endif()
set(ZLIB_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libraries/zlib" "${CMAKE_CURRENT_SOURCE_DIR}/libraries/zlib" CACHE STRING "" FORCE)
set_target_properties(zlibstatic PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIR}")
add_library(ZLIB::ZLIB ALIAS zlibstatic)
set(ZLIB_LIBRARY ZLIB::ZLIB CACHE STRING "zlib library name")
find_package(ZLIB REQUIRED)
else()
message(STATUS "Using system zlib")
endif()
if (FORCE_BUNDLED_QUAZIP)
message(STATUS "Using bundled QuaZip")
set(BUILD_SHARED_LIBS 0) # link statically to avoid conflicts.
@ -288,16 +495,40 @@ else()
message(STATUS "Using system QuaZip")
endif()
add_subdirectory(libraries/rainbow) # Qt extension for colors
add_subdirectory(libraries/iconfix) # fork of Qt's QIcon loader
add_subdirectory(libraries/LocalPeer) # fork of a library from Qt solutions
add_subdirectory(libraries/classparser) # class parser library
add_subdirectory(libraries/optional-bare)
add_subdirectory(libraries/tomlc99) # toml parser
if(NOT tomlplusplus_FOUND)
message(STATUS "Using bundled tomlplusplus")
add_subdirectory(libraries/tomlplusplus) # toml parser
else()
message(STATUS "Using system tomlplusplus")
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)
add_subdirectory(libraries/cmark EXCLUDE_FROM_ALL) # Markdown parser
add_library(cmark::cmark ALIAS cmark_static)
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 ###############################
add_subdirectory(buildconfig)
if(BUILD_TESTING)
add_subdirectory(tests)
endif()
# NOTE: this must always be last to appease the CMake deity of quirky install command evaluation order.
add_subdirectory(launcher)

View File

@ -1,4 +1,5 @@
# Contributor Covenant Code of Conduct
This is a modified version of the Contributor Covenant.
See commit history to see our changes.
@ -62,7 +63,7 @@ representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement via email at
[polymc-enforcement@scrumplex.net](mailto:polymc-enforcement@scrumplex.net) (Email
[coc@scrumplex.net](mailto:coc@scrumplex.net) (Email
address subject to change).
All complaints will be reviewed and investigated promptly and fairly.
@ -133,4 +134,3 @@ For answers to common questions about this code of conduct, see the FAQ at
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

69
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,69 @@
# Contributions Guidelines
## 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.
In general, in order of importance:
- 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.
## Signing your work
In an effort to ensure that the code you contribute is actually compatible with the licenses in this codebase, we require you to sign-off all your contributions.
This can be done by appending `-s` to your `git commit` call, or by manually appending the following text to your commit message:
```text
<commit message>
Signed-off-by: Author name <Author email>
```
By signing off your work, you agree to the terms below:
```text
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.
```
These terms will be enforced once you create a pull request, and you will be informed automatically if any of your commits aren't signed-off by you.
As a bonus, you can also [cryptographically sign your commits][gh-signing-commits] and enable [vigilant mode][gh-vigilant-mode] on GitHub.
[gh-signing-commits]: https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits
[gh-vigilant-mode]: https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits
## Backporting to Release Branches
We use [automated backports](https://github.com/PrismLauncher/PrismLauncher/blob/develop/.github/workflows/backport.yml) to merge specific contributions from develop into `release` branches.
This is done when pull requests are merged and have labels such as `backport release-7.x` - which should be added along with the milestone for the release.

View File

@ -1,64 +1,121 @@
# PolyMC
## Prism Launcher
Copyright (C) 2012-2021 MultiMC Contributors
Copyright (C) 2021-2022 PolyMC Contributors
Prism Launcher - Minecraft Launcher
Copyright (C) 2022-2023 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
the Free Software Foundation, version 3.
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.
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/>.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
# Launcher (https://github.com/MultiMC/Launcher)
Copyright 2012-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
This file incorporates work covered by the following copyright and
permission notice:
http://www.apache.org/licenses/LICENSE-2.0
Copyright 2013-2021 MultiMC Contributors
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.
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
# MinGW runtime (Windows)
http://www.apache.org/licenses/LICENSE-2.0
Copyright (c) 2012 MinGW.org project
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.
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:
## PolyMC
The above copyright notice, this permission notice and the below disclaimer
shall be included in all copies or substantial portions of the Software.
PolyMC - Minecraft Launcher
Copyright (C) 2021-2022 PolyMC Contributors
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.
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.
# Qt 5
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.
Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
Contact: http://www.qt-project.org/legal
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Licensed under LGPL v2.1
This file incorporates work covered by the following copyright and
permission notice:
# libnbt++
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.
## MinGW-w64 runtime (Windows)
Copyright (c) 2009, 2010, 2011, 2012, 2013 by the mingw-w64 project
This license has been certified as open source. It has also been designated
as GPL compatible by the Free Software Foundation (FSF).
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions in source code must retain the accompanying copyright
notice, this list of conditions, and the following disclaimer.
2. Redistributions in binary form must reproduce the accompanying
copyright notice, this list of conditions, and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
3. Names of the copyright holders must not be used to endorse or promote
products derived from this software without prior written permission
from the copyright holders.
4. The right to distribute this software or to use it for any purpose does
not give you the right to use Servicemarks (sm) or Trademarks (tm) of
the copyright holders. Use of them is covered by separate agreement
with the copyright holders.
5. If any files are modified, you must cause the modified files to carry
prominent notices stating that you changed the files and the date of
any change.
Disclaimer
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED
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 HOLDERS 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.
Information on third party licenses used in MinGW-w64 can be found in its COPYING.MinGW-w64-runtime.txt.
## Qt 5/6
Copyright (C) 2022 The Qt Company Ltd and other contributors.
Contact: https://www.qt.io/licensing
Licensed under LGPL v3
## libnbt++
libnbt++ - A library for the Minecraft Named Binary Tag format.
Copyright (C) 2013, 2015 ljfa-ag
@ -76,7 +133,7 @@
You should have received a copy of the GNU Lesser General Public License
along with libnbt++. If not, see <http://www.gnu.org/licenses/>.
# rainbow (KGuiAddons)
## rainbow (KGuiAddons)
Copyright (C) 2007 Matthew Woehlke <mw_triad@users.sourceforge.net>
Copyright (C) 2007 Olaf Schmidt <ojschmidt@kde.org>
@ -99,25 +156,36 @@
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
# Hoedown
## cmark
Copyright (c) 2008, Natacha Porté
Copyright (c) 2011, Vicent Martí
Copyright (c) 2014, Xavier Mendez, Devin Torres and the Hoedown authors
Copyright (c) 2014, John MacFarlane
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
All rights reserved.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
# Batch icon set
* 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
OWNER 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.
## Batch icon set
You are free to use Batch (the "icon set") or any part thereof (the "icons")
in any personal, open-source or commercial work without obligation of payment
@ -133,7 +201,7 @@
PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THE USE OF THE ICONS,
EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
# Material Design Icons
## Material Design Icons
Copyright (c) 2014, Austin Andrews (http://materialdesignicons.com/),
with Reserved Font Name Material Design Icons.
@ -144,76 +212,82 @@
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
# Quazip
## Quazip
Copyright (C) 2005-2011 Sergey A. Tachenov
Copyright (C) 2005-2021 Sergey A. Tachenov
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
The QuaZip library is licensed under the GNU Lesser General Public
License V2.1 plus a static linking exception.
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 Lesser
General Public License for more details.
The original ZIP/UNZIP package (MiniZip) is copyrighted by Gilles
Vollant and contributors, see quazip/(un)zip.h files for details.
Basically it's the zlib license.
You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
STATIC LINKING EXCEPTION
The copyright holders give you permission to link this library with
independent modules to produce an executable, regardless of the license
terms of these independent modules, and to copy and distribute the
resulting executable under terms of your choice, provided that you also
meet, for each linked independent module, the terms and conditions of
the license of that module. An independent module is a module which is
not derived from or based on this library. If you modify this library,
you must extend this exception to your version of the library.
See COPYING file for the full LGPL text.
Original ZIP package is copyrighted by Gilles Vollant, see
quazip/(un)zip.h files for details, basically it's zlib license.
## launcher (`libraries/launcher`)
# xz-minidec
PolyMC - Minecraft Launcher
Copyright (C) 2021-2022 PolyMC Contributors
XZ decompressor
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.
Authors: Lasse Collin <lasse.collin@tukaani.org>
Igor Pavlov <http://7-zip.org/>
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.
This file has been put into the public domain.
You can do whatever you want with this file.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
# ColumnResizer
As a special exception, the copyright holders of this library give
you permission to link this library with independent modules to
produce an executable, regardless of the license terms of these
independent modules, and to copy and distribute the resulting
executable under terms of your choice, provided that you also meet,
for each linked independent module, the terms and conditions of the
license of that module. An independent module is a module which is
not derived from or based on this library. If you modify this
library, you may extend this exception to your version of the
library, but you are not obliged to do so. If you do not wish to do
so, delete this exception statement from your version.
Copyright (c) 2011-2016 Aurélien Gâteau and contributors.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
All rights reserved.
This file incorporates work covered by the following copyright and
permission notice:
Redistribution and use in source and binary forms, with or without
modification, are permitted (subject to the limitations in the
disclaimer below) provided that the following conditions are met:
Copyright 2013-2021 MultiMC Contributors
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
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
* 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.
http://www.apache.org/licenses/LICENSE-2.0
* The name of the contributors may not be used to endorse or
promote products derived from this software without specific prior
written permission.
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.
NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
GRANTED BY THIS LICENSE. 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 OWNER 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.
# lionshead
## lionshead
Code has been taken from https://github.com/natefoo/lionshead and loosely
translated to C++ laced with Qt.
@ -240,60 +314,26 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# optional-bare
Code from https://github.com/martinmoene/optional-bare/
Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
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, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
# tomlc99
## tomlplusplus
MIT License
Copyright (c) 2017 CK Tan
https://github.com/cktan/tomlc99
Copyright (c) Mark Gillard <mark.gillard@outlook.com.au>
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:
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 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.
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.
# O2 (Katabasis fork)
## O2 (Katabasis fork)
Copyright (c) 2012, Akos Polster
All rights reserved.
@ -318,3 +358,96 @@
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
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.
* Neither the name of Feral Interactive nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
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 OWNER 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.
## 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
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
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/>.
## Oxygen Icons
The Oxygen Icon Theme
Copyright (C) 2007 Nuno Pinheiro <nuno@oxygen-icons.org>
Copyright (C) 2007 David Vignoni <david@icon-king.com>
Copyright (C) 2007 David Miller <miller@oxygen-icons.org>
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
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
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/>.

134
README.md
View File

@ -1,91 +1,111 @@
<p align="center">
<img src="./program_info/polymc-header-black.svg#gh-light-mode-only" alt="PolyMC logo"/>
<img src="./program_info/polymc-header.svg#gh-dark-mode-only" alt="PolyMC logo"/>
<picture>
<source media="(prefers-color-scheme: dark)" srcset="/program_info/org.prismlauncher.PrismLauncher.logo-darkmode.svg">
<source media="(prefers-color-scheme: light)" srcset="/program_info/org.prismlauncher.PrismLauncher.logo.svg">
<img alt="Prism Launcher" src="/program_info/org.prismlauncher.PrismLauncher.logo.svg" width="40%">
</picture>
</p>
<br>
PolyMC is a custom launcher for Minecraft that focuses on predictability, long term stability and simplicity.
<p align="center">
Prism Launcher is a custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once.<br />
<br />This is a <b>fork</b> of the MultiMC Launcher and is <b>not</b> endorsed by it.
</p>
This is a **fork** of the MultiMC Launcher and not endorsed by MultiMC.
If you want to read about why this fork was created, check out [our FAQ page](https://polymc.org/wiki/overview/faq/).
<br>
## Installation
# Installation
<a href="https://repology.org/project/prismlauncher/versions">
<img src="https://repology.org/badge/vertical-allrepos/prismlauncher.svg" alt="Packaging status" align="right">
</a>
- All downloads and instructions for PolyMC can be found [here](https://polymc.org/download/)
- Last build status: https://github.com/PolyMC/PolyMC/actions
- All downloads and instructions for Prism Launcher can be found on our [Website](https://prismlauncher.org/download).
- Last build status can be found in the [GitHub Actions](https://github.com/PrismLauncher/PrismLauncher/actions) tab (this also includes the pull requests status).
### Development Builds
## Development Builds
Please understand that these builds are not intended for most users. There may be bugs, and other instabilities. You have been warned.
There are per-commit development builds available [here](https://github.com/PolyMC/PolyMC/actions). These have debug information in the binaries, so their file sizes are relatively larger.
Portable builds are provided for AppImage on Linux, Windows, and macOS.
There are development builds available through:
For Debian and Arch, you can use these packages for the latest development versions:
[![polymc-git](https://img.shields.io/badge/aur-polymc--git-blue)](https://aur.archlinux.org/packages/polymc-git/)
[![polymc-git](https://img.shields.io/badge/mpr-polymc--git-orange)](https://mpr.makedeb.org/packages/polymc-git)
For flatpak, you can use [flathub-beta](https://discourse.flathub.org/t/how-to-use-flathub-beta/2111)
- [GitHub Actions](https://github.com/PrismLauncher/PrismLauncher/actions) (includes builds from pull requests opened by contribuitors)
- [nightly.link](https://nightly.link/PrismLauncher/PrismLauncher/workflows/trigger_builds/develop) (this will always point only to the latest version of develop)
# Help & Support
These have debug information in the binaries, so their file sizes are relatively larger.
Feel free to create an issue if you need help. However, you might find it easier to ask in the Discord server.
Prebuilt Development builds are provided for **Linux**, **Windows** and **macOS**.
[![PolyMC Discord](https://img.shields.io/discord/923671181020766230?label=PolyMC%20Discord)](https://discord.gg/xq7fxrgtMP)
For **Arch**, **Debian**, **Fedora**, **OpenSUSE (Tumbleweed)** and **Gentoo**, respectively, you can use these packages for the latest development versions:
For people who don't want to use Discord, we have a Matrix Space which is bridged to the Discord server:
[![prismlauncher-git](https://img.shields.io/badge/aur-prismlauncher--git-1793D1?label=AUR&logo=archlinux&logoColor=white)](https://aur.archlinux.org/packages/prismlauncher-git) [![prismlauncher-git](https://img.shields.io/badge/aur-prismlauncher--qt5--git-1793D1?label=AUR&logo=archlinux&logoColor=white)](https://aur.archlinux.org/packages/prismlauncher-qt5-git) [![prismlauncher-git](https://img.shields.io/badge/mpr-prismlauncher--git-A80030?label=MPR&logo=debian&logoColor=white)](https://mpr.makedeb.org/packages/prismlauncher-git)<br />[![prismlauncher-nightly](https://img.shields.io/badge/copr-prismlauncher--nightly-51A2DA?label=COPR&logo=fedora&logoColor=white)](https://copr.fedorainfracloud.org/coprs/g3tchoo/prismlauncher/) [![prismlauncher-nightly](https://img.shields.io/badge/OBS-prismlauncher--nightly-3AB6A9?logo=opensuse&logoColor=white)](https://build.opensuse.org/project/show/home:getchoo) [![prismlauncher-9999](https://img.shields.io/badge/gentoo-prismlauncher--9999-4D4270?label=Gentoo&logo=gentoo&logoColor=white)](https://packages.gentoo.org/packages/games-action/prismlauncher)
[![PolyMC Space](https://img.shields.io/matrix/polymc:matrix.org?label=PolyMC%20space)](https://matrix.to/#/#polymc:matrix.org)
These packages are also available to all the distributions based on the ones mentioned above.
If there are any issues with the space or you are using a client that does not support the feature here are the individual rooms:
## Community & Support
[![Development](https://img.shields.io/matrix/polymc-development:matrix.org?label=PolyMC%20Development)](https://matrix.to/#/#polymc-development:matrix.org)
[![Discussion](https://img.shields.io/matrix/polymc-discussion:matrix.org?label=PolyMC%20Discussion)](https://matrix.to/#/#polymc-discussion:matrix.org)
[![Github](https://img.shields.io/matrix/polymc-github:matrix.org?label=PolyMC%20Github)](https://matrix.to/#/#polymc-github:matrix.org)
[![Maintainers](https://img.shields.io/matrix/polymc-maintainers:matrix.org?label=PolyMC%20Maintainers)](https://matrix.to/#/#polymc-maintainers:matrix.org)
[![News](https://img.shields.io/matrix/polymc-news:matrix.org?label=PolyMC%20News)](https://matrix.to/#/#polymc-news:matrix.org)
[![Offtopic](https://img.shields.io/matrix/polymc-offtopic:matrix.org?label=PolyMC%20Offtopic)](https://matrix.to/#/#polymc-offtopic:matrix.org)
[![Support](https://img.shields.io/matrix/polymc-support:matrix.org?label=PolyMC%20Support)](https://matrix.to/#/#polymc-support:matrix.org)
[![Voice](https://img.shields.io/matrix/polymc-voice:matrix.org?label=PolyMC%20Voice)](https://matrix.to/#/#polymc-voice:matrix.org)
Feel free to create a GitHub issue if you find a bug or want to suggest a new feature. We have multiple community spaces where other community members can help you:
we also have a subreddit you can post your issues and suggestions on:
- **Our Discord server:**
[r/PolyMCLauncher](https://www.reddit.com/r/PolyMCLauncher/)
[![Prism Launcher Discord server](https://discordapp.com/api/guilds/1031648380885147709/widget.png?style=banner3)](https://prismlauncher.org/discord)
# Development
- **Our Matrix space:**
If you want to contribute to PolyMC you might find it useful to join our Discord Server or Matrix Space.
[![Prism Launcher Space](https://img.shields.io/matrix/prismlauncher:matrix.org?style=for-the-badge&label=Matrix%20Space&logo=matrix&color=purple)](https://prismlauncher.org/matrix)
## Building
- **Our Subreddit:**
If you want to build PolyMC yourself, check [Build Instructions](https://polymc.org/wiki/development/build-instructions/) for build instructions.
## Code formatting
Just follow the existing formatting.
In general, in order of importance:
- 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.
[![r/PrismLauncher](https://img.shields.io/reddit/subreddit-subscribers/prismlauncher?style=for-the-badge&logo=reddit)](https://prismlauncher.org/reddit)
## Translations
The translation effort for PolyMC is hosted on [Weblate](https://hosted.weblate.org/projects/polymc/polymc/) and information about translating PolyMC is available at https://github.com/PolyMC/Translations
The translation effort for Prism Launcher is hosted on [Weblate](https://hosted.weblate.org/projects/prismlauncher/launcher/) and information about translating Prism Launcher is available at <https://github.com/PrismLauncher/Translations>.
## Download information
To modify download information or change packaging information send a pull request or issue to the website [Here](https://github.com/PolyMC/polymc.github.io/blob/master/src/download.md)
## Building
If you want to build Prism Launcher yourself, check the [Build Instructions](https://prismlauncher.org/wiki/development/build-instructions/).
## Sponsors & Partners
We thank all the wonderful backers over at Open Collective! Support Prism Launcher by [becoming a backer](https://opencollective.com/prismlauncher).
[![OpenCollective Backers](https://opencollective.com/prismlauncher/backers.svg?width=890&limit=1000)](https://opencollective.com/prismlauncher#backers)
Thanks to JetBrains for providing us a few licenses for all their products, as part of their [Open Source program](https://www.jetbrains.com/opensource/).
[![JetBrains](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/opensource/)
Thanks to Weblate for hosting our translation efforts.
<a href="https://hosted.weblate.org/engage/prismlauncher/">
<img src="https://hosted.weblate.org/widgets/prismlauncher/-/open-graph.png" alt="Translation status" width="300" />
</a>
Thanks to Netlify for providing us their excellent web services, as part of their [Open Source program](https://www.netlify.com/open-source/).
<a href="https://www.netlify.com"> <img src="https://www.netlify.com/v3/img/components/netlify-color-accent.svg" alt="Deploys by Netlify" /> </a>
Thanks to the awesome people over at [MacStadium](https://www.macstadium.com/), for providing M1-Macs for development purposes!
<a href="https://www.macstadium.com"><img src="https://uploads-ssl.webflow.com/5ac3c046c82724970fc60918/5c019d917bba312af7553b49_MacStadium-developerlogo.png" alt="Powered by MacStadium" width="300"></a>
## Forking/Redistributing/Custom builds policy
Do whatever you want, we don't care. Just follow the license. If you have any questions about this feel free to ask in an issue.
You are free to fork, redistribute and provide custom builds as long as you follow the terms of the [license](LICENSE) (this is a legal responsibility), and if you made code changes rather than just packaging a custom build, please do the following as a basic courtesy:
Be aware that if you build this software without removing the provided API keys in [CMakeLists.txt](CMakeLists.txt) you are accepting the following terms and conditions:
- [Microsoft Identity Platform Terms of Use](https://docs.microsoft.com/en-us/legal/microsoft-identity-platform/terms-of-use)
- [CurseForge 3rd Party API Terms and Conditions](https://support.curseforge.com/en/support/solutions/articles/9000207405-curse-forge-3rd-party-api-terms-and-conditions)
If you do not agree with these terms and conditions, then remove the associated API keys from the [CMakeLists.txt](CMakeLists.txt) file.
- Make it clear that your fork is not Prism Launcher and is not endorsed by or affiliated with the Prism Launcher project (<https://prismlauncher.org>).
- Go through [CMakeLists.txt](CMakeLists.txt) and change Prism Launcher's API keys to your own or set them to empty strings (`""`) to disable them (this way the program will still compile but the functionality requiring those keys will be disabled).
If you have any questions or want any clarification on the above conditions please make an issue and ask us.
If you are just building Prism Launcher for your distribution, please make sure to set the `Launcher_BUILD_PLATFORM` to a slug representing your distribution. Examples are `archlinux`, `fedora` and `nixpkgs`.
Note that if you build this software without removing the provided API keys in [CMakeLists.txt](CMakeLists.txt) you are accepting the following terms and conditions:
- [Microsoft Identity Platform Terms of Use](https://docs.microsoft.com/en-us/legal/microsoft-identity-platform/terms-of-use)
- [CurseForge 3rd Party API Terms and Conditions](https://support.curseforge.com/en/support/solutions/articles/9000207405-curse-forge-3rd-party-api-terms-and-conditions)
If you do not agree with these terms and conditions, then remove the associated API keys from the [CMakeLists.txt](CMakeLists.txt) file by setting them to an empty string (`""`).
## License [![https://github.com/PrismLauncher/PrismLauncher/blob/develop/LICENSE](https://img.shields.io/github/license/PrismLauncher/PrismLauncher?label=License&logo=gnu&color=C4282D)](LICENSE)
All launcher code is available under the GPL-3.0-only license.

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* This program is free software: you can redistribute it and/or modify
@ -33,6 +33,7 @@
* limitations under the License.
*/
#include <qstringliteral.h>
#include "BuildConfig.h"
#include <QObject>
@ -42,12 +43,14 @@ Config::Config()
{
// Name and copyright
LAUNCHER_NAME = "@Launcher_Name@";
LAUNCHER_APP_BINARY_NAME = "@Launcher_APP_BINARY_NAME@";
LAUNCHER_DISPLAYNAME = "@Launcher_DisplayName@";
LAUNCHER_COPYRIGHT = "@Launcher_Copyright@";
LAUNCHER_DOMAIN = "@Launcher_Domain@";
LAUNCHER_CONFIGFILE = "@Launcher_ConfigFile@";
LAUNCHER_GIT = "@Launcher_Git@";
LAUNCHER_DESKTOPFILENAME = "@Launcher_DesktopFileName@";
LAUNCHER_SVGFILENAME = "@Launcher_SVGFileName@";
USER_AGENT = "@Launcher_UserAgent@";
USER_AGENT_UNCACHED = USER_AGENT + " (Uncached)";
@ -55,25 +58,48 @@ Config::Config()
// Version information
VERSION_MAJOR = @Launcher_VERSION_MAJOR@;
VERSION_MINOR = @Launcher_VERSION_MINOR@;
VERSION_HOTFIX = @Launcher_VERSION_HOTFIX@;
VERSION_BUILD = @Launcher_VERSION_BUILD@;
BUILD_PLATFORM = "@Launcher_BUILD_PLATFORM@";
UPDATER_BASE = "@Launcher_UPDATER_BASE@";
BUILD_ARTIFACT = "@Launcher_BUILD_ARTIFACT@";
BUILD_DATE = "@Launcher_BUILD_TIMESTAMP@";
UPDATER_GITHUB_REPO = "@Launcher_UPDATER_GITHUB_REPO@";
COMPILER_NAME = "@Launcher_COMPILER_NAME@";
COMPILER_VERSION = "@Launcher_COMPILER_VERSION@";
COMPILER_TARGET_SYSTEM = "@Launcher_COMPILER_TARGET_SYSTEM@";
COMPILER_TARGET_SYSTEM_VERSION = "@Launcher_COMPILER_TARGET_SYSTEM_VERSION@";
COMPILER_TARGET_SYSTEM_PROCESSOR = "@Launcher_COMPILER_TARGET_PROCESSOR@";
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())
{
UPDATER_ENABLED = true;
} else if(!UPDATER_GITHUB_REPO.isEmpty() && !BUILD_ARTIFACT.isEmpty()) {
UPDATER_ENABLED = true;
}
GIT_COMMIT = "@Launcher_GIT_COMMIT@";
GIT_TAG = "@Launcher_GIT_TAG@";
GIT_REFSPEC = "@Launcher_GIT_REFSPEC@";
if (GIT_REFSPEC == QStringLiteral("GITDIR-NOTFOUND"))
// 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"))
{
VERSION_CHANNEL = QStringLiteral("stable");
GIT_REFSPEC = "refs/heads/stable";
GIT_TAG = versionString();
GIT_COMMIT = "";
}
else if(GIT_REFSPEC.startsWith("refs/heads/"))
if (GIT_REFSPEC.startsWith("refs/heads/"))
{
VERSION_CHANNEL = GIT_REFSPEC;
VERSION_CHANNEL.remove("refs/heads/");
if(!UPDATER_BASE.isEmpty() && !BUILD_PLATFORM.isEmpty() && VERSION_BUILD >= 0) {
UPDATER_ENABLED = true;
}
}
else if (!GIT_COMMIT.isEmpty())
{
@ -81,18 +107,20 @@ Config::Config()
}
else
{
VERSION_CHANNEL = QObject::tr("unknown");
VERSION_CHANNEL = "unknown";
}
VERSION_STR = "@Launcher_VERSION_STRING@";
NEWS_RSS_URL = "@Launcher_NEWS_RSS_URL@";
NEWS_OPEN_URL = "@Launcher_NEWS_OPEN_URL@";
HELP_URL = "@Launcher_HELP_URL@";
IMGUR_CLIENT_ID = "@Launcher_IMGUR_CLIENT_ID@";
MSA_CLIENT_ID = "@Launcher_MSA_CLIENT_ID@";
CURSEFORGE_API_KEY = "@Launcher_CURSEFORGE_API_KEY@";
FLAME_API_KEY = "@Launcher_CURSEFORGE_API_KEY@";
META_URL = "@Launcher_META_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@";
MATRIX_URL = "@Launcher_MATRIX_URL@";
@ -100,20 +128,32 @@ Config::Config()
SUBREDDIT_URL = "@Launcher_SUBREDDIT_URL@";
}
QString Config::versionString() const
{
return QString("%1.%2").arg(VERSION_MAJOR).arg(VERSION_MINOR);
}
QString Config::printableVersionString() const
{
QString vstr = QString("%1.%2.%3").arg(QString::number(VERSION_MAJOR), QString::number(VERSION_MINOR), QString::number(VERSION_HOTFIX));
QString vstr = versionString();
// If the build is not a main release, append the channel
if(VERSION_CHANNEL != "stable")
if(VERSION_CHANNEL != "stable" && GIT_TAG != vstr)
{
vstr += "-" + VERSION_CHANNEL;
}
// if a build number is set, also add it to the end
if(VERSION_BUILD >= 0)
{
vstr += "-" + QString::number(VERSION_BUILD);
}
return vstr;
}
QString Config::compilerID() const
{
if (COMPILER_VERSION.isEmpty())
return COMPILER_NAME;
return QStringLiteral("%1 - %2").arg(COMPILER_NAME).arg(COMPILER_VERSION);
}
QString Config::systemID() const
{
return QStringLiteral("%1 %2 %3").arg(COMPILER_TARGET_SYSTEM, COMPILER_TARGET_SYSTEM_VERSION, COMPILER_TARGET_SYSTEM_PROCESSOR);
}

View File

@ -1,8 +1,9 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Prism Launcher - Minecraft Launcher
* Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (C) 2023 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
@ -35,6 +36,7 @@
*/
#pragma once
#include <QList>
#include <QString>
/**
@ -44,21 +46,19 @@ class Config {
public:
Config();
QString LAUNCHER_NAME;
QString LAUNCHER_APP_BINARY_NAME;
QString LAUNCHER_DISPLAYNAME;
QString LAUNCHER_COPYRIGHT;
QString LAUNCHER_DOMAIN;
QString LAUNCHER_CONFIGFILE;
QString LAUNCHER_GIT;
QString LAUNCHER_DESKTOPFILENAME;
QString LAUNCHER_SVGFILENAME;
/// The major version number.
int VERSION_MAJOR;
/// The minor version number.
int VERSION_MINOR;
/// The hotfix number.
int VERSION_HOTFIX;
/// The build number.
int VERSION_BUILD;
/**
* The version channel
@ -68,11 +68,38 @@ class Config {
bool UPDATER_ENABLED = false;
/// A short string identifying this build's platform. For example, "lin64" or "win32".
/// A short string identifying this build's platform or distribution.
QString BUILD_PLATFORM;
/// A short string identifying this build's valid artifacts int he updater. For example, "lin64" or "win32".
QString BUILD_ARTIFACT;
/// A string containing the build timestamp
QString BUILD_DATE;
/// A string identifying the compiler use to build
QString COMPILER_NAME;
/// A string identifying the compiler version used to build
QString COMPILER_VERSION;
/// A string identifying the compiler target system os
QString COMPILER_TARGET_SYSTEM;
/// A String identifying the compiler target system version
QString COMPILER_TARGET_SYSTEM_VERSION;
/// A String identifying the compiler target processor
QString COMPILER_TARGET_SYSTEM_PROCESSOR;
/// URL for the updater's channel
QString UPDATER_BASE;
QString UPDATER_GITHUB_REPO;
/// The public key used to sign releases for the Sparkle updater appcast
QString MAC_SPARKLE_PUB_KEY;
/// URL for the Sparkle updater's appcast
QString MAC_SPARKLE_APPCAST_URL;
/// User-Agent to use.
QString USER_AGENT;
@ -83,12 +110,12 @@ class Config {
/// The git commit hash of this build
QString GIT_COMMIT;
/// The git tag of this build
QString GIT_TAG;
/// The git refspec of this build
QString GIT_REFSPEC;
/// This is printed on start to standard output
QString VERSION_STR;
/**
* This is used to fetch the news RSS feed.
* It defaults in CMakeLists.txt to "https://multimc.org/rss.xml"
@ -118,13 +145,16 @@ class Config {
/**
* Client API key for CurseForge
*/
QString CURSEFORGE_API_KEY;
QString FLAME_API_KEY;
/**
* Metadata repository URL prefix
*/
QString META_URL;
QString GLFW_LIBRARY_NAME;
QString OPENAL_LIBRARY_NAME;
QString BUG_TRACKER_URL;
QString TRANSLATIONS_URL;
QString MATRIX_URL;
@ -135,8 +165,8 @@ class Config {
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.polymc.org/fmllibs/";
QString TRANSLATIONS_BASE_URL = "https://i18n.polymc.org/";
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 MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/";
@ -153,12 +183,28 @@ class Config {
QString MODRINTH_STAGING_URL = "https://staging-api.modrinth.com/v2";
QString MODRINTH_PROD_URL = "https://api.modrinth.com/v2";
QStringList MODRINTH_MRPACK_HOSTS{ "cdn.modrinth.com", "github.com", "raw.githubusercontent.com", "gitlab.com" };
QString FLAME_BASE_URL = "https://api.curseforge.com/v1";
QString versionString() const;
/**
* \brief Converts the Version to a string.
* \return The version number in string format (major.minor.revision.build).
*/
QString printableVersionString() const;
/**
* \brief Compiler ID String
* \return a string of the form "Name - Version" of just "Name" if the version is empty
*/
QString compilerID() const;
/**
* \brief System ID String
* \return a string of the form "OS Verison Processor"
*/
QString systemID() const;
};
extern const Config BuildConfig;

View File

@ -7,5 +7,5 @@ add_library(BuildConfig STATIC
${CMAKE_CURRENT_BINARY_DIR}/BuildConfig.cpp
)
target_link_libraries(BuildConfig Qt5::Core)
target_link_libraries(BuildConfig Qt${QT_VERSION_MAJOR}::Core)
target_include_directories(BuildConfig PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")

View File

@ -0,0 +1,155 @@
#
# Function to set compiler warnings with reasonable defaults at the project level.
# Taken from https://github.com/aminya/project_options/blob/main/src/CompilerWarnings.cmake
# under the folowing license:
#
# MIT License
#
# Copyright (c) 2022-2100 Amin Yahyaabadi
#
# 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.
#
include_guard()
function(_set_project_warnings_add_target_link_option TARGET OPTIONS)
target_link_options(${_project_name} INTERFACE ${OPTIONS})
endfunction()
# Set the compiler warnings
#
# https://clang.llvm.org/docs/DiagnosticsReference.html
# https://github.com/lefticus/cppbestpractices/blob/master/02-Use_the_Tools_Available.md
function(
set_project_warnings
_project_name
MSVC_WARNINGS
CLANG_WARNINGS
GCC_WARNINGS
)
if("${MSVC_WARNINGS}" STREQUAL "")
set(MSVC_WARNINGS
/W4 # Baseline reasonable warnings
/w14242 # 'identifier': conversion from 'type1' to 'type1', possible loss of data
/w14254 # 'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data
/w14263 # 'function': member function does not override any base class virtual member function
/w14265 # 'classname': class has virtual functions, but destructor is not virtual instances of this class may not
# be destructed correctly
/w14287 # 'operator': unsigned/negative constant mismatch
/we4289 # nonstandard extension used: 'variable': loop control variable declared in the for-loop is used outside
# the for-loop scope
/w14296 # 'operator': expression is always 'boolean_value'
/w14311 # 'variable': pointer truncation from 'type1' to 'type2'
/w14545 # expression before comma evaluates to a function which is missing an argument list
/w14546 # function call before comma missing argument list
/w14547 # 'operator': operator before comma has no effect; expected operator with side-effect
/w14549 # 'operator': operator before comma has no effect; did you intend 'operator'?
/w14555 # expression has no effect; expected expression with side- effect
/w14619 # pragma warning: there is no warning number 'number'
/w14640 # Enable warning on thread un-safe static member initialization
/w14826 # Conversion from 'type1' to 'type_2' is sign-extended. This may cause unexpected runtime behavior.
/w14905 # wide string literal cast to 'LPSTR'
/w14906 # string literal cast to 'LPWSTR'
/w14928 # illegal copy-initialization; more than one user-defined conversion has been implicitly applied
/permissive- # standards conformance mode for MSVC compiler.
)
endif()
if("${CLANG_WARNINGS}" STREQUAL "")
set(CLANG_WARNINGS
-Wall
-Wextra # reasonable and standard
-Wshadow # warn the user if a variable declaration shadows one from a parent context
-Wnon-virtual-dtor # warn the user if a class with virtual functions has a non-virtual destructor. This helps
# catch hard to track down memory errors
-Wold-style-cast # warn for c-style casts
-Wcast-align # warn for potential performance problem casts
-Wunused # warn on anything being unused
-Woverloaded-virtual # warn if you overload (not override) a virtual function
-Wpedantic # warn if non-standard C++ is used
-Wconversion # warn on type conversions that may lose data
-Wsign-conversion # warn on sign conversions
-Wnull-dereference # warn if a null dereference is detected
-Wdouble-promotion # warn if float is implicit promoted to double
-Wformat=2 # warn on security issues around functions that format output (ie printf)
-Wimplicit-fallthrough # warn on statements that fallthrough without an explicit annotation
# -Wgnu-zero-variadic-macro-arguments (part of -pedantic) is triggered by every qCDebug() call and therefore results
# in a lot of noise. This warning is only notifying us that clang is emulating the GCC behaviour
# instead of the exact standard wording so we can safely ignore it
-Wno-gnu-zero-variadic-macro-arguments
)
endif()
if("${GCC_WARNINGS}" STREQUAL "")
set(GCC_WARNINGS
${CLANG_WARNINGS}
-Wmisleading-indentation # warn if indentation implies blocks where blocks do not exist
-Wduplicated-cond # warn if if / else chain has duplicated conditions
-Wduplicated-branches # warn if if / else branches have duplicated code
-Wlogical-op # warn about logical operations being used where bitwise were probably wanted
-Wuseless-cast # warn if you perform a cast to the same type
)
endif()
if(MSVC)
set(PROJECT_WARNINGS_CXX ${MSVC_WARNINGS})
elseif(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
set(PROJECT_WARNINGS_CXX ${CLANG_WARNINGS})
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(PROJECT_WARNINGS_CXX ${GCC_WARNINGS})
else()
message(AUTHOR_WARNING "No compiler warnings set for CXX compiler: '${CMAKE_CXX_COMPILER_ID}'")
# TODO support Intel compiler
endif()
# Add C warnings
set(PROJECT_WARNINGS_C "${PROJECT_WARNINGS_CXX}")
list(
REMOVE_ITEM
PROJECT_WARNINGS_C
-Wnon-virtual-dtor
-Wold-style-cast
-Woverloaded-virtual
-Wuseless-cast
-Wextra-semi
)
target_compile_options(
${_project_name}
INTERFACE # C++ warnings
$<$<COMPILE_LANGUAGE:CXX>:${PROJECT_WARNINGS_CXX}>
# C warnings
$<$<COMPILE_LANGUAGE:C>:${PROJECT_WARNINGS_C}>
)
# If we are using the compiler as a linker driver pass the warnings to it
# (most useful when using LTO or warnings as errors)
if(CMAKE_CXX_LINK_EXECUTABLE MATCHES "^<CMAKE_CXX_COMPILER>")
_set_project_warnings_add_target_link_option(
${_project_name} "$<$<COMPILE_LANGUAGE:CXX>:${PROJECT_WARNINGS_CXX}>"
)
endif()
if(CMAKE_C_LINK_EXECUTABLE MATCHES "^<CMAKE_C_COMPILER>")
_set_project_warnings_add_target_link_option(
${_project_name} "$<$<COMPILE_LANGUAGE:C>:${PROJECT_WARNINGS_C}>"
)
endif()
endfunction()

100
cmake/ECMQueryQt.cmake Normal file
View File

@ -0,0 +1,100 @@
# SPDX-FileCopyrightText: 2014 Rohan Garg <rohan16garg@gmail.com>
# SPDX-FileCopyrightText: 2014 Alex Merry <alex.merry@kde.org>
# SPDX-FileCopyrightText: 2014-2016 Aleix Pol <aleixpol@kde.org>
# SPDX-FileCopyrightText: 2017 Friedrich W. H. Kossebau <kossebau@kde.org>
# SPDX-FileCopyrightText: 2022 Ahmad Samir <a.samir78@gmail.com>
#
# SPDX-License-Identifier: BSD-3-Clause
#[=======================================================================[.rst:
ECMQueryQt
---------------
This module can be used to query the installation paths used by Qt.
For Qt5 this uses ``qmake``, and for Qt6 this used ``qtpaths`` (the latter has built-in
support to query the paths of a target platform when cross-compiling).
This module defines the following function:
::
ecm_query_qt(<result_variable> <qt_variable> [TRY])
Passing ``TRY`` will result in the method not making the build fail if the executable
used for querying has not been found, but instead simply print a warning message and
return an empty string.
Example usage:
.. code-block:: cmake
include(ECMQueryQt)
ecm_query_qt(bin_dir QT_INSTALL_BINS)
If the call succeeds ``${bin_dir}`` will be set to ``<prefix>/path/to/bin/dir`` (e.g.
``/usr/lib64/qt/bin/``).
Since: 5.93
#]=======================================================================]
include(${CMAKE_CURRENT_LIST_DIR}/QtVersionOption.cmake)
include(CheckLanguage)
check_language(CXX)
if (CMAKE_CXX_COMPILER)
# Enable the CXX language to let CMake look for config files in library dirs.
# See: https://gitlab.kitware.com/cmake/cmake/-/issues/23266
enable_language(CXX)
endif()
if (QT_MAJOR_VERSION STREQUAL "5")
# QUIET to accommodate the TRY option
find_package(Qt${QT_MAJOR_VERSION}Core QUIET)
if(TARGET Qt5::qmake)
get_target_property(_qmake_executable_default Qt5::qmake LOCATION)
set(QUERY_EXECUTABLE ${_qmake_executable_default}
CACHE FILEPATH "Location of the Qt5 qmake executable")
set(_exec_name_text "Qt5 qmake")
set(_cli_option "-query")
endif()
elseif(QT_MAJOR_VERSION STREQUAL "6")
# QUIET to accommodate the TRY option
find_package(Qt6 COMPONENTS CoreTools QUIET CONFIG)
if (TARGET Qt6::qtpaths)
get_target_property(_qtpaths_executable Qt6::qtpaths LOCATION)
set(QUERY_EXECUTABLE ${_qtpaths_executable}
CACHE FILEPATH "Location of the Qt6 qtpaths executable")
set(_exec_name_text "Qt6 qtpaths")
set(_cli_option "--query")
endif()
endif()
function(ecm_query_qt result_variable qt_variable)
set(options TRY)
set(oneValueArgs)
set(multiValueArgs)
cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
if(NOT QUERY_EXECUTABLE)
if(ARGS_TRY)
set(${result_variable} "" PARENT_SCOPE)
message(STATUS "No ${_exec_name_text} executable found. Can't check ${qt_variable}")
return()
else()
message(FATAL_ERROR "No ${_exec_name_text} executable found. Can't check ${qt_variable} as required")
endif()
endif()
execute_process(
COMMAND ${QUERY_EXECUTABLE} ${_cli_option} "${qt_variable}"
RESULT_VARIABLE return_code
OUTPUT_VARIABLE output
)
if(return_code EQUAL 0)
string(STRIP "${output}" output)
file(TO_CMAKE_PATH "${output}" output_path)
set(${result_variable} "${output_path}" PARENT_SCOPE)
else()
message(WARNING "Failed call: ${_command} \"${qt_variable}\"")
message(FATAL_ERROR "${_exec_name_text} call failed: ${return_code}")
endif()
endfunction()

View File

@ -3,7 +3,7 @@
# These functions force a re-configure on each git commit so that you can
# trust the values of the variables in your build system.
#
# get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
# get_git_head_revision(<refspecvar> <hashvar> [ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR])
#
# Returns the refspec and sha hash of the current head revision
#
@ -12,20 +12,33 @@
# Returns the results of git describe on the source tree, and adjusting
# the output so that it tests false if an error occurs.
#
# git_describe_working_tree(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe on the working tree (--dirty option),
# and adjusting the output so that it tests false if an error occurs.
#
# git_get_exact_tag(<var> [<additional arguments to git describe> ...])
#
# Returns the results of git describe --exact-match on the source tree,
# and adjusting the output so that it tests false if there was no exact
# matching tag.
#
# git_local_changes(<var>)
#
# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes.
# Uses the return code of "git diff-index --quiet HEAD --".
# Does not regard untracked files.
#
# Requires CMake 2.6 or newer (uses the 'function' command)
#
# Original Author:
# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
# 2009-2020 Ryan Pavlik <ryan.pavlik@gmail.com> <abiryan@ryand.net>
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Copyright 2009-2013, Iowa State University.
# Copyright 2013-2020, Ryan Pavlik
# Copyright 2013-2020, Contributors
# SPDX-License-Identifier: BSL-1.0
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
@ -39,45 +52,124 @@ set(__get_git_revision_description YES)
# to find the path to this module rather than the path to a calling list file
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
function(get_git_head_revision _refspecvar _hashvar)
set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories
set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
# Function _git_find_closest_git_dir finds the next closest .git directory
# that is part of any directory in the path defined by _start_dir.
# The result is returned in the parent scope variable whose name is passed
# as variable _git_dir_var. If no .git directory can be found, the
# function returns an empty string via _git_dir_var.
#
# Example: Given a path C:/bla/foo/bar and assuming C:/bla/.git exists and
# neither foo nor bar contain a file/directory .git. This wil return
# C:/bla/.git
#
function(_git_find_closest_git_dir _start_dir _git_dir_var)
set(cur_dir "${_start_dir}")
set(git_dir "${_start_dir}/.git")
while(NOT EXISTS "${git_dir}")
# .git dir not found, search parent directories
set(git_previous_parent "${cur_dir}")
get_filename_component(cur_dir "${cur_dir}" DIRECTORY)
if(cur_dir STREQUAL git_previous_parent)
# We have reached the root directory, we are not in git
set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
set(${_git_dir_var}
""
PARENT_SCOPE)
return()
endif()
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
set(git_dir "${cur_dir}/.git")
endwhile()
# check if this is a submodule
set(${_git_dir_var}
"${git_dir}"
PARENT_SCOPE)
endfunction()
function(get_git_head_revision _refspecvar _hashvar)
_git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR)
if("${ARGN}" STREQUAL "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR")
set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR TRUE)
else()
set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR FALSE)
endif()
if(NOT "${GIT_DIR}" STREQUAL "")
file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_SOURCE_DIR}"
"${GIT_DIR}")
if("${_relative_to_source_dir}" MATCHES "[.][.]" AND NOT ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
# We've gone above the CMake root dir.
set(GIT_DIR "")
endif()
endif()
if("${GIT_DIR}" STREQUAL "")
set(${_refspecvar}
"GITDIR-NOTFOUND"
PARENT_SCOPE)
set(${_hashvar}
"GITDIR-NOTFOUND"
PARENT_SCOPE)
return()
endif()
# Check if the current source dir is a git submodule or a worktree.
# In both cases .git is a file instead of a directory.
#
if(NOT IS_DIRECTORY ${GIT_DIR})
file(READ ${GIT_DIR} submodule)
string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
# The following git command will return a non empty string that
# points to the super project working tree if the current
# source dir is inside a git submodule.
# Otherwise the command will return an empty string.
#
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-parse
--show-superproject-working-tree
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
OUTPUT_VARIABLE out
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT "${out}" STREQUAL "")
# If out is empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule
file(READ ${GIT_DIR} submodule)
string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE
${submodule})
string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE)
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE}
ABSOLUTE)
set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
else()
# GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree
file(READ ${GIT_DIR} worktree_ref)
# The .git directory contains a path to the worktree information directory
# inside the parent git repo of the worktree.
#
string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir
${worktree_ref})
string(STRIP ${git_worktree_dir} git_worktree_dir)
_git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR)
set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD")
endif()
else()
set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD")
endif()
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
if(NOT EXISTS "${GIT_DATA}")
file(MAKE_DIRECTORY "${GIT_DATA}")
endif()
if(NOT EXISTS "${GIT_DIR}/HEAD")
if(NOT EXISTS "${HEAD_SOURCE_FILE}")
return()
endif()
set(HEAD_FILE "${GIT_DATA}/HEAD")
configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY)
configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
"${GIT_DATA}/grabRef.cmake"
@ONLY)
"${GIT_DATA}/grabRef.cmake" @ONLY)
include("${GIT_DATA}/grabRef.cmake")
set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
set(${_refspecvar}
"${HEAD_REF}"
PARENT_SCOPE)
set(${_hashvar}
"${HEAD_HASH}"
PARENT_SCOPE)
endfunction()
function(git_describe _var)
@ -86,45 +178,107 @@ function(git_describe _var)
endif()
get_git_head_revision(refspec hash)
if(NOT GIT_FOUND)
set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
set(${_var}
"GIT-NOTFOUND"
PARENT_SCOPE)
return()
endif()
if(NOT hash)
set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
set(${_var}
"HEAD-HASH-NOTFOUND"
PARENT_SCOPE)
return()
endif()
# TODO sanitize
#if((${ARGN}" MATCHES "&&") OR
# (ARGN MATCHES "||") OR
# (ARGN MATCHES "\\;"))
# message("Please report the following error to the project!")
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
# (ARGN MATCHES "||") OR
# (ARGN MATCHES "\\;"))
# message("Please report the following error to the project!")
# message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
#endif()
#message(STATUS "Arguments to execute_process: ${ARGN}")
execute_process(COMMAND
"${GIT_EXECUTABLE}"
describe
${hash}
${ARGN}
WORKING_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE
res
OUTPUT_VARIABLE
out
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND "${GIT_EXECUTABLE}" describe --tags --always ${hash} ${ARGN}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE out
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT res EQUAL 0)
set(out "${out}-${res}-NOTFOUND")
endif()
set(${_var} "${out}" PARENT_SCOPE)
set(${_var}
"${out}"
PARENT_SCOPE)
endfunction()
function(git_describe_working_tree _var)
if(NOT GIT_FOUND)
find_package(Git QUIET)
endif()
if(NOT GIT_FOUND)
set(${_var}
"GIT-NOTFOUND"
PARENT_SCOPE)
return()
endif()
execute_process(
COMMAND "${GIT_EXECUTABLE}" describe --dirty ${ARGN}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE out
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT res EQUAL 0)
set(out "${out}-${res}-NOTFOUND")
endif()
set(${_var}
"${out}"
PARENT_SCOPE)
endfunction()
function(git_get_exact_tag _var)
git_describe(out --exact-match ${ARGN})
set(${_var} "${out}" PARENT_SCOPE)
set(${_var}
"${out}"
PARENT_SCOPE)
endfunction()
function(git_local_changes _var)
if(NOT GIT_FOUND)
find_package(Git QUIET)
endif()
get_git_head_revision(refspec hash)
if(NOT GIT_FOUND)
set(${_var}
"GIT-NOTFOUND"
PARENT_SCOPE)
return()
endif()
if(NOT hash)
set(${_var}
"HEAD-HASH-NOTFOUND"
PARENT_SCOPE)
return()
endif()
execute_process(
COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD --
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE out
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
if(res EQUAL 0)
set(${_var}
"CLEAN"
PARENT_SCOPE)
else()
set(${_var}
"DIRTY"
PARENT_SCOPE)
endif()
endfunction()

View File

@ -8,10 +8,12 @@
# http://academic.cleardefinition.com
# Iowa State University HCI Graduate Program/VRAC
#
# Copyright Iowa State University 2009-2010.
# Copyright 2009-2012, Iowa State University
# Copyright 2011-2015, Contributors
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
# SPDX-License-Identifier: BSL-1.0
set(HEAD_HASH)
@ -19,23 +21,23 @@ file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
if(HEAD_CONTENTS MATCHES "ref")
# named branch
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
else()
configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
set(HEAD_HASH "${CMAKE_MATCH_1}")
endif()
endif()
# named branch
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
else()
configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
set(HEAD_HASH "${CMAKE_MATCH_1}")
endif()
endif()
else()
# detached HEAD
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
# detached HEAD
configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
endif()
if(NOT HEAD_HASH)
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
string(STRIP "${HEAD_HASH}" HEAD_HASH)
file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
string(STRIP "${HEAD_HASH}" HEAD_HASH)
endif()

View File

@ -40,5 +40,43 @@
<true/>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>SUPublicEDKey</key>
<string>${MACOSX_SPARKLE_UPDATE_PUBLIC_KEY}</string>
<key>SUFeedURL</key>
<string>${MACOSX_SPARKLE_UPDATE_FEED_URL}</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>zip</string>
<string>mrpack</string>
</array>
<key>CFBundleTypeName</key>
<string>Prism Launcher instance</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>TEXT</string>
<string>utxt</string>
<string>TUTX</string>
<string>****</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
</dict>
</array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Curseforge</string>
<key>CFBundleURLSchemes</key>
<array>
<string>curseforge</string>
</array>
</dict>
</array>
</dict>
</plist>

View File

@ -1,14 +0,0 @@
if(__QMAKEQUERY_CMAKE__)
return()
endif()
set(__QMAKEQUERY_CMAKE__ TRUE)
get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION)
function(QUERY_QMAKE VAR RESULT)
exec_program(${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output )
if(NOT return_code)
file(TO_CMAKE_PATH "${output}" output)
set(${RESULT} ${output} PARENT_SCOPE)
endif(NOT return_code)
endfunction(QUERY_QMAKE)

View File

@ -0,0 +1,38 @@
#.rst:
# QtVersionOption
# ---------------
#
# Adds a build option to select the major Qt version if necessary,
# that is, if the major Qt version has not yet been determined otherwise
# (e.g. by a corresponding find_package() call).
#
# This module is typically included by other modules requiring knowledge
# about the major Qt version.
#
# ``QT_MAJOR_VERSION`` is defined to either be "5" or "6".
#
#
# Since 5.82.0.
#=============================================================================
# SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
#
# SPDX-License-Identifier: BSD-3-Clause
if (DEFINED QT_MAJOR_VERSION)
return()
endif()
if (TARGET Qt5::Core)
set(QT_MAJOR_VERSION 5)
elseif (TARGET Qt6::Core)
set(QT_MAJOR_VERSION 6)
else()
option(BUILD_WITH_QT6 "Build against Qt 6" OFF)
if (BUILD_WITH_QT6)
set(QT_MAJOR_VERSION 6)
else()
set(QT_MAJOR_VERSION 5)
endif()
endif()

View File

@ -0,0 +1,97 @@
#=============================================================================
# Copyright 2005-2011 Kitware, Inc.
# 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.
#
# * Neither the name of Kitware, Inc. nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# 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.
#=============================================================================
# From Qt5CoreMacros.cmake
function(qt_generate_moc)
if(QT_VERSION_MAJOR EQUAL 5)
qt5_generate_moc(${ARGV})
elseif(QT_VERSION_MAJOR EQUAL 6)
qt6_generate_moc(${ARGV})
endif()
endfunction()
function(qt_wrap_cpp outfiles)
if(QT_VERSION_MAJOR EQUAL 5)
qt5_wrap_cpp("${outfiles}" ${ARGN})
elseif(QT_VERSION_MAJOR EQUAL 6)
qt6_wrap_cpp("${outfiles}" ${ARGN})
endif()
set("${outfiles}" "${${outfiles}}" PARENT_SCOPE)
endfunction()
function(qt_add_binary_resources)
if(QT_VERSION_MAJOR EQUAL 5)
qt5_add_binary_resources(${ARGV})
elseif(QT_VERSION_MAJOR EQUAL 6)
qt6_add_binary_resources(${ARGV})
endif()
endfunction()
function(qt_add_resources outfiles)
if(QT_VERSION_MAJOR EQUAL 5)
qt5_add_resources("${outfiles}" ${ARGN})
elseif(QT_VERSION_MAJOR EQUAL 6)
qt6_add_resources("${outfiles}" ${ARGN})
endif()
set("${outfiles}" "${${outfiles}}" PARENT_SCOPE)
endfunction()
function(qt_add_big_resources outfiles)
if(QT_VERSION_MAJOR EQUAL 5)
qt5_add_big_resources(${outfiles} ${ARGN})
elseif(QT_VERSION_MAJOR EQUAL 6)
qt6_add_big_resources(${outfiles} ${ARGN})
endif()
set("${outfiles}" "${${outfiles}}" PARENT_SCOPE)
endfunction()
function(qt_import_plugins)
if(QT_VERSION_MAJOR EQUAL 5)
qt5_import_plugins(${ARGV})
elseif(QT_VERSION_MAJOR EQUAL 6)
qt6_import_plugins(${ARGV})
endif()
endfunction()
# From Qt5WidgetsMacros.cmake
function(qt_wrap_ui outfiles)
if(QT_VERSION_MAJOR EQUAL 5)
qt5_wrap_ui("${outfiles}" ${ARGN})
elseif(QT_VERSION_MAJOR EQUAL 6)
qt6_wrap_ui("${outfiles}" ${ARGN})
endif()
set("${outfiles}" "${${outfiles}}" PARENT_SCOPE)
endfunction()

View File

@ -1,50 +0,0 @@
find_package(Qt5Test REQUIRED)
set(TEST_RESOURCE_PATH ${CMAKE_CURRENT_LIST_DIR})
message(${TEST_RESOURCE_PATH})
function(add_unit_test name)
if(BUILD_TESTING)
set(options "")
set(oneValueArgs DATA)
set(multiValueArgs SOURCES LIBS)
cmake_parse_arguments(OPT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
if(WIN32)
add_executable(${name}_test ${OPT_SOURCES} ${TEST_RESOURCE_PATH}/UnitTest/test.rc)
else()
add_executable(${name}_test ${OPT_SOURCES})
endif()
if(NOT "${OPT_DATA}" STREQUAL "")
set(TEST_DATA_PATH "${CMAKE_CURRENT_BINARY_DIR}/data")
set(TEST_DATA_PATH_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${OPT_DATA}")
message("From ${TEST_DATA_PATH_SRC} to ${TEST_DATA_PATH}")
string(REGEX REPLACE "[/\\:]" "_" DATA_TARGET_NAME "${TEST_DATA_PATH_SRC}")
if(UNIX)
# on unix we get the third / from the filename
set(TEST_DATA_URL "file://${TEST_DATA_PATH}")
else()
# we don't on windows, so we have to add it ourselves
set(TEST_DATA_URL "file:///${TEST_DATA_PATH}")
endif()
if(NOT TARGET "${DATA_TARGET_NAME}")
add_custom_target(${DATA_TARGET_NAME})
add_dependencies(${name}_test ${DATA_TARGET_NAME})
add_custom_command(
TARGET ${DATA_TARGET_NAME}
COMMAND ${CMAKE_COMMAND} "-DTEST_DATA_URL=${TEST_DATA_URL}" -DSOURCE=${TEST_DATA_PATH_SRC} -DDESTINATION=${TEST_DATA_PATH} -P ${TEST_RESOURCE_PATH}/UnitTest/generate_test_data.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
endif()
endif()
target_link_libraries(${name}_test Qt5::Test ${OPT_LIBS})
target_include_directories(${name}_test PRIVATE "${TEST_RESOURCE_PATH}/UnitTest/")
add_test(NAME ${name} COMMAND ${name}_test WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
endif()
endfunction()

View File

@ -1,28 +0,0 @@
#pragma once
#include <QFile>
#include <QCoreApplication>
#include <QTest>
#include <QDir>
#define expandstr(s) expandstr2(s)
#define expandstr2(s) #s
class TestsInternal
{
public:
static QByteArray readFile(const QString &fileName)
{
QFile f(fileName);
f.open(QFile::ReadOnly);
return f.readAll();
}
static QString readFileUtf8(const QString &fileName)
{
return QString::fromUtf8(readFile(fileName));
}
};
#define GET_TEST_FILE(file) TestsInternal::readFile(QFINDTESTDATA(file))
#define GET_TEST_FILE_UTF8(file) TestsInternal::readFileUtf8(QFINDTESTDATA(file))

View File

@ -1,23 +0,0 @@
# Copy files from source directory to destination directory, substituting any
# variables. Create destination directory if it does not exist.
function(configure_files srcDir destDir)
make_directory(${destDir})
file(GLOB templateFiles RELATIVE ${srcDir} ${srcDir}/*)
foreach(templateFile ${templateFiles})
set(srcTemplatePath ${srcDir}/${templateFile})
if(NOT IS_DIRECTORY ${srcTemplatePath})
configure_file(
${srcTemplatePath}
${destDir}/${templateFile}
@ONLY
NEWLINE_STYLE LF
)
else()
configure_files("${srcTemplatePath}" "${destDir}/${templateFile}")
endif()
endforeach()
endfunction()
configure_files(${SOURCE} ${DESTINATION})

View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<assemblyIdentity name="Launcher.Test.0" type="win32" version="5.0.0.0" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
<description>Custom Minecraft launcher for managing multiple installs.</description>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates app support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates app support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
<!--The ID below indicates app support for Windows Developer Preview / Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
</application>
</compatibility>
</assembly>

View File

@ -1,28 +0,0 @@
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#include <windows.h>
1 RT_MANIFEST "test.manifest"
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,0
FILEOS VOS_NT_WINDOWS32
FILETYPE VFT_APP
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
VALUE "CompanyName", "MultiMC & PolyMC Contributors"
VALUE "FileDescription", "Testcase"
VALUE "FileVersion", "1.0.0.0"
VALUE "ProductName", "Launcher Testcase"
VALUE "ProductVersion", "5"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0000, 0x04b0 // Unicode
END
END

View File

@ -1 +1,14 @@
(import nix/flake-compat.nix).defaultNix
(
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

View File

@ -3,11 +3,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
@ -16,29 +16,101 @@
"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": 1591558203,
"narHash": "sha256-QgvNvaoFflCXEPCCFBCeZvYTpuiwScBG7EosUgFwFNQ=",
"owner": "multimc",
"lastModified": 1690036783,
"narHash": "sha256-A5kTgICnx+Qdq3Fir/bKTfdTt/T1NQP2SC+nhN1ENug=",
"owner": "PrismLauncher",
"repo": "libnbtplusplus",
"rev": "dc72a20b7efd304d12af2025223fad07b4b78464",
"rev": "a5e8fd52b8bf4ab5d5bcc042b2a247867589985f",
"type": "github"
},
"original": {
"owner": "multimc",
"owner": "PrismLauncher",
"repo": "libnbtplusplus",
"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": 1653326962,
"narHash": "sha256-W8feCYqKTsMre4nAEpv5Kx1PVFC+hao/LwqtB2Wci/8=",
"lastModified": 1699094435,
"narHash": "sha256-YLZ5/KKZ1PyLrm2MO8UxRe4H3M0/oaYqNhSlq6FDeeA=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "41cc1d5d9584103be4108c1815c350e07c807036",
"rev": "9d5d25bbfe8c0297ebe85324addcb5020ed1a454",
"type": "github"
},
"original": {
@ -48,11 +120,75 @@
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"dir": "lib",
"lastModified": 1698611440,
"narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735",
"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"
]
},
"locked": {
"lastModified": 1698852633,
"narHash": "sha256-Hsc/cCHud8ZXLvmm8pxrXpuaPEeNaaUttaCvtdX/Wug=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "dec10399e5b56aa95fcd530e0338be72ad6462a0",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"libnbtplusplus": "libnbtplusplus",
"nixpkgs": "nixpkgs"
"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"
}
}
},

View File

@ -3,35 +3,42 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
flake-compat = { url = "github:edolstra/flake-compat"; flake = false; };
libnbtplusplus = { url = "github:multimc/libnbtplusplus"; flake = false; };
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;
};
libnbtplusplus = {
url = "github:PrismLauncher/libnbtplusplus";
flake = false;
};
};
outputs = { self, nixpkgs, libnbtplusplus, ... }:
let
# Generate a user-friendly version number.
version = builtins.substring 0 8 self.lastModifiedDate;
outputs = {
flake-parts,
pre-commit-hooks,
...
} @ inputs:
flake-parts.lib.mkFlake {inherit inputs;} {
imports = [
pre-commit-hooks.flakeModule
# System types to support (qtbase is currently broken for "aarch64-darwin")
supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ];
./nix/dev.nix
./nix/distribution.nix
];
# Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'.
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
# Nixpkgs instantiated for supported system types.
pkgs = forAllSystems (system: nixpkgs.legacyPackages.${system});
in
{
packages = forAllSystems (system: {
polymc = pkgs.${system}.libsForQt5.callPackage ./nix { inherit version self libnbtplusplus; };
polymc-qt6 = pkgs.${system}.qt6Packages.callPackage ./nix { inherit version self libnbtplusplus; };
});
defaultPackage = forAllSystems (system: self.packages.${system}.polymc);
apps = forAllSystems (system: { polymc = { type = "app"; program = "${self.defaultPackage.${system}}/bin/polymc"; }; });
defaultApp = forAllSystems (system: self.apps.${system}.polymc);
overlay = final: prev: { polymc = self.defaultPackage.${final.system}; };
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
};
}

22
flatpak/libdecor.json Normal file
View File

@ -0,0 +1,22 @@
{
"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"
]
}

View File

@ -0,0 +1,158 @@
id: org.prismlauncher.PrismLauncher
runtime: org.kde.Platform
runtime-version: "5.15-22.08"
sdk: org.kde.Sdk
sdk-extensions:
- org.freedesktop.Sdk.Extension.openjdk17
- org.freedesktop.Sdk.Extension.openjdk8
command: prismlauncher
finish-args:
- --share=ipc
- --socket=x11
- --socket=wayland
- --device=all
- --share=network
- --socket=pulseaudio
# for Discord RPC mods
- --filesystem=xdg-run/app/com.discordapp.Discord:create
# Mod drag&drop
- --filesystem=xdg-download:ro
# FTBApp import
- --filesystem=~/.ftba:ro
cleanup:
- /lib/libGLU*
modules:
# Might be needed by some Controller mods (see https://github.com/isXander/Controlify/issues/31)
- shared-modules/libusb/libusb.json
# Needed for proper Wayland support
- libdecor.json
- name: prismlauncher
buildsystem: cmake-ninja
builddir: true
config-opts:
- -DLauncher_BUILD_PLATFORM=flatpak
- -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
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
sources:
- type: git
url: https://github.com/glfw/glfw.git
commit: 3fa2360720eeba1964df3c0ecf4b5df8648a8e52
- 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
cleanup:
- /include
- /lib/cmake
- /lib/pkgconfig
- name: xrandr
buildsystem: autotools
sources:
- type: archive
url: https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.2.tar.xz
sha256: c8bee4790d9058bacc4b6246456c58021db58a87ddda1a9d0139bf5f18f1f240
x-checker-data:
type: anitya
project-id: 14957
stable-only: true
url-template: https://xorg.freedesktop.org/archive/individual/app/xrandr-$version.tar.xz
cleanup:
- /share/man
- /bin/xkeystone
- name: gamemode
buildsystem: meson
config-opts:
- -Dwith-sd-bus-provider=no-daemon
- -Dwith-examples=false
post-install:
# gamemoderun is installed for users who want to use wrapper commands
# post-install is running inside the build dir, we need it from the source though
- 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
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
cleanup:
- /include
- /lib/pkgconfig
- /lib/libgamemodeauto.a
- name: glxinfo
buildsystem: meson
config-opts:
- --bindir=/app/mesa-demos
- -Degl=disabled
- -Dglut=disabled
- -Dosmesa=disabled
- -Dvulkan=disabled
- -Dwayland=disabled
post-install:
- mv -v /app/mesa-demos/glxinfo /app/bin
sources:
- type: archive
url: https://archive.mesa3d.org/demos/mesa-demos-9.0.0.tar.xz
sha256: 3046a3d26a7b051af7ebdd257a5f23bfeb160cad6ed952329cdff1e9f1ed496b
x-checker-data:
type: anitya
project-id: 16781
stable-only: true
url-template: https://archive.mesa3d.org/demos/mesa-demos-$version.tar.xz
cleanup:
- /include
- /mesa-demos
- /share
modules:
- shared-modules/glu/glu-9.json
- name: enhance
buildsystem: simple
build-commands:
- install -Dm755 prime-run /app/bin/prime-run
- mv /app/bin/prismlauncher /app/bin/prismrun
- install -Dm755 prismlauncher /app/bin/prismlauncher
sources:
- type: file
path: prime-run
- type: file
path: prismlauncher

View File

@ -0,0 +1,24 @@
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

@ -0,0 +1,17 @@
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

@ -0,0 +1,20 @@
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,40 @@
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 *

4
flatpak/prime-run Normal file
View File

@ -0,0 +1,4 @@
#!/bin/sh
export __NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia
exec "$@"

11
flatpak/prismlauncher Normal file
View File

@ -0,0 +1,11 @@
#!/bin/bash
# discord RPC
for i in {0..9}; do
test -S "$XDG_RUNTIME_DIR"/discord-ipc-"$i" || ln -sf {app/com.discordapp.Discord,"$XDG_RUNTIME_DIR"}/discord-ipc-"$i";
done
export PATH="${PATH}${PATH:+:}/usr/lib/extensions/vulkan/gamescope/bin:/usr/lib/extensions/vulkan/MangoHud/bin"
export VK_LAYER_PATH="/usr/lib/extensions/vulkan/share/vulkan/implicit_layer.d/"
exec /app/bin/prismrun "$@"

@ -0,0 +1 @@
Subproject commit 45094ca570be383d06df729b6972830ec63bd3df

6
garnix.yaml Normal file
View File

@ -0,0 +1,6 @@
builds:
exclude: []
include:
- "checks.x86_64-linux.*"
- "devShells.*.*"
- "packages.*.*"

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,9 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (C) 2022 Tayou <git@tayou.org>
* Copyright (C) 2023 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
@ -36,17 +38,17 @@
#pragma once
#include <QApplication>
#include <memory>
#include <QDateTime>
#include <QDebug>
#include <QFlag>
#include <QIcon>
#include <QDateTime>
#include <QUrl>
#include <updater/GoUpdate.h>
#include <memory>
#include <BaseInstance.h>
#include "minecraft/launch/MinecraftServerTarget.h"
#include "ui/themes/CatPack.h"
class LaunchController;
class LocalPeer;
@ -62,87 +64,73 @@ class AccountList;
class IconList;
class QNetworkAccessManager;
class JavaInstallList;
class UpdateChecker;
class ExternalUpdater;
class BaseProfilerFactory;
class BaseDetachedToolFactory;
class TranslationsModel;
class ITheme;
class MCEditTool;
class ThemeManager;
class IconTheme;
namespace Meta {
class Index;
class Index;
}
#if defined(APPLICATION)
#undef APPLICATION
#endif
#define APPLICATION (static_cast<Application *>(QCoreApplication::instance()))
#define APPLICATION (static_cast<Application*>(QCoreApplication::instance()))
class Application : public QApplication
{
class Application : public QApplication {
// friends for the purpose of limiting access to deprecated stuff
Q_OBJECT
public:
enum Status {
StartingUp,
Failed,
Succeeded,
Initialized
};
public:
enum Status { StartingUp, Failed, Succeeded, Initialized };
public:
Application(int &argc, char **argv);
enum Capability {
None = 0,
SupportsMSA = 1 << 0,
SupportsFlame = 1 << 1,
SupportsGameMode = 1 << 2,
SupportsMangoHud = 1 << 3,
};
Q_DECLARE_FLAGS(Capabilities, Capability)
public:
Application(int& argc, char** argv);
virtual ~Application();
std::shared_ptr<SettingsObject> settings() const {
return m_settings;
}
bool event(QEvent* event) override;
qint64 timeSinceStart() const {
return startTime.msecsTo(QDateTime::currentDateTime());
}
std::shared_ptr<SettingsObject> settings() const { return m_settings; }
qint64 timeSinceStart() const { return startTime.msecsTo(QDateTime::currentDateTime()); }
QIcon getThemedIcon(const QString& name);
bool isFlatpak();
ThemeManager* themeManager() { return m_themeManager.get(); }
void setIconTheme(const QString& name);
shared_qobject_ptr<ExternalUpdater> updater() { return m_updater; }
std::vector<ITheme *> getValidApplicationThemes();
void setApplicationTheme(const QString& name, bool initial);
shared_qobject_ptr<UpdateChecker> updateChecker() {
return m_updateChecker;
}
void triggerUpdateCheck();
std::shared_ptr<TranslationsModel> translations();
std::shared_ptr<JavaInstallList> javalist();
std::shared_ptr<InstanceList> instances() const {
return m_instances;
}
std::shared_ptr<InstanceList> instances() const { return m_instances; }
std::shared_ptr<IconList> icons() const {
return m_icons;
}
std::shared_ptr<IconList> icons() const { return m_icons; }
MCEditTool *mcedit() const {
return m_mcedit.get();
}
MCEditTool* mcedit() const { return m_mcedit.get(); }
shared_qobject_ptr<AccountList> accounts() const {
return m_accounts;
}
shared_qobject_ptr<AccountList> accounts() const { return m_accounts; }
Status status() const {
return m_status;
}
Status status() const { return m_status; }
const QMap<QString, std::shared_ptr<BaseProfilerFactory>> &profilers() const {
return m_profilers;
}
const QMap<QString, std::shared_ptr<BaseProfilerFactory>>& profilers() const { return m_profilers; }
void updateProxySettings(QString proxyTypeStr, QString addr, int port, QString user, QString password);
@ -152,71 +140,98 @@ public:
shared_qobject_ptr<Meta::Index> metadataIndex();
QString getJarsPath();
void updateCapabilities();
void detectLibraries();
/*!
* Finds and returns the full path to a jar file.
* Returns a null-string if it could not be found.
*/
QString getJarPath(QString jarFile);
QString getMSAClientID();
QString getCurseKey();
QString getFlameAPIKey();
QString getModrinthAPIToken();
QString getUserAgent();
QString getUserAgentUncached();
/// this is the root of the 'installation'. Used for automatic updates
const QString &root() {
return m_rootPath;
}
const QString& root() { return m_rootPath; }
/// the data path the application is using
const QString& dataRoot() { return m_dataPath; }
bool isPortable() { return m_portable; }
const Capabilities capabilities() { return m_capabilities; }
/*!
* Opens a json file using either a system default editor, or, if not empty, the editor
* specified in the settings
*/
bool openJsonEditor(const QString &filename);
bool openJsonEditor(const QString& filename);
InstanceWindow *showInstanceWindow(InstancePtr instance, QString page = QString());
MainWindow *showMainWindow(bool minimized = false);
InstanceWindow* showInstanceWindow(InstancePtr instance, QString page = QString());
MainWindow* showMainWindow(bool minimized = false);
void updateIsRunning(bool running);
bool updatesAreAllowed();
void ShowGlobalSettings(class QWidget * parent, QString open_page = QString());
void ShowGlobalSettings(class QWidget* parent, QString open_page = QString());
signals:
int suitableMaxMem();
bool updaterEnabled();
QString updaterBinaryName();
QUrl normalizeImportUrl(QString const& url);
signals:
void updateAllowedChanged(bool status);
void globalSettingsAboutToOpen();
void globalSettingsClosed();
int currentCatChanged(int index);
public slots:
bool launch(
InstancePtr instance,
bool online = true,
BaseProfilerFactory *profiler = nullptr,
MinecraftServerTargetPtr serverToJoin = nullptr,
MinecraftAccountPtr accountToUse = nullptr
);
#ifdef Q_OS_MACOS
void clickedOnDock();
#endif
public slots:
bool launch(InstancePtr instance,
bool online = true,
bool demo = false,
MinecraftServerTargetPtr serverToJoin = nullptr,
MinecraftAccountPtr accountToUse = nullptr);
bool kill(InstancePtr instance);
void closeCurrentWindow();
private slots:
private slots:
void on_windowClose();
void messageReceived(const QByteArray & message);
void messageReceived(const QByteArray& message);
void controllerSucceeded();
void controllerFailed(const QString & error);
void controllerFailed(const QString& error);
void setupWizardFinished(int status);
private:
private:
bool handleDataMigration(const QString& currentData, const QString& oldData, const QString& name, const QString& configFile) const;
bool createSetupWizard();
void performMainStartupAction();
// sets the fatal error message and m_status to Failed.
void showFatalErrorMessage(const QString & title, const QString & content);
void showFatalErrorMessage(const QString& title, const QString& content);
private:
private:
void addRunningInstance();
void subRunningInstance();
bool shouldExitNow() const;
private:
private:
QDateTime startTime;
shared_qobject_ptr<QNetworkAccessManager> m_network;
shared_qobject_ptr<UpdateChecker> m_updateChecker;
shared_qobject_ptr<ExternalUpdater> m_updater;
shared_qobject_ptr<AccountList> m_accounts;
shared_qobject_ptr<HttpMetaCache> m_metacache;
@ -228,15 +243,21 @@ private:
std::shared_ptr<JavaInstallList> m_javalist;
std::shared_ptr<TranslationsModel> m_translations;
std::shared_ptr<GenericPageProvider> m_globalSettingsProvider;
std::map<QString, std::unique_ptr<ITheme>> m_themes;
std::unique_ptr<MCEditTool> m_mcedit;
QString m_jarsPath;
QSet<QString> m_features;
std::unique_ptr<ThemeManager> m_themeManager;
QMap<QString, std::shared_ptr<BaseProfilerFactory>> m_profilers;
QString m_rootPath;
QString m_dataPath;
Status m_status = Application::StartingUp;
Capabilities m_capabilities;
bool m_portable = false;
#ifdef Q_OS_MACOS
Qt::ApplicationState m_prevAppState = Qt::ApplicationInactive;
#endif
#if defined Q_OS_WIN32
// used on Windows to attach the standard IO streams
@ -245,7 +266,7 @@ private:
// FIXME: attach to instances instead.
struct InstanceXtras {
InstanceWindow * window = nullptr;
InstanceWindow* window = nullptr;
shared_qobject_ptr<LaunchController> controller;
};
std::map<QString, InstanceXtras> m_instanceExtras;
@ -256,18 +277,21 @@ private:
bool m_updateRunning = false;
// main window, if any
MainWindow * m_mainWindow = nullptr;
MainWindow* m_mainWindow = nullptr;
// peer launcher instance connector - used to implement single instance launcher and signalling
LocalPeer * m_peerInstance = nullptr;
LocalPeer* m_peerInstance = nullptr;
SetupWizard * m_setupWizard = nullptr;
public:
SetupWizard* m_setupWizard = nullptr;
public:
QString m_detectedGLFWPath;
QString m_detectedOpenALPath;
QString m_instanceIdToLaunch;
QString m_serverToJoin;
QString m_profileToUse;
bool m_liveCheck = false;
QUrl m_zipToImport;
QList<QUrl> m_urlsToImport;
QString m_instanceIdToShowWindowOf;
std::unique_ptr<QFile> logFile;
};

View File

@ -1,31 +1,67 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* 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 "ApplicationMessage.h"
#include <QJsonDocument>
#include <QJsonObject>
#include "Json.h"
void ApplicationMessage::parse(const QByteArray & input) {
auto doc = QJsonDocument::fromBinaryData(input);
auto root = doc.object();
void ApplicationMessage::parse(const QByteArray& input)
{
auto doc = Json::requireDocument(input, "ApplicationMessage");
auto root = Json::requireObject(doc, "ApplicationMessage");
command = root.value("command").toString();
args.clear();
auto parsedArgs = root.value("args").toObject();
for(auto iter = parsedArgs.begin(); iter != parsedArgs.end(); iter++) {
args[iter.key()] = iter.value().toString();
for (auto iter = parsedArgs.constBegin(); iter != parsedArgs.constEnd(); iter++) {
args.insert(iter.key(), iter.value().toString());
}
}
QByteArray ApplicationMessage::serialize() {
QByteArray ApplicationMessage::serialize()
{
QJsonObject root;
root.insert("command", command);
QJsonObject outArgs;
for (auto iter = args.begin(); iter != args.end(); iter++) {
outArgs[iter.key()] = iter.value();
for (auto iter = args.constBegin(); iter != args.constEnd(); iter++) {
outArgs.insert(iter.key(), iter.value());
}
root.insert("args", outArgs);
QJsonDocument out;
out.setObject(root);
return out.toBinaryData();
return Json::toText(root);
}

View File

@ -1,13 +1,13 @@
#pragma once
#include <QString>
#include <QMap>
#include <QByteArray>
#include <QHash>
#include <QString>
struct ApplicationMessage {
QString command;
QMap<QString, QString> args;
QHash<QString, QString> args;
QByteArray serialize();
void parse(const QByteArray & input);
void parse(const QByteArray& input);
};

View File

@ -18,27 +18,21 @@
#include "BaseInstaller.h"
#include "minecraft/MinecraftInstance.h"
BaseInstaller::BaseInstaller()
{
BaseInstaller::BaseInstaller() {}
}
bool BaseInstaller::isApplied(MinecraftInstance *on)
bool BaseInstaller::isApplied(MinecraftInstance* on)
{
return QFile::exists(filename(on->instanceRoot()));
}
bool BaseInstaller::add(MinecraftInstance *to)
bool BaseInstaller::add(MinecraftInstance* to)
{
if (!patchesDir(to->instanceRoot()).exists())
{
if (!patchesDir(to->instanceRoot()).exists()) {
QDir(to->instanceRoot()).mkdir("patches");
}
if (isApplied(to))
{
if (!remove(to))
{
if (isApplied(to)) {
if (!remove(to)) {
return false;
}
}
@ -46,16 +40,16 @@ bool BaseInstaller::add(MinecraftInstance *to)
return true;
}
bool BaseInstaller::remove(MinecraftInstance *from)
bool BaseInstaller::remove(MinecraftInstance* from)
{
return QFile::remove(filename(from->instanceRoot()));
}
QString BaseInstaller::filename(const QString &root) const
QString BaseInstaller::filename(const QString& root) const
{
return patchesDir(root).absoluteFilePath(id() + ".json");
}
QDir BaseInstaller::patchesDir(const QString &root) const
QDir BaseInstaller::patchesDir(const QString& root) const
{
return QDir(root + "/patches/");
}

View File

@ -17,28 +17,28 @@
#include <memory>
#include "BaseVersion.h"
class MinecraftInstance;
class QDir;
class QString;
class QObject;
class Task;
class BaseVersion;
typedef std::shared_ptr<BaseVersion> BaseVersionPtr;
class BaseInstaller
{
public:
class BaseInstaller {
public:
BaseInstaller();
virtual ~BaseInstaller(){};
bool isApplied(MinecraftInstance *on);
bool isApplied(MinecraftInstance* on);
virtual bool add(MinecraftInstance *to);
virtual bool remove(MinecraftInstance *from);
virtual bool add(MinecraftInstance* to);
virtual bool remove(MinecraftInstance* from);
virtual Task *createInstallTask(MinecraftInstance *instance, BaseVersionPtr version, QObject *parent) = 0;
virtual Task* createInstallTask(MinecraftInstance* instance, BaseVersion::Ptr version, QObject* parent) = 0;
protected:
protected:
virtual QString id() const = 0;
QString filename(const QString &root) const;
QDir patchesDir(const QString &root) const;
QString filename(const QString& root) const;
QDir patchesDir(const QString& root) const;
};

View File

@ -1,7 +1,9 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
* Copyright (C) 2023 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
@ -35,34 +37,49 @@
#include "BaseInstance.h"
#include <QFileInfo>
#include <QDir>
#include <QDebug>
#include <QDir>
#include <QFileInfo>
#include <QJsonDocument>
#include <QJsonObject>
#include <QRegularExpression>
#include "settings/INISettingsObject.h"
#include "settings/Setting.h"
#include "settings/OverrideSetting.h"
#include "settings/Setting.h"
#include "FileSystem.h"
#include "Commandline.h"
#include "BuildConfig.h"
#include "Commandline.h"
#include "FileSystem.h"
BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString &rootDir)
: QObject()
BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString& rootDir) : QObject()
{
m_settings = settings;
m_global_settings = globalSettings;
m_rootDir = rootDir;
m_settings->registerSetting("name", "Unnamed Instance");
m_settings->registerSetting("iconKey", "default");
m_settings->registerSetting("notes", "");
m_settings->registerSetting("lastLaunchTime", 0);
m_settings->registerSetting("totalTimePlayed", 0);
m_settings->registerSetting("lastTimePlayed", 0);
m_settings->registerSetting("InstanceType", "OneSix");
m_settings->registerSetting("linkedInstances", "[]");
// Game time override
auto gameTimeOverride = m_settings->registerSetting("OverrideGameTime", false);
m_settings->registerOverride(globalSettings->getSetting("ShowGameTime"), gameTimeOverride);
m_settings->registerOverride(globalSettings->getSetting("RecordGameTime"), gameTimeOverride);
// NOTE: Sometimees InstanceType is already registered, as it was used to identify the type of
// a locally stored instance
if (!m_settings->getSetting("InstanceType"))
m_settings->registerSetting("InstanceType", "");
// Custom Commands
auto commandSetting = m_settings->registerSetting({"OverrideCommands","OverrideLaunchCmd"}, false);
auto commandSetting = m_settings->registerSetting({ "OverrideCommands", "OverrideLaunchCmd" }, false);
m_settings->registerOverride(globalSettings->getSetting("PreLaunchCommand"), commandSetting);
m_settings->registerOverride(globalSettings->getSetting("WrapperCommand"), commandSetting);
m_settings->registerOverride(globalSettings->getSetting("PostExitCommand"), commandSetting);
@ -76,6 +93,16 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s
m_settings->registerPassthrough(globalSettings->getSetting("ConsoleMaxLines"), nullptr);
m_settings->registerPassthrough(globalSettings->getSetting("ConsoleOverflowStop"), nullptr);
// Managed Packs
m_settings->registerSetting("ManagedPack", false);
m_settings->registerSetting("ManagedPackType", "");
m_settings->registerSetting("ManagedPackID", "");
m_settings->registerSetting("ManagedPackName", "");
m_settings->registerSetting("ManagedPackVersionID", "");
m_settings->registerSetting("ManagedPackVersionName", "");
m_settings->registerSetting("Profiler", "");
}
QString BaseInstance::getPreLaunchCommand()
@ -93,13 +120,66 @@ QString BaseInstance::getPostExitCommand()
return settings()->get("PostExitCommand").toString();
}
bool BaseInstance::isManagedPack() const
{
return m_settings->get("ManagedPack").toBool();
}
QString BaseInstance::getManagedPackType() const
{
return m_settings->get("ManagedPackType").toString();
}
QString BaseInstance::getManagedPackID() const
{
return m_settings->get("ManagedPackID").toString();
}
QString BaseInstance::getManagedPackName() const
{
return m_settings->get("ManagedPackName").toString();
}
QString BaseInstance::getManagedPackVersionID() const
{
return m_settings->get("ManagedPackVersionID").toString();
}
QString BaseInstance::getManagedPackVersionName() const
{
return m_settings->get("ManagedPackVersionName").toString();
}
void BaseInstance::setManagedPack(const QString& type,
const QString& id,
const QString& name,
const QString& versionId,
const QString& version)
{
m_settings->set("ManagedPack", true);
m_settings->set("ManagedPackType", type);
m_settings->set("ManagedPackID", id);
m_settings->set("ManagedPackName", name);
m_settings->set("ManagedPackVersionID", versionId);
m_settings->set("ManagedPackVersionName", version);
}
void BaseInstance::copyManagedPack(BaseInstance& other)
{
m_settings->set("ManagedPack", other.isManagedPack());
m_settings->set("ManagedPackType", other.getManagedPackType());
m_settings->set("ManagedPackID", other.getManagedPackID());
m_settings->set("ManagedPackName", other.getManagedPackName());
m_settings->set("ManagedPackVersionID", other.getManagedPackVersionID());
m_settings->set("ManagedPackVersionName", other.getManagedPackVersionName());
}
int BaseInstance::getConsoleMaxLines() const
{
auto lineSetting = settings()->getSetting("ConsoleMaxLines");
auto lineSetting = m_settings->getSetting("ConsoleMaxLines");
bool conversionOk = false;
int maxLines = lineSetting->get().toInt(&conversionOk);
if(!conversionOk)
{
if (!conversionOk) {
maxLines = lineSetting->defValue().toInt();
qWarning() << "ConsoleMaxLines has nonsensical value, defaulting to" << maxLines;
}
@ -108,13 +188,44 @@ int BaseInstance::getConsoleMaxLines() const
bool BaseInstance::shouldStopOnConsoleOverflow() const
{
return settings()->get("ConsoleOverflowStop").toBool();
return m_settings->get("ConsoleOverflowStop").toBool();
}
QStringList BaseInstance::getLinkedInstances() const
{
return m_settings->get("linkedInstances").toStringList();
}
void BaseInstance::setLinkedInstances(const QStringList& list)
{
auto linkedInstances = m_settings->get("linkedInstances").toStringList();
m_settings->set("linkedInstances", list);
}
void BaseInstance::addLinkedInstanceId(const QString& id)
{
auto linkedInstances = m_settings->get("linkedInstances").toStringList();
linkedInstances.append(id);
setLinkedInstances(linkedInstances);
}
bool BaseInstance::removeLinkedInstanceId(const QString& id)
{
auto linkedInstances = m_settings->get("linkedInstances").toStringList();
int numRemoved = linkedInstances.removeAll(id);
setLinkedInstances(linkedInstances);
return numRemoved > 0;
}
bool BaseInstance::isLinkedToInstanceId(const QString& id) const
{
auto linkedInstances = m_settings->get("linkedInstances").toStringList();
return linkedInstances.contains(id);
}
void BaseInstance::iconUpdated(QString key)
{
if(iconKey() == key)
{
if (iconKey() == key) {
emit propertiesChanged(this);
}
}
@ -128,8 +239,7 @@ void BaseInstance::invalidate()
void BaseInstance::changeStatus(BaseInstance::Status newStatus)
{
Status status = currentStatus();
if(status != newStatus)
{
if (status != newStatus) {
m_status = newStatus;
emit statusChanged(status, newStatus);
}
@ -152,23 +262,19 @@ bool BaseInstance::isRunning() const
void BaseInstance::setRunning(bool running)
{
if(running == m_isRunning)
if (running == m_isRunning)
return;
m_isRunning = running;
if(!m_settings->get("RecordGameTime").toBool())
{
if (!m_settings->get("RecordGameTime").toBool()) {
emit runningStatusChanged(running);
return;
}
if(running)
{
if (running) {
m_timeStarted = QDateTime::currentDateTime();
}
else
{
} else {
QDateTime timeEnded = QDateTime::currentDateTime();
qint64 current = settings()->get("totalTimePlayed").toLongLong();
@ -183,9 +289,8 @@ void BaseInstance::setRunning(bool running)
int64_t BaseInstance::totalTimePlayed() const
{
qint64 current = settings()->get("totalTimePlayed").toLongLong();
if(m_isRunning)
{
qint64 current = m_settings->get("totalTimePlayed").toLongLong();
if (m_isRunning) {
QDateTime timeNow = QDateTime::currentDateTime();
return current + m_timeStarted.secsTo(timeNow);
}
@ -194,12 +299,11 @@ int64_t BaseInstance::totalTimePlayed() const
int64_t BaseInstance::lastTimePlayed() const
{
if(m_isRunning)
{
if (m_isRunning) {
QDateTime timeNow = QDateTime::currentDateTime();
return m_timeStarted.secsTo(timeNow);
}
return settings()->get("lastTimePlayed").toLongLong();
return m_settings->get("lastTimePlayed").toLongLong();
}
void BaseInstance::resetTimePlayed()
@ -218,8 +322,10 @@ QString BaseInstance::instanceRoot() const
return m_rootDir;
}
SettingsObjectPtr BaseInstance::settings() const
SettingsObjectPtr BaseInstance::settings()
{
loadSpecificSettings();
return m_settings;
}
@ -240,14 +346,14 @@ qint64 BaseInstance::lastLaunch() const
void BaseInstance::setLastLaunch(qint64 val)
{
//FIXME: if no change, do not set. setting involves saving a file.
// FIXME: if no change, do not set. setting involves saving a file.
m_settings->set("lastLaunchTime", val);
emit propertiesChanged(this);
}
void BaseInstance::setNotes(QString val)
{
//FIXME: if no change, do not set. setting involves saving a file.
// FIXME: if no change, do not set. setting involves saving a file.
m_settings->set("notes", val);
}
@ -258,7 +364,7 @@ QString BaseInstance::notes() const
void BaseInstance::setIconKey(QString val)
{
//FIXME: if no change, do not set. setting involves saving a file.
// FIXME: if no change, do not set. setting involves saving a file.
m_settings->set("iconKey", val);
emit propertiesChanged(this);
}
@ -270,7 +376,7 @@ QString BaseInstance::iconKey() const
void BaseInstance::setName(QString val)
{
//FIXME: if no change, do not set. setting involves saving a file.
// FIXME: if no change, do not set. setting involves saving a file.
m_settings->set("name", val);
emit propertiesChanged(this);
}
@ -282,11 +388,11 @@ QString BaseInstance::name() const
QString BaseInstance::windowTitle() const
{
return BuildConfig.LAUNCHER_NAME + ": " + name().replace(QRegExp("[ \n\r\t]+"), " ");
return BuildConfig.LAUNCHER_DISPLAYNAME + ": " + name();
}
// FIXME: why is this here? move it to MinecraftInstance!!!
QStringList BaseInstance::extraArguments() const
QStringList BaseInstance::extraArguments()
{
return Commandline::splitArgs(settings()->get("JvmArgs").toString());
}
@ -295,3 +401,8 @@ shared_qobject_ptr<LaunchTask> BaseInstance::getLaunchTask()
{
return m_launchProcess;
}
void BaseInstance::updateRuntimeContext()
{
// NOOP
}

View File

@ -1,7 +1,9 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
* Copyright (C) 2023 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
@ -36,22 +38,24 @@
#pragma once
#include <cassert>
#include <QObject>
#include "QObjectPtr.h"
#include <QDateTime>
#include <QSet>
#include <QMenu>
#include <QObject>
#include <QProcess>
#include <QSet>
#include "QObjectPtr.h"
#include "settings/SettingsObject.h"
#include "settings/INIFile.h"
#include "BaseVersionList.h"
#include "minecraft/auth/MinecraftAccount.h"
#include "MessageLevel.h"
#include "minecraft/auth/MinecraftAccount.h"
#include "pathmatcher/IPathMatcher.h"
#include "settings/INIFile.h"
#include "net/Mode.h"
#include "RuntimeContext.h"
#include "minecraft/launch/MinecraftServerTarget.h"
class QDir;
@ -60,7 +64,7 @@ class LaunchTask;
class BaseInstance;
// pointer for lazy people
typedef std::shared_ptr<BaseInstance> InstancePtr;
using InstancePtr = std::shared_ptr<BaseInstance>;
/*!
* \brief Base class for instances.
@ -70,23 +74,21 @@ typedef std::shared_ptr<BaseInstance> InstancePtr;
* To create a new instance type, create a new class inheriting from this class
* and implement the pure virtual functions.
*/
class BaseInstance : public QObject, public std::enable_shared_from_this<BaseInstance>
{
class BaseInstance : public QObject, public std::enable_shared_from_this<BaseInstance> {
Q_OBJECT
protected:
protected:
/// no-touchy!
BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString &rootDir);
BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString& rootDir);
public: /* types */
enum class Status
{
public: /* types */
enum class Status {
Present,
Gone // either nuked or invalidated
Gone // either nuked or invalidated
};
public:
public:
/// virtual destructor to make sure the destruction is COMPLETE
virtual ~BaseInstance() {};
virtual ~BaseInstance() {}
virtual void saveNow() = 0;
@ -115,10 +117,7 @@ public:
QString instanceRoot() const;
/// Path to the instance's game root directory.
virtual QString gameRoot() const
{
return instanceRoot();
}
virtual QString gameRoot() const { return instanceRoot(); }
/// Path to the instance's mods directory.
virtual QString modsRoot() const = 0;
@ -139,16 +138,22 @@ public:
QString getPostExitCommand();
QString getWrapperCommand();
/// guess log level from a line of game log
virtual MessageLevel::Enum guessLevel(const QString &line, MessageLevel::Enum level)
{
return level;
};
bool isManagedPack() const;
QString getManagedPackType() const;
QString getManagedPackID() const;
QString getManagedPackName() const;
QString getManagedPackVersionID() const;
QString getManagedPackVersionName() const;
void setManagedPack(const QString& type, const QString& id, const QString& name, const QString& versionId, const QString& version);
void copyManagedPack(BaseInstance& other);
virtual QStringList extraArguments() const;
/// 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.
virtual QSet <QString> traits() const = 0;
virtual QSet<QString> traits() const = 0;
/**
* Gets the time that the instance was last launched.
@ -161,16 +166,24 @@ public:
/*!
* \brief Gets this instance's settings object.
* This settings object stores instance-specific settings.
*
* Note that this method is not const.
* It may call loadSpecificSettings() to ensure those are loaded.
*
* \return A pointer to this instance's settings object.
*/
virtual SettingsObjectPtr settings() const;
virtual SettingsObjectPtr settings();
/*!
* \brief Loads settings specific to an instance type if they're not already loaded.
*/
virtual void loadSpecificSettings() = 0;
/// returns a valid update task
virtual Task::Ptr createUpdateTask(Net::Mode mode) = 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, MinecraftServerTargetPtr serverToJoin) = 0;
/// returns the current launch task (if any)
shared_qobject_ptr<LaunchTask> getLaunchTask();
@ -179,6 +192,7 @@ public:
* Create envrironment variables for running the instance
*/
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'
@ -196,44 +210,35 @@ public:
virtual QString instanceConfigFolder() const = 0;
/// get variables this instance exports
virtual QMap<QString, QString> getVariables() const = 0;
virtual QMap<QString, QString> getVariables() = 0;
virtual QString typeName() const = 0;
bool hasVersionBroken() const
{
return m_hasBrokenVersion;
}
void updateRuntimeContext();
RuntimeContext runtimeContext() const { return m_runtimeContext; }
bool hasVersionBroken() const { return m_hasBrokenVersion; }
void setVersionBroken(bool value)
{
if(m_hasBrokenVersion != value)
{
if (m_hasBrokenVersion != value) {
m_hasBrokenVersion = value;
emit propertiesChanged(this);
}
}
bool hasUpdateAvailable() const
{
return m_hasUpdate;
}
bool hasUpdateAvailable() const { return m_hasUpdate; }
void setUpdateAvailable(bool value)
{
if(m_hasUpdate != value)
{
if (m_hasUpdate != value) {
m_hasUpdate = value;
emit propertiesChanged(this);
}
}
bool hasCrashed() const
{
return m_crashed;
}
bool hasCrashed() const { return m_crashed; }
void setCrashed(bool value)
{
if(m_crashed != value)
{
if (m_crashed != value) {
m_crashed = value;
emit propertiesChanged(this);
}
@ -243,6 +248,8 @@ public:
virtual bool canEdit() const = 0;
virtual bool canExport() const = 0;
virtual void populateLaunchMenu(QMenu* menu) = 0;
bool reloadSettings();
/**
@ -255,39 +262,56 @@ public:
int getConsoleMaxLines() const;
bool shouldStopOnConsoleOverflow() const;
protected:
QStringList getLinkedInstances() const;
void setLinkedInstances(const QStringList& list);
void addLinkedInstanceId(const QString& id);
bool removeLinkedInstanceId(const QString& id);
bool isLinkedToInstanceId(const QString& id) const;
protected:
void changeStatus(Status newStatus);
signals:
SettingsObjectPtr globalSettings() const { return m_global_settings.lock(); }
bool isSpecificSettingsLoaded() const { return m_specific_settings_loaded; }
void setSpecificSettingsLoaded(bool loaded) { m_specific_settings_loaded = loaded; }
signals:
/*!
* \brief Signal emitted when properties relevant to the instance view change
*/
void propertiesChanged(BaseInstance *inst);
void propertiesChanged(BaseInstance* inst);
void launchTaskChanged(shared_qobject_ptr<LaunchTask>);
void runningStatusChanged(bool running);
void profilerChanged();
void statusChanged(Status from, Status to);
protected slots:
protected slots:
void iconUpdated(QString key);
protected: /* data */
protected: /* data */
QString m_rootDir;
SettingsObjectPtr m_settings;
// InstanceFlags m_flags;
bool m_isRunning = false;
shared_qobject_ptr<LaunchTask> m_launchProcess;
QDateTime m_timeStarted;
RuntimeContext m_runtimeContext;
private: /* data */
private: /* data */
Status m_status = Status::Present;
bool m_crashed = false;
bool m_hasUpdate = false;
bool m_hasBrokenVersion = false;
SettingsObjectWeakPtr m_global_settings;
bool m_specific_settings_loaded = false;
};
Q_DECLARE_METATYPE(shared_qobject_ptr<BaseInstance>)
//Q_DECLARE_METATYPE(BaseInstance::InstanceFlag)
//Q_DECLARE_OPERATORS_FOR_FLAGS(BaseInstance::InstanceFlags)
// Q_DECLARE_METATYPE(BaseInstance::InstanceFlag)
// Q_DECLARE_OPERATORS_FOR_FLAGS(BaseInstance::InstanceFlags)

View File

@ -15,16 +15,16 @@
#pragma once
#include <memory>
#include <QString>
#include <QMetaType>
#include <QString>
#include <memory>
/*!
* An abstract base class for versions.
*/
class BaseVersion
{
public:
class BaseVersion {
public:
using Ptr = std::shared_ptr<BaseVersion>;
virtual ~BaseVersion() {}
/*!
* A string used to identify this version in config files.
@ -43,17 +43,8 @@ public:
* the kind of version this is (Stable, Beta, Snapshot, whatever)
*/
virtual QString typeString() const = 0;
virtual bool operator<(BaseVersion &a)
{
return name() < a.name();
};
virtual bool operator>(BaseVersion &a)
{
return name() > a.name();
};
virtual bool operator<(BaseVersion& a) { return name() < a.name(); }
virtual bool operator>(BaseVersion& a) { return name() > a.name(); }
};
typedef std::shared_ptr<BaseVersion> BaseVersionPtr;
Q_DECLARE_METATYPE(BaseVersionPtr)
Q_DECLARE_METATYPE(BaseVersion::Ptr)

View File

@ -1,44 +1,61 @@
/* Copyright 2013-2021 MultiMC Contributors
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* 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
* 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.
*
* http://www.apache.org/licenses/LICENSE-2.0
* 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.
*
* 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.
* 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 "BaseVersionList.h"
#include "BaseVersion.h"
BaseVersionList::BaseVersionList(QObject *parent) : QAbstractListModel(parent)
{
}
BaseVersionList::BaseVersionList(QObject* parent) : QAbstractListModel(parent) {}
BaseVersionPtr BaseVersionList::findVersion(const QString &descriptor)
BaseVersion::Ptr BaseVersionList::findVersion(const QString& descriptor)
{
for (int i = 0; i < count(); i++)
{
for (int i = 0; i < count(); i++) {
if (at(i)->descriptor() == descriptor)
return at(i);
}
return BaseVersionPtr();
return nullptr;
}
BaseVersionPtr BaseVersionList::getRecommended() const
BaseVersion::Ptr BaseVersionList::getRecommended() const
{
if (count() <= 0)
return BaseVersionPtr();
return nullptr;
else
return at(0);
}
QVariant BaseVersionList::data(const QModelIndex &index, int role) const
QVariant BaseVersionList::data(const QModelIndex& index, int role) const
{
if (!index.isValid())
return QVariant();
@ -46,41 +63,40 @@ QVariant BaseVersionList::data(const QModelIndex &index, int role) const
if (index.row() > count())
return QVariant();
BaseVersionPtr version = at(index.row());
BaseVersion::Ptr version = at(index.row());
switch (role)
{
case VersionPointerRole:
return qVariantFromValue(version);
switch (role) {
case VersionPointerRole:
return QVariant::fromValue(version);
case VersionRole:
return version->name();
case VersionRole:
return version->name();
case VersionIdRole:
return version->descriptor();
case VersionIdRole:
return version->descriptor();
case TypeRole:
return version->typeString();
case TypeRole:
return version->typeString();
default:
return QVariant();
default:
return QVariant();
}
}
BaseVersionList::RoleList BaseVersionList::providesRoles() const
{
return {VersionPointerRole, VersionRole, VersionIdRole, TypeRole};
return { VersionPointerRole, VersionRole, VersionIdRole, TypeRole };
}
int BaseVersionList::rowCount(const QModelIndex &parent) const
int BaseVersionList::rowCount(const QModelIndex& parent) const
{
// Return count
return count();
return parent.isValid() ? 0 : count();
}
int BaseVersionList::columnCount(const QModelIndex &parent) const
int BaseVersionList::columnCount(const QModelIndex& parent) const
{
return 1;
return parent.isValid() ? 0 : 1;
}
QHash<int, QByteArray> BaseVersionList::roleNames() const

View File

@ -15,13 +15,13 @@
#pragma once
#include <QAbstractListModel>
#include <QObject>
#include <QVariant>
#include <QAbstractListModel>
#include "BaseVersion.h"
#include "tasks/Task.h"
#include "QObjectPtr.h"
#include "tasks/Task.h"
/*!
* \brief Class that each instance type's version list derives from.
@ -35,12 +35,10 @@
* all have a default implementation, but they can be overridden by plugins to
* change the behavior of the list.
*/
class BaseVersionList : public QAbstractListModel
{
class BaseVersionList : public QAbstractListModel {
Q_OBJECT
public:
enum ModelRoles
{
public:
enum ModelRoles {
VersionPointerRole = Qt::UserRole,
VersionRole,
VersionIdRole,
@ -53,9 +51,9 @@ public:
ArchitectureRole,
SortRole
};
typedef QList<int> RoleList;
using RoleList = QList<int>;
explicit BaseVersionList(QObject *parent = 0);
explicit BaseVersionList(QObject* parent = 0);
/*!
* \brief Gets a task that will reload the version list.
@ -66,19 +64,19 @@ public:
virtual Task::Ptr getLoadTask() = 0;
//! Checks whether or not the list is loaded. If this returns false, the list should be
//loaded.
// loaded.
virtual bool isLoaded() = 0;
//! Gets the version at the given index.
virtual const BaseVersionPtr at(int i) const = 0;
virtual const BaseVersion::Ptr at(int i) const = 0;
//! Returns the number of versions in the list.
virtual int count() const = 0;
//////// List Model Functions ////////
QVariant data(const QModelIndex &index, int role) const override;
int rowCount(const QModelIndex &parent) const override;
int columnCount(const QModelIndex &parent) const override;
QVariant data(const QModelIndex& index, int role) const override;
int rowCount(const QModelIndex& parent) const override;
int columnCount(const QModelIndex& parent) const override;
QHash<int, QByteArray> roleNames() const override;
//! which roles are provided by this version list?
@ -90,21 +88,20 @@ public:
* \return A const pointer to the version with the given descriptor. NULL if
* one doesn't exist.
*/
virtual BaseVersionPtr findVersion(const QString &descriptor);
virtual BaseVersion::Ptr findVersion(const QString& descriptor);
/*!
* \brief Gets the recommended version from this list
* If the list doesn't support recommended versions, this works exactly as getLatestStable
*/
virtual BaseVersionPtr getRecommended() const;
virtual BaseVersion::Ptr getRecommended() const;
/*!
* Sorts the version list.
*/
virtual void sortVersions() = 0;
protected
slots:
protected slots:
/*!
* Updates this list with the given list of versions.
* This is done by copying each version in the given list and inserting it
@ -117,5 +114,5 @@ slots:
* then copies the versions and sets their parents correctly.
* \param versions List of versions whose parents should be set.
*/
virtual void updateListData(QList<BaseVersionPtr> versions) = 0;
virtual void updateListData(QList<BaseVersion::Ptr> versions) = 0;
};

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +1,38 @@
/* Copyright 2013-2021 MultiMC Contributors
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* Authors: Orochimarufan <orochimarufan.x3@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.
*
* 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
* 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.
*
* http://www.apache.org/licenses/LICENSE-2.0
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* 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.
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2013-2021 MultiMC Contributors
*
* Authors: Orochimarufan <orochimarufan.x3@gmail.com>
*
* 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 "Commandline.h"
@ -21,8 +41,7 @@
* @file libutil/src/cmdutils.cpp
*/
namespace Commandline
{
namespace Commandline {
// commandline splitter
QStringList splitArgs(QString args)
@ -31,38 +50,29 @@ QStringList splitArgs(QString args)
QString current;
bool escape = false;
QChar inquotes;
for (int i = 0; i < args.length(); i++)
{
for (int i = 0; i < args.length(); i++) {
QChar cchar = args.at(i);
// \ escaped
if (escape)
{
if (escape) {
current += cchar;
escape = false;
// in "quotes"
}
else if (!inquotes.isNull())
{
} else if (!inquotes.isNull()) {
if (cchar == '\\')
escape = true;
else if (cchar == inquotes)
inquotes = 0;
inquotes = QChar::Null;
else
current += cchar;
// otherwise
}
else
{
if (cchar == ' ')
{
if (!current.isEmpty())
{
} else {
if (cchar == ' ') {
if (!current.isEmpty()) {
argv << current;
current.clear();
}
}
else if (cchar == '"' || cchar == '\'')
} else if (cchar == '"' || cchar == '\'')
inquotes = cchar;
else
current += cchar;
@ -72,412 +82,4 @@ QStringList splitArgs(QString args)
argv << current;
return argv;
}
Parser::Parser(FlagStyle::Enum flagStyle, ArgumentStyle::Enum argStyle)
{
m_flagStyle = flagStyle;
m_argStyle = argStyle;
}
// styles setter/getter
void Parser::setArgumentStyle(ArgumentStyle::Enum style)
{
m_argStyle = style;
}
ArgumentStyle::Enum Parser::argumentStyle()
{
return m_argStyle;
}
void Parser::setFlagStyle(FlagStyle::Enum style)
{
m_flagStyle = style;
}
FlagStyle::Enum Parser::flagStyle()
{
return m_flagStyle;
}
// setup methods
void Parser::addSwitch(QString name, bool def)
{
if (m_params.contains(name))
throw "Name not unique";
OptionDef *param = new OptionDef;
param->type = otSwitch;
param->name = name;
param->metavar = QString("<%1>").arg(name);
param->def = def;
m_options[name] = param;
m_params[name] = (CommonDef *)param;
m_optionList.append(param);
}
void Parser::addOption(QString name, QVariant def)
{
if (m_params.contains(name))
throw "Name not unique";
OptionDef *param = new OptionDef;
param->type = otOption;
param->name = name;
param->metavar = QString("<%1>").arg(name);
param->def = def;
m_options[name] = param;
m_params[name] = (CommonDef *)param;
m_optionList.append(param);
}
void Parser::addArgument(QString name, bool required, QVariant def)
{
if (m_params.contains(name))
throw "Name not unique";
PositionalDef *param = new PositionalDef;
param->name = name;
param->def = def;
param->required = required;
param->metavar = name;
m_positionals.append(param);
m_params[name] = (CommonDef *)param;
}
void Parser::addDocumentation(QString name, QString doc, QString metavar)
{
if (!m_params.contains(name))
throw "Name does not exist";
CommonDef *param = m_params[name];
param->doc = doc;
if (!metavar.isNull())
param->metavar = metavar;
}
void Parser::addShortOpt(QString name, QChar flag)
{
if (!m_params.contains(name))
throw "Name does not exist";
if (!m_options.contains(name))
throw "Name is not an Option or Swtich";
OptionDef *param = m_options[name];
m_flags[flag] = param;
param->flag = flag;
}
// help methods
QString Parser::compileHelp(QString progName, int helpIndent, bool useFlags)
{
QStringList help;
help << compileUsage(progName, useFlags) << "\r\n";
// positionals
if (!m_positionals.isEmpty())
{
help << "\r\n";
help << "Positional arguments:\r\n";
QListIterator<PositionalDef *> it2(m_positionals);
while (it2.hasNext())
{
PositionalDef *param = it2.next();
help << " " << param->metavar;
help << " " << QString(helpIndent - param->metavar.length() - 1, ' ');
help << param->doc << "\r\n";
}
}
// Options
if (!m_optionList.isEmpty())
{
help << "\r\n";
QString optPrefix, flagPrefix;
getPrefix(optPrefix, flagPrefix);
help << "Options & Switches:\r\n";
QListIterator<OptionDef *> it(m_optionList);
while (it.hasNext())
{
OptionDef *option = it.next();
help << " ";
int nameLength = optPrefix.length() + option->name.length();
if (!option->flag.isNull())
{
nameLength += 3 + flagPrefix.length();
help << flagPrefix << option->flag << ", ";
}
help << optPrefix << option->name;
if (option->type == otOption)
{
QString arg = QString("%1%2").arg(
((m_argStyle == ArgumentStyle::Equals) ? "=" : " "), option->metavar);
nameLength += arg.length();
help << arg;
}
help << " " << QString(helpIndent - nameLength - 1, ' ');
help << option->doc << "\r\n";
}
}
return help.join("");
}
QString Parser::compileUsage(QString progName, bool useFlags)
{
QStringList usage;
usage << "Usage: " << progName;
QString optPrefix, flagPrefix;
getPrefix(optPrefix, flagPrefix);
// options
QListIterator<OptionDef *> it(m_optionList);
while (it.hasNext())
{
OptionDef *option = it.next();
usage << " [";
if (!option->flag.isNull() && useFlags)
usage << flagPrefix << option->flag;
else
usage << optPrefix << option->name;
if (option->type == otOption)
usage << ((m_argStyle == ArgumentStyle::Equals) ? "=" : " ") << option->metavar;
usage << "]";
}
// arguments
QListIterator<PositionalDef *> it2(m_positionals);
while (it2.hasNext())
{
PositionalDef *param = it2.next();
usage << " " << (param->required ? "<" : "[");
usage << param->metavar;
usage << (param->required ? ">" : "]");
}
return usage.join("");
}
// parsing
QHash<QString, QVariant> Parser::parse(QStringList argv)
{
QHash<QString, QVariant> map;
QStringListIterator it(argv);
QString programName = it.next();
QString optionPrefix;
QString flagPrefix;
QListIterator<PositionalDef *> positionals(m_positionals);
QStringList expecting;
getPrefix(optionPrefix, flagPrefix);
while (it.hasNext())
{
QString arg = it.next();
if (!expecting.isEmpty())
// we were expecting an argument
{
QString name = expecting.first();
/*
if (map.contains(name))
throw ParsingError(
QString("Option %2%1 was given multiple times").arg(name, optionPrefix));
*/
map[name] = QVariant(arg);
expecting.removeFirst();
continue;
}
if (arg.startsWith(optionPrefix))
// we have an option
{
// qDebug("Found option %s", qPrintable(arg));
QString name = arg.mid(optionPrefix.length());
QString equals;
if ((m_argStyle == ArgumentStyle::Equals ||
m_argStyle == ArgumentStyle::SpaceAndEquals) &&
name.contains("="))
{
int i = name.indexOf("=");
equals = name.mid(i + 1);
name = name.left(i);
}
if (m_options.contains(name))
{
/*
if (map.contains(name))
throw ParsingError(QString("Option %2%1 was given multiple times")
.arg(name, optionPrefix));
*/
OptionDef *option = m_options[name];
if (option->type == otSwitch)
map[name] = true;
else // if (option->type == otOption)
{
if (m_argStyle == ArgumentStyle::Space)
expecting.append(name);
else if (!equals.isNull())
map[name] = equals;
else if (m_argStyle == ArgumentStyle::SpaceAndEquals)
expecting.append(name);
else
throw ParsingError(QString("Option %2%1 reqires an argument.")
.arg(name, optionPrefix));
}
continue;
}
throw ParsingError(QString("Unknown Option %2%1").arg(name, optionPrefix));
}
if (arg.startsWith(flagPrefix))
// we have (a) flag(s)
{
// qDebug("Found flags %s", qPrintable(arg));
QString flags = arg.mid(flagPrefix.length());
QString equals;
if ((m_argStyle == ArgumentStyle::Equals ||
m_argStyle == ArgumentStyle::SpaceAndEquals) &&
flags.contains("="))
{
int i = flags.indexOf("=");
equals = flags.mid(i + 1);
flags = flags.left(i);
}
for (int i = 0; i < flags.length(); i++)
{
QChar flag = flags.at(i);
if (!m_flags.contains(flag))
throw ParsingError(QString("Unknown flag %2%1").arg(flag, flagPrefix));
OptionDef *option = m_flags[flag];
/*
if (map.contains(option->name))
throw ParsingError(QString("Option %2%1 was given multiple times")
.arg(option->name, optionPrefix));
*/
if (option->type == otSwitch)
map[option->name] = true;
else // if (option->type == otOption)
{
if (m_argStyle == ArgumentStyle::Space)
expecting.append(option->name);
else if (!equals.isNull())
if (i == flags.length() - 1)
map[option->name] = equals;
else
throw ParsingError(QString("Flag %4%2 of Argument-requiring Option "
"%1 not last flag in %4%3")
.arg(option->name, flag, flags, flagPrefix));
else if (m_argStyle == ArgumentStyle::SpaceAndEquals)
expecting.append(option->name);
else
throw ParsingError(QString("Option %1 reqires an argument. (flag %3%2)")
.arg(option->name, flag, flagPrefix));
}
}
continue;
}
// must be a positional argument
if (!positionals.hasNext())
throw ParsingError(QString("Don't know what to do with '%1'").arg(arg));
PositionalDef *param = positionals.next();
map[param->name] = arg;
}
// check if we're missing something
if (!expecting.isEmpty())
throw ParsingError(QString("Was still expecting arguments for %2%1").arg(
expecting.join(QString(", ") + optionPrefix), optionPrefix));
while (positionals.hasNext())
{
PositionalDef *param = positionals.next();
if (param->required)
throw ParsingError(
QString("Missing required positional argument '%1'").arg(param->name));
else
map[param->name] = param->def;
}
// fill out gaps
QListIterator<OptionDef *> iter(m_optionList);
while (iter.hasNext())
{
OptionDef *option = iter.next();
if (!map.contains(option->name))
map[option->name] = option->def;
}
return map;
}
// clear defs
void Parser::clear()
{
m_flags.clear();
m_params.clear();
m_options.clear();
QMutableListIterator<OptionDef *> it(m_optionList);
while (it.hasNext())
{
OptionDef *option = it.next();
it.remove();
delete option;
}
QMutableListIterator<PositionalDef *> it2(m_positionals);
while (it2.hasNext())
{
PositionalDef *arg = it2.next();
it2.remove();
delete arg;
}
}
// Destructor
Parser::~Parser()
{
clear();
}
// getPrefix
void Parser::getPrefix(QString &opt, QString &flag)
{
if (m_flagStyle == FlagStyle::Windows)
opt = flag = "/";
else if (m_flagStyle == FlagStyle::Unix)
opt = flag = "-";
// else if (m_flagStyle == FlagStyle::GNU)
else
{
opt = "--";
flag = "-";
}
}
// ParsingError
ParsingError::ParsingError(const QString &what) : std::runtime_error(what.toStdString())
{
}
}
} // namespace Commandline

View File

@ -17,12 +17,7 @@
#pragma once
#include <exception>
#include <stdexcept>
#include <QString>
#include <QVariant>
#include <QHash>
#include <QStringList>
/**
@ -30,8 +25,7 @@
* @brief commandline parsing and processing utilities
*/
namespace Commandline
{
namespace Commandline {
/**
* @brief split a string into argv items like a shell would do
@ -39,212 +33,4 @@ namespace Commandline
* @return a QStringList containing all arguments
*/
QStringList splitArgs(QString args);
/**
* @brief The FlagStyle enum
* Specifies how flags are decorated
*/
namespace FlagStyle
{
enum Enum
{
GNU, /**< --option and -o (GNU Style) */
Unix, /**< -option and -o (Unix Style) */
Windows, /**< /option and /o (Windows Style) */
#ifdef Q_OS_WIN32
Default = Windows
#else
Default = GNU
#endif
};
}
/**
* @brief The ArgumentStyle enum
*/
namespace ArgumentStyle
{
enum Enum
{
Space, /**< --option value */
Equals, /**< --option=value */
SpaceAndEquals, /**< --option[= ]value */
#ifdef Q_OS_WIN32
Default = Equals
#else
Default = SpaceAndEquals
#endif
};
}
/**
* @brief The ParsingError class
*/
class ParsingError : public std::runtime_error
{
public:
ParsingError(const QString &what);
};
/**
* @brief The Parser class
*/
class Parser
{
public:
/**
* @brief Parser constructor
* @param flagStyle the FlagStyle to use in this Parser
* @param argStyle the ArgumentStyle to use in this Parser
*/
Parser(FlagStyle::Enum flagStyle = FlagStyle::Default,
ArgumentStyle::Enum argStyle = ArgumentStyle::Default);
/**
* @brief set the flag style
* @param style
*/
void setFlagStyle(FlagStyle::Enum style);
/**
* @brief get the flag style
* @return
*/
FlagStyle::Enum flagStyle();
/**
* @brief set the argument style
* @param style
*/
void setArgumentStyle(ArgumentStyle::Enum style);
/**
* @brief get the argument style
* @return
*/
ArgumentStyle::Enum argumentStyle();
/**
* @brief define a boolean switch
* @param name the parameter name
* @param def the default value
*/
void addSwitch(QString name, bool def = false);
/**
* @brief define an option that takes an additional argument
* @param name the parameter name
* @param def the default value
*/
void addOption(QString name, QVariant def = QVariant());
/**
* @brief define a positional argument
* @param name the parameter name
* @param required wether this argument is required
* @param def the default value
*/
void addArgument(QString name, bool required = true, QVariant def = QVariant());
/**
* @brief adds a flag to an existing parameter
* @param name the (existing) parameter name
* @param flag the flag character
* @see addSwitch addArgument addOption
* Note: any one parameter can only have one flag
*/
void addShortOpt(QString name, QChar flag);
/**
* @brief adds documentation to a Parameter
* @param name the parameter name
* @param metavar a string to be displayed as placeholder for the value
* @param doc a QString containing the documentation
* Note: on positional arguments, metavar replaces the name as displayed.
* on options , metavar replaces the value placeholder
*/
void addDocumentation(QString name, QString doc, QString metavar = QString());
/**
* @brief generate a help message
* @param progName the program name to use in the help message
* @param helpIndent how much the parameter documentation should be indented
* @param flagsInUsage whether we should use flags instead of options in the usage
* @return a help message
*/
QString compileHelp(QString progName, int helpIndent = 22, bool flagsInUsage = true);
/**
* @brief generate a short usage message
* @param progName the program name to use in the usage message
* @param useFlags whether we should use flags instead of options
* @return a usage message
*/
QString compileUsage(QString progName, bool useFlags = true);
/**
* @brief parse
* @param argv a QStringList containing the program ARGV
* @return a QHash mapping argument names to their values
*/
QHash<QString, QVariant> parse(QStringList argv);
/**
* @brief clear all definitions
*/
void clear();
~Parser();
private:
FlagStyle::Enum m_flagStyle;
ArgumentStyle::Enum m_argStyle;
enum OptionType
{
otSwitch,
otOption
};
// Important: the common part MUST BE COMMON ON ALL THREE structs
struct CommonDef
{
QString name;
QString doc;
QString metavar;
QVariant def;
};
struct OptionDef
{
// common
QString name;
QString doc;
QString metavar;
QVariant def;
// option
OptionType type;
QChar flag;
};
struct PositionalDef
{
// common
QString name;
QString doc;
QString metavar;
QVariant def;
// positional
bool required;
};
QHash<QString, OptionDef *> m_options;
QHash<QChar, OptionDef *> m_flags;
QHash<QString, CommonDef *> m_params;
QList<PositionalDef *> m_positionals;
QList<OptionDef *> m_optionList;
void getPrefix(QString &opt, QString &flag);
};
}
} // namespace Commandline

View File

@ -0,0 +1,96 @@
// SPDX-FileCopyrightText: 2022 Sefa Eyeoglu <contact@scrumplex.net>
//
// SPDX-License-Identifier: GPL-3.0-only
#include "DataMigrationTask.h"
#include "FileSystem.h"
#include <QDirIterator>
#include <QFileInfo>
#include <QMap>
#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)
{
m_copy.matcher(m_pathMatcher.get()).whitelist(true);
}
void DataMigrationTask::executeTask()
{
setStatus(tr("Scanning files..."));
// 1. Scan
// Check how many files we gotta copy
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [&] {
return m_copy(true); // dry run to collect amount of files
});
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::dryRunFinished);
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::canceled, this, &DataMigrationTask::dryRunAborted);
m_copyFutureWatcher.setFuture(m_copyFuture);
}
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;
}
// 2. Copy
// Actually copy all files now.
m_toCopy = m_copy.totalCopied();
connect(&m_copy, &FS::copy::fileCopied, [&, this](const QString& relativeName) {
QString shortenedName = relativeName;
// shorten the filename to hopefully fit into one line
if (shortenedName.length() > 50)
shortenedName = relativeName.left(20) + "" + relativeName.right(29);
setProgress(m_copy.totalCopied(), m_toCopy);
setStatus(tr("Copying %1…").arg(shortenedName));
});
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [&] {
return m_copy(false); // actually copy now
});
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &DataMigrationTask::copyFinished);
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::canceled, this, &DataMigrationTask::copyAborted);
m_copyFutureWatcher.setFuture(m_copyFuture);
}
void DataMigrationTask::dryRunAborted()
{
emitFailed(tr("Aborted"));
}
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;
}
emitSucceeded();
}
void DataMigrationTask::copyAborted()
{
emitFailed(tr("Aborted"));
}

View File

@ -0,0 +1,42 @@
// SPDX-FileCopyrightText: 2022 Sefa Eyeoglu <contact@scrumplex.net>
//
// SPDX-License-Identifier: GPL-3.0-only
#pragma once
#include "FileSystem.h"
#include "pathmatcher/IPathMatcher.h"
#include "tasks/Task.h"
#include <QFuture>
#include <QFutureWatcher>
/*
* Migrate existing data from other MMC-like launchers.
*/
class DataMigrationTask : public Task {
Q_OBJECT
public:
explicit DataMigrationTask(QObject* parent, const QString& sourcePath, const QString& targetPath, const IPathMatcher::Ptr pathmatcher);
~DataMigrationTask() override = default;
protected:
virtual void executeTask() override;
protected slots:
void dryRunFinished();
void dryRunAborted();
void copyFinished();
void copyAborted();
private:
const QString& m_sourcePath;
const QString& m_targetPath;
const IPathMatcher::Ptr m_pathMatcher;
FS::copy m_copy;
int m_toCopy = 0;
QFuture<bool> m_copyFuture;
QFutureWatcher<bool> m_copyFutureWatcher;
};

View File

@ -1,33 +1,21 @@
#pragma once
template <typename T>
class DefaultVariable
{
public:
DefaultVariable(const T & value)
{
defaultValue = value;
}
DefaultVariable<T> & operator =(const T & value)
class DefaultVariable {
public:
DefaultVariable(const T& value) { defaultValue = value; }
DefaultVariable<T>& operator=(const T& value)
{
currentValue = value;
is_default = currentValue == defaultValue;
is_explicit = true;
return *this;
}
operator const T &() const
{
return is_default ? defaultValue : currentValue;
}
bool isDefault() const
{
return is_default;
}
bool isExplicit() const
{
return is_explicit;
}
private:
operator const T&() const { return is_default ? defaultValue : currentValue; }
bool isDefault() const { return is_default; }
bool isExplicit() const { return is_explicit; }
private:
T currentValue;
T defaultValue;
bool is_default = true;

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 dada513 <dada513@protonmail.com>
*
* This program is free software: you can redistribute it and/or modify
@ -33,41 +33,37 @@
* limitations under the License.
*/
#include "DesktopServices.h"
#include <QDir>
#include <QDesktopServices>
#include <QProcess>
#include <QDebug>
#include "Application.h"
#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 <unistd.h>
#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)
bool IndirectOpen(T callable, qint64* pid_forked = nullptr)
{
auto pid = fork();
if(pid_forked)
{
if(pid > 0)
if (pid_forked) {
if (pid > 0)
*pid_forked = pid;
else
*pid_forked = 0;
}
if(pid == -1)
{
if (pid == -1) {
qWarning() << "IndirectOpen failed to fork: " << errno;
return false;
}
// child - do the stuff
if(pid == 0)
{
if (pid == 0) {
// unset all this garbage so it doesn't get passed to the child process
qunsetenv("LD_PRELOAD");
qunsetenv("LD_LIBRARY_PATH");
@ -83,19 +79,14 @@ bool IndirectOpen(T callable, qint64 *pid_forked = nullptr)
// die. now. do not clean up anything, it would just hang forever.
_exit(status ? 0 : 1);
}
else
{
//parent - assume it worked.
} else {
// parent - assume it worked.
int status;
while (waitpid(pid, &status, 0))
{
if(WIFEXITED(status))
{
while (waitpid(pid, &status, 0)) {
if (WIFEXITED(status)) {
return WEXITSTATUS(status) == 0;
}
if(WIFSIGNALED(status))
{
if (WIFSIGNALED(status)) {
return false;
}
}
@ -105,26 +96,19 @@ bool IndirectOpen(T callable, qint64 *pid_forked = nullptr)
#endif
namespace DesktopServices {
bool openDirectory(const QString &path, bool ensureExists)
bool openDirectory(const QString& path, [[maybe_unused]] bool ensureExists)
{
qDebug() << "Opening directory" << path;
QDir parentPath;
QDir dir(path);
if (!dir.exists())
{
if (ensureExists && !dir.exists()) {
parentPath.mkpath(dir.absolutePath());
}
auto f = [&]()
{
return QDesktopServices::openUrl(QUrl::fromLocalFile(dir.absolutePath()));
};
auto f = [&]() { return QDesktopServices::openUrl(QUrl::fromLocalFile(dir.absolutePath())); };
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
if(!APPLICATION->isFlatpak())
{
if (!isSandbox()) {
return IndirectOpen(f);
}
else
{
} else {
return f();
}
#else
@ -132,20 +116,14 @@ bool openDirectory(const QString &path, bool ensureExists)
#endif
}
bool openFile(const QString &path)
bool openFile(const QString& path)
{
qDebug() << "Opening file" << path;
auto f = [&]()
{
return QDesktopServices::openUrl(QUrl::fromLocalFile(path));
};
auto f = [&]() { return QDesktopServices::openUrl(QUrl::fromLocalFile(path)); };
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
if(!APPLICATION->isFlatpak())
{
if (!isSandbox()) {
return IndirectOpen(f);
}
else
{
} else {
return f();
}
#else
@ -153,41 +131,29 @@ bool openFile(const QString &path)
#endif
}
bool openFile(const QString &application, const QString &path, const QString &workingDirectory, qint64 *pid)
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(!APPLICATION->isFlatpak())
{
return IndirectOpen([&]()
{
return QProcess::startDetached(application, QStringList() << path, workingDirectory);
}, pid);
}
else
{
return QProcess::startDetached(application, QStringList() << path, workingDirectory, pid);
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
}
bool run(const QString &application, const QStringList &args, const QString &workingDirectory, qint64 *pid)
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(!APPLICATION->isFlatpak())
{
// 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
{
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
@ -195,20 +161,14 @@ bool run(const QString &application, const QStringList &args, const QString &wor
#endif
}
bool openUrl(const QUrl &url)
bool openUrl(const QUrl& url)
{
qDebug() << "Opening URL" << url.toString();
auto f = [&]()
{
return QDesktopServices::openUrl(url);
};
auto f = [&]() { return QDesktopServices::openUrl(url); };
#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
if(!APPLICATION->isFlatpak())
{
if (!isSandbox()) {
return IndirectOpen(f);
}
else
{
} else {
return f();
}
#else
@ -216,4 +176,27 @@ bool openUrl(const QUrl &url)
#endif
}
bool isFlatpak()
{
#ifdef Q_OS_LINUX
return QFile::exists("/.flatpak-info");
#else
return false;
#endif
}
bool isSnap()
{
#ifdef Q_OS_LINUX
return getenv("SNAP");
#else
return false;
#endif
}
bool isSandbox()
{
return isSnap() || isFlatpak();
}
} // namespace DesktopServices

View File

@ -1,36 +1,50 @@
#pragma once
#include <QUrl>
#include <QString>
#include <QUrl>
/**
* This wraps around QDesktopServices and adds workarounds where needed
* Use this instead of QDesktopServices!
*/
namespace DesktopServices
{
/**
* Open a file in whatever application is applicable
*/
bool openFile(const QString &path);
namespace DesktopServices {
/**
* Open a file in whatever application is applicable
*/
bool openFile(const QString& path);
/**
* Open a file in the specified application
*/
bool openFile(const QString &application, const QString &path, const QString & workingDirectory = QString(), qint64 *pid = 0);
/**
* Open a file in the specified application
*/
bool openFile(const QString& application, const QString& path, const QString& workingDirectory = QString(), qint64* pid = 0);
/**
* Run an application
*/
bool run(const QString &application,const QStringList &args, const QString & workingDirectory = QString(), qint64 *pid = 0);
/**
* 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 a directory
*/
bool openDirectory(const QString& path, bool ensureExists = false);
/**
* Open the URL, most likely in a browser. Maybe.
*/
bool openUrl(const QUrl &url);
}
/**
* Open the URL, most likely in a browser. Maybe.
*/
bool openUrl(const QUrl& url);
/**
* Determine whether the launcher is running in a Flatpak environment
*/
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

@ -2,31 +2,18 @@
#pragma once
#include <QString>
#include <QDebug>
#include <QString>
#include <exception>
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())
{
}
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()) {}
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.toLatin1().constData(); }
QString cause() const { return m_message; }
private:
private:
QString m_message;
};

View File

@ -4,31 +4,24 @@
template <typename T>
inline void clamp(T& current, T min, T max)
{
if (current < min)
{
if (current < min) {
current = min;
}
else if(current > max)
{
} else if (current > max) {
current = max;
}
}
// List of numbers from min to max. Next is exponent times bigger than previous.
class ExponentialSeries
{
public:
class ExponentialSeries {
public:
ExponentialSeries(unsigned min, unsigned max, unsigned exponent = 2)
{
m_current = m_min = min;
m_max = max;
m_exponent = exponent;
}
void reset()
{
m_current = m_min;
}
void reset() { m_current = m_min; }
unsigned operator()()
{
unsigned retval = m_current;

View File

@ -0,0 +1,47 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2023 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/>.
*/
#include "FastFileIconProvider.h"
#include <QApplication>
#include <QStyle>
QIcon FastFileIconProvider::icon(const QFileInfo& info) const
{
#if QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)
bool link = info.isSymbolicLink() || info.isAlias() || info.isShortcut();
#else
// in versions prior to 6.4 we don't have access to isAlias
bool link = info.isSymLink();
#endif
QStyle::StandardPixmap icon;
if (info.isDir()) {
if (link)
icon = QStyle::SP_DirLinkIcon;
else
icon = QStyle::SP_DirIcon;
} else {
if (link)
icon = QStyle::SP_FileLinkIcon;
else
icon = QStyle::SP_FileIcon;
}
return QApplication::style()->standardIcon(icon);
}

View File

@ -0,0 +1,26 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2023 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/>.
*/
#pragma once
#include <QFileIconProvider>
class FastFileIconProvider : public QFileIconProvider {
public:
QIcon icon(const QFileInfo& info) const override;
};

View File

@ -0,0 +1,276 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (C) 2023 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.
*/
#include "FileIgnoreProxy.h"
#include <QDebug>
#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) {}
// NOTE: Sadly, we have to do sorting ourselves.
bool FileIgnoreProxy::lessThan(const QModelIndex& left, const QModelIndex& right) const
{
QFileSystemModel* fsm = qobject_cast<QFileSystemModel*>(sourceModel());
if (!fsm) {
return QSortFilterProxyModel::lessThan(left, right);
}
bool asc = sortOrder() == Qt::AscendingOrder ? true : false;
QFileInfo leftFileInfo = fsm->fileInfo(left);
QFileInfo rightFileInfo = fsm->fileInfo(right);
if (!leftFileInfo.isDir() && rightFileInfo.isDir()) {
return !asc;
}
if (leftFileInfo.isDir() && !rightFileInfo.isDir()) {
return asc;
}
// sort and proxy model breaks the original model...
if (sortColumn() == 0) {
return StringUtils::naturalCompare(leftFileInfo.fileName(), rightFileInfo.fileName(), Qt::CaseInsensitive) < 0;
}
if (sortColumn() == 1) {
auto leftSize = leftFileInfo.size();
auto rightSize = rightFileInfo.size();
if ((leftSize == rightSize) || (leftFileInfo.isDir() && rightFileInfo.isDir())) {
return StringUtils::naturalCompare(leftFileInfo.fileName(), rightFileInfo.fileName(), Qt::CaseInsensitive) < 0 ? asc : !asc;
}
return leftSize < rightSize;
}
return QSortFilterProxyModel::lessThan(left, right);
}
Qt::ItemFlags FileIgnoreProxy::flags(const QModelIndex& index) const
{
if (!index.isValid())
return Qt::NoItemFlags;
auto sourceIndex = mapToSource(index);
Qt::ItemFlags flags = sourceIndex.flags();
if (index.column() == 0) {
flags |= Qt::ItemIsUserCheckable;
if (sourceIndex.model()->hasChildren(sourceIndex)) {
flags |= Qt::ItemIsAutoTristate;
}
}
return flags;
}
QVariant FileIgnoreProxy::data(const QModelIndex& index, int role) const
{
QModelIndex sourceIndex = mapToSource(index);
if (index.column() == 0 && role == Qt::CheckStateRole) {
QFileSystemModel* fsm = qobject_cast<QFileSystemModel*>(sourceModel());
auto blockedPath = relPath(fsm->filePath(sourceIndex));
auto cover = blocked.cover(blockedPath);
if (!cover.isNull()) {
return QVariant(Qt::Unchecked);
} else if (blocked.exists(blockedPath)) {
return QVariant(Qt::PartiallyChecked);
} else {
return QVariant(Qt::Checked);
}
}
return sourceIndex.data(role);
}
bool FileIgnoreProxy::setData(const QModelIndex& index, const QVariant& value, int role)
{
if (index.column() == 0 && role == Qt::CheckStateRole) {
Qt::CheckState state = static_cast<Qt::CheckState>(value.toInt());
return setFilterState(index, state);
}
QModelIndex sourceIndex = mapToSource(index);
return QSortFilterProxyModel::sourceModel()->setData(sourceIndex, value, role);
}
QString FileIgnoreProxy::relPath(const QString& path) const
{
return QDir(root).relativeFilePath(path);
}
bool FileIgnoreProxy::setFilterState(QModelIndex index, Qt::CheckState state)
{
QFileSystemModel* fsm = qobject_cast<QFileSystemModel*>(sourceModel());
if (!fsm) {
return false;
}
QModelIndex sourceIndex = mapToSource(index);
auto blockedPath = relPath(fsm->filePath(sourceIndex));
bool changed = false;
if (state == Qt::Unchecked) {
// blocking a path
auto& node = 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);
qDebug() << "Blocked by cover" << cover;
// uncover
blocked.remove(cover);
// block all contents, except for any cover
QModelIndex rootIndex = fsm->index(FS::PathCombine(root, cover));
QModelIndex doing = rootIndex;
int row = 0;
QStack<QModelIndex> todo;
while (1) {
auto node = fsm->index(row, 0, doing);
if (!node.isValid()) {
if (!todo.size()) {
break;
} else {
doing = todo.pop();
row = 0;
continue;
}
}
auto relpath = relPath(fsm->filePath(node));
if (blockedPath.startsWith(relpath)) // cover found?
{
// continue processing cover later
todo.push(node);
} else {
// or just block this one.
blocked.insert(relpath);
}
row++;
}
}
changed = true;
}
if (changed) {
// update the thing
emit dataChanged(index, index, { Qt::CheckStateRole });
// update everything above index
QModelIndex up = index.parent();
while (1) {
if (!up.isValid())
break;
emit dataChanged(up, up, { Qt::CheckStateRole });
up = up.parent();
}
// and everything below the index
QModelIndex doing = index;
int row = 0;
QStack<QModelIndex> todo;
while (1) {
auto node = this->index(row, 0, doing);
if (!node.isValid()) {
if (!todo.size()) {
break;
} else {
doing = todo.pop();
row = 0;
continue;
}
}
emit dataChanged(node, node, { Qt::CheckStateRole });
todo.push(node);
row++;
}
// siblings and unrelated nodes are ignored
}
return true;
}
bool FileIgnoreProxy::shouldExpand(QModelIndex index)
{
QModelIndex sourceIndex = mapToSource(index);
QFileSystemModel* fsm = qobject_cast<QFileSystemModel*>(sourceModel());
if (!fsm) {
return false;
}
auto blockedPath = relPath(fsm->filePath(sourceIndex));
auto found = blocked.find(blockedPath);
if (found) {
return !found->leaf();
}
return false;
}
void FileIgnoreProxy::setBlockedPaths(QStringList paths)
{
beginResetModel();
blocked.clear();
blocked.insert(paths);
endResetModel();
}
bool FileIgnoreProxy::filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const
{
Q_UNUSED(source_parent)
// adjust the columns you want to filter out here
// return false for those that will be hidden
if (source_column == 2 || source_column == 3)
return false;
return true;
}
bool FileIgnoreProxy::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const
{
QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent);
QFileSystemModel* fsm = qobject_cast<QFileSystemModel*>(sourceModel());
auto fileInfo = fsm->fileInfo(index);
return !ignoreFile(fileInfo);
}
bool FileIgnoreProxy::ignoreFile(QFileInfo fileInfo) const
{
return m_ignoreFiles.contains(fileInfo.fileName()) || m_ignoreFilePaths.covers(relPath(fileInfo.absoluteFilePath()));
}
bool FileIgnoreProxy::filterFile(const QString& fileName) const
{
return blocked.covers(fileName) || ignoreFile(QFileInfo(QDir(root), fileName));
}

View File

@ -0,0 +1,85 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (C) 2023 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
#include <QFileInfo>
#include <QSortFilterProxyModel>
#include "SeparatorPrefixTree.h"
class FileIgnoreProxy : public QSortFilterProxyModel {
Q_OBJECT
public:
FileIgnoreProxy(QString root, QObject* parent);
// NOTE: Sadly, we have to do sorting ourselves.
bool lessThan(const QModelIndex& left, const QModelIndex& right) const;
virtual Qt::ItemFlags flags(const QModelIndex& index) const;
virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
QString relPath(const QString& path) const;
bool setFilterState(QModelIndex index, Qt::CheckState state);
bool shouldExpand(QModelIndex index);
void setBlockedPaths(QStringList paths);
inline const SeparatorPrefixTree<'/'>& blockedPaths() const { return blocked; }
inline SeparatorPrefixTree<'/'>& blockedPaths() { return blocked; }
// list of file names that need to be removed completely from model
inline QStringList& ignoreFilesWithName() { return m_ignoreFiles; }
// list of relative paths that need to be removed completely from model
inline SeparatorPrefixTree<'/'>& ignoreFilesWithPath() { return m_ignoreFilePaths; }
bool filterFile(const QString& fileName) const;
protected:
bool filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const;
bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const;
bool ignoreFile(QFileInfo file) const;
private:
const QString root;
SeparatorPrefixTree<'/'> blocked;
QStringList m_ignoreFiles;
SeparatorPrefixTree<'/'> m_ignoreFilePaths;
};

File diff suppressed because it is too large Load Diff

View File

@ -1,36 +1,85 @@
// Licensed under the Apache-2.0 license. See README.md for details.
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (C) 2022 TheKodeToad <TheKodeToad@proton.me>
* Copyright (C) 2022 Rachel Powers <508861+Ryex@users.noreply.github.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/>.
*
* 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 "Exception.h"
#include "pathmatcher/IPathMatcher.h"
#include <system_error>
#include <QDir>
#include <QFlags>
#include <QLocalServer>
#include <QObject>
#include <QPair>
#include <QThread>
namespace FS
{
namespace FS {
class FileSystemException : public ::Exception
{
public:
FileSystemException(const QString &message) : Exception(message) {}
class FileSystemException : public ::Exception {
public:
FileSystemException(const QString& message) : Exception(message) {}
};
/**
* write data to a file safely
*/
void write(const QString &filename, const QByteArray &data);
void write(const QString& filename, const QByteArray& data);
/**
* append data to a file safely
*/
void appendSafe(const QString& filename, const QByteArray& data);
/**
* append data to a file
*/
void append(const QString& filename, const QByteArray& data);
/**
* read data from a file safely\
*/
QByteArray read(const QString &filename);
QByteArray read(const QString& filename);
/**
* Update the last changed timestamp of an existing file
*/
bool updateTimestamp(const QString & filename);
bool updateTimestamp(const QString& filename);
/**
* Creates all the folders in a path for the specified path
@ -44,49 +93,224 @@ bool ensureFilePathExists(QString filenamepath);
*/
bool ensureFolderPathExists(QString filenamepath);
class copy
{
public:
copy(const QString & src, const QString & dst)
/**
* @brief Copies a directory and it's contents from src to dest
*/
class copy : public QObject {
Q_OBJECT
public:
copy(const QString& src, const QString& dst, QObject* parent = nullptr) : QObject(parent)
{
m_src = src;
m_dst = dst;
m_src.setPath(src);
m_dst.setPath(dst);
}
copy & followSymlinks(const bool follow)
copy& followSymlinks(const bool follow)
{
m_followSymlinks = follow;
return *this;
}
copy & blacklist(const IPathMatcher * filter)
copy& matcher(const IPathMatcher* filter)
{
m_blacklist = filter;
m_matcher = filter;
return *this;
}
bool operator()()
copy& whitelist(bool whitelist)
{
return operator()(QString());
m_whitelist = whitelist;
return *this;
}
copy& overwrite(const bool overwrite)
{
m_overwrite = overwrite;
return *this;
}
private:
bool operator()(const QString &offset);
bool operator()(bool dryRun = false) { return operator()(QString(), dryRun); }
private:
qsizetype totalCopied() { return m_copied; }
qsizetype totalFailed() { return m_failedPaths.length(); }
QStringList failed() { return m_failedPaths; }
signals:
void fileCopied(const QString& relativeName);
void copyFailed(const QString& relativeName);
// TODO: maybe add a "shouldCopy" signal in the future?
private:
bool operator()(const QString& offset, bool dryRun = false);
private:
bool m_followSymlinks = true;
const IPathMatcher * m_blacklist = nullptr;
const IPathMatcher* m_matcher = nullptr;
bool m_whitelist = false;
bool m_overwrite = false;
QDir m_src;
QDir m_dst;
qsizetype m_copied;
QStringList m_failedPaths;
};
struct LinkPair {
QString src;
QString dst;
};
struct LinkResult {
QString src;
QString dst;
QString err_msg;
int err_value;
};
class ExternalLinkFileProcess : public QThread {
Q_OBJECT
public:
ExternalLinkFileProcess(QString server, bool useHardLinks, QObject* parent = nullptr)
: QThread(parent), m_useHardLinks(useHardLinks), m_server(server)
{}
void run() override
{
runLinkFile();
emit processExited();
}
signals:
void processExited();
private:
void runLinkFile();
bool m_useHardLinks = false;
QString m_server;
};
/**
* @brief links (a file / a directory and it's contents) from src to dest
*/
class create_link : public QObject {
Q_OBJECT
public:
create_link(const QList<LinkPair> path_pairs, QObject* parent = nullptr) : QObject(parent) { m_path_pairs.append(path_pairs); }
create_link(const QString& src, const QString& dst, QObject* parent = nullptr) : QObject(parent)
{
LinkPair pair = { src, dst };
m_path_pairs.append(pair);
}
create_link& useHardLinks(const bool useHard)
{
m_useHardLinks = useHard;
return *this;
}
create_link& matcher(const IPathMatcher* filter)
{
m_matcher = filter;
return *this;
}
create_link& whitelist(bool whitelist)
{
m_whitelist = whitelist;
return *this;
}
create_link& linkRecursively(bool recursive)
{
m_recursive = recursive;
return *this;
}
create_link& setMaxDepth(int depth)
{
m_max_depth = depth;
return *this;
}
create_link& debug(bool d)
{
m_debug = d;
return *this;
}
std::error_code getOSError() { return m_os_err; }
bool operator()(bool dryRun = false) { return operator()(QString(), dryRun); }
int totalLinked() { return m_linked; }
void runPrivileged() { runPrivileged(QString()); }
void runPrivileged(const QString& offset);
QList<LinkResult> getResults() { return m_path_results; }
signals:
void fileLinked(const QString& srcName, const QString& dstName);
void linkFailed(const QString& srcName, const QString& dstName, const QString& err_msg, int err_value);
void finished();
void finishedPrivileged(bool gotResults);
private:
bool operator()(const QString& offset, bool dryRun = false);
void make_link_list(const QString& offset);
bool make_links();
private:
bool m_useHardLinks = false;
const IPathMatcher* m_matcher = nullptr;
bool m_whitelist = false;
bool m_recursive = true;
/// @brief >= -1 = infinite, 0 = link files at src/* to dest/*, 1 = link files at src/*/* to dest/*/*, etc.
int m_max_depth = -1;
QList<LinkPair> m_path_pairs;
QList<LinkResult> m_path_results;
QList<LinkPair> m_links_to_make;
int m_linked;
bool m_debug = false;
std::error_code m_os_err;
QLocalServer m_linkServer;
};
/**
* @brief moves a file by renaming it
* @param source source file path
* @param dest destination filepath
*
*/
bool move(const QString& source, const QString& dest);
/**
* Delete a folder recursively
*/
bool deletePath(QString path);
QString PathCombine(const QString &path1, const QString &path2);
QString PathCombine(const QString &path1, const QString &path2, const QString &path3);
QString PathCombine(const QString &path1, const QString &path2, const QString &path3, const QString &path4);
/**
* Trash a folder / file
*/
bool trash(QString path, QString* pathInTrash = nullptr);
QString AbsolutePath(QString path);
QString PathCombine(const QString& path1, const QString& path2);
QString PathCombine(const QString& path1, const QString& path2, const QString& path3);
QString PathCombine(const QString& path1, const QString& path2, const QString& path3, const QString& path4);
QString AbsolutePath(const QString& path);
/**
* @brief depth of path. "foo.txt" -> 0 , "bar/foo.txt" -> 1, /baz/bar/foo.txt -> 2, etc.
*
* @param path path to measure
* @return int number of components before base path
*/
int pathDepth(const QString& path);
/**
* @brief cut off segments of path until it is a max of length depth
*
* @param path path to truncate
* @param depth max depth of new path
* @return QString truncated path
*/
QString pathTruncate(const QString& path, int depth);
/**
* Resolve an executable
@ -120,8 +344,205 @@ bool checkProblemticPathJava(QDir folder);
// Get the Directory representing the User's Desktop
QString getDesktopDir();
// Create a shortcut at *location*, pointing to *dest* called with the arguments *args*
// call it *name* and assign it the icon *icon*
// return true if operation succeeded
bool createShortCut(QString location, QString dest, QStringList args, QString name, QString iconLocation);
}
// Overrides one folder with the contents of another, preserving items exclusive to the first folder
// Equivalent to doing QDir::rename, but allowing for overrides
bool overrideFolder(QString overwritten_path, QString override_path);
/**
* Creates a shortcut to the specified target file at the specified destination path.
*/
bool createShortcut(QString destination, QString target, QStringList args, QString name, QString icon);
enum class FilesystemType {
FAT,
NTFS,
REFS,
EXT,
EXT_2_OLD,
EXT_2_3_4,
XFS,
BTRFS,
NFS,
ZFS,
APFS,
HFS,
HFSPLUS,
HFSX,
FUSEBLK,
F2FS,
UNKNOWN
};
/**
* @brief Ordered Mapping of enum types to reported filesystem names
* this mapping is non exsaustive, it just attempts to capture the filesystems which could be reasonalbly be in use .
* all string values are in uppercase, use `QString.toUpper()` or equivalent during lookup.
*
* QMap is ordered
*
*/
static const QMap<FilesystemType, QStringList> s_filesystem_type_names = { { FilesystemType::FAT, { "FAT" } },
{ FilesystemType::NTFS, { "NTFS" } },
{ FilesystemType::REFS, { "REFS" } },
{ FilesystemType::EXT_2_OLD, { "EXT_2_OLD", "EXT2_OLD" } },
{ FilesystemType::EXT_2_3_4,
{ "EXT2/3/4", "EXT_2_3_4", "EXT2", "EXT3", "EXT4" } },
{ FilesystemType::EXT, { "EXT" } },
{ FilesystemType::XFS, { "XFS" } },
{ FilesystemType::BTRFS, { "BTRFS" } },
{ FilesystemType::NFS, { "NFS" } },
{ FilesystemType::ZFS, { "ZFS" } },
{ FilesystemType::APFS, { "APFS" } },
{ FilesystemType::HFS, { "HFS" } },
{ FilesystemType::HFSPLUS, { "HFSPLUS" } },
{ FilesystemType::HFSX, { "HFSX" } },
{ FilesystemType::FUSEBLK, { "FUSEBLK" } },
{ FilesystemType::F2FS, { "F2FS" } },
{ FilesystemType::UNKNOWN, { "UNKNOWN" } } };
/**
* @brief Get the string name of Filesystem enum object
*
* @param type
* @return QString
*/
QString getFilesystemTypeName(FilesystemType type);
/**
* @brief Get the Filesystem enum object from a name
* Does a lookup of the type name and returns an exact match
*
* @param name
* @return FilesystemType
*/
FilesystemType getFilesystemType(const QString& name);
/**
* @brief Get the Filesystem enum object from a name
* Does a fuzzy lookup of the type name and returns an apropreate match
*
* @param name
* @return FilesystemType
*/
FilesystemType getFilesystemTypeFuzzy(const QString& name);
struct FilesystemInfo {
FilesystemType fsType = FilesystemType::UNKNOWN;
QString fsTypeName;
int blockSize;
qint64 bytesAvailable;
qint64 bytesFree;
qint64 bytesTotal;
QString name;
QString rootPath;
};
/**
* @brief path to the near ancestor that exists
*
*/
QString nearestExistentAncestor(const QString& path);
/**
* @brief colect information about the filesystem under a file
*
*/
FilesystemInfo statFS(const QString& path);
static const QList<FilesystemType> s_clone_filesystems = { FilesystemType::BTRFS, FilesystemType::APFS, FilesystemType::ZFS,
FilesystemType::XFS, FilesystemType::REFS };
/**
* @brief if the Filesystem is reflink/clone capable
*
*/
bool canCloneOnFS(const QString& path);
bool canCloneOnFS(const FilesystemInfo& info);
bool canCloneOnFS(FilesystemType type);
/**
* @brief if the Filesystems are reflink/clone capable and both are on the same device
*
*/
bool canClone(const QString& src, const QString& dst);
/**
* @brief Copies a directory and it's contents from src to dest
*/
class clone : public QObject {
Q_OBJECT
public:
clone(const QString& src, const QString& dst, QObject* parent = nullptr) : QObject(parent)
{
m_src.setPath(src);
m_dst.setPath(dst);
}
clone& matcher(const IPathMatcher* filter)
{
m_matcher = filter;
return *this;
}
clone& whitelist(bool whitelist)
{
m_whitelist = whitelist;
return *this;
}
bool operator()(bool dryRun = false) { return operator()(QString(), dryRun); }
qsizetype totalCloned() { return m_cloned; }
qsizetype totalFailed() { return m_failedClones.length(); }
QList<QPair<QString, QString>> failed() { return m_failedClones; }
signals:
void fileCloned(const QString& src, const QString& dst);
void cloneFailed(const QString& src, const QString& dst);
private:
bool operator()(const QString& offset, bool dryRun = false);
private:
const IPathMatcher* m_matcher = nullptr;
bool m_whitelist = false;
QDir m_src;
QDir m_dst;
qsizetype m_cloned;
QList<QPair<QString, QString>> m_failedClones;
};
/**
* @brief clone/reflink file from src to dst
*
*/
bool clone_file(const QString& src, const QString& dst, std::error_code& ec);
#if defined(Q_OS_WIN)
bool win_ioctl_clone(const std::wstring& src_path, const std::wstring& dst_path, std::error_code& ec);
#elif defined(Q_OS_LINUX)
bool linux_ficlone(const std::string& src_path, const std::string& dst_path, std::error_code& ec);
#elif defined(Q_OS_MACOS) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
bool macos_bsd_clonefile(const std::string& src_path, const std::string& dst_path, std::error_code& ec);
#endif
static const QList<FilesystemType> s_non_link_filesystems = {
FilesystemType::FAT,
};
/**
* @brief if the Filesystem is symlink capable
*
*/
bool canLinkOnFS(const QString& path);
bool canLinkOnFS(const FilesystemInfo& info);
bool canLinkOnFS(FilesystemType type);
/**
* @brief if the Filesystem is symlink capable on both ends
*
*/
bool canLink(const QString& src, const QString& dst);
uintmax_t hardLinkCount(const QString& path);
} // namespace FS

View File

@ -1,164 +0,0 @@
#include <QTest>
#include <QTemporaryDir>
#include <QStandardPaths>
#include "TestUtil.h"
#include "FileSystem.h"
class FileSystemTest : public QObject
{
Q_OBJECT
const QString bothSlash = "/foo/";
const QString trailingSlash = "foo/";
const QString leadingSlash = "/foo";
private
slots:
void test_pathCombine()
{
QCOMPARE(QString("/foo/foo"), FS::PathCombine(bothSlash, bothSlash));
QCOMPARE(QString("foo/foo"), FS::PathCombine(trailingSlash, trailingSlash));
QCOMPARE(QString("/foo/foo"), FS::PathCombine(leadingSlash, leadingSlash));
QCOMPARE(QString("/foo/foo/foo"), FS::PathCombine(bothSlash, bothSlash, bothSlash));
QCOMPARE(QString("foo/foo/foo"), FS::PathCombine(trailingSlash, trailingSlash, trailingSlash));
QCOMPARE(QString("/foo/foo/foo"), FS::PathCombine(leadingSlash, leadingSlash, leadingSlash));
}
void test_PathCombine1_data()
{
QTest::addColumn<QString>("result");
QTest::addColumn<QString>("path1");
QTest::addColumn<QString>("path2");
QTest::newRow("qt 1") << "/abc/def/ghi/jkl" << "/abc/def" << "ghi/jkl";
QTest::newRow("qt 2") << "/abc/def/ghi/jkl" << "/abc/def/" << "ghi/jkl";
#if defined(Q_OS_WIN)
QTest::newRow("win native, from C:") << "C:/abc" << "C:" << "abc";
QTest::newRow("win native 1") << "C:/abc/def/ghi/jkl" << "C:\\abc\\def" << "ghi\\jkl";
QTest::newRow("win native 2") << "C:/abc/def/ghi/jkl" << "C:\\abc\\def\\" << "ghi\\jkl";
#endif
}
void test_PathCombine1()
{
QFETCH(QString, result);
QFETCH(QString, path1);
QFETCH(QString, path2);
QCOMPARE(FS::PathCombine(path1, path2), result);
}
void test_PathCombine2_data()
{
QTest::addColumn<QString>("result");
QTest::addColumn<QString>("path1");
QTest::addColumn<QString>("path2");
QTest::addColumn<QString>("path3");
QTest::newRow("qt 1") << "/abc/def/ghi/jkl" << "/abc" << "def" << "ghi/jkl";
QTest::newRow("qt 2") << "/abc/def/ghi/jkl" << "/abc/" << "def" << "ghi/jkl";
QTest::newRow("qt 3") << "/abc/def/ghi/jkl" << "/abc" << "def/" << "ghi/jkl";
QTest::newRow("qt 4") << "/abc/def/ghi/jkl" << "/abc/" << "def/" << "ghi/jkl";
#if defined(Q_OS_WIN)
QTest::newRow("win 1") << "C:/abc/def/ghi/jkl" << "C:\\abc" << "def" << "ghi\\jkl";
QTest::newRow("win 2") << "C:/abc/def/ghi/jkl" << "C:\\abc\\" << "def" << "ghi\\jkl";
QTest::newRow("win 3") << "C:/abc/def/ghi/jkl" << "C:\\abc" << "def\\" << "ghi\\jkl";
QTest::newRow("win 4") << "C:/abc/def/ghi/jkl" << "C:\\abc\\" << "def" << "ghi\\jkl";
#endif
}
void test_PathCombine2()
{
QFETCH(QString, result);
QFETCH(QString, path1);
QFETCH(QString, path2);
QFETCH(QString, path3);
QCOMPARE(FS::PathCombine(path1, path2, path3), result);
}
void test_copy()
{
QString folder = QFINDTESTDATA("data/test_folder");
auto f = [&folder]()
{
QTemporaryDir tempDir;
tempDir.setAutoRemove(true);
qDebug() << "From:" << folder << "To:" << tempDir.path();
QDir target_dir(FS::PathCombine(tempDir.path(), "test_folder"));
qDebug() << tempDir.path();
qDebug() << target_dir.path();
FS::copy c(folder, target_dir.path());
c();
for(auto entry: target_dir.entryList())
{
qDebug() << entry;
}
QVERIFY(target_dir.entryList().contains("pack.mcmeta"));
QVERIFY(target_dir.entryList().contains("assets"));
};
// first try variant without trailing /
QVERIFY(!folder.endsWith('/'));
f();
// then variant with trailing /
folder.append('/');
QVERIFY(folder.endsWith('/'));
f();
}
void test_getDesktop()
{
QCOMPARE(FS::getDesktopDir(), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
}
// this is only valid on linux
// FIXME: implement on windows, OSX, then test.
#if defined(Q_OS_LINUX)
void test_createShortcut_data()
{
QTest::addColumn<QString>("location");
QTest::addColumn<QString>("dest");
QTest::addColumn<QStringList>("args");
QTest::addColumn<QString>("name");
QTest::addColumn<QString>("iconLocation");
QTest::addColumn<QByteArray>("result");
QTest::newRow("unix") << QDir::currentPath()
<< "asdfDest"
<< (QStringList() << "arg1" << "arg2")
<< "asdf"
<< QString()
#if defined(Q_OS_LINUX)
<< GET_TEST_FILE("data/FileSystem-test_createShortcut-unix")
#elif defined(Q_OS_WIN)
<< QByteArray()
#endif
;
}
void test_createShortcut()
{
QFETCH(QString, location);
QFETCH(QString, dest);
QFETCH(QStringList, args);
QFETCH(QString, name);
QFETCH(QString, iconLocation);
QFETCH(QByteArray, result);
QVERIFY(FS::createShortCut(location, dest, args, name, iconLocation));
QCOMPARE(QString::fromLocal8Bit(TestsInternal::readFile(location + QDir::separator() + name + ".desktop")), QString::fromLocal8Bit(result));
//QDir().remove(location);
}
#endif
};
QTEST_GUILESS_MAIN(FileSystemTest)
#include "FileSystem_test.moc"

View File

@ -1,28 +1,33 @@
#include "Filter.h"
Filter::~Filter(){}
Filter::~Filter() {}
ContainsFilter::ContainsFilter(const QString& pattern) : pattern(pattern){}
ContainsFilter::~ContainsFilter(){}
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(){}
ExactFilter::ExactFilter(const QString& pattern) : pattern(pattern) {}
ExactFilter::~ExactFilter() {}
bool ExactFilter::accepts(const QString& value)
{
return value == pattern;
}
RegexpFilter::RegexpFilter(const QString& regexp, bool invert)
:invert(invert)
ExactIfPresentFilter::ExactIfPresentFilter(const QString& pattern) : pattern(pattern) {}
bool ExactIfPresentFilter::accepts(const QString& value)
{
return value.isEmpty() || value == pattern;
}
RegexpFilter::RegexpFilter(const QString& regexp, bool invert) : invert(invert)
{
pattern.setPattern(regexp);
pattern.optimize();
}
RegexpFilter::~RegexpFilter(){}
RegexpFilter::~RegexpFilter() {}
bool RegexpFilter::accepts(const QString& value)
{
auto match = pattern.match(value);

View File

@ -1,42 +1,51 @@
#pragma once
#include <QString>
#include <QRegularExpression>
#include <QString>
class Filter
{
public:
class Filter {
public:
virtual ~Filter();
virtual bool accepts(const QString & value) = 0;
virtual bool accepts(const QString& value) = 0;
};
class ContainsFilter: public Filter
{
public:
ContainsFilter(const QString &pattern);
class ContainsFilter : public Filter {
public:
ContainsFilter(const QString& pattern);
virtual ~ContainsFilter();
bool accepts(const QString & value) override;
private:
bool accepts(const QString& value) override;
private:
QString pattern;
};
class ExactFilter: public Filter
{
public:
ExactFilter(const QString &pattern);
class ExactFilter : public Filter {
public:
ExactFilter(const QString& pattern);
virtual ~ExactFilter();
bool accepts(const QString & value) override;
private:
bool accepts(const QString& value) override;
private:
QString pattern;
};
class RegexpFilter: public Filter
{
public:
RegexpFilter(const QString &regexp, bool invert);
class ExactIfPresentFilter : public Filter {
public:
ExactIfPresentFilter(const QString& pattern);
~ExactIfPresentFilter() override = default;
bool accepts(const QString& value) override;
private:
QString pattern;
};
class RegexpFilter : public Filter {
public:
RegexpFilter(const QString& regexp, bool invert);
virtual ~RegexpFilter();
bool accepts(const QString & value) override;
private:
bool accepts(const QString& value) override;
private:
QRegularExpression pattern;
bool invert = false;
};

View File

@ -1,11 +1,45 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
* 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 "GZip.h"
#include <zlib.h>
#include <QByteArray>
bool GZip::unzip(const QByteArray &compressedBytes, QByteArray &uncompressedBytes)
bool GZip::unzip(const QByteArray& compressedBytes, QByteArray& uncompressedBytes)
{
if (compressedBytes.size() == 0)
{
if (compressedBytes.size() == 0) {
uncompressedBytes = compressedBytes;
return true;
}
@ -16,42 +50,37 @@ bool GZip::unzip(const QByteArray &compressedBytes, QByteArray &uncompressedByte
z_stream strm;
memset(&strm, 0, sizeof(strm));
strm.next_in = (Bytef *)compressedBytes.data();
strm.next_in = (Bytef*)compressedBytes.data();
strm.avail_in = compressedBytes.size();
bool done = false;
if (inflateInit2(&strm, (16 + MAX_WBITS)) != Z_OK)
{
if (inflateInit2(&strm, (16 + MAX_WBITS)) != Z_OK) {
return false;
}
int err = Z_OK;
while (!done)
{
while (!done) {
// If our output buffer is too small
if (strm.total_out >= uncompLength)
{
if (strm.total_out >= uncompLength) {
uncompressedBytes.resize(uncompLength * 2);
uncompLength *= 2;
}
strm.next_out = (Bytef *)(uncompressedBytes.data() + strm.total_out);
strm.next_out = reinterpret_cast<Bytef*>((uncompressedBytes.data() + strm.total_out));
strm.avail_out = uncompLength - strm.total_out;
// Inflate another chunk.
err = inflate(&strm, Z_SYNC_FLUSH);
if (err == Z_STREAM_END)
done = true;
else if (err != Z_OK)
{
else if (err != Z_OK) {
break;
}
}
if (inflateEnd(&strm) != Z_OK || !done)
{
if (inflateEnd(&strm) != Z_OK || !done) {
return false;
}
@ -59,23 +88,21 @@ bool GZip::unzip(const QByteArray &compressedBytes, QByteArray &uncompressedByte
return true;
}
bool GZip::zip(const QByteArray &uncompressedBytes, QByteArray &compressedBytes)
bool GZip::zip(const QByteArray& uncompressedBytes, QByteArray& compressedBytes)
{
if (uncompressedBytes.size() == 0)
{
if (uncompressedBytes.size() == 0) {
compressedBytes = uncompressedBytes;
return true;
}
unsigned compLength = std::min(uncompressedBytes.size(), 16);
unsigned compLength = qMin(uncompressedBytes.size(), 16);
compressedBytes.clear();
compressedBytes.resize(compLength);
z_stream zs;
memset(&zs, 0, sizeof(zs));
if (deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, (16 + MAX_WBITS), 8, Z_DEFAULT_STRATEGY) != Z_OK)
{
if (deflateInit2(&zs, Z_DEFAULT_COMPRESSION, Z_DEFLATED, (16 + MAX_WBITS), 8, Z_DEFAULT_STRATEGY) != Z_OK) {
return false;
}
@ -87,14 +114,12 @@ bool GZip::zip(const QByteArray &uncompressedBytes, QByteArray &compressedBytes)
unsigned offset = 0;
unsigned temp = 0;
do
{
do {
auto remaining = compressedBytes.size() - offset;
if(remaining < 1)
{
if (remaining < 1) {
compressedBytes.resize(compressedBytes.size() * 2);
}
zs.next_out = (Bytef *) (compressedBytes.data() + offset);
zs.next_out = reinterpret_cast<Bytef*>((compressedBytes.data() + offset));
temp = zs.avail_out = compressedBytes.size() - offset;
ret = deflate(&zs, Z_FINISH);
offset += temp - zs.avail_out;
@ -102,13 +127,11 @@ bool GZip::zip(const QByteArray &uncompressedBytes, QByteArray &compressedBytes)
compressedBytes.resize(offset);
if (deflateEnd(&zs) != Z_OK)
{
if (deflateEnd(&zs) != Z_OK) {
return false;
}
if (ret != Z_STREAM_END)
{
if (ret != Z_STREAM_END) {
return false;
}
return true;

View File

@ -1,10 +1,8 @@
#pragma once
#include <QByteArray>
class GZip
{
public:
static bool unzip(const QByteArray &compressedBytes, QByteArray &uncompressedBytes);
static bool zip(const QByteArray &uncompressedBytes, QByteArray &compressedBytes);
class GZip {
public:
static bool unzip(const QByteArray& compressedBytes, QByteArray& uncompressedBytes);
static bool zip(const QByteArray& uncompressedBytes, QByteArray& compressedBytes);
};

View File

@ -1,76 +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 <hoedown/html.h>
#include <hoedown/document.h>
#include <QString>
#include <QByteArray>
/**
* hoedown wrapper, because dealing with resource lifetime in C is stupid
*/
class HoeDown
{
public:
class buffer
{
public:
buffer(size_t unit = 4096)
{
buf = hoedown_buffer_new(unit);
}
~buffer()
{
hoedown_buffer_free(buf);
}
const char * cstr()
{
return hoedown_buffer_cstr(buf);
}
void put(QByteArray input)
{
hoedown_buffer_put(buf, (uint8_t *) input.data(), input.size());
}
const uint8_t * data() const
{
return buf->data;
}
size_t size() const
{
return buf->size;
}
hoedown_buffer * buf;
} ib, ob;
HoeDown()
{
renderer = hoedown_html_renderer_new((hoedown_html_flags) 0,0);
document = hoedown_document_new(renderer, (hoedown_extensions) 0, 8);
}
~HoeDown()
{
hoedown_document_free(document);
hoedown_html_renderer_free(renderer);
}
QString process(QByteArray input)
{
ib.put(input);
hoedown_document_render(document, ob.buf, ib.data(), ib.size());
return ob.cstr();
}
private:
hoedown_document * document;
hoedown_renderer * renderer;
};

View File

@ -0,0 +1,192 @@
//
// Created by marcelohdez on 10/22/22.
//
#include "InstanceCopyPrefs.h"
bool InstanceCopyPrefs::allTrue() const
{
return copySaves && keepPlaytime && copyGameOptions && copyResourcePacks && copyShaderPacks && copyServers && copyMods &&
copyScreenshots;
}
// Returns a single RegEx string of the selected folders/files to filter out (ex: ".minecraft/saves|.minecraft/server.dat")
QString InstanceCopyPrefs::getSelectedFiltersAsRegex() const
{
return getSelectedFiltersAsRegex({});
}
QString InstanceCopyPrefs::getSelectedFiltersAsRegex(const QStringList& additionalFilters) const
{
QStringList filters;
if (!copySaves)
filters << "saves";
if (!copyGameOptions)
filters << "options.txt";
if (!copyResourcePacks)
filters << "resourcepacks"
<< "texturepacks";
if (!copyShaderPacks)
filters << "shaderpacks";
if (!copyServers)
filters << "servers.dat"
<< "servers.dat_old"
<< "server-resource-packs";
if (!copyMods)
filters << "coremods"
<< "mods"
<< "config";
if (!copyScreenshots)
filters << "screenshots";
for (auto filter : additionalFilters) {
filters << filter;
}
// If we have any filters to add, join them as a single regex string to return:
if (!filters.isEmpty()) {
const QString MC_ROOT = "[.]?minecraft/";
// Ensure first filter starts with root, then join other filters with OR regex before root (ex: ".minecraft/saves|.minecraft/mods"):
return MC_ROOT + filters.join("|" + MC_ROOT);
}
return {};
}
// ======= Getters =======
bool InstanceCopyPrefs::isCopySavesEnabled() const
{
return copySaves;
}
bool InstanceCopyPrefs::isKeepPlaytimeEnabled() const
{
return keepPlaytime;
}
bool InstanceCopyPrefs::isCopyGameOptionsEnabled() const
{
return copyGameOptions;
}
bool InstanceCopyPrefs::isCopyResourcePacksEnabled() const
{
return copyResourcePacks;
}
bool InstanceCopyPrefs::isCopyShaderPacksEnabled() const
{
return copyShaderPacks;
}
bool InstanceCopyPrefs::isCopyServersEnabled() const
{
return copyServers;
}
bool InstanceCopyPrefs::isCopyModsEnabled() const
{
return copyMods;
}
bool InstanceCopyPrefs::isCopyScreenshotsEnabled() const
{
return copyScreenshots;
}
bool InstanceCopyPrefs::isUseSymLinksEnabled() const
{
return useSymLinks;
}
bool InstanceCopyPrefs::isUseHardLinksEnabled() const
{
return useHardLinks;
}
bool InstanceCopyPrefs::isLinkRecursivelyEnabled() const
{
return linkRecursively;
}
bool InstanceCopyPrefs::isDontLinkSavesEnabled() const
{
return dontLinkSaves;
}
bool InstanceCopyPrefs::isUseCloneEnabled() const
{
return useClone;
}
// ======= Setters =======
void InstanceCopyPrefs::enableCopySaves(bool b)
{
copySaves = b;
}
void InstanceCopyPrefs::enableKeepPlaytime(bool b)
{
keepPlaytime = b;
}
void InstanceCopyPrefs::enableCopyGameOptions(bool b)
{
copyGameOptions = b;
}
void InstanceCopyPrefs::enableCopyResourcePacks(bool b)
{
copyResourcePacks = b;
}
void InstanceCopyPrefs::enableCopyShaderPacks(bool b)
{
copyShaderPacks = b;
}
void InstanceCopyPrefs::enableCopyServers(bool b)
{
copyServers = b;
}
void InstanceCopyPrefs::enableCopyMods(bool b)
{
copyMods = b;
}
void InstanceCopyPrefs::enableCopyScreenshots(bool b)
{
copyScreenshots = b;
}
void InstanceCopyPrefs::enableUseSymLinks(bool b)
{
useSymLinks = b;
}
void InstanceCopyPrefs::enableLinkRecursively(bool b)
{
linkRecursively = b;
}
void InstanceCopyPrefs::enableUseHardLinks(bool b)
{
useHardLinks = b;
}
void InstanceCopyPrefs::enableDontLinkSaves(bool b)
{
dontLinkSaves = b;
}
void InstanceCopyPrefs::enableUseClone(bool b)
{
useClone = b;
}

View File

@ -0,0 +1,57 @@
//
// Created by marcelohdez on 10/22/22.
//
#pragma once
#include <QStringList>
struct InstanceCopyPrefs {
public:
[[nodiscard]] bool allTrue() const;
[[nodiscard]] QString getSelectedFiltersAsRegex() const;
[[nodiscard]] QString getSelectedFiltersAsRegex(const QStringList& additionalFilters) const;
// Getters
[[nodiscard]] bool isCopySavesEnabled() const;
[[nodiscard]] bool isKeepPlaytimeEnabled() const;
[[nodiscard]] bool isCopyGameOptionsEnabled() const;
[[nodiscard]] bool isCopyResourcePacksEnabled() const;
[[nodiscard]] bool isCopyShaderPacksEnabled() const;
[[nodiscard]] bool isCopyServersEnabled() const;
[[nodiscard]] bool isCopyModsEnabled() const;
[[nodiscard]] bool isCopyScreenshotsEnabled() const;
[[nodiscard]] bool isUseSymLinksEnabled() const;
[[nodiscard]] bool isLinkRecursivelyEnabled() const;
[[nodiscard]] bool isUseHardLinksEnabled() const;
[[nodiscard]] bool isDontLinkSavesEnabled() const;
[[nodiscard]] bool isUseCloneEnabled() const;
// Setters
void enableCopySaves(bool b);
void enableKeepPlaytime(bool b);
void enableCopyGameOptions(bool b);
void enableCopyResourcePacks(bool b);
void enableCopyShaderPacks(bool b);
void enableCopyServers(bool b);
void enableCopyMods(bool b);
void enableCopyScreenshots(bool b);
void enableUseSymLinks(bool b);
void enableLinkRecursively(bool b);
void enableUseHardLinks(bool b);
void enableDontLinkSaves(bool b);
void enableUseClone(bool b);
protected: // data
bool copySaves = true;
bool keepPlaytime = true;
bool copyGameOptions = true;
bool copyResourcePacks = true;
bool copyShaderPacks = true;
bool copyServers = true;
bool copyMods = true;
bool copyScreenshots = true;
bool useSymLinks = false;
bool linkRecursively = false;
bool useHardLinks = false;
bool dontLinkSaves = false;
bool useClone = false;
};

View File

@ -1,19 +1,34 @@
#include "InstanceCopyTask.h"
#include "settings/INISettingsObject.h"
#include <QDebug>
#include <QtConcurrentRun>
#include "FileSystem.h"
#include "NullInstance.h"
#include "pathmatcher/RegexpMatcher.h"
#include <QtConcurrentRun>
#include "settings/INISettingsObject.h"
InstanceCopyTask::InstanceCopyTask(InstancePtr origInstance, bool copySaves, bool keepPlaytime)
InstanceCopyTask::InstanceCopyTask(InstancePtr origInstance, const InstanceCopyPrefs& prefs)
{
m_origInstance = origInstance;
m_keepPlaytime = keepPlaytime;
m_keepPlaytime = prefs.isKeepPlaytimeEnabled();
m_useLinks = prefs.isUseSymLinksEnabled();
m_linkRecursively = prefs.isLinkRecursivelyEnabled();
m_useHardLinks = prefs.isLinkRecursivelyEnabled() && prefs.isUseHardLinksEnabled();
m_copySaves = prefs.isLinkRecursivelyEnabled() && prefs.isDontLinkSavesEnabled() && prefs.isCopySavesEnabled();
m_useClone = prefs.isUseCloneEnabled();
if(!copySaves)
{
QString filters = prefs.getSelectedFiltersAsRegex();
if (m_useLinks || m_useHardLinks) {
if (!filters.isEmpty())
filters += "|";
filters += "instance.cfg";
}
qDebug() << "CopyFilters:" << filters;
if (!filters.isEmpty()) {
// Set regex filter:
// FIXME: get this from the original instance type...
auto matcherReal = new RegexpMatcher("[.]?minecraft/saves");
auto matcherReal = new RegexpMatcher(filters);
matcherReal->caseSensitive(false);
m_matcher.reset(matcherReal);
}
@ -23,10 +38,88 @@ void InstanceCopyTask::executeTask()
{
setStatus(tr("Copying instance %1").arg(m_origInstance->name()));
FS::copy folderCopy(m_origInstance->instanceRoot(), m_stagingPath);
folderCopy.followSymlinks(false).blacklist(m_matcher.get());
auto copySaves = [&]() {
QFileInfo mcDir(FS::PathCombine(m_stagingPath, "minecraft"));
QFileInfo dotMCDir(FS::PathCombine(m_stagingPath, ".minecraft"));
m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), folderCopy);
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] {
if (m_useClone) {
FS::clone folderClone(m_origInstance->instanceRoot(), m_stagingPath);
folderClone.matcher(m_matcher.get());
return folderClone();
} else if (m_useLinks || m_useHardLinks) {
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());
bool there_were_errors = false;
if (!folderLink()) {
#if defined Q_OS_WIN32
if (!m_useHardLinks) {
qDebug() << "EXPECTED: Link failure, Windows requires permissions for symlinks";
qDebug() << "attempting to run with privelage";
QEventLoop loop;
bool got_priv_results = false;
connect(&folderLink, &FS::create_link::finishedPrivileged, this, [&](bool gotResults) {
if (!gotResults) {
qDebug() << "Privileged run exited without results!";
}
got_priv_results = gotResults;
loop.quit();
});
folderLink.runPrivileged();
loop.exec(); // wait for the finished signal
for (auto result : folderLink.getResults()) {
if (result.err_value != 0) {
there_were_errors = true;
}
}
if (m_copySaves) {
there_were_errors |= !copySaves();
}
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();
#endif
return false;
}
if (m_copySaves) {
there_were_errors |= !copySaves();
}
return !there_were_errors;
} else {
FS::copy folderCopy(m_origInstance->instanceRoot(), m_stagingPath);
folderCopy.followSymlinks(false).matcher(m_matcher.get());
return folderCopy();
}
});
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::finished, this, &InstanceCopyTask::copyFinished);
connect(&m_copyFutureWatcher, &QFutureWatcher<bool>::canceled, this, &InstanceCopyTask::copyAborted);
m_copyFutureWatcher.setFuture(m_copyFuture);
@ -35,20 +128,41 @@ void InstanceCopyTask::executeTask()
void InstanceCopyTask::copyFinished()
{
auto successful = m_copyFuture.result();
if(!successful)
{
if (!successful) {
emitFailed(tr("Instance folder copy failed."));
return;
}
// FIXME: shouldn't this be able to report errors?
auto instanceSettings = std::make_shared<INISettingsObject>(FS::PathCombine(m_stagingPath, "instance.cfg"));
InstancePtr inst(new NullInstance(m_globalSettings, instanceSettings, m_stagingPath));
inst->setName(m_instName);
inst->setName(name());
inst->setIconKey(m_instIcon);
if(!m_keepPlaytime) {
if (!m_keepPlaytime) {
inst->resetTimePlayed();
}
if (m_useLinks)
inst->addLinkedInstanceId(m_origInstance->id());
if (m_useLinks) {
auto allowed_symlinks_file = QFileInfo(FS::PathCombine(inst->gameRoot(), "allowed_symlinks.txt"));
QByteArray allowed_symlinks;
if (allowed_symlinks_file.exists()) {
allowed_symlinks.append(FS::read(allowed_symlinks_file.filePath()));
if (allowed_symlinks.right(1) != "\n")
allowed_symlinks.append("\n"); // we want to be on a new line
}
allowed_symlinks.append(m_origInstance->gameRoot().toUtf8());
allowed_symlinks.append("\n");
if (allowed_symlinks_file.isSymLink())
FS::deletePath(
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);
}
emitSucceeded();
}

View File

@ -1,31 +1,37 @@
#pragma once
#include "tasks/Task.h"
#include "net/NetJob.h"
#include <QUrl>
#include <QFuture>
#include <QFutureWatcher>
#include "settings/SettingsObject.h"
#include "BaseVersion.h"
#include <QUrl>
#include "BaseInstance.h"
#include "BaseVersion.h"
#include "InstanceCopyPrefs.h"
#include "InstanceTask.h"
#include "net/NetJob.h"
#include "settings/SettingsObject.h"
#include "tasks/Task.h"
class InstanceCopyTask : public InstanceTask
{
class InstanceCopyTask : public InstanceTask {
Q_OBJECT
public:
explicit InstanceCopyTask(InstancePtr origInstance, bool copySaves, bool keepPlaytime);
public:
explicit InstanceCopyTask(InstancePtr origInstance, const InstanceCopyPrefs& prefs);
protected:
protected:
//! Entry point for tasks.
virtual void executeTask() override;
void copyFinished();
void copyAborted();
private: /* data */
private:
/* data */
InstancePtr m_origInstance;
QFuture<bool> m_copyFuture;
QFutureWatcher<bool> m_copyFutureWatcher;
std::unique_ptr<IPathMatcher> m_matcher;
bool m_keepPlaytime;
bool m_useLinks = false;
bool m_useHardLinks = false;
bool m_copySaves = false;
bool m_linkRecursively = false;
bool m_useClone = false;
};

View File

@ -1,40 +1,60 @@
#include "InstanceCreationTask.h"
#include "settings/INISettingsObject.h"
#include "FileSystem.h"
//FIXME: remove this
#include "minecraft/MinecraftInstance.h"
#include "minecraft/PackProfile.h"
#include <QDebug>
#include <QFile>
InstanceCreationTask::InstanceCreationTask(BaseVersionPtr version)
{
m_version = version;
m_usingLoader = false;
}
InstanceCreationTask::InstanceCreationTask(BaseVersionPtr version, QString loader, BaseVersionPtr loaderVersion)
{
m_version = version;
m_usingLoader = true;
m_loader = loader;
m_loaderVersion = loaderVersion;
}
InstanceCreationTask::InstanceCreationTask() = default;
void InstanceCreationTask::executeTask()
{
setStatus(tr("Creating instance from version %1").arg(m_version->name()));
{
auto instanceSettings = std::make_shared<INISettingsObject>(FS::PathCombine(m_stagingPath, "instance.cfg"));
instanceSettings->suspendSave();
MinecraftInstance inst(m_globalSettings, instanceSettings, m_stagingPath);
auto components = inst.getPackProfile();
components->buildingFromScratch();
components->setComponentVersion("net.minecraft", m_version->descriptor(), true);
if(m_usingLoader)
components->setComponentVersion(m_loader, m_loaderVersion->descriptor());
inst.setName(m_instName);
inst.setIconKey(m_instIcon);
instanceSettings->resumeSave();
setAbortable(true);
if (updateInstance()) {
emitSucceeded();
return;
}
// When the user aborted in the update stage.
if (m_abort) {
emitAborted();
return;
}
if (!createInstance()) {
if (m_abort)
return;
qWarning() << "Instance creation failed!";
if (!m_error_message.isEmpty()) {
qWarning() << "Reason: " << m_error_message;
emitFailed(tr("Error while creating new instance:\n%1").arg(m_error_message));
} else {
emitFailed(tr("Error while creating new instance."));
}
return;
}
// If this is set, it means we're updating an instance. So, we now need to remove the
// 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()) {
setAbortable(false);
setStatus(tr("Removing old conflicting files..."));
qDebug() << "Removing old files";
for (auto 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;
}
}
}
emitSucceeded();
return;
}

View File

@ -1,26 +1,46 @@
#pragma once
#include "tasks/Task.h"
#include "net/NetJob.h"
#include <QUrl>
#include "settings/SettingsObject.h"
#include "BaseVersion.h"
#include "InstanceTask.h"
class InstanceCreationTask : public InstanceTask
{
class InstanceCreationTask : public InstanceTask {
Q_OBJECT
public:
explicit InstanceCreationTask(BaseVersionPtr version);
explicit InstanceCreationTask(BaseVersionPtr version, QString loader, BaseVersionPtr loaderVersion);
public:
InstanceCreationTask();
virtual ~InstanceCreationTask() = default;
protected:
//! Entry point for tasks.
virtual void executeTask() override;
protected:
void executeTask() final override;
private: /* data */
BaseVersionPtr m_version;
bool m_usingLoader;
QString m_loader;
BaseVersionPtr m_loaderVersion;
/**
* Tries to update an already existing instance.
*
* This can be implemented by subclasses to provide a way of updating an already existing
* instance, according to that implementation's concept of 'identity' (i.e. instances that
* are updates / downgrades of one another).
*
* If this returns true, createInstance() will not run, so you should do all update steps in here.
* Otherwise, createInstance() is run as normal.
*/
virtual bool updateInstance() { return false; };
/**
* Creates a new instance.
*
* Returns whether the instance creation was successful (true) or not (false).
*/
virtual bool createInstance() { return false; };
QString getError() const { return m_error_message; }
protected:
void setError(const QString& message) { m_error_message = message; };
protected:
bool m_abort = false;
QStringList m_files_to_remove;
private:
QString m_error_message;
};

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only
/*
* PolyMC - Minecraft Launcher
* Prism Launcher - Minecraft Launcher
* Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
* Copyright (c) 2022 flowln <flowlnlnln@gmail.com>
*
@ -35,76 +35,83 @@
*/
#include "InstanceImportTask.h"
#include <QtConcurrentRun>
#include "Application.h"
#include "BaseInstance.h"
#include "FileSystem.h"
#include "MMCZip.h"
#include "NullInstance.h"
#include "QObjectPtr.h"
#include "icons/IconList.h"
#include "icons/IconUtils.h"
#include "settings/INISettingsObject.h"
// FIXME: this does not belong here, it's Minecraft/Flame specific
#include <quazip/quazipdir.h>
#include "Json.h"
#include "minecraft/MinecraftInstance.h"
#include "minecraft/PackProfile.h"
#include "modplatform/flame/FileResolvingTask.h"
#include "modplatform/flame/PackManifest.h"
#include "modplatform/modrinth/ModrinthPackManifest.h"
#include "modplatform/flame/FlameInstanceCreationTask.h"
#include "modplatform/modrinth/ModrinthInstanceCreationTask.h"
#include "modplatform/technic/TechnicPackProcessor.h"
#include "Application.h"
#include "icons/IconList.h"
#include "net/ChecksumValidator.h"
#include "settings/INISettingsObject.h"
#include "tasks/Task.h"
#include "ui/dialogs/CustomMessageBox.h"
#include "ui/dialogs/ScrollMessageBox.h"
#include "net/ApiDownload.h"
#include <QtConcurrentRun>
#include <algorithm>
InstanceImportTask::InstanceImportTask(const QUrl sourceUrl, QWidget* parent)
{
m_sourceUrl = sourceUrl;
m_parent = parent;
}
#include <quazip/quazipdir.h>
InstanceImportTask::InstanceImportTask(const QUrl sourceUrl, QWidget* parent, QMap<QString, QString>&& extra_info)
: m_sourceUrl(sourceUrl), m_extra_info(extra_info), m_parent(parent)
{}
bool InstanceImportTask::abort()
{
if (!canAbort())
return false;
if (m_filesNetJob)
m_filesNetJob->abort();
m_extractFuture.cancel();
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 false;
return Task::abort();
}
void InstanceImportTask::executeTask()
{
if (m_sourceUrl.isLocalFile())
{
setAbortable(true);
if (m_sourceUrl.isLocalFile()) {
m_archivePath = m_sourceUrl.toLocalFile();
processZipPack();
}
else
{
} else {
setStatus(tr("Downloading modpack:\n%1").arg(m_sourceUrl.toString()));
m_downloadRequired = true;
const QString path = m_sourceUrl.host() + '/' + m_sourceUrl.path();
auto entry = APPLICATION->metacache()->resolveEntry("general", path);
entry->setStale(true);
m_filesNetJob = new NetJob(tr("Modpack download"), APPLICATION->network());
m_filesNetJob->addNetAction(Net::Download::makeCached(m_sourceUrl, entry));
m_archivePath = entry->getFullPath();
auto job = m_filesNetJob.get();
connect(job, &NetJob::succeeded, this, &InstanceImportTask::downloadSucceeded);
connect(job, &NetJob::progress, this, &InstanceImportTask::downloadProgressChanged);
connect(job, &NetJob::failed, this, &InstanceImportTask::downloadFailed);
m_filesNetJob->start();
downloadFromUrl();
}
}
void InstanceImportTask::downloadFromUrl()
{
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();
}
void InstanceImportTask::downloadSucceeded()
{
processZipPack();
@ -119,7 +126,13 @@ void InstanceImportTask::downloadFailed(QString reason)
void InstanceImportTask::downloadProgressChanged(qint64 current, qint64 total)
{
setProgress(current / 2, total);
setProgress(current, total);
}
void InstanceImportTask::downloadAborted()
{
emitAborted();
m_filesNetJob.reset();
}
void InstanceImportTask::processZipPack()
@ -130,8 +143,7 @@ void InstanceImportTask::processZipPack()
// open the zip and find relevant files in it
m_packZip.reset(new QuaZip(m_archivePath));
if (!m_packZip->open(QuaZip::mdUnzip))
{
if (!m_packZip->open(QuaZip::mdUnzip)) {
emitFailed(tr("Unable to open supplied modpack zip file."));
return;
}
@ -145,96 +157,81 @@ void InstanceImportTask::processZipPack()
// 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)
{
if (modrinthFound) {
// process as Modrinth pack
qDebug() << "Modrinth:" << modrinthFound;
m_modpackType = ModpackType::Modrinth;
}
else if (technicFound)
{
} else if (technicFound) {
// process as Technic pack
qDebug() << "Technic:" << technicFound;
extractDir.mkpath(".minecraft");
extractDir.cd(".minecraft");
m_modpackType = ModpackType::Technic;
}
else
{
QString mmcRoot = MMCZip::findFolderOfFileInZip(m_packZip.get(), "instance.cfg");
QString flameRoot = MMCZip::findFolderOfFileInZip(m_packZip.get(), "manifest.json");
} else {
QStringList paths_to_ignore{ "overrides/" };
if (!mmcRoot.isNull())
{
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(!flameRoot.isNull())
{
} 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;
}
}
if(m_modpackType == ModpackType::Unknown)
{
if (m_modpackType == ModpackType::Unknown) {
emitFailed(tr("Archive does not contain a recognized modpack type."));
return;
}
// make sure we extract just the pack
m_extractFuture = QtConcurrent::run(QThreadPool::globalInstance(), MMCZip::extractSubDir, m_packZip.get(), root, extractDir.absolutePath());
m_extractFuture =
QtConcurrent::run(QThreadPool::globalInstance(), MMCZip::extractSubDir, m_packZip.get(), root, extractDir.absolutePath());
connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::finished, this, &InstanceImportTask::extractFinished);
connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::canceled, this, &InstanceImportTask::extractAborted);
m_extractFutureWatcher.setFuture(m_extractFuture);
}
void InstanceImportTask::extractFinished()
{
m_packZip.reset();
if (!m_extractFuture.result())
{
if (m_extractFuture.isCanceled())
return;
if (!m_extractFuture.result().has_value()) {
emitFailed(tr("Failed to extract modpack"));
return;
}
QDir extractDir(m_stagingPath);
qDebug() << "Fixing permissions for extracted pack files...";
QDirIterator it(extractDir, QDirIterator::Subdirectories);
while (it.hasNext())
{
while (it.hasNext()) {
auto filepath = it.next();
QFileInfo file(filepath);
auto permissions = QFile::permissions(filepath);
auto origPermissions = permissions;
if(file.isDir())
{
if (file.isDir()) {
// Folder +rwx for current user
permissions |= QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser | QFileDevice::Permission::ExeUser;
}
else
{
} else {
// File +rw for current user
permissions |= QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser;
}
if(origPermissions != permissions)
{
if(!QFile::setPermissions(filepath, permissions))
{
if (origPermissions != permissions) {
if (!QFile::setPermissions(filepath, permissions)) {
logWarning(tr("Could not fix permissions for %1").arg(filepath));
}
else
{
} else {
qDebug() << "Fixed" << filepath;
}
}
}
switch(m_modpackType)
{
switch (m_modpackType) {
case ModpackType::MultiMC:
processMultiMC();
return;
@ -253,301 +250,58 @@ void InstanceImportTask::extractFinished()
}
}
void InstanceImportTask::extractAborted()
{
emitFailed(tr("Instance import has been aborted."));
return;
}
void InstanceImportTask::processFlame()
{
const static QMap<QString,QString> forgemap = {
{"1.2.5", "3.4.9.171"},
{"1.4.2", "6.0.1.355"},
{"1.4.7", "6.6.2.534"},
{"1.5.2", "7.8.1.737"}
};
Flame::Manifest pack;
try
{
QString configPath = FS::PathCombine(m_stagingPath, "manifest.json");
Flame::loadManifest(pack, configPath);
QFile::remove(configPath);
}
catch (const JSONValidationError &e)
{
emitFailed(tr("Could not understand pack manifest:\n") + e.cause());
return;
}
if(!pack.overrides.isEmpty())
{
QString overridePath = FS::PathCombine(m_stagingPath, pack.overrides);
if (QFile::exists(overridePath))
{
QString mcPath = FS::PathCombine(m_stagingPath, "minecraft");
if (!QFile::rename(overridePath, mcPath))
{
emitFailed(tr("Could not rename the overrides folder:\n") + pack.overrides);
return;
}
}
else
{
logWarning(tr("The specified overrides folder (%1) is missing. Maybe the modpack was already used before?").arg(pack.overrides));
}
shared_qobject_ptr<FlameCreationTask> 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());
auto pack_id = pack_id_it.value();
auto pack_version_id_it = m_extra_info.constFind("pack_version_id");
Q_ASSERT(pack_version_id_it != m_extra_info.constEnd());
auto pack_version_id = pack_version_id_it.value();
QString original_instance_id;
auto original_instance_id_it = m_extra_info.constFind("original_instance_id");
if (original_instance_id_it != m_extra_info.constEnd())
original_instance_id = original_instance_id_it.value();
inst_creation_task =
makeShared<FlameCreationTask>(m_stagingPath, m_globalSettings, m_parent, pack_id, pack_version_id, original_instance_id);
} else {
// FIXME: Find a way to get IDs in directly imported ZIPs
inst_creation_task = makeShared<FlameCreationTask>(m_stagingPath, m_globalSettings, m_parent, QString(), QString());
}
QString forgeVersion;
QString fabricVersion;
// TODO: is Quilt relevant here?
for(auto &loader: pack.minecraft.modLoaders)
{
auto id = loader.id;
if(id.startsWith("forge-"))
{
id.remove("forge-");
forgeVersion = id;
continue;
}
if(id.startsWith("fabric-"))
{
id.remove("fabric-");
fabricVersion = id;
continue;
}
logWarning(tr("Unknown mod loader in manifest: %1").arg(id));
}
inst_creation_task->setName(*this);
inst_creation_task->setIcon(m_instIcon);
inst_creation_task->setGroup(m_instGroup);
inst_creation_task->setConfirmUpdate(shouldConfirmUpdate());
QString configPath = FS::PathCombine(m_stagingPath, "instance.cfg");
auto instanceSettings = std::make_shared<INISettingsObject>(configPath);
MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath);
auto mcVersion = pack.minecraft.version;
// Hack to correct some 'special sauce'...
if(mcVersion.endsWith('.'))
{
mcVersion.remove(QRegExp("[.]+$"));
logWarning(tr("Mysterious trailing dots removed from Minecraft version while importing pack."));
}
auto components = instance.getPackProfile();
components->buildingFromScratch();
components->setComponentVersion("net.minecraft", mcVersion, true);
if(!forgeVersion.isEmpty())
{
// FIXME: dirty, nasty, hack. Proper solution requires dependency resolution and knowledge of the metadata.
if(forgeVersion == "recommended")
{
if(forgemap.contains(mcVersion))
{
forgeVersion = forgemap[mcVersion];
}
else
{
logWarning(tr("Could not map recommended Forge version for Minecraft %1").arg(mcVersion));
}
}
components->setComponentVersion("net.minecraftforge", forgeVersion);
}
if(!fabricVersion.isEmpty())
{
components->setComponentVersion("net.fabricmc.fabric-loader", fabricVersion);
}
if (m_instIcon != "default")
{
instance.setIconKey(m_instIcon);
}
else
{
if(pack.name.contains("Direwolf20"))
{
instance.setIconKey("steve");
}
else if(pack.name.contains("FTB") || pack.name.contains("Feed The Beast"))
{
instance.setIconKey("ftb_logo");
}
else
{
// default to something other than the MultiMC default to distinguish these
instance.setIconKey("flame");
}
}
QString jarmodsPath = FS::PathCombine(m_stagingPath, "minecraft", "jarmods");
QFileInfo jarmodsInfo(jarmodsPath);
if(jarmodsInfo.isDir())
{
// install all the jar mods
qDebug() << "Found jarmods:";
QDir jarmodsDir(jarmodsPath);
QStringList jarMods;
for (auto info: jarmodsDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files))
{
qDebug() << info.fileName();
jarMods.push_back(info.absoluteFilePath());
}
auto profile = instance.getPackProfile();
profile->installJarMods(jarMods);
// nuke the original files
FS::deletePath(jarmodsPath);
}
instance.setName(m_instName);
m_modIdResolver = new Flame::FileResolvingTask(APPLICATION->network(), pack);
connect(m_modIdResolver.get(), &Flame::FileResolvingTask::succeeded, [&]()
{
auto results = m_modIdResolver->getResults();
//first check for blocked mods
QString text;
auto anyBlocked = false;
for(const auto& result: results.files.values()) {
if (!result.resolved || result.url.isEmpty()) {
text += QString("%1: <a href='%2'>%2</a><br/>").arg(result.fileName, result.websiteUrl);
anyBlocked = true;
}
}
if(anyBlocked) {
qWarning() << "Blocked mods found, displaying mod list";
auto message_dialog = new ScrollMessageBox(m_parent,
tr("Blocked mods found"),
tr("The following mods were blocked on third party launchers.<br/>"
"You will need to manually download them and add them to the modpack"),
text);
message_dialog->setModal(true);
message_dialog->show();
connect(message_dialog, &QDialog::rejected, [&]() {
m_modIdResolver.reset();
emitFailed("Canceled");
});
connect(message_dialog, &QDialog::accepted, [&]() {
m_filesNetJob = new NetJob(tr("Mod download"), APPLICATION->network());
for (const auto &result: m_modIdResolver->getResults().files) {
QString filename = result.fileName;
if (!result.required) {
filename += ".disabled";
}
auto relpath = FS::PathCombine("minecraft", result.targetFolder, filename);
auto path = FS::PathCombine(m_stagingPath, relpath);
switch (result.type) {
case Flame::File::Type::Folder: {
logWarning(tr("This 'Folder' may need extracting: %1").arg(relpath));
// fall-through intentional, we treat these as plain old mods and dump them wherever.
}
case Flame::File::Type::SingleFile:
case Flame::File::Type::Mod: {
if (!result.url.isEmpty()) {
qDebug() << "Will download" << result.url << "to" << path;
auto dl = Net::Download::makeFile(result.url, path);
m_filesNetJob->addNetAction(dl);
}
break;
}
case Flame::File::Type::Modpack:
logWarning(
tr("Nesting modpacks in modpacks is not implemented, nothing was downloaded: %1").arg(
relpath));
break;
case Flame::File::Type::Cmod2:
case Flame::File::Type::Ctoc:
case Flame::File::Type::Unknown:
logWarning(tr("Unrecognized/unhandled PackageType for: %1").arg(relpath));
break;
}
}
m_modIdResolver.reset();
connect(m_filesNetJob.get(), &NetJob::succeeded, this, [&]() {
m_filesNetJob.reset();
emitSucceeded();
}
);
connect(m_filesNetJob.get(), &NetJob::failed, [&](QString reason) {
m_filesNetJob.reset();
emitFailed(reason);
});
connect(m_filesNetJob.get(), &NetJob::progress, [&](qint64 current, qint64 total) {
setProgress(current, total);
});
setStatus(tr("Downloading mods..."));
m_filesNetJob->start();
});
}else{
//TODO extract to function ?
m_filesNetJob = new NetJob(tr("Mod download"), APPLICATION->network());
for (const auto &result: m_modIdResolver->getResults().files) {
QString filename = result.fileName;
if (!result.required) {
filename += ".disabled";
}
auto relpath = FS::PathCombine("minecraft", result.targetFolder, filename);
auto path = FS::PathCombine(m_stagingPath, relpath);
switch (result.type) {
case Flame::File::Type::Folder: {
logWarning(tr("This 'Folder' may need extracting: %1").arg(relpath));
// fall-through intentional, we treat these as plain old mods and dump them wherever.
}
case Flame::File::Type::SingleFile:
case Flame::File::Type::Mod: {
if (!result.url.isEmpty()) {
qDebug() << "Will download" << result.url << "to" << path;
auto dl = Net::Download::makeFile(result.url, path);
m_filesNetJob->addNetAction(dl);
}
break;
}
case Flame::File::Type::Modpack:
logWarning(
tr("Nesting modpacks in modpacks is not implemented, nothing was downloaded: %1").arg(
relpath));
break;
case Flame::File::Type::Cmod2:
case Flame::File::Type::Ctoc:
case Flame::File::Type::Unknown:
logWarning(tr("Unrecognized/unhandled PackageType for: %1").arg(relpath));
break;
}
}
m_modIdResolver.reset();
connect(m_filesNetJob.get(), &NetJob::succeeded, this, [&]() {
m_filesNetJob.reset();
emitSucceeded();
}
);
connect(m_filesNetJob.get(), &NetJob::failed, [&](QString reason) {
m_filesNetJob.reset();
emitFailed(reason);
});
connect(m_filesNetJob.get(), &NetJob::progress, [&](qint64 current, qint64 total) {
setProgress(current, total);
});
setStatus(tr("Downloading mods..."));
m_filesNetJob->start();
}
}
);
connect(m_modIdResolver.get(), &Flame::FileResolvingTask::failed, [&](QString reason)
{
m_modIdResolver.reset();
emitFailed(tr("Unable to resolve mod IDs:\n") + reason);
connect(inst_creation_task.get(), &Task::succeeded, this, [this, inst_creation_task] {
setOverride(inst_creation_task->shouldOverride(), inst_creation_task->originalInstanceID());
emitSucceeded();
});
connect(m_modIdResolver.get(), &Flame::FileResolvingTask::progress, [&](qint64 current, qint64 total)
{
setProgress(current, total);
});
connect(m_modIdResolver.get(), &Flame::FileResolvingTask::status, [&](QString status)
{
setStatus(status);
});
m_modIdResolver->start();
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.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();
}
void InstanceImportTask::processTechnic()
{
shared_qobject_ptr<Technic::TechnicPackProcessor> packProcessor = new Technic::TechnicPackProcessor();
shared_qobject_ptr<Technic::TechnicPackProcessor> packProcessor{ new Technic::TechnicPackProcessor };
connect(packProcessor.get(), &Technic::TechnicPackProcessor::succeeded, this, &InstanceImportTask::emitSucceeded);
connect(packProcessor.get(), &Technic::TechnicPackProcessor::failed, this, &InstanceImportTask::emitFailed);
packProcessor->run(m_globalSettings, m_instName, m_instIcon, m_stagingPath);
packProcessor->run(m_globalSettings, name(), m_instIcon, m_stagingPath);
}
void InstanceImportTask::processMultiMC()
@ -561,7 +315,7 @@ void InstanceImportTask::processMultiMC()
instance.resetTimePlayed();
// set a new nice name
instance.setName(m_instName);
instance.setName(name());
// if the icon was specified by user, use that. otherwise pull icon from the pack
if (m_instIcon != "default") {
@ -584,180 +338,54 @@ void InstanceImportTask::processMultiMC()
void InstanceImportTask::processModrinth()
{
std::vector<Modrinth::File> files;
std::vector<Modrinth::File> non_whitelisted_files;
QString minecraftVersion, fabricVersion, quiltVersion, forgeVersion;
try {
QString indexPath = FS::PathCombine(m_stagingPath, "modrinth.index.json");
auto doc = Json::requireDocument(indexPath);
auto obj = Json::requireObject(doc, "modrinth.index.json");
int formatVersion = Json::requireInteger(obj, "formatVersion", "modrinth.index.json");
if (formatVersion == 1) {
auto game = Json::requireString(obj, "game", "modrinth.index.json");
if (game != "minecraft") {
throw JSONValidationError("Unknown game: " + game);
}
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());
auto pack_id = pack_id_it.value();
auto jsonFiles = Json::requireIsArrayOf<QJsonObject>(obj, "files", "modrinth.index.json");
bool had_optional = false;
for (auto& modInfo : jsonFiles) {
Modrinth::File file;
file.path = Json::requireString(modInfo, "path");
QString pack_version_id;
auto pack_version_id_it = m_extra_info.constFind("pack_version_id");
if (pack_version_id_it != m_extra_info.constEnd())
pack_version_id = pack_version_id_it.value();
auto env = Json::ensureObject(modInfo, "env");
QString support = Json::ensureString(env, "client", "unsupported");
if (support == "unsupported") {
continue;
} else if (support == "optional") {
// TODO: Make a review dialog for choosing which ones the user wants!
if (!had_optional) {
had_optional = true;
auto info = CustomMessageBox::selectable(
m_parent, tr("Optional mod detected!"),
tr("One or more mods from this modpack are optional. They will be downloaded, but disabled by default!"), QMessageBox::Information);
info->exec();
}
QString original_instance_id;
auto original_instance_id_it = m_extra_info.constFind("original_instance_id");
if (original_instance_id_it != m_extra_info.constEnd())
original_instance_id = original_instance_id_it.value();
if (file.path.endsWith(".jar"))
file.path += ".disabled";
}
QJsonObject hashes = Json::requireObject(modInfo, "hashes");
QString hash;
QCryptographicHash::Algorithm hashAlgorithm;
hash = Json::ensureString(hashes, "sha1");
hashAlgorithm = QCryptographicHash::Sha1;
if (hash.isEmpty()) {
hash = Json::ensureString(hashes, "sha512");
hashAlgorithm = QCryptographicHash::Sha512;
if (hash.isEmpty()) {
hash = Json::ensureString(hashes, "sha256");
hashAlgorithm = QCryptographicHash::Sha256;
if (hash.isEmpty()) {
throw JSONValidationError("No hash found for: " + file.path);
}
}
}
file.hash = QByteArray::fromHex(hash.toLatin1());
file.hashAlgorithm = hashAlgorithm;
// Do not use requireUrl, which uses StrictMode, instead use QUrl's default TolerantMode
// (as Modrinth seems to incorrectly handle spaces)
file.download = Json::requireString(Json::ensureArray(modInfo, "downloads").first(), "Download URL for " + file.path);
if (!file.download.isValid()) {
qDebug() << QString("Download URL (%1) for %2 is not a correctly formatted URL").arg(file.download.toString(), file.path);
throw JSONValidationError(tr("Download URL for %1 is not a correctly formatted URL").arg(file.path));
}
else if (!Modrinth::validateDownloadUrl(file.download)) {
qDebug() << QString("Download URL (%1) for %2 is from a non-whitelisted by Modrinth domain").arg(file.download.toString(), file.path);
non_whitelisted_files.push_back(file);
}
files.push_back(file);
}
if (!non_whitelisted_files.empty()) {
QString text;
for (const auto& file : non_whitelisted_files) {
text += tr("Filepath: %1<br>URL: <a href='%2'>%2</a><br>").arg(file.path, file.download.toString());
}
auto message_dialog = new ScrollMessageBox(m_parent, tr("Non-whitelisted mods found"),
tr("The following mods have URLs that are not whitelisted by Modrinth.\n"
"Proceed with caution!"),
text);
message_dialog->setModal(true);
if (message_dialog->exec() == QDialog::Rejected) {
emitFailed("Aborted");
return;
}
}
auto dependencies = Json::requireObject(obj, "dependencies", "modrinth.index.json");
for (auto it = dependencies.begin(), end = dependencies.end(); it != end; ++it) {
QString name = it.key();
if (name == "minecraft") {
minecraftVersion = Json::requireString(*it, "Minecraft version");
}
else if (name == "fabric-loader") {
fabricVersion = Json::requireString(*it, "Fabric Loader version");
}
else if (name == "quilt-loader") {
quiltVersion = Json::requireString(*it, "Quilt Loader version");
}
else if (name == "forge") {
forgeVersion = Json::requireString(*it, "Forge version");
}
else {
throw JSONValidationError("Unknown dependency type: " + name);
}
}
} else {
throw JSONValidationError(QStringLiteral("Unknown format version: %s").arg(formatVersion));
inst_creation_task =
new 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);
}
QFile::remove(indexPath);
} catch (const JSONValidationError& e) {
emitFailed(tr("Could not understand pack index:\n") + e.cause());
return;
// 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);
}
QString overridePath = FS::PathCombine(m_stagingPath, "overrides");
if (QFile::exists(overridePath)) {
QString mcPath = FS::PathCombine(m_stagingPath, ".minecraft");
if (!QFile::rename(overridePath, mcPath)) {
emitFailed(tr("Could not rename the overrides folder:\n") + "overrides");
return;
}
}
inst_creation_task->setName(*this);
inst_creation_task->setIcon(m_instIcon);
inst_creation_task->setGroup(m_instGroup);
inst_creation_task->setConfirmUpdate(shouldConfirmUpdate());
QString configPath = FS::PathCombine(m_stagingPath, "instance.cfg");
auto instanceSettings = std::make_shared<INISettingsObject>(configPath);
MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath);
auto components = instance.getPackProfile();
components->buildingFromScratch();
components->setComponentVersion("net.minecraft", minecraftVersion, true);
if (!fabricVersion.isEmpty())
components->setComponentVersion("net.fabricmc.fabric-loader", fabricVersion, true);
if (!quiltVersion.isEmpty())
components->setComponentVersion("org.quiltmc.quilt-loader", quiltVersion, true);
if (!forgeVersion.isEmpty())
components->setComponentVersion("net.minecraftforge", forgeVersion, true);
if (m_instIcon != "default")
{
instance.setIconKey(m_instIcon);
}
else
{
instance.setIconKey("modrinth");
}
instance.setName(m_instName);
instance.saveNow();
m_filesNetJob = new NetJob(tr("Mod download"), APPLICATION->network());
for (auto &file : files)
{
auto path = FS::PathCombine(m_stagingPath, ".minecraft", file.path);
qDebug() << "Will download" << file.download << "to" << path;
auto dl = Net::Download::makeFile(file.download, path);
dl->addValidator(new Net::ChecksumValidator(file.hashAlgorithm, file.hash));
m_filesNetJob->addNetAction(dl);
}
connect(m_filesNetJob.get(), &NetJob::succeeded, this, [&]()
{
m_filesNetJob.reset();
emitSucceeded();
}
);
connect(m_filesNetJob.get(), &NetJob::failed, [&](const QString &reason)
{
m_filesNetJob.reset();
emitFailed(reason);
connect(inst_creation_task, &Task::succeeded, this, [this, inst_creation_task] {
setOverride(inst_creation_task->shouldOverride(), inst_creation_task->originalInstanceID());
emitSucceeded();
});
connect(m_filesNetJob.get(), &NetJob::progress, [&](qint64 current, qint64 total)
{
setProgress(current, total);
});
setStatus(tr("Downloading mods..."));
m_filesNetJob->start();
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(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);
inst_creation_task->start();
}

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