Compare commits

..

3301 Commits

Author SHA1 Message Date
baa988ec81 Merge pull request #1739 from Trial97/mod_icons
fixed squished mod icons
2023-11-06 20:49:05 +00:00
8eac0d34bd Merge pull request #1796 from Trial97/dep_global_toggle
Added Global Dependenicies toggle
2023-11-06 20:48:51 +00:00
0b1dcb3ea7 Merge pull request #1760 from LocalSpook/sorting
Localize sorting options for resource and shader packs
2023-11-06 20:45:52 +00:00
3d529b0c3e Merge pull request #1772 from Trial97/pixmap_crash
Fix crash with mod icon caching
2023-11-06 20:44:27 +00:00
a2ab4804dd Merge pull request #1788 from Trial97/readme
Updated the readme
2023-11-06 16:41:56 +00:00
ca226d2ab5 Fixed comparation warning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-06 11:24:19 +02:00
670e91cb60 Increased the step to around 10MB
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-06 11:08:18 +02:00
cc291219f9 apply suggested changes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-06 10:51:34 +02:00
0eda2447dc Merge pull request #1797 from Trial97/fix_mangohub
[Linux] Fix loading MangoHud
2023-11-06 08:14:55 +01:00
867e6223ce Fixed mangoHub loading
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-05 23:48:26 +02:00
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
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
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
bd9d5e0990 Reword
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-11-05 20:31:48 +00:00
9a8667e99c Added Global Dependenicies toggle
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-05 22:22:49 +02:00
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
52807ab279 Merge pull request #1793 from Edgars-Cirulis/develop
visual: Fix spacing.
2023-11-05 17:50:01 +00:00
d2a85cb580 visual: Fix spacing.
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-11-05 17:43:12 +00:00
d13db1109f Merge pull request #1789 from acdpsn/develop
Fixed link to Fulmine's website
2023-11-05 16:15:36 +00:00
64bbcb2834 chore(deps): update korthout/backport-action action to v2.1.0 2023-11-05 15:57:06 +00:00
070d83d887 Merge pull request #1791 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-11-05 07:03:37 +00:00
cf4144cb50 Fixed link to Fulmine's website
Signed-off-by: Alex <akim8@emich.edu>
2023-11-05 00:46:05 -04:00
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
0f95bf1e42 Updated readme
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-04 12:08:49 +02:00
b446bdf4a9 Merge pull request #1783 from Trial97/visual_bug
Fixed visual bug with Modlist export
2023-11-03 15:20:57 +00:00
ef40ba8439 Merge pull request #1782 from Trial97/warn_remove_account 2023-11-03 12:56:13 +01:00
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
b18082376d Fixed visual bug with Modlist export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-03 11:04:13 +02:00
127a31ba3a Added warning for remove account
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-03 10:31:40 +02:00
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
2349f29be0 jsut a overflow protection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-11-02 01:26:04 +02:00
f8bb1a872a Merge pull request #1766 from TheKodeToad/groups-fix
Fix group issues
2023-11-01 15:26:41 +00:00
86e2f6c58c Merge pull request #1685 from Trial97/java
Autodetect Java bundled with official launcher
2023-10-31 18:03:41 +01:00
2526275c5e Better check
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-30 09:51:37 +00:00
5a54d80c6e Fix group issues
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-30 09:26:38 +00:00
ea7dd9cfcc Merge pull request #1761 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-29 09:31:28 +01:00
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
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
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
736246e6c8 Merge pull request #1759 from PrismLauncher/renovate/korthout-backport-action-2.x 2023-10-28 18:50:45 +02:00
9dcb7e9759 chore(deps): update korthout/backport-action action to v2 2023-10-28 16:03:11 +00:00
69c2720872 Merge pull request #1691 from Trial97/no_color
Add no_color env variable
2023-10-28 18:02:53 +02:00
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
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
3719ea21b0 Merge pull request #1355 from TheKodeToad/env-vars
Custom environment variables
2023-10-26 22:10:26 +02:00
bd11b93a0c Use hidden tab bar like other pages
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-26 21:01:24 +01:00
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
38d77b58cd Merge pull request #1748 from LocalSpook/using 2023-10-25 16:08:42 +00:00
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
5be80df1ee Replace typedef with using
Signed-off-by: LocalSpook <56512186+LocalSpook@users.noreply.github.com>
2023-10-24 01:36:27 -07:00
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
b376888f43 Merge pull request #1515 from TheKodeToad/sysprops 2023-10-22 21:57:11 +02:00
0fe3241df6 remove now unneeded Q_ASSERTs
Signed-off-by: Tayou <git@tayou.org>
2023-10-22 21:25:06 +02:00
7d5206818b fix switch/case fallthrough
Signed-off-by: Tayou <git@tayou.org>
2023-10-22 21:25:00 +02:00
db19362a97 feat: add launcher brand and version props
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-10-22 21:19:44 +02:00
cefb96e812 Merge pull request #1743 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-22 09:40:49 +02:00
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
2c4af7e793 Merge pull request #1290 from Trial97/refactor/NetActions
Refactor ImgurUpload
2023-10-21 12:32:16 +01:00
f0fd1bd5e5 Merge pull request #1737 from Trial97/fix_ftb_app_import_icon
Fixed FTBApp import icon
2023-10-21 07:48:21 +01:00
5d926582c7 added Image column size hint
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-20 19:08:56 +03:00
7b62d14683 fixed squished mod icons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-20 17:15:12 +03:00
80723eeca1 Fixed FTBApp import icon
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-20 16:41:32 +03:00
e9fd02baca Fix code style
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-20 13:12:16 +01:00
7ad48d8677 Merge pull request #1692 from Trial97/msa_account
Fix wrong account selection
2023-10-19 20:09:28 +01:00
9a0cfbc648 Merge pull request #1733 from Dnyanu76/patch-1
Remove typo
2023-10-19 21:07:51 +02:00
1f2483c39e Remove typo
Signed-off-by: Indrale Dnyaneshwar <118615488+Dnyanu76@users.noreply.github.com>
2023-10-20 00:31:47 +05:30
b9c1dc7325 Merge pull request #1374 from Trial97/welcome_background
Added welcome screen
2023-10-19 20:42:47 +02:00
cf33927f21 Merge remote-tracking branch 'upstream/develop' into sysprops
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-19 11:28:07 +01:00
c638a63a03 Merge pull request #1726 from Trial97/contrib
Added Trial97 as maintainer in about dialog
2023-10-18 09:34:12 +01:00
2081fcd3f5 Merge pull request #1722 from Scrumplex/fix/readonly-themes 2023-10-18 09:25:48 +02:00
90ebbd8e91 Merge pull request #1724 from getchoo/no-default-updater 2023-10-18 09:17:58 +02:00
165d218300 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into contrib 2023-10-18 09:07:36 +03:00
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
5aa2b88861 Merge pull request #1721 from Trial97/develop
fixed code signing for appImage
2023-10-17 10:20:44 +01:00
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
b1bd0ceade fixed code signing for appImage
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-17 09:29:47 +03:00
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
aae65e3e4e Merge branch 'develop' into update-qt660
Signed-off-by: Tayou <git@tayou.org>
2023-10-16 19:57:05 +02:00
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
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
0927035a26 Merge pull request #1549 from Trial97/atlauncher_browser
added suport for atlauncher browser download
2023-10-16 06:39:12 +01:00
5985d8b118 Merge pull request #1383 from TheKodeToad/rename-groups
Rename groups
2023-10-15 23:38:27 +02:00
cc990c4f94 Merge branch 'develop' into env-vars
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-15 21:57:20 +01:00
c4882e7162 Merge pull request #443 from TheKodeToad/skinfix
Add legacy skin fix
2023-10-15 21:46:29 +01:00
9d15255e0a Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into atlauncher_browser 2023-10-15 20:52:38 +03:00
ca9b593483 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions 2023-10-15 20:44:45 +03:00
ef0813754b added explicit qt version for linux portable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-15 20:23:46 +03:00
6bbff310bc Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/launcher-updater 2023-10-15 17:42:39 +03:00
6fb7a98901 Fix small mistake 😭
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-15 14:45:05 +01:00
9705e6325a Merge pull request #1673 from Trial97/win_attr
fix folder attributes on windows copy
2023-10-15 15:15:36 +02:00
7112d04df5 Mark setting as optional
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-10-15 14:11:08 +01:00
2ab48a43dd Merge pull request #1706 from Trial97/develop
removed the better release for modrinth modpacks
2023-10-15 12:24:20 +01:00
682134435d Merge pull request #1684 from Trial97/remove_legacy
removed windows legacy builds
2023-10-15 12:22:35 +01:00
05d7cc31bf Merge pull request #1709 from Trial97/arch_build
Fix compatibility with Qt 6.6
2023-10-15 12:19:47 +01:00
c498ad1787 Merge pull request #1711 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-15 08:55:36 +02:00
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
023b3e3c39 Fixed arch build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-14 09:41:04 +03:00
7015b8f7b2 Merge pull request #1563 from Trial97/modrinth_pack
Pack import fixes and improvements
2023-10-13 16:38:37 +02:00
32eaaa25d9 removed the better release for modrinth modpacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-13 00:04:36 +03:00
ca4b58d5d7 Merge pull request #1405 from Trial97/update_file
Allow updating managed packs from local file
2023-10-10 16:17:08 +01:00
4eb8db16f1 Merge pull request #1543 from Trial97/packwiz
refactor packwiz file write
2023-10-10 16:16:57 +01:00
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
6150908025 Merge pull request #1658 from Trial97/neoforge_version
Added version check for neoforge filter
2023-10-10 16:16:21 +01:00
5cb6d93136 fixed updater build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-09 22:25:45 +03:00
7e6a08548d Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/launcher-updater 2023-10-09 19:58:43 +03:00
11a0241b5c Merge pull request #1699 from GitMuslim/develop 2023-10-09 17:25:11 +02:00
8eb8f167ab oops
Signed-off-by: Muslim <42213155+GitMuslim@users.noreply.github.com>
2023-10-09 18:02:56 +03:00
5f5214e5dd add fullstop
Signed-off-by: Muslim <42213155+GitMuslim@users.noreply.github.com>
2023-10-09 17:00:57 +03:00
04a7275280 Merge pull request #1695 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-08 09:31:17 +02:00
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
dc74ea7382 fixed wrong account selection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-06 19:27:26 +03:00
8d0a53273f Add no_color env variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-06 18:42:54 +03:00
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
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
82461b1113 rename for windows
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-06 08:51:45 +03:00
4f1ee85424 check for minecraft java runtime
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-06 00:21:37 +03:00
b67c2c71d1 removed windows legacy builds
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-05 22:44:49 +03:00
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
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
c78d4e7bb6 added version test for snapshot
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-04 19:16:21 +03:00
024c474658 Merge pull request #1678 from Trial97/release_order
fixed quilt dependencies
2023-10-04 10:28:45 +02:00
03ad430699 Merge pull request #1537 from Trial97/warnings 2023-10-04 09:40:38 +02:00
ac38585a2a Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into release_order 2023-10-04 09:41:49 +03:00
3cba5adb5a updated dependency cycle
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-04 09:41:40 +03:00
d186c34385 Merge pull request #1676 from Trial97/release_order
revert back the release order
2023-10-04 07:43:21 +02:00
77979b4c95 revert back the release order
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-03 17:23:26 +03:00
8069de29b2 fix folder attributes on windows copy
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-02 21:53:08 +03:00
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
d612ab94a7 Merge pull request #1672 from Trial97/skin_refresh
refresh default account when list changes
2023-10-02 16:06:12 +02:00
bfa9613373 Merge pull request #1657 from Trial97/shader_txt 2023-10-02 11:56:50 +02:00
93be8b0735 refresh default account when list changes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-10-02 09:13:02 +03:00
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
eab1180f68 Merge pull request #1090 from Ryex/feat/acknowledge_release_type 2023-10-01 14:32:58 +02:00
e3a147f56d Merge pull request #1656 from Trial97/remove_mojang2 2023-10-01 14:32:42 +02:00
898a719d3e Merge pull request #1668 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-10-01 09:28:57 +02:00
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
589ab24f7e Merge pull request #1666 from getchoo/driverlink
[Linux] Use addOpenGLRunpath.driverLink in Nix wrapper
2023-09-30 23:50:36 +02:00
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
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
84269f9596 refactor(nix): use addOpenGLRunpath.driverLink in wrapper
Signed-off-by: seth <getchoo@tuta.io>
2023-09-30 12:50:26 -04:00
34294383eb added version type to dep update
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 23:18:23 +03:00
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
531b58093e Merge pull request #1263 from Trial97/develop 2023-09-28 22:03:14 +02:00
2ff9ef0620 Merge pull request #1363 from Trial97/download_threads 2023-09-28 22:02:57 +02:00
5b7c5607a9 removed flame consturctor
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 22:53:40 +03:00
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
bef701eba8 chaged folder again
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 21:27:11 +03:00
742384909f updated portable update
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 21:24:31 +03:00
606c12ffeb more fixing
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 18:47:21 +03:00
498c9db1ce fixed appImageUpdate
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-28 15:14:59 +03:00
59e565ef96 Merge pull request #1643 from bolli24/develop 2023-09-27 17:34:32 +02:00
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
b8d9c3d779 format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-26 20:19:35 +03:00
ebde563648 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into feat/launcher-updater 2023-09-26 20:16:46 +03:00
4ee6a6711d Added version check for neoforge filter
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-25 23:04:21 +03:00
86b47b3421 Do not display invalid shaders
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-25 22:33:36 +03:00
7c636d4608 Removed mojang
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-25 17:44:04 +03:00
0406e168e7 Merge pull request #1655 from 0xallie/minecraft-wiki-migration
Update links to Minecraft Wiki
2023-09-25 15:26:37 +01:00
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
ad9fb7349f Merge pull request #1647 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-09-24 09:02:43 +02:00
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
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
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
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
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
97da8892b9 chore(nix): add meta.mainProgram attribute
Signed-off-by: seth <getchoo@tuta.io>
2023-09-19 16:41:40 -04:00
97ced1f459 fix(nix): include libusb1 as a runtime dependency
Signed-off-by: seth <getchoo@tuta.io>
2023-09-19 16:41:37 -04:00
a49851cb40 updated blocked mods with empty hash
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-19 15:48:12 +03:00
d72c3aba80 Merge pull request #1632 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-09-17 09:30:30 +02:00
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
00af385619 Merge pull request #1572 from Trial97/catpacks2 2023-09-16 18:22:13 +02:00
bf6dc10f35 Merge pull request #1605 from TheKodeToad/flame-shaders 2023-09-16 18:20:45 +02:00
4cb424470b Merge pull request #1619 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-09-10 15:57:03 -04:00
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
47d1f23568 added side for modrinth mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-10 16:22:57 +03:00
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
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
6aa821df9c refactor(nix): match inputs value in flake
Signed-off-by: seth <getchoo@tuta.io>
2023-09-09 15:25:39 -04:00
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
78f8a31cd6 Merge pull request #1613 from PrismLauncher/renovate/actions-cache-3.x 2023-09-08 23:28:03 +02:00
e7d6be531f chore(deps): update actions/cache action to v3.3.2 2023-09-08 17:22:12 +00:00
ba3a1b6280 Merge pull request #1606 from PrismLauncher/renovate/actions-checkout-4.x 2023-09-04 17:11:45 +02:00
d483b613b1 Merge pull request #1578 from TheKodeToad/antialiasing 2023-09-04 17:05:29 +02:00
cf599865f6 Merge pull request #1581 from getchoo/old-gcc 2023-09-04 17:04:10 +02:00
546d49e183 Merge pull request #1530 from Trial97/metadata_delete 2023-09-04 17:02:52 +02:00
7dd2530027 chore(deps): update actions/checkout action to v4 2023-09-04 15:02:01 +00:00
e9ecdd05b9 Merge pull request #1574 from Scrumplex/refactor-flake 2023-09-04 17:02:01 +02:00
ad6f15f293 Merge pull request #1604 from PrismLauncher/renovate/cachix-install-nix-action-23.x 2023-09-04 17:01:43 +02:00
94c1cd6bcf CurseForge shader downloading
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-04 14:15:37 +01:00
e155844671 chore(deps): update cachix/install-nix-action action to v23 2023-09-04 10:22:11 +00:00
2918d61b16 refactor(nix): use pre-commit flake module
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-09-04 08:53:10 +02:00
bbf4e3b04d refactor(nix): use fixed points over rec
Signed-off-by: seth <getchoo@tuta.io>
2023-09-03 19:07:39 -04:00
caf925cbad Merge pull request #1601 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-09-03 09:42:31 +02:00
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
19b5a5e00b Remove final conflict - kept by mistake
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-02 22:38:14 +01:00
347228a246 Legacy settings override default -> false
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-02 22:29:26 +01:00
1213a5ab46 Merge remote-tracking branch 'upstream/develop' into skinfix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-09-02 22:27:57 +01:00
17f696bffc small tweaks to atl icons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-09-01 22:25:15 +03:00
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
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
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
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
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
7e65aea2ef format json
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-31 19:04:41 +03:00
6cfe2dbc50 moved catpack data to testdata
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-31 17:34:05 +03:00
25ce11d85d Merge pull request #1539 from Trial97/refactor_modpack_ux
Improvements to modpack UX
2023-08-31 14:58:54 +01:00
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
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
befa3baa6a Merge branch 'develop' into feat/launcher-updater
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-30 11:47:33 +01:00
f23a8e4b4b Enable antialiasing for mod and pack icons
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-29 23:34:19 +01:00
8c30cb3706 Fix CI
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-29 13:27:06 +01:00
c1855c6ce3 Merge branch 'develop' into rename-groups
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-29 12:41:40 +01:00
b83fdbd1b7 Merge pull request #1575 from TheKodeToad/more-pack-export-fixes 2023-08-28 22:18:58 +02:00
0e67686295 Hide index folder in pack export dialog
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-28 17:25:07 +01:00
e98bca4749 Fix cancelling pack save
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-28 17:09:40 +01:00
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
211865a1e1 handle gracefully the upload abort
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-28 13:31:19 +03:00
311e36b5d6 added new line
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-28 11:52:26 +03:00
fbf6833124 Merge pull request #1519 from TheKodeToad/better-export-pack 2023-08-28 10:29:32 +02:00
e4e4c4a430 Merge pull request #1573 from PrismLauncher/renovate/lock-file-maintenance 2023-08-28 10:14:45 +02:00
97d932db62 Revert "chore(deps): enable nix lockfile maintenance for renovate"
This reverts commit 5d14724e66a1911b04dd5091e520751fd7f5ee90.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-28 10:14:21 +02:00
5d70f4dbca removed if
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-28 08:50:10 +03:00
66cbbfec0c chore(deps): lock file maintenance 2023-08-28 00:23:14 +00:00
07d8598638 added catpacks tests
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 23:40:32 +03:00
79652799bd Made text smaller
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 21:30:46 +03:00
630145a1d0 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into welcome_background 2023-08-27 21:03:21 +03:00
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
9110fbf282 Merge pull request #1560 from Trial97/curse_multiple_loaders2
Add suport for flame multiple loaders
2023-08-27 18:21:14 +01:00
e3b04d10cf Merge pull request #1536 from Trial97/time3
Allow showing playtime in hours
2023-08-27 18:14:04 +01:00
8c607ae734 removed extra if
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 20:02:12 +03:00
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
4036cecfc0 Added progress widget to some modpack providers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-27 15:04:42 +03:00
df14f88307 Merge pull request #1532 from Trial97/curseforge-url-handle 2023-08-27 12:26:57 +02:00
29736b3b1f Merge pull request #1570 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-08-27 01:47:58 -04:00
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
479335dfe0 Rewrite optional mod dialog
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-27 00:50:33 +01:00
d1566f2610 Merge branch 'develop' into env-vars
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-26 23:12:02 +01:00
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
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
abfd1a4205 minor dependency crash fix
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-25 18:35:25 +03:00
094cee8ec6 Merge pull request #1561 from Scrumplex/nix-miscs 2023-08-25 10:08:53 +02:00
c54fecf5d9 added condition for empty loader type
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-25 09:05:04 +03:00
172680abf8 removed aditional header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 13:42:36 +03:00
5f3e9672cd made the loaders check more generic
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 13:31:57 +03:00
f897b14e3e changed technic icon name retrival
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 13:05:27 +03:00
bb4b89470d fixed icon importing
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 12:46:23 +03:00
2990c5d0c9 Added optional mods dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 12:44:11 +03:00
ea384d59fb use qt separtor for file path
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-24 12:41:37 +03:00
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
783af2c06a chore(deps): update determinatesystems/update-flake-lock action to v20 2023-08-24 04:32:25 +00:00
6c0492c0d1 return 0 for any
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 21:09:32 +03:00
1515607060 updated getMappedModLoader
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 20:16:51 +03:00
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
d7b6450613 fix(nix): reload direnv if parts change
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-23 13:47:04 +02:00
85c23b26de chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-23 13:46:23 +02:00
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
6178e5a975 reverted change for optional
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 13:55:38 +03:00
aa065f2b51 Updated dependency resolution
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 13:28:23 +03:00
59ec0135d7 Merge pull request #1559 from Scrumplex/nix-canonicalize-jars 2023-08-23 12:23:26 +02:00
2283498ccb Merge pull request #1552 from Trial97/memory_quick_setup 2023-08-23 11:56:53 +02:00
e6ba2f4970 Added loaders check on versions load
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 12:52:51 +03:00
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
f8f9ffa118 added loaders for flame version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 11:33:45 +03:00
4704c522e0 moved modloaderTypes to ModPlatform
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-23 10:26:57 +03:00
f7951f6082 Merge pull request #1548 from Trial97/version_label
Reset status label when deleting instance
2023-08-22 15:14:02 +01:00
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
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
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
0e96111116 Merge pull request #1556 from Trial97/metacache
Gracefully handle invalid cache metadata
2023-08-22 14:09:44 +01:00
09aca7a0b5 Added warning to settings page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-22 10:52:35 +03:00
b1783d8fb1 Merge pull request #1557 from Trial97/curse_crash 2023-08-21 23:04:45 +02:00
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
7acfe36a62 fixed httpmetacache load
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 21:30:44 +03:00
45dad27a6d fixed check
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 17:46:50 +03:00
fff378b643 Merge pull request #1553 from TheKodeToad/list-fixes
A few boring list-related fixes
2023-08-21 15:33:16 +01:00
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
1eb75b6852 fixed build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 15:34:45 +03:00
492bf373c6 updated memory allocation on quick setup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 15:00:11 +03:00
02264f67f3 Fixed codeql
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-21 14:15:51 +03:00
fcb436f1f4 Merge pull request #1551 from dannydorazio/develop 2023-08-21 08:29:25 +02:00
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: 8092c321a943ab64faab2c15ee5c44b83b56289d
I, Danny Dorazio <danny@dorazio.me>, hereby add my Signed-off-by to this commit: 3638fc0a7db049e83e7e4ffab0d2100b9e2e7c58
I, Danny Dorazio <danny@dorazio.me>, hereby add my Signed-off-by to this commit: c50c3eaa94409fe418d87c7cbeaafcc5d135ee46

Signed-off-by: Danny Dorazio <danny@dorazio.me>
2023-08-21 01:24:23 -04:00
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: 8092c321a943ab64faab2c15ee5c44b83b56289d
I, Danny Dorazio <hello@dorazio.me>, hereby add my Signed-off-by to this commit: 3638fc0a7db049e83e7e4ffab0d2100b9e2e7c58

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

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

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-20 13:23:08 +02:00
232bb568da Merge pull request #1544 from PrismLauncher/update_flake_lock_action 2023-08-20 12:01:37 +02:00
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
ebbc8838a8 Merge pull request #1541 from Trial97/neoforge_search
feat:neoforge can download forge mods
2023-08-19 23:10:56 +01:00
d25e89a4c1 refactor packwiz file write
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-20 00:48:46 +03:00
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
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
0138cd65cb feat:neoforge can download forge mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-19 09:00:59 +03:00
ab6301d5a1 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-08-19 00:38:40 +03:00
3098aecf97 Merge pull request #1498 from Scrumplex/neoforge 2023-08-18 22:56:55 +02:00
05094b7382 more fixes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 22:24:30 +03:00
58efd3e9e2 fixed code scaning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 21:43:57 +03:00
4c52b18bdd replaced removeFirst with mid
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 20:19:51 +03:00
44ff247f5f feat:refactored modpack ux
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 20:03:02 +03:00
fecc1e087a Add Trial97 to contribuitors list
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-18 13:35:50 +03:00
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
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
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
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
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
be2888d6fb chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-17 22:23:50 +02:00
7ab391904a Flame support for neoforge
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-17 22:23:34 +02:00
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
ffd8ed550f Reformat
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-17 18:53:32 +01:00
c5bac475e8 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-08-17 17:29:57 +03:00
e88418ab7f Merge pull request #1392 from Scrumplex/feat-native-override 2023-08-17 16:09:16 +02:00
bc0934a19c Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curseforge-url-handle 2023-08-17 15:25:32 +03:00
044ce4df32 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into update_file 2023-08-17 15:24:14 +03:00
758999fa64 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into welcome_background 2023-08-17 15:23:22 +03:00
4a1d85f999 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-08-17 14:23:37 +03:00
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
85f36ebed7 Merge pull request #981 from Ryex/curseforge-url-handle 2023-08-17 09:24:35 +02:00
f8ffb14619 Merge branch 'curseforge-url-handle' of github.com:Trial97/PrismLauncher into curseforge-url-handle 2023-08-17 00:25:38 +03:00
5e2d1ffdfb removed line
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-17 00:23:53 +03:00
3e2733d840 Merge branch 'develop' into better-launch
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-16 22:23:38 +01:00
bad44ea264 feat:added flame install mod metadata
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-17 00:14:49 +03:00
f0da16a758 removed line
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-17 00:13:12 +03:00
b0e197de38 removed warning for one mod selected
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-16 21:26:43 +03:00
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
c88088c91a Merge pull request #1524 from PrismLauncher/renovate/korthout-backport-action-1.x 2023-08-16 19:28:41 +02:00
f919d363b7 made safe for vegetarians
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-16 20:02:32 +03:00
589d8b6923 feat:Added remove metadata button
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-16 19:53:39 +03:00
a5e7aedb4f Merge pull request #1523 from Trial97/atlauncher
Fix crash when installing some ATLauncher packs
2023-08-16 07:18:34 +02:00
07f25d6cca chore(deps): update korthout/backport-action action to v1.4.0 2023-08-15 14:19:42 +00:00
c22eec8f27 fixed crash on atlauncher pack install
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 17:03:51 +03:00
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
8cff7c4de6 Merge branch 'develop' into rename-groups
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-15 11:03:19 +01:00
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
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
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
62c14cea2a fix: allow NeoForge in resource APIs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 11:06:14 +02:00
01c3750835 feat: support NeoForge mrpack modpacks
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 11:06:14 +02:00
52e5ee7111 feat: add NeoForge to UIs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 11:06:14 +02:00
3a0aa353cc feat: add NeoForge to ModLoaderType
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 11:06:13 +02:00
8f5bb982cd Merge pull request #1513 from lumiscosity/fix/skin_transparency_bug 2023-08-15 10:54:07 +02:00
a360ddbe0b Merge pull request #1508 from comp500/fix/allow-empty-lines 2023-08-15 10:53:43 +02:00
06aba530d7 fix: add missing header
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:52:40 +02:00
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
b927e58126 fix: improve debug message
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:52:08 +02:00
f1c3da6583 fix: fix typo
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:52:08 +02:00
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
83aa0062c7 feat: add custom native library path settings
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:51:21 +02:00
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
7ba1e7d356 Merge pull request #1407 from TheKodeToad/icon-indexing 2023-08-15 10:43:29 +02:00
f533173b95 Merge pull request #1516 from Trial97/abort_connect 2023-08-15 10:40:12 +02:00
14d5fd7edb Merge pull request #1520 from PrismLauncher/update_flake_lock_action 2023-08-15 10:39:08 +02:00
740ca54c87 Merge pull request #1462 from getchoo/labels 2023-08-15 10:38:28 +02:00
6ce7e426d2 chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 10:38:04 +02:00
0c753619a4 Merge pull request #1467 from Scrumplex/update-nix-docs 2023-08-15 10:36:38 +02:00
4b06255cc2 Merge pull request #1486 from PrismLauncher/staging 2023-08-15 10:36:09 +02:00
1939e3e6ed chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-15 09:02:15 +02:00
9546c77113 Some warnings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-15 00:52:34 +03:00
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
215d7dbb74 chore: update license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-14 18:17:05 +02:00
91ba4cf75e chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-14 18:16:53 +02:00
779f70057b Merge commit 'ce2ca1381519a2e261d7f76dffa874d559d979c2' into staging 2023-08-14 18:16:13 +02:00
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
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
6d070e8607 "Format"
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-12 21:50:02 +01:00
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
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
71890707c0 format and apply the sugestion
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-12 13:08:39 +03:00
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
3aba7f8fec Merge pull request #1518 from Scrumplex/asan-develop 2023-08-12 11:38:01 +02:00
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
c9d628bf18 revert asan on debug on by default
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-12 11:29:08 +02:00
35358f8180 Merge remote-tracking branch 'upstream/staging' into chore/add-compiler-warnings 2023-08-12 11:17:11 +02:00
019e5ca3e8 fix: use ApiDownload for CF URL handling
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-12 11:11:58 +02:00
6423edaa76 Merge remote-tracking branch 'upstream/staging' into curseforge-url-handle 2023-08-12 10:58:27 +02:00
44153a28e3 Merge pull request #1517 from Trial97/revert_asan 2023-08-12 10:57:29 +02:00
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
92dbe1684e revert asan on debug on by default
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-12 10:55:53 +02:00
7879091cea Merge pull request #1512 from Trial97/curseforge_import
Fix importing Quilt/Fabric packs from CurseForge
2023-08-11 10:16:17 -04:00
73adac2501 fix: use QColorConstants in Qt 5.14+
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-11 15:57:12 +02:00
d801151d5c connect the abort signal in concurent task
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-11 15:41:41 +03:00
ea43d0f687 fix: fix more warnings
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-11 10:57:57 +02:00
396f812496 Merge pull request #1230 from TheKodeToad/better-component-installation
Revamp loader installation UI
2023-08-11 08:24:14 +02:00
f6d8c9659c Rework
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-11 00:39:05 +01:00
e2d77f21ba More system properties because yes!! 🎉
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-11 00:02:48 +01:00
ef6f9487f4 Merge remote-tracking branch 'upstream/staging' into chore/add-compiler-warnings 2023-08-10 20:38:32 +02:00
8140374e26 chore: add licensing info to loader logos
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-10 20:18:28 +02:00
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
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
2090f958c8 Merge pull request #1324 from leia-uwu/ui-tweaks 2023-08-10 12:24:41 +02:00
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
b3da35be74 Fixed curseforge import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-10 12:19:38 +03:00
1c3449e5a2 Remove unnecessary #if
Signed-off-by: comp500 <comp500@users.noreply.github.com>
2023-08-09 23:04:44 +01:00
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
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
d9cd6f9c50 chore(deps): update hendrikmuhs/ccache-action action to v1.2.10 2023-08-08 18:20:26 +00:00
e079cbb055 Fix actions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-07 13:51:26 +01:00
7004388105 Merge pull request #1227 from Ryex/packaging/appimage-updates 2023-08-07 13:18:06 +02:00
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
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
74fe2fb2a6 Merge remote-tracking branch 'upstream/staging' into curseforge-url-handle 2023-08-06 21:54:00 +02:00
eeb5fdbc9f feat(nix): add darwin support
Signed-off-by: seth <getchoo@tuta.io>
2023-08-06 15:52:32 -04:00
a83e5be8f2 fix: makeShared for QByteArray
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-06 21:51:03 +02:00
75c7df46a7 Merge pull request #1493 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-08-06 15:41:48 -04:00
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
99fd1e622c chore: replace fabricmc icons with SVG
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-06 17:46:33 +02:00
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
5b8c997180 Merge pull request #1456 from Trial97/icons 2023-08-05 22:50:52 +02:00
7c547f6452 Merge pull request #1370 from Trial97/pack_changelog 2023-08-05 22:50:38 +02:00
f7e8ec1855 format files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 21:17:38 +03:00
72de2d5254 Added missing header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-08-05 21:08:16 +03:00
f25d0a4e0e Merge branch 'develop' into env-vars
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-05 18:01:53 +01:00
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
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
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
91eb30f037 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into pack_changelog 2023-08-05 19:04:53 +03:00
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
e7c2274893 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into update_file 2023-08-05 19:02:11 +03:00
377fc0352a Merge branch 'staging' of https://github.com/PrismLauncher/PrismLauncher into icons 2023-08-05 19:00:12 +03:00
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
304e294ea7 Merge pull request #1102 from Ryex/refactor/net-split-headers-to-proxy-class 2023-08-04 20:31:43 +02:00
ae793f6cf1 Merge pull request #1459 from Scrumplex/format 2023-08-04 19:42:36 +02:00
1d638e018a chore: update license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-04 19:41:47 +02:00
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
c5bffed21e Merge branch 'PrismLauncher:develop' into skinfix 2023-08-04 16:29:30 +01:00
d48dd7eb6a Use override-based setting for online fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-04 16:00:02 +01:00
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
1bafa36c17 icon -> iconName
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 20:33:01 +01:00
afaf6f894c Merge branch 'PrismLauncher:develop' into better-component-installation 2023-08-02 20:27:37 +01:00
8b3c465a50 Use protected inheritance for BasePageProvider
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 20:24:15 +01:00
40c614b3a5 Pressed -> Clicked (doh)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 20:23:30 +01:00
ac36a2289f Merge pull request #1452 from getchoo/sparkle-disable 2023-08-02 19:28:01 +02:00
fa2b784f7e Merge branch 'develop' into sparkle-disable
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 19:27:48 +02:00
01e17806f6 Merge pull request #1391 from Trial97/prism_export2 2023-08-02 19:27:14 +02:00
f561e7febf Merge pull request #1476 from Scrumplex/fix-saving-metaurl 2023-08-02 19:24:24 +02:00
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
1d468ac35a chore: reformat
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:35 +02:00
ce2ca13815 fix: add missing headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:08 +02:00
f256b836f4 Make more options generic
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 18:35:08 +02:00
71fb38c91f Fix alignment properties
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-08-02 18:35:08 +02:00
076c189948 fix: format all languages using clang-format
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:08 +02:00
9f66f6495a fix: fix undisciplined multiple inheritance
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
c07a857359 fix: remove irregular enum initialization
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
76df836378 fix: simplify switch statement
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
a545f67a21 fix: take JavaCheckResult by const reference
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
9d5818916a fix(nix): enable clang-format
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-08-02 18:35:07 +02:00
ea56ff255d Merge pull request #1339 from TheKodeToad/remove-direct-launch 2023-08-02 18:31:27 +02:00
01d3eea379 Merge pull request #1359 from Trial97/import 2023-08-02 18:25:51 +02:00
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
39d7bc6c24 Merge pull request #1294 from ashuntu/develop 2023-08-02 18:24:54 +02:00
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: 10678096e57eb5b344f0dd39ad178403640b722a
I, ashuntu <101582426+ashuntu@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 51d7a6289e1cf2df463ae8d7c0b08b4a61faea3c
I, ashuntu <101582426+ashuntu@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 1467072f3dcd6ea5d2e3375ad5d69f3ee6d58af2

Signed-off-by: ashuntu <101582426+ashuntu@users.noreply.github.com>
2023-08-02 10:04:53 -05:00
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
bb039d4bc7 Merge pull request #1445 from Trial97/curse
feat: removed flame quilt warning
2023-08-02 12:55:49 +01:00
92b2f463e3 Merge pull request #1474 from apix0n/develop 2023-08-02 12:08:34 +02:00
16e6a01881 fix: fix copyright year
Signed-off-by: Apix <apix0n@outlook.com>
2023-08-02 11:35:54 +02:00
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: b4ae6e9774c535bf02b06325e6763d2d7ee02f21

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-08-01 20:27:39 -07:00
e64e4d7ef7 Fix: always false comparison
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-08-01 18:57:35 -07:00
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
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
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
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
d8f2a1354f chore: update Nix docs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-31 19:16:32 +02:00
b572f75dba Merge branch 'PrismLauncher:develop' into icon-indexing 2023-07-31 14:40:27 +01:00
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
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
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
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
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
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
6d564628b7 fix(FileLink): drop FreeConsole
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-30 15:11:00 -07:00
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
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
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
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
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
945939ba68 chore(actions): add new labels to update-flake
Signed-off-by: seth <getchoo@tuta.io>
2023-07-30 04:46:44 -04:00
9137721e8e Merge pull request #1461 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-07-30 04:45:10 -04:00
566425166b Merge pull request #1449 from Trial97/tehnic
Reintroduce parsing of INI files
2023-07-30 09:47:40 +02:00
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
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
c3eb17db74 removed unneded if condition
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 13:22:04 +03:00
4789708cc2 added missing )
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 13:16:57 +03:00
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
fcac98b367 removed comment
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 10:05:22 +03:00
97ff7afbe7 keep the icon suffix
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 08:37:45 +03:00
7e58b965b7 refactor icon list
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 01:20:05 +03:00
1ca7e5efe9 added license header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 01:20:05 +03:00
d460986de0 format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-28 01:20:05 +03:00
bdec11c501 Merge pull request #1437 from LostLuma/instance-export-ignore-caches-2 2023-07-27 09:40:31 +02:00
b1aa9e5846 refactor: introduce internal Launcher_ENABLE_UPDATER variable
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-27 09:37:56 +02:00
51bfda937d chore: don't include sparkle when not enabled
Signed-off-by: seth <getchoo@tuta.io>
2023-07-27 02:19:21 -04:00
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
a8498b0dab chore: make INSTALL_BUNDLE a cached variable
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 19:03:14 -04:00
48e5040196 feat: disable sparkle when update url is empty
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 19:01:39 -04:00
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
62aa7a52c4 fiexed conflicts
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-27 00:07:38 +03:00
3c472fd7e0 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into prism_export2 2023-07-27 00:05:59 +03:00
b15f689ccf Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions 2023-07-27 00:03:42 +03:00
d960effb99 Merge pull request #1447 from getchoo/typomoment
fix: typo in task.h
2023-07-26 22:56:31 +02:00
1e82cb6a7c fix: add support for QByteArray inifile
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-26 23:56:01 +03:00
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
af59c41713 fix: typo in task.h
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 16:20:30 -04:00
f7ffbcca6c chore(docs): correct markdownlint warnings
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 14:49:09 -04:00
342a0d0091 fix(nix): disable x86_64-darwin
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 14:49:09 -04:00
1974bb7e59 chore(ci): cleanup garnix.yaml
Signed-off-by: seth <getchoo@tuta.io>
2023-07-26 14:49:05 -04:00
e6b4fc9182 removed quilt warning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-26 21:36:40 +03:00
c778dcbc9c Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-07-26 21:33:15 +03:00
a0944dab7a Merge pull request #1438 from Scrumplex/update-docs 2023-07-26 20:30:04 +02:00
719d87de3b Update MainWindow.ui
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-26 17:21:12 +01:00
816acc9c76 Open catpak folder action
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-26 17:19:39 +01:00
a9fefb2eeb Address review comments
Signed-off-by: LostLuma <lilly@lostluma.net>
2023-07-26 15:22:22 +02:00
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
bcadffa0e3 Merge pull request #1434 from getchoo/garnix 2023-07-26 14:47:14 +02:00
ce2d2c9f32 Merge pull request #1427 from tjw123hh/develop
Add some missing strings to translations
2023-07-26 13:41:54 +01:00
6f652e1d2f chore: update information for downstreams
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-26 14:38:34 +02:00
361583edfc Ignore cache files when exporting instances
Signed-off-by: LostLuma <lilly@lostluma.net>
2023-07-26 04:23:01 +02:00
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
3c35d647b8 feat(ci): init garnix.yaml
Signed-off-by: seth <getchoo@tuta.io>
2023-07-25 19:18:30 -04:00
b4159d30fc Revert permission change
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-25 15:17:20 +01:00
f843d0732b Merge branch 'develop' of https://github.com/tjw123hh/PrismLauncher into develop 2023-07-25 17:36:38 +08:00
280f041acb Delete some incorrect notr="true" tags
Signed-off-by: tjw123hh <tjw123hh@outlook.com>
2023-07-25 17:35:31 +08:00
4f00012268 Merge pull request #1426 from TheKodeToad/token-censor-fix 2023-07-24 20:41:23 +02:00
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
a32ca43288 DCO Remediation Commit for tjw123hh <tjw123hh@outlook.com>
I, tjw123hh <tjw123hh@outlook.com>, hereby add my Signed-off-by to this commit: 6a01c277e8f98797e3325a2b249e59ee95f43c7e

Signed-off-by: tjw123hh <tjw123hh@outlook.com>
2023-07-24 20:48:27 +08:00
f505d43fc0 Fix token "0" being replaced
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-24 13:43:26 +01:00
6a01c277e8 Delete some incorrect tags 2023-07-24 20:41:22 +08:00
684c2ec47a Merge pull request #1420 from PrismLauncher/update_flake_lock_action 2023-07-23 11:45:31 +02:00
273d75fd51 Merge pull request #1419 from pandaninjas/update-libnbtplusplus
Update libnbtplusplus submodule
2023-07-22 20:41:27 -04:00
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
2253100ac6 Update libnbtplusplus submodule
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-22 14:26:49 -04:00
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
57430fd189 Merge branch 'develop' into better-launch
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-22 11:26:02 +01:00
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
516ddb22ae More catpack changes :3
This is just embarrasing

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-22 11:05:58 +01:00
0b74b3833a Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import 2023-07-21 19:30:06 +03:00
ef21879df4 replaced require with ensure for jvmArgs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-21 19:30:00 +03:00
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
bfafbdc51e Merge branch 'develop' into env-vars
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-21 14:30:24 +01:00
1a7c5693cc Remove redundant methods
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-21 13:01:01 +01:00
f8b935ab37 Merge remote-tracking branch 'upstream/develop' into icon-indexing 2023-07-21 12:48:05 +01:00
8705e88e91 Fix build on Windows
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-21 11:19:55 +01:00
0be4db30eb Merge branch 'PrismLauncher:develop' into better-component-installation 2023-07-21 11:02:57 +01:00
821dd8400b Merge pull request #1253 from Trial97/catpacks 2023-07-21 11:11:12 +02:00
c37e1fb9f1 Merge branch 'develop' into skinfix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-20 18:11:27 +01:00
5088d33fd2 Finish things :P
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-20 14:17:01 +01:00
39f7bea53e Revert accidental change in MainWindow
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-20 14:13:29 +01:00
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
f8d9cd9a03 use range for
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-19 23:08:16 +03:00
960093700a Better theme reset
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 20:57:08 +01:00
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
c633c6d083 Colors->Widgets
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 14:19:28 +01:00
96ebdfc9a8 Sorting and invalid reset
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 14:12:39 +01:00
f55120654a Merge branch 'PrismLauncher:develop' into icon-indexing 2023-07-19 12:51:26 +01:00
44ca7c7d22 Licenses
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-19 12:29:51 +01:00
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
b7bccb9058 removed subdirectory flag
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-19 12:27:02 +03:00
f046bd7d50 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-07-19 12:26:12 +03:00
593f452986 Merge pull request #1399 from Scrumplex/offline-uuid
fix: generate predictable UUIDs for offline accounts
2023-07-19 10:16:27 +01:00
97662f5c8e Multiple icon themes!
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-18 22:51:34 +01:00
f8d88cc83d Merge pull request #1372 from PrismLauncher/update_flake_lock_action
chore(nix): update lockfile
2023-07-18 21:19:58 +00:00
f393aa684e wait to load metadata
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-18 23:59:43 +03:00
4c319c8f4f Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into flame_import 2023-07-18 23:49:52 +03:00
477b72ad33 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into prism_export2 2023-07-18 23:48:02 +03:00
3728cbb62a Merge pull request #1397 from Gaming32/develop 2023-07-18 22:47:55 +02:00
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
02082cda09 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into update_file 2023-07-18 23:40:11 +03:00
5eec0f5901 feat:managed packs can update from file
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-18 23:40:03 +03:00
3fbc25155b Merge pull request #1362 from Trial97/fix_warning 2023-07-18 22:28:27 +02:00
ecac05b2fc Merge pull request #1378 from Trial97/prism_export
Added progress bar to Prism instance export
2023-07-18 22:26:56 +02:00
5b54475d3e Merge pull request #1385 from orowith2os/flatpak-updates
Update Flatpak manifest
2023-07-18 20:12:39 +00:00
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
f8fcb98c68 fix: generate predictable UUIDs for offline accounts
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-18 10:07:35 +02:00
2eff1de560 Update Flatpak manifest
Signed-off-by: Dallas Strouse <dastrouses@gmail.com>
2023-07-17 22:38:12 -05:00
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
01afa8957f Merge pull request #1387 from Scrumplex/fix-quilt-beacon
Check if any modloader is installed
2023-07-17 17:40:42 +01:00
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
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
fe73d696cb replace emplace with insert
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 17:24:29 +03:00
2ea4a78541 Upgraded ExportToZipTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 17:24:23 +03:00
f5891940e0 translate strings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 17:22:35 +03:00
cd9310afed replace emplace with insert
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 16:57:52 +03:00
64041a84a2 handle file removal in ExportToZipTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 16:55:26 +03:00
78ee63af38 simplify modrinth export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-17 16:40:01 +03:00
455c495338 simplify flame export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>

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

use shared pointer
2023-07-16 21:14:39 +03:00
cadb7142f0 Added progress bar to Prism instance export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 20:57:57 +03:00
251055302e format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 20:53:58 +03:00
b54d1651ab Merge pull request #1373 from Scrumplex/backport-bot 2023-07-16 19:42:09 +02:00
9d0175b81a Added welcome screen
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 17:46:00 +03:00
002430db46 added path to flatpack
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 15:43:47 +03:00
de30a72c4e made the date a object
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 15:16:16 +03:00
0a956bbc73 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-07-16 14:18:26 +03:00
1e9a596908 simplified code in cat packs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 14:18:17 +03:00
b9568279dc Merge pull request #1010 from TayouVR/add_default_editorconfig 2023-07-16 12:30:22 +02:00
fcdd9ea986 Merge pull request #1246 from Trial97/export 2023-07-16 12:24:42 +02:00
c145bfa524 Merge pull request #1369 from Trial97/autoselect 2023-07-16 12:21:17 +02:00
18ebc858fd feat(actions): add backport action
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-16 11:47:54 +02:00
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
a3ffa64550 Upgraded pack changelog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-16 01:59:08 +03:00
a6305ac891 Merge pull request #1368 from Trial97/crash_curse_import 2023-07-15 23:13:00 +02:00
06fc8358d9 auto focus search line on resource download
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 23:57:32 +03:00
c346d875a2 make FileResolvingTask accept empty modlist
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 23:26:52 +03:00
a2a09ffe01 chore: better explain quilt loader beacon
Signed-off-by: seth <getchoo@tuta.io>
2023-07-15 14:25:05 -04:00
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
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
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
7befd63cce fixed settings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-15 00:28:58 +03:00
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
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
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
1ccfba13eb renames
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:41:51 +03:00
b9ed8283b7 Added buttons
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:41:45 +03:00
1495bfb73e Made custom template enabled all time
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:41:37 +03:00
9b02c31f8d escaped text for html export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:35:18 +03:00
50dae9d4f3 Moved to separate functions
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:34:28 +03:00
9a3931dac6 Added json and csv format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:34:21 +03:00
515197fba2 fix: html sintax for modlist export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:34:03 +03:00
149b6d59cf fixed tests
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 23:22:11 +03:00
37fb52aada Merge pull request #1351 from Trial97/ftb_import
fixed substatus on ftb_import
2023-07-14 12:41:21 -07:00
db9f5f44e0 Split in two the options
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 22:26:22 +03:00
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
cebb4dd17a made the number of concurrent tasks configurable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 20:39:53 +03:00
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
440afcedb0 fixed warning
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 13:32:18 +03:00
b0a21c9389 insert header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 13:31:28 +03:00
fc4a1ef193 format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 13:31:13 +03:00
c8533c0b0d fixed substatus on ftb_import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 12:29:03 +03:00
b0a018d823 format
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-14 12:28:23 +03:00
3becd4386b Merge pull request #1306 from Ryex/ci/address-sanitiser_on_debug_builds 2023-07-14 10:11:34 +02:00
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
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
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
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
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
bd6e8533ad send by reference
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-13 19:58:08 +03:00
843c2d67eb Added FTBAPP Import
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-13 18:41:29 +03:00
89aaedc06c feat: add toggle for quilt beacon
Signed-off-by: seth <getchoo@tuta.io>
2023-07-12 21:10:48 -04:00
94d4d12ee0 Merge pull request #1345 from Trial97/time2
feat:Added option to use system locale
2023-07-13 01:56:12 +02:00
997a3709d4 Custom environment variables UI and implementation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-12 19:21:38 +01:00
76cc8ce043 renamed setting
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-12 21:05:13 +03:00
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
25f7cf23d3 the other place
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-12 19:55:11 +03:00
9ee68b9268 small pointer check
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-12 18:12:31 +03:00
1208300ddf i forgor to change skin upload browse button
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-07-12 10:57:40 -03:00
06a7d447f6 Merge pull request #1333 from Ryex/fix/null_instance_edit_crash 2023-07-12 15:53:46 +02:00
766e833a73 fixed crash if no version is loaded
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-12 16:25:05 +03:00
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
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
9957aeb003 Merge branch 'develop' into curseforge-url-handle 2023-07-11 21:42:29 -07:00
634612ae81 added missing header
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-11 18:20:44 +03:00
f0d2aab784 feat:Added option to use system locale
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-11 18:05:43 +03:00
4c69290381 Merge branch 'develop' into better-component-installation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-11 11:14:06 +01:00
640aaa8c23 Merge pull request #1331 from TheKodeToad/hungry-trash
Fix updating trashing resources
2023-07-10 16:31:43 -04:00
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
99ba02afb6 Shortcuts on macOS (#1081)
Co-authored-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-10 20:26:25 +02:00
9aedb5afff Merge pull request #1334 from TheKodeToad/litemod-dl
LiteMod downloading
2023-07-10 16:42:38 +01:00
e21756ea8c Remove direct launch
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-10 16:22:37 +01:00
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
91c9082d19 Merge pull request #1249 from Trial97/curse
Curseforge modpack export
2023-07-10 14:20:29 +01:00
4f4ccdaa59 Merge pull request #1338 from Trial97/unlockVersionPage
feat:unlocked versions page
2023-07-10 13:06:32 +01:00
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
f816e3cd3f Merge pull request #1241 from Trial97/settings
Allow editing of running instances
2023-07-09 22:10:43 +01:00
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
d43399c2b4 Merge pull request #1321 from TheKodeToad/mr-optional
Optional mods in mrpack export
2023-07-09 14:03:47 -07:00
308877aa8f removed redundant code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-09 23:18:38 +03:00
159f14c076 feat:unlocked versions page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-09 22:47:38 +03:00
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
d7f4e40f85 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-07-09 19:38:17 +03:00
6e2fcc9e11 Replace string manipulation in favour of QFileInfo
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-09 12:08:15 +01:00
0d31e31282 fix(actions): give update-flake content write perms
Signed-off-by: seth <getchoo@tuta.io>
2023-07-09 01:56:21 -04:00
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
d53d58a5d4 LiteMod downloading
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-08 22:16:43 +01:00
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
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
08c140b9b4 Fix actionVisitItemPage insersion, and prevent widebar segfault
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-08 20:55:30 +01:00
0c6362f28d Make trash hungry
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-08 18:51:28 +01:00
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
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
7f138e3538 Merge branch 'develop' into ci/address-sanitiser_on_debug_builds 2023-07-08 01:27:30 -07:00
3211b265d7 Merge pull request #1302 from Ryex/fix/progress-dialog-segfault
fix: segfault in progress dialog
2023-07-07 21:25:14 -07:00
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
1131038fdb Merge pull request #1120 from Trial97/visit_mod_page 2023-07-07 22:23:59 +02:00
d1528c1044 Merge pull request #1325 from Scrumplex/validate-meta-url
Validate Meta URL
2023-07-07 14:31:22 -04:00
51d7a6289e Fix URL open crash (#596) 2023-07-07 13:24:31 -05:00
10678096e5 Persist app data between install versions 2023-07-07 13:20:15 -05:00
51e62761ee fix: improve QUrl construction
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-07 19:25:12 +02:00
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
b8482a5d89 Update ModFolderPage.cpp
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-07 15:53:50 +01:00
3139af8487 Made action text simpler
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-07 17:12:10 +03:00
6fcdac0d36 fix: reset invalid meta url on launch
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-07 15:57:25 +02:00
073cb91f88 fix(ui): validate meta override url
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-07-07 15:56:07 +02:00
3154c2644a enable tear off on widebar context menu
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-07-07 10:30:18 -03:00
e225a72180 Merge pull request #1128 from pandaninjas/fix-implicit-fallthrough 2023-07-07 15:19:00 +02:00
ec85266860 Memory leak fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-07 12:18:04 +01:00
4c25e3ce75 Add keyboard shortcut to Kill action
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-06 21:04:21 +01:00
8ae67b84db Optional mods in mrpack export
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-06 20:04:26 +01:00
440dcdf022 Import QActionGroup properly :P
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-06 18:31:59 +01:00
22327bbe71 Combine launch buttons in Instance window, persist profiler
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-06 18:07:45 +01:00
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
93870c315f better url handling
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-06 18:46:59 +03:00
13d67c6524 Keep formatting consistent
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-06 08:51:42 -04:00
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
f9578066d6 make "browse" buttons and java pages more consistent
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-07-06 01:39:59 -03:00
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
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
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
2cb22ad280 Merge pull request #1310 from getchoo/autoupdate-flake
feat(actions): add update-flake-lock
2023-07-05 23:25:12 +00:00
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
5ba13297c6 Merge pull request #1284 from Ryex/fix/properly-track-failed-copies-and-clones 2023-07-05 19:26:07 +02:00
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
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
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
24b9ed106f feat(actions): add update-flake-lock
Signed-off-by: seth <getchoo@tuta.io>
2023-07-04 18:49:22 -04:00
7c8a010378 Merge pull request #1304 from Scrumplex/chore-flake-update-1
flake.lock: Update
2023-07-04 22:43:00 +00:00
817ecf8225 Fix VersionProxyModel.cpp
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-04 17:19:08 -04:00
4509fde410 Merge branch 'develop' into fix-implicit-fallthrough
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-04 16:41:34 -04:00
34cf28712c Replace break with return true;
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-07-04 16:39:24 -04:00
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
908ac813e0 escaped modlist inner html
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-04 15:16:54 +03:00
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
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
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
50eff80ca1 build: optimize address-sanitizer
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-03 18:07:59 -07:00
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
64c591b234 Better parent version filtering; handle old fabric :P
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-03 20:48:37 +01:00
0e5c377680 Various tweaks
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-03 17:39:09 +01:00
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
dedc9e4edc Merge pull request #1127 from Trial97/scale_cat 2023-07-03 15:46:56 +02:00
fa7cfc77d8 fixed template
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-03 16:08:20 +03:00
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
f0aab541f8 fixed typo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-03 15:09:35 +03:00
026293f773 updated option text
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-03 14:17:39 +03:00
5d5f1b86fd fixed logic regarding range over multiple years
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-03 09:21:25 +03:00
ba159ba971 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-07-03 09:01:22 +03:00
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
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
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
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
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
b47993b736 Merge pull request #3 from Trial97/netRefactor3
Fail NetRequest on connection close from QT
2023-07-02 19:32:47 -07:00
ca061080c1 Merge pull request #2 from Trial97/feat/acknowledge_release_type
Feat/acknowledge release type
2023-07-02 19:32:25 -07:00
f1bd9700f7 Fail NetRequest on connection close from QT
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-02 22:49:58 +03:00
5f63c781b4 resolved local vaiables names
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-02 18:50:29 +03:00
43e6f05ed5 Merge pull request #1232 from telans/screenshots-update
ScreenshotsPage fixes
2023-07-02 16:44:54 +01:00
aad5ca5474 fixed typos
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-02 16:45:15 +03:00
cf2393a509 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into settings 2023-07-02 15:56:39 +03:00
81c0a1c4bd antialiasing for all painting, make hitbox fullwidth
Signed-off-by: Tayou <tayou@gmx.net>
2023-07-02 14:01:56 +02:00
6fc745e98c Merge branch 'catpacks' of github.com:Trial97/PrismLauncher into catpacks 2023-07-02 13:34:41 +03:00
7579fff532 Added more options for variants planing
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-07-02 13:34:04 +03:00
7ac2a23bc8 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-07-02 13:14:19 +03:00
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
b51f1f1d41 Merge pull request #1298 from TurboWafflz/develop 2023-07-02 09:52:59 +02:00
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
3fe518ff2b Fix compiling on OpenBSD
Signed-off-by: Finian Wright <turbowafflz@gmail.com>
2023-07-02 00:36:21 -04:00
98d6904e4a chore: fix propagate mispelling
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-07-01 17:03:12 -07:00
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
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
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
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
6cc3587da2 Disable as intended
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 20:10:38 +01:00
9f9b5254a2 Double-click to install/change version
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 19:39:04 +01:00
284e374ae8 Nop
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 19:39:04 +01:00
4cdf669154 Modify "Change Version" to use "Install Loader" dialog
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 19:39:04 +01:00
4332b62a62 Fix search focusing
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 19:39:04 +01:00
7138425c85 Merge branch 'develop' into better-component-installation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-07-01 13:05:55 +01:00
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
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
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
c523765c19 Merge pull request #1292 from Trial97/export5
Removed logs from instance export
2023-07-01 04:14:35 +00:00
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
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
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
18e628e873 removed extra condition
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-30 12:10:00 +03:00
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
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
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
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
b6e9a54951 Add snap github action
Signed-off-by: ashuntu <101582426+ashuntu@users.noreply.github.com>
2023-06-29 21:15:07 -05:00
6c374f5f08 Add snapcraft.yaml
Signed-off-by: ashuntu <101582426+ashuntu@users.noreply.github.com>
2023-06-29 21:09:31 -05:00
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
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
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
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
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
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
87efa700ab Removed logs from instance export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-30 00:01:36 +03:00
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
25ffc4c4b0 Refactor ImgurUpload
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-29 17:58:09 +03:00
8211befc29 removed magic 5, removed unnecessary QPainter function calls
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 23:24:57 +02:00
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
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
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
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
f287d9deac fix add NetRequest source
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-28 11:09:59 -07:00
534d156b12 format VisualGroup.cpp file
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 20:06:17 +02:00
54d88e4dbf use QString.isEmpty()
oops
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 20:05:28 +02:00
95969e87a1 Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/launcher-updater 2023-06-28 11:05:11 -07:00
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
1b5c78b066 Merge branch 'develop' into feat/launcher-updater 2023-06-28 10:54:39 -07:00
1c3402d081 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into refactor/NetActions 2023-06-28 20:23:35 +03:00
6b3b119db0 give ungrouped instances a group header
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 18:50:44 +02:00
66461ac500 some positioning adjustments, deleted the line
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 18:42:49 +02:00
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
7033e28572 update instance group header to more modern style
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-28 18:00:40 +02:00
0008b22d8b Renamed function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-28 18:41:47 +03:00
8f9bd9617f Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into scale_cat 2023-06-28 18:29:04 +03:00
0f64ee6a5f Added warnings for running instances
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-28 18:28:25 +03:00
c23bf2fd22 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into settings 2023-06-28 17:46:01 +03:00
3ad559ab22 Added version type to review message dialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-28 17:43:09 +03:00
5f1074471d Corected variable name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-28 13:35:42 +03:00
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
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
faec21d572 Merge pull request #1266 from TheKodeToad/smol-tweaks 2023-06-28 08:47:53 +02:00
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
213f03351f Merge pull request #1280 from Trial97/shortcut
Fixed illegal characters in shortcuts name
2023-06-27 20:01:48 +00:00
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
90fc720190 Merge pull request #1281 from Trial97/screenshot
Added more information to the screenshot upload warning
2023-06-27 20:01:18 +00:00
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
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
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
92847b9774 omit icon remove on macos
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-27 19:15:20 +03:00
6e5716f097 Fixed illegal characters in shortcuts name
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-27 19:05:32 +03:00
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
45c39d078f More clenup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-27 09:23:24 +03:00
385babb458 Simplify Upload and Download
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-27 08:51:17 +03:00
904b128afe Merge pull request #1277 from Trial97/remove_mojang
Removed unused files
2023-06-26 23:09:27 +01:00
dffffc784e Removed unused files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-26 22:33:10 +03:00
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
63acf0a7b4 fix: set default platform to "unknown"
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 11:55:48 +02:00
fce000206f feat: print build platform in application log
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 11:55:23 +02:00
f5e4171df4 feat: print build platform in log
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 11:54:22 +02:00
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
d25452a64e Merge pull request #1274 from TheKodeToad/java-signature 2023-06-26 11:19:53 +02:00
41d0f74750 Merge pull request #1275 from Scrumplex/git-blame-ignore 2023-06-26 10:56:26 +02:00
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
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
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
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
c0f0462550 fix(updater): logs/ folder
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-26 01:41:51 -07:00
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
f8f1c3cf23 chore: add Git Blame ignore file
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-26 09:08:03 +02:00
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
4d49486cc9 Merge pull request #1065 from leo78913/gamescope-close-button 2023-06-26 08:45:28 +02:00
b7dd32274c Proper capture on windows
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 22:30:20 -07:00
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
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
90da57a806 Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/launcher-updater 2023-06-25 16:13:51 -07:00
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
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
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
5b04a17730 Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/launcher-updater 2023-06-25 14:43:45 -07:00
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: 1ba08f4641f32d39efc509247807eca035be62f5

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 14:42:16 -07:00
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
f39d2de0cc Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/launcher-updater 2023-06-25 14:31:16 -07:00
1ba08f4641 fixup! Merge remote-tracking branch 'upstream/develop' into refactor/net-split-headers-to-proxy-class 2023-06-25 14:25:07 -07:00
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
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
275351e19c Merge branch 'packaging/appimage-updates' into feat/launcher-updater 2023-06-25 13:51:01 -07:00
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: f5729d9a7c953d88ae60e106a787b1d7c35ede8b

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:32 -07:00
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
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
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
516dd6bd1a support windows console
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 13:47:31 -07:00
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
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
3d3acb7a92 Merge branch 'packaging/appimage-updates' into feat/launcher-updater 2023-06-25 13:47:31 -07:00
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
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
5d03919b59 Merge branch 'packaging/file-manifest-in-portable-install' into feat/windows-updater 2023-06-25 13:47:30 -07:00
2357d167b8 Merge branch 'packaging/windows-installer-uninstall-previous' into feat/windows-updater 2023-06-25 13:46:28 -07:00
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
fe9927d10d Merge branch 'refactor/net-split-headers-to-proxy-class' into feat/windows-updater 2023-06-25 12:44:25 -07:00
df4fd7df7f Merge remote-tracking branch 'upstream/develop' into refactor/net-split-headers-to-proxy-class 2023-06-25 12:43:48 -07:00
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
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
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
6db906d623 chore: format
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-25 11:09:26 -07:00
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
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
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
87155e346c Complicated a little task progress
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 19:44:18 +03:00
52dd09bdf7 Merge branch 'curse' of github.com:Trial97/PrismLauncher into curse 2023-06-25 17:51:30 +03:00
d344ffe370 Removed some setProgress calls
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 17:50:56 +03:00
4745ab64cd Deduplicate launcher icon
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 15:02:25 +01:00
288ea3d19b Remove metaurl function
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 14:52:33 +01:00
8ade44c9a3 Simplify
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 14:40:22 +01:00
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
02b628653b Fix markdown header
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 13:43:03 +01:00
3546f57a42 Use internal markdown implementation
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 15:17:09 +03:00
8d3bc6b6b9 Added markdown QT version check
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 14:58:54 +03:00
c75ba0f855 Fix big mistake :iea:
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-25 12:46:07 +01:00
d1603f1945 Made it more similar to mrpack export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 14:43:11 +03:00
84c63f4f01 Added plantxt export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 14:11:41 +03:00
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
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
ef0752972a Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into export 2023-06-25 12:26:54 +03:00
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
40fbae8ff6 Fixed links tooltip
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 11:36:37 +03:00
ce4a86fbcd Made custom url function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 10:41:29 +03:00
54d7477679 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into visit_mod_page 2023-06-25 10:12:29 +03:00
6f7d901a1f removed extra variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 09:17:28 +03:00
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
8a3aba1634 Fix Open Global Settings, why not
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-24 23:30:51 +01:00
bb8e6ef35e Fix flat white launcher icon
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-24 23:27:01 +01:00
529e2054ea A few tweaks, with inspiration from Zeke :3
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-24 23:26:27 +01:00
158b07a39e moved getRequiredBy
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-25 00:24:08 +03:00
932531c8ba fixed authors
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 23:48:18 +03:00
69c21454ec removed projectID
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 22:15:18 +03:00
564e394ec8 feat:Update mods now fills missing dependencies
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 21:48:12 +03:00
f0e4e07c05 Updated url function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 20:43:45 +03:00
df932c6587 Updated authors string in modlist
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 20:22:18 +03:00
81c1a95166 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-24 20:04:56 +03:00
bcf45c74a1 Merge pull request #986 from Trial97/develop
Mod dependencies
2023-06-24 14:04:27 +01:00
8b576fd2bd Added translation
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 15:59:55 +03:00
7fdd68d768 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-06-24 15:58:55 +03:00
f825d7753a Updated copyright headers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 15:11:15 +03:00
19cb6ad588 Updated Modrinth esport messages
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 15:04:18 +03:00
4a84084d9d Added condition for modlist
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 15:02:00 +03:00
25579fbedc Renamed ExportMrPackDialog to ExportPackDialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 14:54:39 +03:00
59e1e51903 Removed unused files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 14:51:12 +03:00
30ef5475c7 Made sure CurseForge string is corect
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 14:50:05 +03:00
9804996db6 Added resource packs to export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 14:37:02 +03:00
b774817ada Merge branch 'curse' of github.com:Trial97/PrismLauncher into curse 2023-06-24 13:24:54 +03:00
8939096db6 Fixed windows build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 13:24:40 +03:00
df6d46de9e Merge pull request #1261 from telans/modrinthexport-url 2023-06-24 10:51:14 +02:00
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
cd1e8dc8cc Removed modlist checkbox
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 11:12:23 +03:00
377707d3db Merge branch 'curse' of github.com:Trial97/PrismLauncher into curse 2023-06-24 11:02:40 +03:00
7ebc8c48a8 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-24 11:02:13 +03:00
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
4322222acc Merge pull request #1255 from Trial97/export4
Added Thumbs.db to excluded files in MrPackExport
2023-06-23 21:40:55 -07:00
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
68865353cf Merge pull request #1259 from PrismLauncher/update-devs
Update developers
2023-06-23 21:38:16 -07:00
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
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
cf94adb363 Added some warnings
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-24 01:05:49 +03:00
d74a23d5b2 Update developers
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-23 21:00:55 +01:00
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
31aaa6d1da Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-23 22:41:06 +03:00
823cd3862d Fixed hash checking
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 22:41:01 +03:00
741c23a72a Merge pull request #1256 from Trial97/fix11
Fixed hashers
2023-06-23 19:53:44 +01:00
28de461067 Fixed hashers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 21:38:41 +03:00
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
222a10891c Fixed merge
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 19:41:55 +03:00
cb2671a02c Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-23 19:35:47 +03:00
0a56631831 Added curseforge search
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 19:35:41 +03:00
046d510134 Merge pull request #1200 from Trial97/net_job_crash
Made ByteSynkArray to use shared_ptr
2023-06-23 09:13:52 -07:00
90df092174 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into curse 2023-06-23 17:29:58 +03:00
85bbab0e92 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into net_job_crash 2023-06-23 14:38:30 +03:00
67db141203 Renamed getResults to resultsReady
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 14:38:23 +03:00
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
f8adb508ab Made catpack id optional in catpack.json
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 11:44:40 +03:00
6613deca0f Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into catpacks 2023-06-23 11:42:28 +03:00
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
718aca3d06 Fixed date constructor
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 09:24:18 +03:00
bf95cfb30e Added CatPacks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-23 01:37:28 +03:00
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
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
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
a4521ac0bb chore: avoid confusion in file/url import dialog
Signed-off-by: seth <getchoo@tuta.io>
2023-06-22 16:15:03 -04:00
c5f16276d7 Merge pull request #1235 from ChrisLane/java-check-debug-msg-fix 2023-06-22 22:03:30 +02:00
03361e51ef chore: add 'suggest a feature' message in help
Signed-off-by: seth <getchoo@tuta.io>
2023-06-22 15:58:53 -04:00
85495c794d changed map tipe
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 21:12:02 +03:00
049b02cee4 finished up the curesforge export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 21:06:01 +03:00
05d2c1f0b0 Dynamic button text
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-22 18:18:33 +01:00
3c9c39cb89 Updated slug for url
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 20:04:23 +03:00
377f27b16f Updated slug for url
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 20:04:06 +03:00
58321f3491 Added curseforge export
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 20:03:44 +03:00
4e07f9574a Use slug for url
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 18:11:25 +03:00
da6f846a49 Use slug for url
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 18:11:03 +03:00
9ad356d66f Added ExportModsToStringTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 17:44:12 +03:00
836e8d2e28 Fixed code quality
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 17:39:57 +03:00
b84dc8551a Fixed trigger function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 16:49:19 +03:00
f7d502c68c Added ExportModsToStringDialog
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 16:08:04 +03:00
9d2516a199 Added ExportModsToStringTask
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-22 16:07:55 +03:00
e7ad373d89 Merge branch 'PrismLauncher:develop' into better-component-installation 2023-06-22 13:22:44 +01:00
dea33a3c1d Make selectedPage const 🤦‍♀️
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-22 13:13:25 +01:00
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
05a8232a8f Merge pull request #1243 from Trial97/export
Added regex expresion to exclude .DS_Store files
2023-06-22 08:09:31 +02:00
0063d52952 Merge branch 'settings2' of github.com:Trial97/PrismLauncher into settings 2023-06-21 23:25:37 +03:00
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
820892d7cc Made settings editable when instance is running
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-21 22:42:08 +03:00
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
480faca559 Removed unused variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-21 21:17:17 +03:00
0975dbc3dd Merge pull request #1228 from Trial97/curent_pack_crash
Fixes #1212
2023-06-21 15:35:09 +01:00
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
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
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
ca659136e2 Merge pull request #1119 from Trial97/mods_txt
Added dynamic page extra info
2023-06-20 19:56:38 -04:00
f1a6dc5332 Merge pull request #1184 from clickdevin/develop
Fix bugs when updating curseforge modpacks
2023-06-20 19:55:48 -04:00
4eaa7dc8b1 Merge pull request #1234 from Szowisz/develop
Fix compiling on FreeBSD
2023-06-20 19:55:03 -04:00
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
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
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
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
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
a32a3e25ad Fix compiling on FreeBSD
Signed-off-by: Jakub Wroński <kubawronski161@gmail.com>
2023-06-20 12:59:47 +02:00
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
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
f769b0b4c6 Remove inconsistent/unneeded question marks in UI
Signed-off-by: P2 <tomarchioalfio5@gmail.com>
2023-06-20 10:40:27 +02:00
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
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
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
a389983d7d Just use the old ordering
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-20 00:28:42 +01:00
82d3755e25 License all the things
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-19 23:36:20 +01:00
6ccc7e77f9 Basic, unfinished & broken impl
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-19 22:42:30 +01:00
b62e4c0cc7 Fixed build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 21:32:19 +03:00
f6f0fbbd9f Fixed removeIf
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 21:23:48 +03:00
c13a90540c Added overide for Quilt/Fabric
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 21:20:35 +03:00
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
8ad9692daa Changed qWarning to qDebug for raw data
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 14:10:29 +03:00
d02858040e Fixes #1212
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 13:09:37 +03:00
3ee0fec729 Removed mods from lambda
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 12:22:22 +03:00
ec063470d7 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into mods_txt 2023-06-19 12:20:50 +03:00
b2ed2bf810 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into net_job_crash 2023-06-19 12:01:35 +03:00
f8a02a5c9b Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into packaging/appimage-updates 2023-06-19 01:41:14 -07:00
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
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
af6bf11793 Merge pull request #1224 from DioEgizio/add-appstream 2023-06-19 09:35:56 +02:00
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
555cb40efd chore: install appstream in appimage
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-06-19 09:17:15 +02:00
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
aee0999daa Merge pull request #1210 from getchoo/opengl-appimage
fix(appimage): bundle generic opengl lib
2023-06-18 22:06:03 -04:00
1bdde1f947 Small fixes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-19 00:36:37 +03:00
319ce8c19f Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-06-19 00:06:44 +03:00
4e66f55d84 Removed extra headers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-18 23:32:17 +03:00
6826f1d605 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into net_job_crash 2023-06-18 23:27:41 +03:00
0161520b33 Fixed leaks
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-18 23:27:26 +03:00
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
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
b123f4f948 chore(deps): update cachix/install-nix-action action to v22 2023-06-16 21:58:32 +00:00
fd9a8d1551 Merge pull request #1110 from TheKodeToad/version-search
Add a search bar to version lists
2023-06-16 14:47:39 -04:00
6bc1150ad0 Merge pull request #1187 from getchoo/rel-8.0
chore: bump to 8.0
2023-06-16 14:46:25 -04:00
45cce1d19a fix(appimage): bundle generic opengl lib
Signed-off-by: seth <getchoo@tuta.io>
2023-06-16 14:34:44 -04:00
412349ac58 Merge pull request #1135 from Trial97/installed_mods 2023-06-16 09:56:51 +02:00
000f4386a2 Merge pull request #1192 from Trial97/pre-lauch 2023-06-16 09:46:24 +02:00
5d3329b1ef Merge pull request #1198 from TheKodeToad/remove-a-space 2023-06-16 09:42:41 +02:00
147366bc0a Made ByteSynkArray to use shared_ptr
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 22:59:41 +03:00
13804f80de Fix trailing space in instance name
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-15 16:37:03 +01:00
1d354df1f8 Fix tests for window
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 16:51:58 +03:00
1b42b9a08e Fixed tests
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 14:25:58 +03:00
535fb2c4d6 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into pre-lauch 2023-06-15 14:13:30 +03:00
98a07da39b Renamed variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 14:12:29 +03:00
8bf5ba2836 Merge pull request #1195 from Scrumplex/fix-javavendor-instance
Add JavaVendor as an instance override
2023-06-15 12:11:32 +01:00
798e1abb58 Merge pull request #1159 from getchoo/fix-devshell 2023-06-15 12:49:58 +02:00
90a4f622d2 Merge pull request #1063 from RedsonBr140/feat/RootFolder 2023-06-15 12:49:21 +02:00
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
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
cb52be433d Made the installed mods more apparent
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 13:20:08 +03:00
1f2b0ad698 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into installed_mods 2023-06-15 12:39:20 +03:00
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
5bf091149d Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into mods_txt 2023-06-15 11:46:44 +03:00
be0df38453 Added tooltip for name label
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 11:40:39 +03:00
fcfb3d2df7 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into visit_mod_page 2023-06-15 10:37:10 +03:00
1ff8136f98 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into scale_cat 2023-06-15 10:36:05 +03:00
182e19eae3 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-06-15 10:35:26 +03:00
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
811c79423f Fixed version comparation
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 00:43:05 +03:00
cf4c1605eb Fixed qt5 build
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 00:37:32 +03:00
e0b901169a Added new migration for special characters
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-15 00:27:20 +03:00
3f1548ae0e Merge pull request #1099 from Trial97/logdir
store logs in seperate directory
2023-06-14 15:38:47 -04:00
3526d00a23 Merge branch 'develop' into feat/dont-hide-settings
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-14 20:05:02 +01:00
e8b0a7c6f0 chore: bump to 8.0
Signed-off-by: seth <getchoo@tuta.io>
2023-06-14 12:45:08 -04:00
d4f2059b78 Fix bugs when updating curseforge modpacks
Signed-off-by: clickdevin <git@clickdevin.me>
2023-06-14 10:42:37 -04:00
a4502f44c2 Merge pull request #1145 from Trial97/net_job_crash 2023-06-14 12:46:00 +02:00
18c436c2bc Merge pull request #1174 from Trial97/pre-lauch 2023-06-14 11:32:55 +01:00
b77fb05908 Added back the INIFile read function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-13 21:07:05 +03:00
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
69bfb55397 Merge pull request #1166 from TheKodeToad/mrpack-export-oops 2023-06-13 18:00:44 +02:00
180ed0cc1a Merge branch 'PrismLauncher:develop' into skinfix 2023-06-13 11:08:21 +01:00
b174f82261 Merge pull request #1162 from leo78913/i-hate-naming-branches 2023-06-12 21:41:17 +02:00
9406022e70 Merge pull request #1151 from TayouVR/rainbow-konami 2023-06-12 21:25:17 +02:00
f4a814b5e6 Remove unnecessary code
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-12 15:46:15 +01:00
94ddc8bbf7 Could this work?
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-12 14:14:50 +01:00
d6c7b4e813 add icons to export menu
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-06-11 21:50:29 -03:00
ad0493390b fix(nix): use prismlauncher-unwrapped in devShell
Signed-off-by: seth <getchoo@tuta.io>
2023-06-11 14:02:36 -04:00
5aa1c340dc rainbow konami & toggle
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-11 01:58:37 +02:00
47372c2fbd Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into installed_mods 2023-06-10 22:04:12 +03:00
ae9e8dbafd Removed const specification
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-10 22:04:08 +03:00
b7d82354cb [ci skip] License headers!! (yay)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-10 14:43:58 +01:00
b3d743635c Updated the messages
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-09 21:29:12 +03:00
f2932c6d03 Fixed some crashes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-09 21:23:41 +03:00
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
f96b135ef7 Higlight installed mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-08 20:26:09 +03:00
bfe7e3afed Merge pull request #1133 from DioEgizio/bump-mac-11.0 2023-06-08 18:11:59 +02:00
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
7fb4c8358b Merge pull request #1131 from DioEgizio/revert-to-qt650 2023-06-08 16:20:22 +02:00
95f6860005 Apply suggestions from code review
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-08 10:12:27 -04:00
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
e6872aba75 Readd deleted line
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 22:15:44 -04:00
11cbeb8f96 Fix shadowing and add copyright header
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 22:13:57 -04:00
886b372ade Fix accidentally renamed variable
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 20:03:58 -04:00
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: 318d11481d719cf537ecdc00f8d676494bab22b6

Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 19:46:36 -04:00
318d11481d Resolve other switch fallthrough issues 2023-06-07 19:37:54 -04:00
5d425ecc02 Fix the AccountList code
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 18:14:05 -04:00
c225ecbb55 Add sensible defaults in AccountList.cpp
Signed-off-by: PandaNinjas <admin@malwarefight.wip.la>
2023-06-07 18:01:39 -04:00
0b4807dc1f Questionable fix two
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-07 22:55:37 +01:00
d33de2e427 Made cat scalable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-08 00:54:32 +03:00
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
52054469cd Fix *bug* lol
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-07 22:39:23 +01:00
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
bbd9e4de9b Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into mods_txt 2023-06-07 20:18:56 +03:00
8abe6b6732 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into visit_mod_page 2023-06-07 20:18:36 +03:00
9b9d439fce Merge pull request #1111 from Trial97/requires 2023-06-07 18:57:46 +02:00
62d1bc87ae Merge pull request #1117 from leo78913/update-pack-formats 2023-06-07 17:49:52 +02:00
51ed39804f Merge pull request #1125 from Ryex/fix/link-crash-1118 2023-06-07 16:14:53 +02:00
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
accf0cd40e Merge pull request #1115 from leo78913/fix-resource-downloader-crash 2023-06-07 08:47:19 +02:00
e936bc4c60 Added custom text for multiple selection
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-07 01:38:10 +03:00
f724059b88 Added visit mod's page
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-07 01:23:53 +03:00
1e702ee40f Added dynamic page extra info
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-07 00:16:23 +03:00
a9302468e7 update resource and data pack pack_format_versions
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-06-06 16:10:15 -03:00
3b9d822d72 Merge pull request #1073 from leo78913/accounts-menus-fixes 2023-06-06 20:34:41 +02:00
f3a7de6b76 fix: save meta custom url as string, not QUrl (#1114) 2023-06-06 20:25:29 +02:00
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
a2d0d5a71d Allow arrow key movement, fix auto-focus
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-06 18:26:26 +01:00
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
e884341795 save meta custom url as string, not QUrl
Signed-off-by: Tayou <tayou@gmx.net>
2023-06-06 18:15:26 +02:00
3a068970f9 Packaging: file manifest in portable install (#1101) 2023-06-06 16:03:13 +02:00
c343036d3b Simplify
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-06 12:24:53 +01:00
1043d29dd5 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into requires 2023-06-06 10:34:36 +03:00
6505a62801 Renamed requires fields
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-06 10:34:05 +03:00
7e016c44c1 Merge pull request #1093 from getchoo/use-flake-parts
Refactor Nix Flake
2023-06-06 08:10:39 +02:00
7c5047b2ac cAsE iNsEnSiTiVe
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-05 23:12:47 +01:00
961285d6ab Add a search bar to version lists
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-05 22:47:42 +01:00
e1b37f3cd3 Merge pull request #1108 from Ryex/fix/memory-leak-translation 2023-06-05 20:34:56 +02:00
0c24827a52 Merge pull request #1103 from Ryex/fix/1.120-allowed_symlinks.txt 2023-06-05 20:32:30 +02:00
e6eee82fb9 Merge pull request #1100 from Ryex/packaging/windows-installer-uninstall-previous 2023-06-05 20:30:57 +02:00
c5cf78205a Merge pull request #1109 from TheKodeToad/mrpack-export-validate 2023-06-05 19:44:45 +02:00
37b4f606c8 Validate input lengths on mrpack export
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-05 17:54:24 +01:00
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
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
3dccc38f42 Merge pull request #904 from TheKodeToad/mrpack-export
mrpack export
2023-06-04 19:01:50 -07:00
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
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
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
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
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
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
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
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
3c87e5d31e Make mcInstance mutable
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-03 13:48:15 +01:00
e26827b849 Optimised icons
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-06-03 13:39:42 +01:00
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
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
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
d50bd096a4 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into logdir 2023-06-03 00:44:53 +03:00
1840505a0f Fix crash when selecting same mod from different providers (#1029) 2023-06-02 18:04:06 -03:00
29e532c096 fix(nix): fix prismlauncher-qt5
Signed-off-by: seth <getchoo@tuta.io>
2023-06-02 11:53:09 -04:00
0f0cbd4c1f refactor(nix): introduce unwrapped packages
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-06-02 12:41:18 +02:00
0ece0b5b27 Merge pull request #1086 from TayouVR/fix-qt6_5-brown-system-theme 2023-06-02 12:18:37 +02:00
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
17691ab515 Made use of moveFile function
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-02 01:22:25 +03:00
f619a04fe7 refactor: rename app class
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-01 14:55:20 -07:00
3a6657596b Added migration for old logs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-06-01 23:48:48 +03:00
5627b4a9c5 refactor: rename updater files
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-06-01 13:45:36 -07:00
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
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
3bbe33132a packaging: convert msys paths
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 19:39:14 -07:00
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
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
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
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
68c2833552 packaging: use powershell name
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-31 14:55:13 -07:00
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
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
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
8db4a2a5b9 Merge branch 'packaging/windows-installer-uninstall-previous' into feat/windows-updater 2023-05-31 13:57:56 -07:00
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
f5729d9a7c Revert "fix: typo - no space before comment"
This reverts commit 0b2044e9a434ba3d2724630399bc41ebb321b039.
2023-05-31 13:53:44 -07:00
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
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
6c082403c4 Fixed comments
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-31 20:23:23 +03:00
29c3dc40ef Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into logdir 2023-05-31 20:12:12 +03:00
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
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
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
b28f682ad9 Merge branch 'develop' into feature/images-for-resource-page 2023-05-28 12:01:49 -07:00
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
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
51c39ec681 Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop 2023-05-28 19:16:14 +03:00
10436ed70c Fixed code quality
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 19:15:41 +03:00
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
b9503ff15f Added Q_DECLARE_METATYPE(ModPlatform::IndexedPack::Ptr)
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 18:27:02 +03:00
b4dff181f7 Fixed Ptr logic
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 18:22:55 +03:00
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
bdff8591aa Removed extra loop
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 17:54:46 +03:00
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
bf0a577fb9 Fixed repaint issue
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-28 16:57:35 +03:00
954d4d701a Merge pull request #1034 from kerichdev/patch-1 2023-05-28 10:56:44 -03:00
ce2d58bb7d Merge pull request #1083 from Ryex/fix/memory-leaks-develop 2023-05-28 10:11:43 -03:00
7af116fb00 refactor: function scope statics
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-28 05:06:28 -07:00
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
86974b046e Clarify comment
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-28 11:48:09 +01:00
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
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
acf1946dac chore(nix): update sources
Signed-off-by: seth <getchoo@tuta.io>
2023-05-27 19:25:58 -04:00
a52574b026 chore(nix): add nil
Signed-off-by: seth <getchoo@tuta.io>
2023-05-27 19:25:49 -04:00
5d14724e66 chore(deps): enable nix lockfile maintenance for renovate
Signed-off-by: seth <getchoo@tuta.io>
2023-05-27 19:17:44 -04:00
d582bf7f1f feat(nix): flake-utils -> flake-parts
Signed-off-by: seth <getchoo@tuta.io>
2023-05-27 19:14:50 -04:00
7d79abb607 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert 2023-05-27 23:06:55 +03:00
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
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
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
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
832a61f886 fix: make codeQl happy
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-26 16:34:30 -07:00
cf4df19986 feat: display release type
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-26 16:23:43 -07:00
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
f24211e8b5 Merge pull request #1088 from DioEgizio/update-qt651
chore: update to Qt 6.5.1
2023-05-26 07:31:18 +02:00
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
403279e926 Merge pull request #1087 from PrismLauncher/renovate/cachix-install-nix-action-21.x 2023-05-25 19:08:16 -03:00
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
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
42f9eccb17 chore(deps): update cachix/install-nix-action action to v21 2023-05-24 14:21:39 +00:00
3c937532f2 fix System theme colors on windows
Signed-off-by: Tayou <tayou@gmx.net>
2023-05-24 15:18:08 +02:00
863027cbe8 Enable size grip
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-22 11:56:54 +01:00
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
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
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
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
2f37cb31d9 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-05-20 13:36:05 +03:00
e5534cd1f3 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert 2023-05-20 13:35:47 +03:00
42ceaa0015 Merge pull request #1080 from Scrumplex/update-social-links 2023-05-19 16:37:03 -03:00
90b330d4ba chore: update social links
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-05-19 18:34:54 +02:00
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
bd1ea64d02 cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-16 00:01:52 -07:00
649753e97e cleanup: remove unneeded headers
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-15 16:40:56 -07:00
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
3be18b58bb Better variable name :p
Signed-off-by: Kode <TheKodeToad@proton.me>
2023-05-15 19:15:56 +01:00
22aaf56855 De-hardcode .index
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-15 18:48:49 +01:00
7537ea1ef5 make instance settings account selector a comboBox
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-05-14 16:33:41 -03:00
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
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
ffcc58cb3e Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-05-14 14:20:24 +03:00
8c7fd3327e Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert 2023-05-14 14:20:04 +03:00
f60562c5a2 Merge branch 'develop' into mrpack-export
Signed-off-by: Kode <TheKodeToad@proton.me>
2023-05-13 19:07:03 +01:00
18cfe219fe Hopefully This Works™
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-13 18:58:05 +01:00
129e959a3b Move setAbortable(true)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-13 18:28:51 +01:00
e1b6020b76 Make some changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-13 18:24:01 +01:00
d5c6a1b4d1 Merge pull request #1007 from Ryex/fix/network_and_signals 2023-05-13 19:06:47 +02:00
79ce7eb1fc fix: shouldDisplay() is now redundant.
Signed-off-by: Redson <redson@riseup.net>
2023-05-13 09:00:10 -03:00
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
5b8d025440 ty!
Co-authored-by: flow <flowlnlnln@gmail.com>
Signed-off-by: Kode <TheKodeToad@proton.me>
2023-05-12 14:43:55 +01:00
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
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
82287e0407 Merge branch 'develop' into curseforge-url-handle 2023-05-12 01:00:26 -07:00
c5aff7cc1e Merge pull request #961 from Ryex/better-tasks 2023-05-12 09:47:19 +02:00
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
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
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
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
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
30cf73a22f typo fix
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-07 13:23:59 -07:00
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
ef6cbdfa2a Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-05-07 19:01:20 +03:00
718abaae0e doc fixes
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-06 19:18:39 -07:00
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
ce5bb29c44 Merge pull request #1054 from Ryex/more-lax-block-mods-filename-check 2023-05-06 09:54:59 +02:00
d535f73a58 Merge pull request #950 from DioEgizio/resize-settings
fix: divide minecraftpage into tabs
2023-05-06 08:28:46 +02:00
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
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
54fb799d95 Fix command line args
Signed-off-by: timoreo <contact@timoreo.fr>
2023-05-05 15:05:17 -07:00
565202c990 Added a protection against giving a mod url
Signed-off-by: timoreo <contact@timoreo.fr>
2023-05-05 15:05:17 -07:00
63c21c53af Added url handler for curseforge
Signed-off-by: timoreo <contact@timoreo.fr>
2023-05-05 15:05:17 -07:00
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
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
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
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
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
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
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
ed185f047f feat(resourcePackPage): icon column
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-04 23:46:00 -07:00
d384d991fa feat(texturepackPage): icon column
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-04 23:45:24 -07:00
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
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
469ef3e06d Fixed code error
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-05 00:04:24 +03:00
107b470289 Updated required_by as dependency
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-04 23:54:46 +03:00
e0635955df fix: super lax compare
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-04 13:30:39 -07:00
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
f7b912fc9d Fixed comments
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-04 22:25:05 +03:00
9fbec3793f Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into develop 2023-05-04 20:29:33 +03:00
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
e4449a0ba3 Initialized variable
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-03 09:09:07 +03:00
42dc3ed03f Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into Fix_Assert 2023-05-03 00:56:26 +03:00
f6ed2036b3 Removed comment
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-03 00:55:18 +03:00
f8bf71e152 Moved the selected resources to one list
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-05-03 00:49:54 +03:00
e0380960fd Change to use future
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-05-02 14:23:31 +01:00
64ba5e4ed1 Merge pull request #833 from Ryex/advanced_copy_instance 2023-05-02 12:11:41 +02:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
f997529cd4 feat: better task tracking
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-05-01 10:45:34 -07:00
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
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
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
ae75585b52 Merge pull request #1040 from Scrumplex/remove-modpacksch
Remove FTB modpack support
2023-04-29 08:04:53 +02:00
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
f54fc16718 Merge pull request #1025 from japa4551/lastLaunchTimeDate 2023-04-27 10:09:53 +02:00
61a2355618 Removed formated but not used files
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-27 01:41:26 +03:00
248920a221 Removed extra code
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-27 01:33:46 +03:00
7298f9c273 Fixed typo
Signed-off-by: Japa <japa4551@protonmail.com>
2023-04-26 16:06:17 -03:00
b2ecb9ac09 Merge branch 'Fix_Assert' of github.com:Trial97/PrismLauncher into develop 2023-04-22 22:28:08 +03:00
f738d7566e Fixed code qulity
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-22 22:27:33 +03:00
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
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
460e83207f Fixed removeIf for Qt version
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-22 01:18:27 +03:00
75116364c6 Small Cleanup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-22 00:55:11 +03:00
f7931c2ee2 Better version handling
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-22 00:47:51 +03:00
dfc2b9c76a thanks flowln! :P
Signed-off-by: Kode <TheKodeToad@proton.me>
2023-04-21 20:49:47 +01:00
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
10aac4fe17 Fixed assert
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 21:03:01 +03:00
42bc91463e Updated links
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 20:37:17 +03:00
b4fa6e120a Fixed tipo
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
2c744da9f7 More cleanup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
ffaa47bf54 Small cleanup
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
63c4469475 Merge branch 'develop' of github.com:Trial97/PrismLauncher into develop 2023-04-21 18:42:06 +03:00
c1490cd627 Refator task to work with multiple providers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
1a390b6043 Merge branch 'PrismLauncher:develop' into develop 2023-04-21 18:42:06 +03:00
fac33498db Made some copy by reference
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
31e84780a8 Hope to fix windows build errors
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:06 +03:00
f3f8f3574a Small headers removal
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
7bd26ce468 Semi fixed the Modrinth dependency implementation
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
bcea19b957 Tried to fix codeQL
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
5079ce8d64 Fixed headers
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
f231a33f6e Merge branch 'PrismLauncher:develop' into develop 2023-04-21 18:42:05 +03:00
4fe497cd68 First working version with curseforge mods
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
5655a33515 Added Dependency API
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-21 18:42:05 +03:00
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
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
87db723008 add global .editorconfig for doxygen comment style
Signed-off-by: Tayou <tayou@gmx.net>
2023-04-18 20:25:45 +02:00
8dc3267925 Merge pull request #994 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2023-04-18 18:54:11 +02:00
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
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
2e9403a324 This was moved
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-17 13:19:59 +01:00
ba17efa381 Smol fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-17 13:18:25 +01:00
b8e0c8ebc6 Boring changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-17 10:16:03 +01:00
1b05303250 Merge pull request #946 from Ryex/subfolder-watch 2023-04-14 17:10:25 +02:00
51095c5a27 chore(deps): update hendrikmuhs/ccache-action action to v1.2.9 2023-04-14 06:31:06 +00:00
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
11f8d25d94 Added missing character
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-12 00:49:50 +03:00
4fbd5abe41 Added task to load dependencies
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-12 00:45:44 +03:00
d524935b67 Added task to load local mod information
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-11 20:55:10 +03:00
6d5c629b43 Added dependencies to the APIs
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2023-04-10 00:04:35 +03:00
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
95842ee25f Merge pull request #983 from DioEgizio/update-qt650-win 2023-04-08 22:14:26 +02:00
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
1b8b044b52 Merge pull request #982 from Scrumplex/fix-theming-style 2023-04-08 19:26:43 +02:00
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
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
2321d9c065 fix: canonical*File*Path()
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-04-07 18:36:35 -07:00
ed085630db Merge pull request #968 from Scrumplex/nix/sync-2023-04-02 2023-04-07 06:51:14 -07:00
74d5c7c1a4 Merge pull request #972 from DioEgizio/update-qt650 2023-04-07 06:50:02 -07:00
813ccc1381 How did i-
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-07 11:03:11 +01:00
b65f4c9536 Better collectFileListRecursively error
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:59:24 +01:00
012d8bb468 Revert concurrent syntax
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:58:09 +01:00
d7a137ad13 Remove more prototype not good code
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:24:19 +01:00
073aaf9b3b Remove "prototype" field
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:19:41 +01:00
871d647c93 Use local metadata
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-04-06 19:18:36 +01:00
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
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
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
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
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
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
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
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
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
0a9081cb87 Merge pull request #965 from getchoo/update-manoghud-detection 2023-04-02 17:55:19 +02:00
eea1e3b800 Merge pull request #967 from PrismLauncher/renovate/flatpak-flatpak-github-actions-6.x 2023-04-02 08:03:02 -07:00
70364884a9 feat(nix): add support for GameMode
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-04-02 11:35:35 +02:00
ea7f03770c refactor(nix): use qtWrapperArgs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-04-02 11:33:04 +02:00
bc1a7d2890 Merge pull request #966 from getchoo/use-ninja
use ninja in nix builds
2023-04-02 14:06:35 +05:30
732bc53692 chore(deps): update flatpak/flatpak-github-actions action to v6 2023-04-02 03:14:42 +00:00
4055e34320 chore: use system architecture to detect vulkan layers
Signed-off-by: seth <getchoo@tuta.io>
2023-04-01 13:09:09 -04:00
81b1406290 feat(nix): use ninja for builds
Signed-off-by: seth <getchoo@tuta.io>
2023-04-01 13:06:53 -04:00
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
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
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
c7dc115365 fix: search for newer mangohud vulkan layers
Signed-off-by: seth <getchoo@tuta.io>
2023-03-31 15:49:09 -04:00
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
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
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
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
09d607f39c Merge pull request #945 from Scrumplex/fix-logging-newlines 2023-03-25 10:37:02 +01:00
9418c62d95 refactor: reprocess log lines per instance
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-22 10:32:17 +01:00
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
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
77932061bc chore: update ignores for Nix
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-21 18:33:41 +01:00
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
0c986ba4d0 spelling and formatting
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 16:38:40 -07:00
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
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
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
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
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
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
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
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
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
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
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
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
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
a0e03c41c0 fix: typos
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
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
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
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
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
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
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
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
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
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
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
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
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
c5bbe42b57 feat: reflink / Clone support!
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
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
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
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
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
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
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
2ceefea5f3 qt5 compatability
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
485f156e57 working outside windows
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-03-20 14:56:32 -07:00
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
46f448dfba Improve invokeMethod syntax
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-19 21:26:25 +00:00
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
6dcf34acdc Merge pull request #937 from DioEgizio/update-qt6 2023-03-19 22:17:26 +05:30
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
ec8cb056bf QRegExp -> QRegularExpression :P
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-19 11:49:24 +00:00
1893871a99 Merge branch 'PrismLauncher:develop' into mrpack-export 2023-03-18 14:02:05 +00:00
8837f06e4e Only add summary if not empty
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-18 14:01:41 +00:00
5346dfc782 Use first line of notes for summary
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-18 12:57:44 +00:00
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
45b0367d14 Merge pull request #931 from Janrupf/feature/custom-downloads-dir 2023-03-14 13:53:51 +01:00
dce86edff0 Merge pull request #934 from heftymouse/develop 2023-03-14 13:52:44 +01:00
84e91ec3b5 Merge pull request #888 from Scrumplex/nix-stuff 2023-03-14 13:52:31 +01:00
05b6969ee5 fix: add mnemonic to downloads directory setting
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 13:35:16 +01:00
3390e84a9f Merge branch 'PrismLauncher:develop' into skinfix 2023-03-14 12:07:05 +00:00
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
7707af08e3 chore(nix): update sources
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 11:19:23 +01:00
5db4fabcad chore(nix): add deadnix
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:59:43 +01:00
cfca82ceb3 chore(nix)!: use overlays.default
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:58:41 +01:00
a1130dace0 chore: format markdown files
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:54:50 +01:00
95a0bd61a9 feat(nix): add pre-commit-hooks.nix
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:53:51 +01:00
b324778be7 feat(nix): add devShell
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:51:47 +01:00
950f921c09 refactor(nix): use flake-utils
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:50:07 +01:00
9dff1bac83 chore(nix): format code using alejandra
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-14 10:48:19 +01:00
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
e0e26a37b5 Merge pull request #927 from kthchew/fix/mingw-build 2023-03-13 21:24:48 +01:00
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
7642e75b28 Merge pull request #929 from Scrumplex/drop-snap 2023-03-13 22:37:16 +05:30
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
20525bec29 chore(deps): update actions/cache action to v3.3.1 2023-03-13 10:50:27 +00:00
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
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
2e1c123c05 Merge branch 'PrismLauncher:develop' into skinfix 2023-03-10 11:17:06 +00:00
83c5264598 Stupidly small skinfixfix as requested by DioEgizio
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-10 11:04:15 +00:00
abc2a529fb Merge pull request #919 from PrismLauncher/renovate/actions-cache-3.x 2023-03-09 20:54:31 +05:30
c638fd9056 chore(deps): update actions/cache action to v3.3.0 2023-03-09 14:41:24 +00:00
1dd96898e1 Merge pull request #896 from TheKodeToad/modrinth-token 2023-03-09 15:10:40 +01:00
2cc9b0df06 Only select some paths by default - again!
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-08 18:10:52 +00:00
3bd4ad7c93 Merge pull request #918 from Scrumplex/qt6-default 2023-03-08 21:18:53 +05:30
a8ffdeca2b chore!: switch to Qt 6 by default
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-08 11:22:30 +01:00
59b15c5f08 Fix another duplicate name 🤦
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-07 21:03:09 +00:00
59cf8f678f (hopefully) Fix duplicates names
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-07 20:50:19 +00:00
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
5d5fcae501 Further reduce buggy behaviour
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-06 17:24:04 +00:00
970ec8187c More refactoring
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-05 18:25:57 +00:00
76f66148db Apply flowln's suggestion
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-05 18:21:24 +00:00
6bdd6ce571 Merge pull request #912 from Scrumplex/bump-ghc-filesystem
Bump ghc-filesystem
2023-03-05 17:25:38 +01:00
dd96e1819d fix: remove unneeded alias for ghc_filesystem
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-05 14:24:40 +01:00
07702d3be7 fix: drop unneeded GHC_FILESYSTEM_WITH_INSTALL
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-05 14:23:40 +01:00
b9dfcf6d2f chore: bump ghc-filesystem
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-05 14:21:07 +01:00
f3f0652d2b Merge pull request #853 from kumquat-ir/nil
NilLoader mod metadata support
2023-03-05 13:39:00 +01:00
aae60334d1 Merge pull request #911 from flowln/fix_zip_extract_windows 2023-03-05 13:09:25 +01:00
b38af948b9 Merge pull request #857 from Ryex/fix_windows_default_apps 2023-03-05 13:09:11 +01:00
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
87384182a1 Fix abort?
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-04 11:07:07 +00:00
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
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
55f928f845 More consistent naming
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-03 15:06:29 +00:00
2343aad088 Make it work! (TODO make it not crash)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-03 15:00:07 +00:00
dcaa907fed Mod loader support
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-03 11:25:11 +00:00
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
f28a7b9d08 Add PackIgnoreProxy.h to cmake
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 19:50:42 +00:00
6505b0c065 Move logic to task
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 19:48:41 +00:00
88ef02474f Minify index JSON
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 17:36:44 +00:00
9ec32b2561 Fix QuaZipFile usage
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 17:36:28 +00:00
a5dd6b6cd7 Export without file urls
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 16:41:09 +00:00
46cc325f7c Add file tree
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 11:25:36 +00:00
0fadb5a2be Add *basic* interaction
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 10:31:53 +00:00
8b897ac714 Fix menu being set as central widget
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 10:31:53 +00:00
a80b820e94 UI for mrpack export (broken)
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 10:31:53 +00:00
4efbf22089 Prism-ify more license headers
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 10:19:42 +00:00
5c913149c8 Merge branch 'PrismLauncher:develop' into modrinth-token 2023-03-02 10:10:46 +00:00
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
cbe6eff2fa Move Modrinth before CurseForge for consistency
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-02 09:28:14 +00:00
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
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
a7b8092296 Add link
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-01 14:41:16 +00:00
1feb630520 Allow custom Modrinth API token
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-03-01 14:24:56 +00:00
9f202caf93 Merge pull request #895 from Scrumplex/fix-component-creation
Use makeShared for importing components
2023-03-01 12:08:46 +00:00
651e511ff0 fix: use makeShared for importing components
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-03-01 12:33:00 +01:00
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
0eae9355e6 Merge pull request #889 from flowln/fix_zip_extract 2023-03-01 09:51:08 +01:00
4878f1a438 Merge pull request #735 from Scrumplex/import-component 2023-03-01 09:49:47 +01:00
f986b4cd56 chore(deps): update cachix/install-nix-action action to v20 2023-03-01 07:20:11 +00:00
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
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
01c4ed232e license stuff
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-24 15:01:59 -05:00
dc8109658c review fixes
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-22 13:20:13 -05:00
8ce8055aeb Merge pull request #846 from PrismLauncher/renovate/vedantmgoyal2009-winget-releaser-2.x 2023-02-22 16:19:11 +01:00
a71b743ee3 Merge pull request #881 from PrismLauncher/renovate/actions-cache-3.x 2023-02-22 07:07:55 -08:00
c50e9ac418 chore(deps): update actions/cache action to v3.2.6 2023-02-21 12:33:23 +00:00
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
6a5e9a59df Fix screwed up ui file
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-02-19 12:00:59 +00:00
bb62c62a03 Fix cmark again 🤦
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-02-19 11:37:59 +00:00
9cc3d9d4ce Merge remote-tracking branch 'upstream/develop' into skinfix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-02-19 11:35:26 +00:00
b977ac6df5 Merge pull request #865 from Scrumplex/codesign-windows 2023-02-17 17:56:55 +01:00
256fc322a8 minor cleanup
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-16 12:57:35 -05:00
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
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
89c945ecc8 feat(ci): add Windows codesigning
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-02-15 20:43:33 +01:00
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
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
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
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
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
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
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
f5f2d33f93 parse nil metadata
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2023-02-11 17:46:17 -05:00
4331eaae2e chore(deps): update vedantmgoyal2009/winget-releaser action to v2 2023-02-11 15:48:00 +00:00
d5d4f87236 Merge pull request #831 from PrismLauncher/renovate/cachix-install-nix-action-19.x 2023-02-11 16:47:30 +01:00
5d49433326 Merge pull request #841 from RaptaG/patch-1 2023-02-11 08:45:42 +01:00
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
e70a5a47ee fix: ignore absolute paths when extracting
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-02-10 10:46:21 +01:00
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
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
104863846b chore(deps): update actions/cache action to v3.2.5 2023-02-10 06:24:45 +00:00
5883c30b84 Merge pull request #834 from pandaninjas/patch-2 2023-02-09 09:29:13 +01:00
cebaae76b4 Merge pull request #832 from ktheticdev/develop
Fix README COPR typo
2023-02-08 14:32:16 -08:00
d886d32bd8 Replace potentially ReDOSable regex
Signed-off-by: PandaNinjas <admin@malwarefight.gq>
2023-02-07 17:21:00 +00:00
8440c2819b Fix README.md typo
Signed-off-by: ktheticdev <64607352+ktheticdev@users.noreply.github.com>
2023-02-07 11:10:43 +04:00
8114d8778f chore(deps): update cachix/install-nix-action action to v19 2023-02-06 15:31:42 +00:00
f36c3a3f6c Merge pull request #819 from Scrumplex/fix-launch-script 2023-02-06 16:26:54 +01:00
46c6cc2d2b chore: add my copyright headers
.-.

Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-05 17:02:56 -03:00
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
b724607e31 feat(RD): add shader pack downloader
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-05 17:02:56 -03:00
c3ea303a37 feat(RD): add resource pack downloader
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-02-05 17:02:52 -03:00
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
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
a47bf72b07 Merge pull request #751 from Edgars-Cirulis/develop 2023-02-05 17:48:26 +01:00
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
c125c96e88 Java installations detection fix for Linux
Signed-off-by: BalkanMadman <zurabid2016@gmail.com>
2023-02-04 16:48:06 +02:00
d2fd0fd8e8 Merge pull request #802 from KosmX/develop 2023-02-04 14:43:28 +01:00
74a875bdce Merge pull request #803 from TheLastRar/msys2-ccache 2023-02-04 05:37:23 -08:00
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
c392db7e0d Merge pull request #815 from Scrumplex/fix-funny 2023-02-03 18:44:07 +01:00
6ac073e779 fix: fix component uid regex
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-02-03 18:32:57 +01:00
58d9ceda4b Merge pull request #804 from flowln/improve_big_concurrent_task_test 2023-02-02 13:47:51 -08:00
3781c64d41 Merge pull request #810 from flowln/error_on_bad_file_paths_as_we_should_catquake 2023-02-02 13:47:36 -08:00
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
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
35a62d9787 commit requested change, make the lock static
Signed-off-by: KosmX <kosmx.mc@gmail.com>
2023-02-01 23:31:12 +01:00
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
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
121a7a9e23 CI: Log ccache stats for msys2
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2023-02-01 20:13:26 +00:00
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
ec5bb944b2 thread-safe logger
Signed-off-by: KosmX <kosmx.mc@gmail.com>
2023-02-01 14:59:11 +01:00
deed49574a Merge pull request #798 from PrismLauncher/renovate/actions-cache-3.x 2023-01-30 07:02:51 -08:00
7cc39cd357 chore(deps): update actions/cache action to v3.2.4 2023-01-30 13:29:47 +00:00
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
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
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
a27564ed70 better fix for WideBar::insertSeparator
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-27 13:48:12 -03:00
df8df41621 Remove unused BarEntry variable
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-27 12:40:27 -03:00
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
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
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
f705cf09bc Merge pull request #787 from flowln/make_shared_ptrs_explicit 2023-01-26 10:15:28 -08:00
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
9b7c8ea22d Merge pull request #779 from TheLastRar/zlib-undo-rename 2023-01-25 11:53:51 -08:00
199a7df807 refactor: add error handling to component import
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-25 10:43:23 +01:00
5186ad95d3 Merge pull request #784 from flowln/fix_resource_folder_double_smart_ptrs 2023-01-25 10:33:01 +01:00
0546345182 Merge pull request #458 from Scrumplex/remove-updater 2023-01-25 10:32:49 +01:00
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
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
e4e8a51e5c Merge pull request #781 from Ryex/patch-1 2023-01-24 11:15:33 -08:00
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
6eb36fb053 Merge pull request #783 from DioEgizio/update-cmark-fix-cve 2023-01-24 07:25:26 -08:00
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
6e841a3b7e Merge branch 'develop' into remove-updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-24 14:40:17 +01:00
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
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
16477a8f6c Merge pull request #675 from flowln/generalize_mod_model 2023-01-23 23:58:52 +01:00
04e4900415 Merge pull request #758 from flowln/fix_process_events_backstab 2023-01-23 23:58:41 +01:00
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
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
cefa1662ef Merge pull request #772 from TheLastRar/zlib-fallback-bundled-fix
Fix: zlib fallback not working
2023-01-23 00:07:34 +01:00
2a949fcb86 fix: zlib fallback
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2023-01-22 15:04:15 +00:00
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
5a25ce8c1b Fix main window icon and stuff
i forgor 💀

Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
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
6c5f6e8900 Fix status bar name
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
4ed4fb2314 remove useless setEnabled calls
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
f16989bea9 feat(WideBar): custom context menu actions
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
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
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
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
b2de01b076 feat(WideBar): Allow disabling alt shortcuts
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:45:43 -03:00
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
3da1d6a464 feat: add Widebar::InsertWidgetBefore method
Signed-off-by: leo78913 <leo3758@riseup.net>
2023-01-20 19:44:39 -03:00
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
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
cdc9f93f71 make MainWindow cat update instantly
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-20 15:16:25 +01:00
bcebb1920f refactor: clean up Section struct
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-20 11:15:26 -03:00
81848e05f1 refactor: simplify Version operators
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-20 11:15:26 -03:00
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
0199d8a74f Version.cpp: Add new line
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-19 14:12:59 +02:00
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
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
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
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
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
730f714e97 Version.cpp: Remove unnecessary QStringList include
Signed-off-by: Edgars Cīrulis <edgarsscirulis@gmail.com>
2023-01-17 22:39:19 +02:00
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
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
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
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
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
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
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
f1247d2224 Merge pull request #753 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2023-01-15 11:39:50 -03:00
7992b7eb89 chore(deps): update hendrikmuhs/ccache-action action to v1.2.8 2023-01-15 13:40:16 +00:00
cd893e18d2 chore: update license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-14 17:21:52 +01:00
a5c8b166fe Merge pull request #746 from RaptaG/patch-1 2023-01-14 17:17:49 +01:00
72a9b98ef0 We're in 2023 :)
Signed-off-by: RaptaG <77157639+RaptaG@users.noreply.github.com>
2023-01-14 17:55:56 +02:00
cf022524d1 Merge pull request #743 from flowln/fix_mods_with_wrong_modListVersion 2023-01-14 12:19:12 -03:00
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
3de681d2d6 Merge pull request #685 from byteduck/instance-accounts 2023-01-13 17:21:12 -03:00
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
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
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
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
bd36f8e220 fix(RD): set resource strings for ReviewMessageBox too
Signed-off-by: flow <flowlnlnln@gmail.com>
2023-01-13 16:23:09 -03:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
b937d33436 Merge pull request #714 from redstrate/cmark 2023-01-13 16:16:00 -03:00
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
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: 160dd09fc2788fea17c8e9e332c2877586640971

Signed-off-by: Aaron <10217842+byteduck@users.noreply.github.com>
2023-01-12 20:16:48 -08:00
b2f48eaeb8 Merge branch 'PrismLauncher:develop' into instance-accounts 2023-01-12 20:11:46 -08:00
160dd09fc2 Fix instance account selector face for offline accounts 2023-01-12 20:03:31 -08:00
80eea05deb chore(deps): update hendrikmuhs/ccache-action action to v1.2.7 2023-01-12 22:06:50 +00:00
5e89ba7079 Merge pull request #732 from DioEgizio/actually-fix-openssl3-mac-failures 2023-01-12 16:31:03 +01:00
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
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
4e2a958896 fix(flatpak): enable builddir
Signed-off-by: Joshua Goins <josh@redstrate.com>
2023-01-12 10:08:52 -05:00
3ee0ec7cd0 fix(nix): add cmark dependency
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-12 10:08:52 -05:00
22a2b7ac46 refactor: support system and bundled cmark
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-12 10:08:52 -05:00
aa7c910e26 build: remove hoedown vendored source
Signed-off-by: Joshua Goins <josh@redstrate.com>
2023-01-12 10:08:52 -05:00
24a4bd3a1c refactor: replace hoedown markdown parser with cmark
Signed-off-by: Joshua Goins <josh@redstrate.com>
2023-01-12 10:08:52 -05:00
fff52cb247 feat: add button to import component JSONs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-11 13:50:57 +01:00
219c5b323d Merge pull request #731 from flowln/windows_server_trash 2023-01-11 09:49:20 +01:00
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
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
96d5438633 Merge pull request #249 from TayouVR/theme-selector-first-time-wizard 2023-01-10 13:28:57 -03:00
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
d45a62b3a6 Revert "Merge pull request #729 from DioEgizio/fix-mac-openssl3-failing"
it was necessary :/

This reverts commit 976e550aa7291f22f5011178ab824a937f89d11a, reversing
changes made to 61144f7a219995fa29531683ed36e8e4002848b5.

Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2023-01-10 16:47:28 +01:00
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
668b19d119 Add hint about Cat
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:09:57 +01:00
5c48f0b458 fix: set minimum size for setup wizard
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2023-01-10 16:06:50 +01:00
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
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
6daa457838 Implement Suggestions from flow & Scrumplex
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:06:42 +01:00
49d317b19a UX tweak + formatting + added cat to wizard
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:06:24 +01:00
1b80ae0fca add theme setup wizard
Signed-off-by: Tayou <tayou@gmx.net>
2023-01-10 16:06:01 +01:00
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
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
574af2c795 chore: cleanup review suggestions
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2023-01-09 17:18:08 -07:00
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
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
d4b346b7ae Fix oversights
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-09 10:48:46 +00:00
ca9b2525c8 Merge pull request #715 from getchoo/add-teawie 2023-01-09 09:46:31 +01:00
bb1c387a98 Merge pull request #722 from PrismLauncher/renovate/actions-cache-3.x 2023-01-09 09:41:32 +01:00
38ce37b6fd Merge pull request #720 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2023-01-09 09:41:03 +01:00
7fdc81236e chore(deps): update actions/cache action to v3.2.3 2023-01-09 07:54:22 +00:00
fca40c1c6b chore(deps): update hendrikmuhs/ccache-action action to v1.2.6 2023-01-08 22:40:41 +00:00
52b3a54e4b Fix cloaks conflicting with join server endpoint
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-08 15:36:36 +00:00
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
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
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
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
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
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
9901ecda49 Merge pull request #710 from byquanton/develop
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/708
2023-01-07 17:18:10 +01:00
39becf607e Merge pull request #713 from redstrate/fix-html-rendering 2023-01-07 12:57:35 -03:00
f5955a4738 feat: add bday teawie
Signed-off-by: seth <getchoo@tuta.io>
2023-01-07 04:47:53 -05:00
e018b30875 fix: make spooky teawie load
gimp fail

Signed-off-by: seth <getchoo@tuta.io>
2023-01-07 04:38:26 -05:00
2dbd775cf3 feat: add xmas teawie
Signed-off-by: seth <getchoo@tuta.io>
2023-01-07 04:37:41 -05:00
a5051327db feat: add spooky teawie
Signed-off-by: seth <getchoo@tuta.io>
2023-01-07 03:42:53 -05:00
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
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
be7f81421a Finishing touches
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-06 10:46:43 +00:00
17317ea308 Move legacy support classes to another jar
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-06 09:23:36 +00:00
cb32711077 Slim skin fix - thanks to @craftycodie and @DelofJ
!

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2023-01-06 09:21:43 +00:00
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
e0e3d4d8fe Merge branch 'PrismLauncher:develop' into instance-accounts 2023-01-02 11:59:29 -07:00
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
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
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
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
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
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
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
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
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
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
11df4845b7 fix: remove Flatpak cache key workaround
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-30 15:36:35 +01:00
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
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
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
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
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
c1e5179b5f Merge pull request #680 from AshtakaOOf/flathub-screenshots 2022-12-28 13:48:39 +01:00
7a651bdc53 feat: install launcher logging categories
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-27 18:10:01 +01:00
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
c8d8046412 refactor: add logging category for credentials
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-27 17:04:42 +01:00
4d334b645d Merge pull request #681 from PrismLauncher/renovate/actions-cache-3.x 2022-12-27 13:54:00 +01:00
58d3779efb chore(deps): update actions/cache action to v3.2.2 2022-12-27 12:20:21 +00:00
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
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
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
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
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
434f639b0c Use optional instead of hardcoded cancelled string
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-26 14:58:37 +00:00
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
e8ee4497f7 store logs in sperate directory
Signed-off-by: chmodsayshello <chmodsayshello@hotmail.com>
2022-12-26 09:59:26 +01:00
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
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
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
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
cfce54fe46 fix: update parse tests
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 20:43:17 -07:00
a7c9b2f172 feat: validate world saves
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 20:43:17 -07:00
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
ccfe605920 feat: add shaderpack validation
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-12-24 15:55:10 -07:00
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
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
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
e4296c48c8 chore(deps): update flatpak/flatpak-github-actions action to v5 2022-12-24 16:20:44 +00:00
dd3848d7b1 Merge pull request #666 from getchoo/pls-scrump
scrump heard your pleads, rejoice!
2022-12-24 06:38:49 -08:00
56ac1a0813 Merge pull request #665 from flowln/logging_categories 2022-12-24 03:58:49 -08:00
cbe5af235c Make requested changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-24 08:59:55 +00:00
f932ffcc5b fix: check if GIT_REFSPEC is empty
Signed-off-by: seth <getchoo@tuta.io>
2022-12-23 20:50:08 -05:00
0a50c5bf40 Merge pull request #644 from RaptaG/new-readme 2022-12-23 04:39:57 -08:00
e416e5d301 Merge pull request #667 from PrismLauncher/renovate/actions-cache-3.x 2022-12-23 04:00:43 -08:00
884bd85495 Skin fix -> online fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-23 09:35:29 +00:00
94067f34cf Try to make some of the suggested changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-23 09:34:26 +00:00
3227859992 chore(deps): update actions/cache action to v3.2.1 2022-12-23 08:18:30 +00:00
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
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
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
bf2ce54076 Merge pull request #656 from PrismLauncher/renovate/actions-cache-3.x 2022-12-21 07:30:23 -08:00
07de285299 chore(deps): update actions/cache action to v3.2.0 2022-12-21 14:46:35 +00:00
8c194cd245 Merge pull request #649 from Scrumplex/fix-winget-release-no9999999 2022-12-19 16:36:42 +01:00
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
cdf05e74c8 Merge pull request #647 from Scrumplex/update-flake 2022-12-19 16:09:55 +01:00
b98b4f1027 chore(nix): update flakes
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-19 15:54:10 +01:00
fc11dfd6b4 refactor(nix): use tomlplusplus from nixpkgs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-19 15:54:09 +01:00
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
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
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
11c8237d8b Merge pull request #642 from DioEgizio/dont-ship-unnecessary-tlsbackends
fix: exclude unused tls backends
2022-12-18 16:27:48 +01:00
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
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
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
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
0516055b31 Merge pull request #630 from leo78913/yeet-scrollbars 2022-12-17 08:02:41 -08:00
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
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
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
40f16b6d62 Merge pull request #631 from getchoo/better-msvc-flags 2022-12-17 05:53:17 -08:00
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
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
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
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
c8d8dda79a fix: only show scrollbars when needed
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-15 16:34:52 -03:00
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
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
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
fdac978c84 Merge pull request #625 from Edgars-Cirulis/develop 2022-12-15 07:55:28 -08:00
3b81ada1c3 Merge pull request #593 from Scrumplex/fix-winget-release-no999999 2022-12-15 16:35:15 +01:00
87bcefd08a Automatically add add-opens if Java version >= 9
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 15:28:24 +00:00
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
8a6776731a Use reflection to access DatatypeConverter
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
bfa5fe1598 Better skin fix error handling
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
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
cfeadf858e Add workaround to warning
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
7534eaf006 Only use DatatypeConverter as a fallback
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
8a81aaaa0a Add separate util class
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:39 +00:00
b544661e81 Experimental skin fix, inspired by craftycodie's
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-15 14:59:38 +00:00
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
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
849b92665e Merge branch 'develop' into remove-updater 2022-12-14 23:22:27 +01:00
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
ee003cd9ee Add confirmation on customised components
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-14 15:40:20 +00:00
127b094c41 Improve handling of destructive actions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-12-14 15:20:42 +00:00
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
6ede02bb84 Merge pull request #608 from Scrumplex/bump-7.0 2022-12-14 11:33:46 +01:00
821c424b66 move cat to bottom right
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-14 08:36:35 +01:00
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
e05ccc0e55 Merge pull request #601 from Scrumplex/fix-translations-3 2022-12-13 07:01:23 -08:00
4f3786c2e1 chore: bump to 7.0
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-13 11:10:05 +01:00
107977f3d1 fix: update source strings
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-13 10:40:35 +01:00
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
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
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
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
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
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
c44f931059 fix: update installers-regex for winget releaser
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-12 19:03:32 +01:00
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
6eb641ae56 Merge pull request #585 from DioEgizio/remove-leftover-todo 2022-12-11 13:02:08 -08:00
9eb14e6b9b fix: remove leftover TODO
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-11 20:35:39 +01:00
7cc42269a9 Merge pull request #569 from Jan200101/PR/fix-mangohud 2022-12-11 18:31:05 +01:00
c45442760c Merge pull request #584 from TayouVR/fix-breeze-colors-and-matrix-icon 2022-12-11 09:24:53 -08:00
83f0611200 fix breeze icon colors and matrix icon
Signed-off-by: Tayou <tayou@gmx.net>
2022-12-11 17:36:05 +01:00
d95625ed88 Merge pull request #486 from flowln/wide_bar_customization 2022-12-11 04:16:45 -08:00
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
deb9c98630 chore: replace naive mangohud preload with vklayer detection
Signed-off-by: Jan200101 <sentrycraft123@gmail.com>
2022-12-11 11:01:34 +01:00
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
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
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
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
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
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
cb0339b492 Merge pull request #572 from DioEgizio/breeze-icons-improvements 2022-12-09 04:14:36 -08:00
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
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
9ad4ae5340 Merge pull request #568 from leo78913/flatpak-shortcuts 2022-12-08 17:53:33 -08:00
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
37ad1b40d8 fix: fix creating instance shortcuts in flatpak
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-08 20:18:07 -03:00
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
ab2f3bb5bc make removeButton a member of IconPickerDialog
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-12-08 11:13:53 -03:00
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
c390e211ee Merge pull request #565 from DioEgizio/shortcut-menu-bar 2022-12-07 12:57:46 -08:00
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
b373beee21 Merge pull request #511 from Scrumplex/fix-blocked-mods-usability 2022-12-07 06:12:09 -08:00
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
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
6f50809457 fix(FlamePage): don't assert / suggest blocked modpacks
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:35 -03:00
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
80054e4db2 fix(ManagedPackPage): preserve pack ID from Modrinth update
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
1630a23fb0 refactor(InstanceImport): require rvalue from 'extra_info' mappings
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:34 -03:00
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
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
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
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
c5c426ecbc chore(ManagedPackPage): format and add headers
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
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
57b905be24 feat(ManagedPackPage): implement Flame modpack updating button
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
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
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
527c1113f1 feat(ManagedPackPage): add Flame UI
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:33 -03:00
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
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
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
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
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
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
0ff8891c66 feat: add ManagedPackPage to the instance pages
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
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
82699cc297 feat: allow skipping the update confirmation dialog
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 17:00:32 -03:00
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
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
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
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
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
02b4468bcd feat(ui): add ManagedPackPage ui
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-12-06 16:54:50 -03:00
746f6945da fix: remove rogue notr
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:52:32 +01:00
5cab4d8864 chore: reformat code
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:52:31 +01:00
5cedfcbfaf chore: add license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:52:14 +01:00
c06abd9b6b refactor: replace Open All with Open Missing
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:52:13 +01:00
e08d97825d feat: implement lax filename match in BlockedModsDialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:51:18 +01:00
d61323aa6d fix: improve resize behavior of BlockedModsDialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 20:51:18 +01:00
5ae044db93 Merge pull request #556 from DioEgizio/modrinth-icon-larger 2022-12-06 11:50:35 -08:00
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
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
c8c3fe1023 chore: add license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 13:18:50 +01:00
85bddbed86 chore: reformat code
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-06 13:16:27 +01:00
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
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
2fd7338cd3 dix: disable FS watcher after closing BlockedModsDialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-05 21:39:24 +01:00
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
b29c99656e Merge pull request #546 from DioEgizio/add-server-icon
feat: add a proper server icon
2022-12-05 07:49:55 +01:00
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
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
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
2462b8e524 feat+fix: better flat icon
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-04 13:30:24 +01:00
263a72879d fix: oyxgen is lgpl3!
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-12-04 12:50:40 +01:00
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
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
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
93707560cb Merge pull request #506 from Protrikk/develop 2022-12-02 22:04:33 +01:00
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
b9a17f5999 Merge branch 'upstream/develop' into develop
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-12-02 20:46:04 +01:00
ab23f542c6 Merge pull request #423 from TheKodeToad/addagent
Fixes https://github.com/PrismLauncher/PrismLauncher/issues/414
2022-12-02 06:40:18 -08:00
fa98bf1ee7 Merge pull request #481 from ryanccn/import-resource-pack-dialog-uwu 2022-12-02 06:39:54 -08:00
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
d1a1b8b6e8 Merge pull request #524 from DioEgizio/woa
add windows on arm builds
2022-12-01 23:09:37 +01:00
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
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
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
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
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
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
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
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
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
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
5efa725e92 feat(actions) add arm64 build
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-30 13:46:55 +01:00
42c00213ce Merge pull request #238 from santiagocezar/new-icons 2022-11-29 14:30:29 -08:00
b7d1b9ac61 Merge pull request #527 from DioEgizio/revert-6.4.1-winmsvc 2022-11-29 14:27:29 -08:00
52d06ed814 chore: move instance_icons.svg
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-29 20:07:00 +01:00
46a1c855a9 Merge pull request #528 from Scrumplex/fix-resourcepages-runningstate 2022-11-29 19:50:00 +01:00
31dc82b1a6 Make requested changes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-29 09:43:08 +00:00
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
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
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
3cbf8d4993 resolving reviews
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-27 16:24:45 -03:00
f3279a0697 Merge remote-tracking branch 'upstream/develop' into import-resource-pack-dialog-uwu 2022-11-27 20:05:21 +01:00
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
236c196e68 fix: improve code readability
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-27 18:38:56 +01:00
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
cc92e1b0b6 Merge pull request #521 from Scrumplex/missing-icons 2022-11-26 19:02:03 +01:00
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
6bdd27a08e Merge pull request #493 from Scrumplex/cachix
Closes https://github.com/PrismLauncher/PrismLauncher/issues/491
2022-11-26 14:24:06 +01:00
80ff0b1418 Merge pull request #492 from Scrumplex/update-nix 2022-11-26 14:03:51 +01:00
a8943ce1ee remove unused ftb icon
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:15:08 -03:00
71d35dc70b meat is now round
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:15:08 -03:00
9daf2a2996 resize to 24x24
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:15:07 -03:00
f5d6aea942 forgot ftb
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:15:07 -03:00
5850447fd0 merge with upstream
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 15:14:52 -03:00
e12a7a4415 gradients!
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 14:22:49 -03:00
81d84b8d02 initial icons
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-25 14:22:49 -03:00
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
cbf4159c7e fix: add missing shortcut icons
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-25 14:03:10 +01:00
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
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
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
b60fe08d44 Merge pull request #514 from DioEgizio/force-bundled-libs-win 2022-11-23 15:11:45 -08:00
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
96e8217b00 Button to add agent
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-23 09:46:55 +00:00
e6cb6cae11 Merge pull request #508 from TheLastRar/ForceBundledLibs 2022-11-23 09:49:24 +01:00
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
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
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
68b7aa0a4d Merge pull request #498 from Scrumplex/fix-copy-signal 2022-11-21 13:44:43 -08:00
f916ce8752 Merge branch 'develop' of https://github.com/PrismLauncher/PrismLauncher into import-resource-pack-dialog-uwu 2022-11-21 23:19:50 +08:00
fdbd8d9d2b refactor: remove old updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-21 16:18:05 +01:00
4208c2c72a fix: actually emit fileCopied
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-21 15:47:15 +01:00
5cc91965d0 Merge pull request #487 from TayouVR/breeze-icon-themes 2022-11-21 14:43:58 +01:00
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
c1b3a3adb4 fix(actions): don't ignore nix files
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-21 11:43:46 +01:00
7096f02b88 fix: text wrapping
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-21 18:15:03 +08:00
70a11935a8 feat(actions): add Nix build
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-21 00:22:25 +01:00
f601135cc0 refactor(nix): synchronize changes from nixpkgs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-20 23:49:11 +01:00
884fe0d574 feat: validate maximum memory allocation in wizard
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-20 18:16:19 +01:00
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
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
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
bb7a321c6e add breeze themes
Signed-off-by: Tayou <tayou@gmx.net>
2022-11-20 05:24:10 +01:00
2d69d63efe feat(InstancePages): save/load wide bar visibility settings
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-19 18:41:31 -03:00
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
6e1639551b feat(WideBar): allow hiding buttons with right-click
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-19 18:41:30 -03:00
2367903ac6 refactor: clean up WideBar a bit
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-19 18:41:30 -03:00
30607c34a1 Merge pull request #291 from TheKodeToad/betterjavalauncher 2022-11-19 18:45:15 +01:00
817947c928 Merge pull request #483 from jopejoe1/patch-1 2022-11-19 18:44:09 +01:00
29926a59bb Merge pull request #482 from DioEgizio/fix-cache-flatpak 2022-11-19 18:10:03 +01:00
d92ae530d7 fix: stray include
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-20 00:34:44 +08:00
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
d1db7a0e23 Fix New Zealand English display
Signed-off-by: jopejoe1 <34899572+jopejoe1@users.noreply.github.com>
2022-11-19 16:28:27 +00:00
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
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
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
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
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
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
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
70fa92f22c Remove dirty printStackTrace hacks
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-19 13:59:22 +00:00
3482076a20 Merge pull request #476 from Scrumplex/matrix 2022-11-19 05:07:33 -08:00
f7239f7f8a chore: update community links
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-19 13:34:02 +01:00
20ba787c00 Merge pull request #474 from Scrumplex/translations-maybe2 2022-11-19 03:41:54 -08:00
669eef92eb Make requested changes and utilise AssertionError
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-19 08:54:17 +00:00
c6d9edb78f chore: improve display names of more languages
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-18 22:21:55 +01:00
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
dbd01d35e6 Merge pull request #455 from leo78913/menubar-stuff 2022-11-18 17:20:50 +01:00
b24c09665f Merge pull request #439 from Ryex/better-blocked-mods 2022-11-17 11:29:28 -08:00
fa96ebd382 Merge pull request #471 from IDeletedSystem64/develop 2022-11-17 20:28:42 +01:00
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
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
5cf2a8b5fc Merge pull request #454 from RedsonBr140/menu-themes 2022-11-17 09:47:55 -08:00
f72ac94c11 fix: Fix usage below
Signed-off-by: Redson <redson@riseup.net>
2022-11-17 06:39:05 -03:00
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
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
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
2de150bfc8 Merge pull request #431 from FayneAldan/version 2022-11-16 18:20:32 +01:00
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
8aae652be1 fix: remove unnecessary condition
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-16 18:10:54 +01:00
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
debc1659e1 Merge pull request #464 from DioEgizio/qt-6.4.1 2022-11-16 15:23:52 +05:30
23e411c42b Merge pull request #459 from Scrumplex/bump-tomlplusplus 2022-11-16 01:34:15 -08:00
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
e8b871ac72 Merge branch 'PrismLauncher:develop' into version 2022-11-15 18:34:24 -07:00
9f30c6d94b Add commit hash to --version
Signed-off-by: Fayne Aldan <FayneAldan@gmail.com>
2022-11-15 18:33:51 -07:00
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
c1763cc4b0 fix: disable FLOAT16 in toml++
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-15 21:23:20 +01:00
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
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
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
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
6fe626ab9a feat: Make the changes persistent.
Signed-off-by: Redson <redson@riseup.net>
2022-11-15 06:09:13 -03:00
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
aa3ea79f94 fix: Check the current theme box on startup.
Signed-off-by: Redson <redson@riseup.net>
2022-11-15 05:38:31 -03:00
ef53455b66 fix: Build on QT6
Signed-off-by: Redson <redson@riseup.net>
2022-11-15 05:19:46 -03:00
ba46ff6692 Merge remote-tracking branch 'upstream/develop' into feature/instance-shortcuts 2022-11-15 10:05:04 +02:00
0e916244f0 feat: Add themes and their logic.
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-11-14 21:10:48 -03:00
1e4ee02cbc Merge branch 'PrismLauncher:develop' into menu-themes 2022-11-14 21:09:37 -03:00
cedc7754d9 Merge pull request #428 from DioEgizio/fixes-to-CI 2022-11-14 14:16:01 -08:00
fece9e207b Merge pull request #448 from TheLastRar/fixup-warnings 2022-11-14 14:15:46 -08:00
cca052ccc9 Restore QRC headers
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-14 22:46:41 +02:00
5be9472912 fix: fix potentially uninitialized variable
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-14 21:20:38 +01:00
f60b09568c Merge pull request #112 from ryanccn/macos-add-to-path 2022-11-14 21:12:36 +01:00
be765f8d88 feat: Add empty menu
Signed-off-by: Redson <redson@riseup.net>
2022-11-14 16:33:25 -03:00
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
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
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
fce323b945 Check parent in rowCount/columnCount/canFetchMore
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:57 +00:00
5558f3d2cc Mark paramaters of dropMimeData as unused
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:57 +00:00
08f8623cb7 Mark paramaters of onParseFailed as unused
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:56 +00:00
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
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
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
55c7b291e1 Remove unused qhash function
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-14 19:05:56 +00:00
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
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
e14b998da3 refactor: improve readability
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-14 18:38:12 +01:00
2c9452efaf Merge branch 'develop' into macos-add-to-path 2022-11-14 19:26:31 +08:00
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
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
0a04c3a2a7 fix: Fix the error that CodeQL caught
Signed-off-by: txtsd <code@ihavea.quest>
2022-11-13 18:54:55 +01:00
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
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
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
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
074b53eb6b Merge pull request #445 from flowln/optimize_edit_instance 2022-11-13 17:18:06 +01:00
c4cfec1e94 Undo accidental tomlplusplus downgrade
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-13 18:00:18 +02:00
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
43b9d9484d tabs -> spaces
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-13 15:49:28 +02:00
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
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
fe94c3609e fix: implement code review suggestions
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
173aed7fd8 chore: add REUSE headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
335bec68fb fix: prevent abort for un-abortable tasks
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
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
086304f7f2 feat: add initial Migration dialog
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
bd7065eece feat: add SimplePrefixMatcher
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:30 +01:00
15aaff7c1c feat: add dryRun to copy operation
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:28:29 +01:00
e048bce13e refactor: allow copy operation with whitelist
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:27:13 +01:00
ddfb449b28 fix: remove PolyMC data paths
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-12 20:27:13 +01:00
5322155b19 Mac: fix build
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:48:21 +02:00
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
b813c867b5 refactor #if checks
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:41:52 +02:00
f7d7d76ee8 Mac: now supported! [UNTESTED]
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:36:49 +02:00
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
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
9be48f1dc4 this ain't static, falco
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:31 +02:00
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
487e352642 Fix nested #if directive
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:29 +02:00
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
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
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
6ae3b183fd Remove unnessecary "is defined" check
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:27 +02:00
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
70768189ba Windows: implement FS::createShortcut
Signed-off-by: ADudeCalledLeo <7997354+Leo40Git@users.noreply.github.com>
2022-11-12 20:19:25 +02:00
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
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
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
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
b9e2c3524c chore: clang format & cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-11 16:07:57 -07:00
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
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
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
21dbd28a2f Merge pull request #266 from Ryex/windows-file-association 2022-11-11 15:46:03 +01:00
b57fee1a44 fix: swap spin box and state icon
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-11 15:24:14 +01:00
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
863a168cb5 feat: raise memory limits to 1TiB
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-11 15:05:00 +01:00
5ee4fb3522 feat: validate maximum memory allocation
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-11 15:04:05 +01:00
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
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
46a8e18841 Merge pull request #367 from TheKodeToad/linkjumping
fix https://github.com/PrismLauncher/PrismLauncher/issues/363
2022-11-10 08:08:44 -08:00
6c53e68a52 Merge pull request #406 from Scrumplex/fix-clear-metadata 2022-11-10 07:50:14 -08:00
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
99ed0b6c2c Implement flowln's suggestions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-10 11:14:58 +00:00
e6d057fe6d Merge pull request #415 from TayouVR/fix-main-warning 2022-11-09 18:27:40 +01:00
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
32c2ad2bbd A lot more cleanup
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 17:51:18 +00:00
f2ca9a6b31 Revert switch to JUL for better colours
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 17:38:23 +00:00
50d40257fe Always use this for consistency
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 17:38:23 +00:00
d90eff64d0 Add StringUtils to CMakeLists.txt
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
e6dc34fe10 More license fixing
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
745c331311 Remove last case of printStackTrace
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
1ea2e85415 Implicit is generally prefered
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
4a2df30f92 Try to use more standard exit codes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
922220c11e More consistent logging text
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
56d5035c63 Fix the warnings properly
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:27 +00:00
4abf3a20c6 More standard code formatting profile
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:25 +00:00
5912ef3b45 Just ignore empty lines
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:37:00 +00:00
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
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
fb677a7489 So turns out we can have nice things
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:36:55 +00:00
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
5b9bfe8891 Attempt to mimic clang-format
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:36:33 +00:00
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
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
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
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
e899e31745 More informative exceptions in entrypoint
Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
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
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
ac5b74301e Cleanup splitting string into a pair
Signed-off-by: solonovamax <solonovamax@12oclockpoint.com>
2022-11-08 16:25:09 +00:00
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
35d200356f Create launcher.impl.legacy
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
0cd1d7aa7e Excessive safety
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
ade7526f5f Remove the need for LegacyUtils
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
a7b1700d42 Better variable naming
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
c0b8c53e69 Attempt to sort out copyright headers
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
e86fbc697f Fix formatting
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-08 16:25:09 +00:00
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
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
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
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
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
787c5a515f Merge pull request #407 from AshtakaOOf/readme 2022-11-08 17:25:19 +05:30
ce2df4b36f chore(readme): Specify openSUSE Tumbleweed
Signed-off-by: txtsd <code@ihavea.quest>
2022-11-08 17:24:00 +05:30
fcb9733df0 Merge pull request #392 from PrismLauncher/max_ram_logic 2022-11-08 12:23:24 +05:30
245928a064 Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-07 20:33:09 +01:00
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
380e76a2e3 Add Tumbleweed
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-07 17:14:16 +01:00
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
d558ff305a Merge pull request #411 from TheLastRar/configurationless-install
Fix: Configuration-less config for Qt Install
2022-11-07 13:30:39 +01:00
89aaac3a70 Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-06 21:56:02 +01:00
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
16e3b786fc Implement Scrumplex's suggestions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-06 10:09:06 +00:00
126bbd67f7 Merge pull request #405 from AshtakaOOf/spooky 2022-11-06 07:27:39 +01:00
38e1d44dbb Update README.md
Add copr

Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-06 03:42:51 +01:00
9fb80a2687 Merge pull request #242 from marcelohdez/more-copy-options 2022-11-06 01:10:24 +01:00
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
4708ce4226 refactor: rename halloween cats to -spooky
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-06 00:47:33 +01:00
a0580946dc fix: allow -ween variants for all cats
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-06 00:04:43 +01:00
e68fd7c1e3 Merge pull request #383 from leo78913/toolbar-lock 2022-11-06 00:00:47 +01:00
369419870e add: Spooky Rory
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-11-05 23:55:43 +01:00
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
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
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
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
3df31579a1 fix: @timoreo22
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-05 22:31:38 +08:00
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
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
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
82256a2fe8 Merge pull request #400 from DioEgizio/bump-6.0 2022-11-05 14:35:21 +01:00
016b3448e8 chore: bump to 6.0
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-11-05 13:34:02 +01:00
2dde26e485 Merge pull request #399 from ryanccn/readme-adaptive-logo-fix 2022-11-05 13:07:53 +01:00
2999afe781 fix: width="50%"
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-11-05 19:20:08 +08:00
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
4af22d663a Merge pull request #229 from ryanccn/macos-drag-n-drop 2022-11-05 11:17:21 +01:00
ba8322aa5c Merge pull request #396 from leozamboni/develop 2022-11-05 11:17:13 +01:00
e4bd82190a Merge pull request #149 from TayouVR/better-custom-themes 2022-11-05 11:16:41 +01:00
695734636f Merge pull request #294 from piperswe/add-snapcraft-yml 2022-11-05 11:09:51 +01:00
bdac2a5f4d fix: add missing newline
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-05 11:09:35 +01:00
f8ea6212c7 fix: fix icon install path
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-05 10:42:44 +01:00
5e9b26dbef Merge pull request #366 from TheLastRar/MSVC-Build 2022-11-04 23:49:54 +01:00
67c99369ab fix: use KDEInstallDirs for manpage
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-04 23:43:18 +01:00
d35c2db41e fix: separate types of std::string in Packwiz
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-04 16:53:25 -03:00
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
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
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
76050880f1 fix: use unicode variant for marking '.index' hidden
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-11-04 16:53:21 -03:00
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
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
79a728d7d2 Fix: Conflicting types for hoedown functions
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:39 +00:00
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
3f75e1cb1d CI: Build MSVC Legacy as 32bit
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:39 +00:00
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
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
f8ad1a052f CMake: Support multi-configuration generators
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:38 +00:00
372ce588cd CI: Add MSVC Builds
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:38 +00:00
12632ec404 CMake: Build flags for MSVC
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:37 +00:00
e777c26a14 CMake: Add fallback to bundled ECM
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:37 +00:00
1d38248194 Libraries: Add ECM
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:36 +00:00
d52868c6c5 CI: Exclude zlib tests
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:36 +00:00
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
653a953d2f CMake: Add zlib
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-04 18:11:35 +00:00
9f5537d936 feat: spooky cat for halloween
Signed-off-by: leozamboni <leonardonunes169@gmail.com>
2022-11-04 15:09:57 -03:00
21a7af535c Merge branch 'develop' into macos-drag-n-drop 2022-11-04 18:30:42 +01:00
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
8f045af867 Merge pull request #374 from flowln/fix_lto 2022-11-04 15:39:41 +05:30
6d4efc0443 Libraries: Add zlib
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-03 21:35:28 +00:00
e2e6d00064 CMake: Remove CMP0020 OLD
Signed-off-by: TheLastRar <TheLastRar@users.noreply.github.com>
2022-11-03 21:35:28 +00:00
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
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
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
2cf4d5f8ec Merge pull request #389 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2022-11-03 21:58:29 +01:00
c6ab9718ae chore(deps): update hendrikmuhs/ccache-action action to v1.2.5 2022-11-03 19:50:27 +00:00
3e3ef03855 Merge pull request #379 from TheLastRar/win-stacksize 2022-11-03 10:52:36 +05:30
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
e9bfd43ff7 added requested changes
Signed-off-by: Tayou <tayou@gmx.net>
2022-11-03 05:04:36 +01:00
2958ffa73f Merge pull request #382 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2022-11-02 16:50:47 -07:00
3d11d044d2 add an option to lock the toolbars
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-11-02 20:33:02 -03:00
7eb0b1c69a chore(deps): update hendrikmuhs/ccache-action action to v1.2.4 2022-11-02 23:02:32 +00:00
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
cb796dbdfb Remove unnecessary block
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 16:38:32 +00:00
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
094b57bb23 Merge pull request #372 from santiagocezar/rory 2022-11-02 12:06:08 +01:00
9ca4f19aea remove logcat
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-02 07:45:43 -03:00
a29d88c313 Even more fixes
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 09:59:58 +00:00
a1ed8154f7 Another fix
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 09:31:39 +00:00
6c45a990ef A good use of auto
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 09:13:44 +00:00
8dfa3393dc Formatting and forward-declaration
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-02 08:43:46 +00:00
d12323396f Merge pull request #346 from ryanccn/more-user-friendly-java-warning-text-ahaha 2022-11-02 10:38:26 +05:30
48d34741f3 keyboard navigation is important
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-01 22:53:45 -03:00
76203018e9 forgot the qrc
Signed-off-by: Santiago Cézar <santiagocezar2013@gmail.com>
2022-11-01 20:21:34 -03:00
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
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
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
f6a3fa55b1 Merge pull request #368 from PrismLauncher/credits 2022-11-01 21:56:26 +01:00
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
5485c5aaed Merge pull request #365 from Scrumplex/fix-logo 2022-11-01 20:34:23 +01:00
afcdf4b9cf condensed icon theme code
Signed-off-by: Tayou <tayou@gmx.net>
2022-11-01 20:18:07 +01:00
a3f5ea3598 added suggested changes
Signed-off-by: Tayou <tayou@gmx.net>
2022-11-01 20:17:53 +01:00
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
576867605d Add another fallback
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 18:40:12 +00:00
d1626d20bd Slight cleanup
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 18:30:11 +00:00
c890aa18f7 Only select correct mod
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 18:25:54 +00:00
6c7d040439 Hacky tweaks
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 18:12:27 +00:00
d03ae34b61 Auto-select first result
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 17:19:54 +00:00
b9547adce7 Add more license headers
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 17:02:24 +00:00
7f32c6464d Initial better mod browser link implementation
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
2022-11-01 16:58:22 +00:00
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
b142e2a7a7 fix: fix logo name
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-11-01 13:59:11 +01:00
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
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
fda2c116be code quality cleanup
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
2022-11-01 04:24:11 -07:00
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
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
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
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
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
04b39294ba Merge pull request #333 from flowln/fix_atl_packs_post_modpack_update 2022-11-01 09:56:16 +01:00
3a446c410c Merge pull request #329 from flowln/only_safe_workarounds 2022-11-01 09:55:43 +01:00
35edea2141 Merge pull request #359 from Chrono-byte/develop 2022-11-01 08:17:14 +01:00
ce1a4857cc Merge branch 'PrismLauncher:develop' into develop 2022-10-31 20:06:59 -04:00
dfdf739282 remove one space
Signed-off-by: Chrono <me@disilla.org>
2022-10-31 19:44:55 -04:00
7086b1e65c Merge pull request #351 from Scrumplex/fix-trash 2022-10-31 22:56:07 +01:00
f2d445d27b fix: fix undo key sequence
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-31 11:34:48 +01:00
29d362a6e0 fix: do not trash instances in Flatpak
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-31 11:34:46 +01:00
c8adc4e356 Merge pull request #354 from Scrumplex/translations-maybe
Improve display names of certain languages
2022-10-31 08:43:43 +01:00
8467daa0ec oop
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-31 14:58:38 +08:00
13e14b712e Merge pull request #352 from TheLastRar/Win-setDarkWinTitlebar-10OrGreater 2022-10-31 07:51:13 +01:00
27dfe30fe6 Update VerifyJavaInstall.cpp
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-31 14:44:11 +08:00
d89a541a8d Merge pull request #353 from FayneAldan/accounts-consistency 2022-10-30 16:52:36 -07:00
42350e689d chore: improve display names of certain languages
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-30 23:50:57 +01:00
b7d5fee995 Change Profiles to Accounts for consistency
Signed-off-by: Fayne Aldan <FayneAldan@gmail.com>
2022-10-30 15:56:45 -06:00
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
b4be28b9bb fix: fix disabled trash undo action
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-30 18:37:06 +01:00
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
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
87b0d3fe11 Merge pull request #342 from fn2006/prism-svg-fix 2022-10-30 01:51:14 +05:30
98891a036d use existing variables
Signed-off-by: fn2006 <usernamefn2006alreadyused@protonmail.com>
2022-10-29 17:35:37 +01:00
b142a6da5b fix hardcoded svg
Signed-off-by: fn2006 <usernamefn2006alreadyused@protonmail.com>
2022-10-29 16:42:37 +01:00
1c0139c5f4 Merge pull request #340 from PrismLauncher/repology 2022-10-29 16:16:12 +02:00
1b7ae4321d Merge pull request #338 from Scrumplex/fix-credits-1 2022-10-29 16:15:34 +02:00
7f991ed897 feat: Add Repology badge to README
Signed-off-by: txtsd <code@ihavea.quest>
2022-10-29 19:37:00 +05:30
5ed7eb9d53 chore: update credits
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-29 13:12:51 +02:00
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
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
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
177f17450a Merge pull request #173 from Scrumplex/fix-icons 2022-10-29 00:35:48 +02:00
150a3adaaf Merge pull request #267 from leo78913/toolbar-icons 2022-10-28 21:28:44 +02:00
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
4500e345b3 Merge branch 'PrismLauncher:develop' into toolbar-icons 2022-10-28 15:46:02 -03:00
e885f3c26a Merge pull request #65 from he3als/develop 2022-10-28 18:43:30 +02:00
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
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
f229574758 Merge pull request #322 from DioEgizio/64bit-it 2022-10-28 18:43:32 +05:30
7b446dd30f Merge pull request #319 from Scrumplex/fix-avoid-mr-segfault 2022-10-28 13:40:52 +02:00
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
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
93894f62ff fix: avoid segfault for unexpected API reponse
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-28 00:08:15 +02:00
2051de51b5 Merge pull request #318 from TheLastRar/manifest-platform
Fix: Don't specify x86 in manifest
2022-10-27 22:53:15 +02:00
2ba3de79d8 chore: add comment about copy bug
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-27 21:23:17 +02:00
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
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
90714a93f3 Merge pull request #315 from AshtakaOOf/develop
Remove appveyor from README
2022-10-27 13:15:53 -03:00
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
aacf7938ae Add CI build for Snap
Signed-off-by: Piper McCorkle <contact@piperswe.me>
2022-10-26 09:25:58 -05:00
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
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
610b971117 Improve a bit README.md (#305)
Add Open Collective and fix some stuff.
2022-10-25 21:09:45 -03:00
318f657c31 Merge pull request #231 from tobimori/patch-1 2022-10-25 20:15:31 +02:00
482d3a1d76 update macos copyright year
Signed-off-by: tobimori <tobias@moeritz.cc>
2022-10-25 15:24:41 +02:00
b516dd970f Merge pull request #206 from flowln/changelog_height_fix 2022-10-25 11:29:14 +02:00
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
385c452ddf remove checkBool function, add updateSelectAllCheckbox function
Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-24 20:49:40 -04:00
a89df42561 Simplify bool check in CopyInstanceDialog.cpp
Signed-off-by: Marcelo Hernandez <marcelohdez.inq@gmail.com>
2022-10-24 19:31:40 -04:00
08cd5d52fa Merge pull request #283 from flowln/fix_abort_on_autosearch 2022-10-24 23:00:02 +02:00
d0e668e1d8 Merge pull request #211 from Hibiii/show-instace-arg 2022-10-24 22:51:30 +02:00
eeb95f89e1 add .mrpack mime type
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-25 00:12:27 +08:00
e4e0c27e1c Merge pull request #281 from Scrumplex/fix-nsis-displayname 2022-10-24 11:09:23 -03:00
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
74b98af8e5 fix: use display name in NSIS
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-24 12:43:13 +02:00
6a474a0125 fix: update icon generate script
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-24 11:18:53 +02:00
224304813a Merge pull request #274 from Protrikk/patch-1 2022-10-24 11:13:42 +02:00
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
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
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
43bf601f12 add icons to the instance toolbar
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-10-23 20:04:19 -03:00
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
7f441f5b87 Merge pull request #228 from bensuperpc/change_cast 2022-10-23 14:28:33 -03:00
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
4777a45722 Fix new flat white icons
Signed-off-by: he3als <65787561+he3als@users.noreply.github.com>
2022-10-23 14:32:35 +01:00
29e6e170cc Merge pull request #240 from jn64/fix/version-label-width 2022-10-23 02:07:29 +02:00
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
8b28ed67ae Merge pull request #234 from AliceDTRH/fix/dedupejava 2022-10-22 13:14:26 -03:00
f35a30d371 oops
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-22 23:47:53 +08:00
1a8de111a3 add linux support
Signed-off-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
2022-10-22 23:46:53 +08:00
9bb62e1bba Merge pull request #233 from jamierocks/atl-fix-aborting-installs 2022-10-22 12:19:58 -03:00
b2789fef0f Use correct variable for Windows
Signed-off-by: AliceDTRH <57547425+AliceDTRH@users.noreply.github.com>
2022-10-22 17:19:34 +02:00
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: d87f743a2bd2fac761b94de77ed7255d7a983f03
I, he3als <65787561+he3als@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 92dfd659f1a3e11accdbf0ebbdc7cb91f74d9a21
I, he3als <65787561+he3als@users.noreply.github.com>, hereby add my Signed-off-by to this commit: a6e65dfc7a7e8080297b59ecf322b788d1c9bad2
I, he3als <65787561+he3als@users.noreply.github.com>, hereby add my Signed-off-by to this commit: 99e1c13e80d12764f57a993661656d9ed7de27bb

Signed-off-by: he3als <65787561+he3als@users.noreply.github.com>
2022-10-22 16:14:50 +01:00
99e1c13e80 fix: add flat_white to code 2022-10-22 15:50:06 +01:00
a6e65dfc7a Add new flat white icons 2022-10-22 15:40:39 +01:00
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
89fd84d916 Merge branch 'PrismLauncher:develop' into develop 2022-10-22 15:30:40 +01:00
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
81f1305270 Merge pull request #215 from forkiesassds/develop 2022-10-22 10:48:00 -03:00
2ec4310104 Merge pull request #230 from Scrumplex/add-pr-template 2022-10-22 15:32:00 +02:00
24e4db676a Merge pull request #224 from jamierocks/atl-abort-close-optional-mods-dialog 2022-10-22 15:31:53 +02:00
6e21a9829d Merge pull request #225 from Scrumplex/fix-segfault-fileresolver 2022-10-22 15:31:46 +02:00
4e99e10cbd Merge pull request #218 from getchoo/change-jars-path 2022-10-22 10:18:58 -03:00
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
1dad35ca76 update macos plist contents (fixes #132)
Signed-off-by: Tobias Möritz <tobias@moeritz.cc>
2022-10-22 15:00:52 +02:00
8b3093e758 chore: add PR template
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-22 14:59:57 +02:00
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
970e4b020e fix: fix segfault when resolving Flame resources
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-22 14:11:51 +02:00
a4f4f2891c DCO Remediation Commit for a6b13487
I, Jamie Mansfield <jmansfield@cadixdev.org>, hereby add my
Signed-off-by to this commit: a6b13487f0e27c8bea1917720a0c5c1eb1eb206c

Signed-off-by: Jamie Mansfield <jmansfield@cadixdev.org>
2022-10-22 12:58:56 +01:00
a6b13487f0 ATLauncher: Abort install if optional mods dialog is closed
This matches the behaviour of ATLauncher.
2022-10-22 12:35:34 +01:00
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
54c26b05fa Merge pull request #185 from flowln/fix_blocked_mods_crash 2022-10-22 12:44:20 +02:00
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
2592c69021 semicolon fail
i was off by one key :(

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

Signed-off-by: Hibi <69405847+Hibiii@users.noreply.github.com>
2022-10-21 17:59:35 -03:00
aefb8b353e Merge pull request #187 from leo78913/menu-icons 2022-10-21 22:39:35 +02:00
5b75869c0b Add --show to manual page 2022-10-21 16:10:03 -03:00
1288b92615 Add argument to show instance window 2022-10-21 15:40:28 -03:00
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
ccf7d1e0c4 material design icons
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-10-21 14:04:04 -03:00
e4b5cd23e6 the trashcan icons dont look like trash now
Signed-off-by: leo78913 <leo3758@riseup.net>
2022-10-21 13:49:31 -03:00
819296cc9c Merge pull request #198 from PrismLauncher/renovate/hendrikmuhs-ccache-action-1.x 2022-10-21 22:13:09 +05:30
67c7d80f41 Merge pull request #197 from PrismLauncher/renovate/actions-cache-3.x 2022-10-21 22:12:48 +05:30
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
cbaf71f581 Merge pull request #201 from Scrumplex/add-netlify-sponsor 2022-10-21 17:37:18 +02:00
f118c602e6 Merge pull request #202 from Heath123/patch-1 2022-10-21 17:37:09 +02:00
ff2f40f5e1 Fix typo
Signed-off-by: circuit10 <heath.mitchell27@gmail.com>
2022-10-21 16:28:04 +01:00
9758c9b2a2 chore: add Netlify as sponsor
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-21 17:04:21 +02:00
09e4e100a2 chore(deps): update hendrikmuhs/ccache-action action to v1.2.3 2022-10-21 14:55:49 +00:00
bdd5c180d3 chore(deps): update actions/cache action to v3.0.11 2022-10-21 14:55:42 +00:00
749b085063 Merge pull request #196 from PrismLauncher/renovate/configure 2022-10-21 16:55:17 +02:00
c5a796ad8e chore(deps): add renovate.json 2022-10-21 14:43:02 +00:00
12d8409e65 Merge pull request #39 from Sebbl0508/mod_dialog_fontsize 2022-10-21 15:25:28 +02:00
8db89b4cfb Merge branch 'PrismLauncher:develop' into menu-icons 2022-10-20 17:54:43 -03:00
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
01b90809e8 fix: memory leak when finishing blocked mods job
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-20 16:55:22 -03:00
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
5e86a34925 Merge pull request #184 from Chrono-byte/develop 2022-10-20 21:52:24 +02:00
ece206b81c Remove erroneous space
Signed-off-by: Chrono-byte <me@disilla.org>
2022-10-20 15:22:04 -04:00
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
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
a9d4370ad4 Merge pull request #47 from TheOPtimal/develop 2022-10-20 10:01:46 +02:00
8a0318c779 Merge pull request #119 from Scrumplex/update-readme-sponsors 2022-10-20 09:59:00 +02:00
8e754d9a56 fix: update README
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-20 09:54:23 +02:00
0e209dcb02 Merge pull request #148 from ZombieNub/prismlauncher-rename 2022-10-20 09:44:25 +02:00
6f2d6425a2 update meta to not break flatpak
Signed-off-by: Zeke <ezekielsmith@protonmail.com>
2022-10-20 16:54:57 +10:00
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
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
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
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
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
a99b9e80b8 Remove PolyMC's OpenCollective
Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-10-20 09:13:37 +04:00
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
ae910eea62 Change issue templates to Prism branding
Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-10-20 09:13:37 +04:00
d35920f356 Merge pull request #123 from MMK21Hub/patch-1 2022-10-19 22:00:23 -03:00
c29e7477f0 Merge branch 'develop' into prismlauncher-rename
Signed-off-by: IroncladLandship <jack.huffstutler@gmail.com>
2022-10-19 19:21:08 -05:00
86bbc7939c Merge pull request #100 from TheEvilSkeleton/improve-approachability 2022-10-19 21:15:37 -03:00
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
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
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
297c593edd Improve approachability
Signed-off-by: TheEvilSkeleton <theevilskeleton@riseup.net>
2022-10-19 15:10:35 -04:00
6439ef11aa Fix incorrect release titles
Signed-off-by: MMK21Hub <KAGfan2018@outlook.com>
2022-10-19 19:21:48 +01:00
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
50bbf2aacc fix text clipping
Signed-off-by: Sebastian Rüth <sebastian.rueth@protonmail.com>
2022-10-19 20:12:50 +02:00
41032aaac2 Merge pull request #110 from Scrumplex/fix-nsis-shortcut 2022-10-19 14:28:36 +02:00
4e08f28246 Merge pull request #31 from flowln/who_needs_webview 2022-10-19 14:28:29 +02:00
46c57e120f Merge pull request #27 from flowln/ftb_install_improve 2022-10-19 13:51:35 +02:00
6b52ee61ae Merge pull request #92 from Scrumplex/new-logo 2022-10-19 13:41:56 +02:00
61fbc5a791 refactor: replace with new logo
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-19 13:08:23 +02:00
22365205f9 fix: use display name for NSIS
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-19 12:17:06 +02:00
c6515c1dad Merge pull request #54 from Samisafool/develop 2022-10-19 12:13:13 +02:00
8201d1df02 Rename
Signed-off-by: Samisafool <thenerdiestguy@gmail.com>
2022-10-19 15:02:43 +05:30
ddf168c536 Merge pull request #75 from Gideon9212/develop 2022-10-19 06:27:09 +02:00
c9f81f56e9 Fix banner
Removed boosted URL for plain

Signed-off-by: Gideon9212 <gideon_gallagher@zoho.com>
2022-10-18 18:35:03 -07:00
570264e1e9 Merge branch 'develop' into develop
Signed-off-by: Gideon9212 <gideon_gallagher@zoho.com>
2022-10-18 17:28:42 -07:00
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
23a2960aa3 Merge pull request #60 from jitterdev/develop 2022-10-18 18:53:30 -03:00
888a87463e Add fallback for multimc.cfg
Signed-off-by: Fayne Aldan <FayneAldan@gmail.com>
2022-10-18 14:40:34 -06:00
2ebaf46095 Merge pull request #82 from flowln/i_broke_something_again 2022-10-18 22:15:08 +02:00
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
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
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
fb4cf0b75d Merge pull request #55 from flowln/config_add_fallback 2022-10-18 19:50:34 +02:00
5584884fe6 Merge pull request #68 from nightsnowlinouo/develop 2022-10-18 19:43:02 +02:00
3bb1068ef0 Merge pull request #59 from CutestNekoAqua/bug-35 2022-10-18 19:26:57 +02:00
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
92dfd659f1 Fix .QRC file for flat white icons 2022-10-18 17:54:26 +01:00
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
aec3e7b0fc correct non-proper noun
Signed-off-by: Jitter <64605731+jitterdev@users.noreply.github.com>
2022-10-18 11:14:27 -05:00
243600b75b Merge pull request #61 from pog5/develop 2022-10-18 18:03:34 +02:00
3d89d126d0 PlaceholderMC => PrismLauncher
Small Correction

Signed-off-by: Nightly <62222436+pog5@users.noreply.github.com>
2022-10-18 15:52:32 +00:00
54281e53a1 Update README.md
Signed-off-by: Jitter <64605731+jitterdev@users.noreply.github.com>
2022-10-18 10:35:00 -05:00
6befd2be81 Update README.md
Signed-off-by: Jitter <64605731+jitterdev@users.noreply.github.com>
2022-10-18 10:34:27 -05:00
1f0ca9ed92 Update README.md
Signed-off-by: Jitter <64605731+jitterdev@users.noreply.github.com>
2022-10-18 10:34:11 -05:00
f3db9c3920 Merge pull request #48 from flowln/fix_nbt 2022-10-18 17:31:46 +02:00
83ceb26151 Streamline Button changes to improve source readability. 2022-10-18 17:28:23 +02:00
32cdfb871c fix: add fallback for polymc.cfg
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-18 12:22:42 -03:00
801e7da5ee feat: allow specifying fallbacks to INI files
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-18 12:22:42 -03:00
2cf1ab7ec5 Merge pull request #43 from SSUPII/develop 2022-10-18 11:31:38 -03:00
d049c1afaf chore: update flake
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 16:28:30 +02:00
9f45389bc1 Merge pull request #45 from NotNite/update-readme 2022-10-18 11:23:10 -03:00
d875481969 fix: update libnbtplusplus submodule's URL
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-18 11:11:34 -03:00
17a1e1245c Updated HTML tags to Markdown
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 16:04:28 +02:00
06d28c3eec Updated project naming
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 15:57:43 +02:00
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
421522a61a Added further clarifications
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 15:52:00 +02:00
f3b29d67f4 Merge branch 'PrismLauncher:develop' into develop 2022-10-18 15:39:29 +02:00
2ee5c6b2a1 Totally skipped a typo
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 15:38:32 +02:00
5083772c6f Fixed markdown errors
Signed-off-by: Sergio <42090377+SSUPII@users.noreply.github.com>
2022-10-18 15:37:11 +02:00
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
3405fd91c6 Merge pull request #33 from DioEgizio/remove-useless-actions 2022-10-18 15:31:32 +02:00
194822f11e Merge pull request #28 from flowln/fix_copy 2022-10-18 15:27:53 +02:00
98963d4cdf Merge pull request #29 from Scrumplex/feat-clear-metadata 2022-10-18 15:25:56 +02:00
804ef36b20 Merge pull request #26 from Scrumplex/armhf 2022-10-18 15:24:33 +02:00
3c6ff8fddf Merge pull request #36 from DioEgizio/fix-copying 2022-10-18 15:05:31 +02:00
511893d535 update COPYING
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-18 14:47:20 +02:00
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
2b7b9a2abb Merge pull request #25 from PlaceholderMC/fix-data-path
Fix Data path
2022-10-18 14:05:22 +02:00
6db3f68ae1 refactor: use correct data path
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 13:58:50 +02:00
3773f2e7a5 Merge pull request #23 from PlaceholderMC/new-cf-key 2022-10-18 13:29:36 +02:00
1f8bffc15a fix: new CurseForge key
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 13:24:57 +02:00
afaef4e83b Merge pull request #13 from PlaceholderMC/rebrand 2022-10-18 13:05:24 +02:00
b746f723cb fix: add Prism copyright header
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 13:01:32 +02:00
cfaf44f57b fix: add sparkle public key
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 12:49:08 +02:00
eed541201e fix: add new MSA client id
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 10:37:35 +02:00
a8bcb85f7b fix(actions): change to PrismLauncher
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 10:13:44 +02:00
981e9cf290 Merge pull request #14 from leumasme/develop 2022-10-18 13:27:10 +05:30
3ac398ac49 fix: use display name in code
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 09:50:27 +02:00
2d0728395f Update README.md discord vanity link 2022-10-18 09:44:50 +02:00
722194405a refactor: initial rebrand
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-18 09:37:59 +02:00
0868a5e534 Merge pull request #11 from AshtakaOOf/temp-readme
More readable README.md :)
2022-10-18 01:42:54 +02:00
a86b9c82ce Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-10-18 01:38:49 +02:00
f8642548c8 Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-10-18 01:35:30 +02:00
27873f7ed4 Update README.md
Signed-off-by: Adrien <66513643+AshtakaOOf@users.noreply.github.com>
2022-10-18 01:27:51 +02:00
b3eda6bcbb Merge pull request #5 from AshtakaOOf/AshtakaOOf-readme
Temporary README.md
2022-10-17 23:08:21 +02:00
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
aecd158d3c Merge pull request #1208 from DioEgizio/fix-unused-libs
Removes `classparser` and `xz-embedded`
2022-10-16 10:41:43 -03:00
87d35f0d16 fix: remove some unused libs
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-15 20:16:15 +02:00
c089f9b59f Merge pull request #1203 from DioEgizio/macos-legacy 2022-10-15 15:24:30 +02:00
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
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
924c1634d3 Merge pull request #1194 from flowln/fix_opted_out_on_any_filter 2022-10-15 13:18:35 +02:00
03d077e915 fix(nix): add ghc_filesystem dependency
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-15 13:13:56 +02:00
303628bb05 refactor: support system ghc-filesystem
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-15 13:13:38 +02:00
3b92ec8e82 chore: clang-format RuntimeContext
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-15 12:43:15 +02:00
545944cb0d refactor: support armhf
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-15 12:41:16 +02:00
c90a88b6b6 fix: correct ftb legacy too
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-14 12:18:06 -03:00
89e45a61b3 fix: workaround ghc::filesystem bug
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-10-14 16:45:13 +02:00
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
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
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
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
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
dfa220ef02 fix: issues with aborts (again)
i hate it

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-13 15:10:35 -03:00
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
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
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
19ee736e1d Merge pull request #1190 from TayouVR/merged-launch-button1 2022-10-11 16:21:41 -03:00
fda3f1352e feat: add image support for the news reader :^)
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-11 16:11:08 -03:00
d194b02e28 fix: prevent images overriding content when changing pages
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-11 15:51:54 -03:00
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
93a2e0f777 Merge Launch Buttons
Signed-off-by: Tayou <tayou@gmx.net>
2022-10-10 23:23:06 +02:00
71f3c6b461 feat: add clear metadata action
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-10 12:48:25 +02:00
aabcca5059 Merge pull request #1175 from Ozynt/patch-1 2022-10-09 20:20:05 +02:00
7e67fd8c79 Update LaunchController.cpp
Signed-off-by: Ozynt <104643560+Ozynt@users.noreply.github.com>
2022-10-09 13:20:50 +02:00
fecf1ffcb9 Update LaunchController.cpp
Signed-off-by: Ozynt <104643560+Ozynt@users.noreply.github.com>
2022-10-09 13:19:38 +02:00
fafc9cf9ca Merge pull request #1033 from Scrumplex/multi-arch-support 2022-10-08 20:12:40 +02:00
3111e6a721 chore: add missing license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-10-08 20:12:07 +02:00
e436f471a0 Merge pull request #1177 from DioEgizio/codeql
bye LGTM 👋
2022-10-08 15:04:23 -03:00
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
ebee50eedc Improve default light and dark themes (#1174) 2022-10-08 14:33:24 -03:00
e0ef09dfe1 Merge pull request #1183 from Scrumplex/fix-capabilities-first-run 2022-10-08 14:29:14 -03:00
d7992ab29d feat: add image support for FTB packs
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-08 14:12:05 -03:00
60f19f305e feat: add image support for modrinth modpack pages
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-08 14:12:03 -03:00
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
db158a5735 feat: add image support for mod pages
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-10-08 14:11:20 -03:00
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
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
787234a53a Merge pull request #1163 from flowln/fix_list_icons 2022-10-08 12:12:38 +02:00
fc3a64056c Merge pull request #1154 from Scrumplex/epic-formatting-codes 2022-10-08 12:12:26 +02:00
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
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
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
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
e3e9e39498 Merge pull request #1171 from vedantmgoyal2009/patch-1 2022-10-02 15:08:59 +02:00
f315025a8d Merge pull request #1167 from Scrumplex/epic-commandline 2022-10-02 00:41:34 +05:30
8e43d97133 Microsoft account only
Signed-off-by: stoltsvensk <104643560+stoltsvensk@users.noreply.github.com>
2022-10-01 16:47:23 +02:00
c97a47dc62 Merge pull request #1172 from Scrumplex/fix-includes 2022-09-30 18:08:45 -03:00
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
0dca9cb6b8 Merge pull request #1162 from Trial97/feature/Replace-toml-library 2022-09-30 19:44:45 +02:00
be3d780720 Update winget.yml
Signed-off-by: Vedant <83997633+vedantmgoyal2009@users.noreply.github.com>
2022-09-30 22:51:47 +05:30
0f59a1dde1 fix(nix): add tomlplusplus
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 15:42:45 +02:00
7c6bb80cee fix: move toml++ find call
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:46:01 +02:00
62841c5b23 fix: pin tomlplusplus to latest release
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:44:28 +02:00
aad4f8d1f7 fix: update Git modules
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:44:28 +02:00
11c44c676c fix: remove unused MACOS_HINT
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:28:46 +02:00
370c3aa598 Merge pull request #894 from flowln/update_from_external_source
epic PR
2022-09-26 08:25:12 -03:00
1cdadafdf8 refactor: use QCommandLineParser instead
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-26 13:21:27 +02:00
dd6f670dec fix: Fixed memory leak
Signed-off-by: timoreo <contact@timoreo.fr>
2022-09-26 11:50:55 +02:00
9ff364b0d3 huge nit: added const refs, everywhere
Signed-off-by: timoreo <contact@timoreo.fr>
2022-09-26 11:50:31 +02:00
58a5331f7b Merge pull request #1164 from Scrumplex/fix-sort-languages 2022-09-25 19:50:55 +02:00
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
c01b475cbf Merge pull request #1165 from ErogigGit/develop 2022-09-25 09:33:29 -03:00
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: 8a4f1c66f83a339d33ab0ba0076d8c1141055067

Signed-off-by: ErogigGit <eric.hagerstrand@gmail.com>
2022-09-24 23:31:30 +02:00
a1800ec23f Prefer the system tomlplusplus
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2022-09-25 00:20:01 +03:00
8a4f1c66f8 Allow double clicking to mark for dowload
Signed-off-by: Erogig <erogigabyte@gmail.com>
2022-09-24 22:37:51 +02:00
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
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
600c49f7f0 Replaced tomlc99 with tomlplusplus
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2022-09-24 00:10:27 +03:00
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
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
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
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
777ab3416f feat: also format resource/texture pack names
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-21 15:00:28 +02:00
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
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
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
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
be8c6f218c refactor: setAbortStatus -> setAbortable
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:10 -03:00
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
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
2dd372600c fix: some abort-related issues
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
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
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
87002fb8f8 fix: hook up setAbortStatus in instance import tasks
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
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
6541570969 fix: simplify abort handling and add missing emits
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:09 -03:00
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
8c0816c166 feat: add override awareness to CF modpack updating
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
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
3a9d58e31c feat: add override handling in modrinth pack update
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
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
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
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
795d6f35ee feat: add curseforge modpack updating
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:08 -03:00
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
72d2ca234e refactor: move flame modpack import to separate file
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:36:07 -03:00
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
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
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
4441b37338 refactor: move modrinth modpack import to separate file
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-20 18:32:36 -03:00
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
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
98b6f90172 fix: add more legacy architectures
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 16:01:08 +02:00
7e280de361 refactor: drop 64-bit check
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 16:01:08 +02:00
7bd8bd13fe feat: support multiarch system classifiers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 16:01:06 +02:00
09e85e948c refactor: introduce RuntimeContext
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 15:59:43 +02:00
9ec1c00887 fix: register JavaRealArchitecture for MinecraftInstance
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 15:58:56 +02:00
c6bcb6228b Merge pull request #1108 from Scrumplex/better_texture_packs 2022-09-20 13:28:33 +02:00
a24d589845 fix: ensure all resource folders exist
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 10:39:05 +02:00
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
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
aad6f74db6 fix: tests
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 10:26:15 +02:00
07dcefabcb feat: add texture pack parsing
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-20 10:26:15 +02:00
40c68595d7 Merge pull request #1150 from flowln/fix_crash_on_game_quit 2022-09-20 09:41:59 +05:30
fe9a4fece4 Merge pull request #1142 from flowln/better_fs 2022-09-20 09:00:19 +05:30
098327f128 Merge pull request #903 from jopejoe1/demo-launch 2022-09-18 14:41:25 +02:00
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
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
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
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
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
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
11216d200c change: move demo action to "Play offline" menu
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-15 18:44:18 -03:00
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
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
29dcb9d274 Added Launch Demo button.
Signed-off-by: jopejoe1 <johannes@joens.email>
2022-09-15 18:44:18 -03:00
8674ac4f68 Merge pull request #1146 from Scrumplex/fix-launch-rd 2022-09-15 17:55:08 -03:00
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
1ca2be0039 Merge pull request #982 from DavidoTek/windarkmode2 2022-09-14 13:17:17 +02:00
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
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
ee0fb2d0e0 fix: use std::wstring for Windows filenames
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:24 -03:00
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
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
1cf949226e refactor: use std::filesystem for overrides
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:23 -03:00
be3fae6511 refactor: use std::filesystem for path deletion
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:23 -03:00
5932f36285 refactor: use std::filesystem for file copy
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-12 13:07:23 -03:00
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
64a06b5ed6 Merge pull request #1123 from flowln/fix_abort_inst 2022-09-12 17:11:19 +05:30
69d18f17a5 fix(actions, win): only copy openssl libs on qt5 builds (#1130) 2022-09-12 07:57:18 -03:00
4c7d3a103c refactor: restructure tests
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-11 22:29:01 +02:00
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
4261dcff39 fix meta
Signed-off-by: dada513 <dada513@protonmail.com>
2022-09-11 10:45:42 +02:00
a091245793 fix: emit signals when aborting NetJob
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-10 09:10:16 -03:00
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
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
f65d506f26 Merge pull request #997 from flowln/fix_major_version_filter 2022-09-07 10:34:50 -03:00
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
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
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
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
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
3c0a6987cd Merge pull request #1113 from timoreo22/develop
Fix compilation warning due to uninitiated variables.
2022-09-06 18:50:46 -03:00
e37f70b9f7 Merge pull request #1114 from DioEgizio/bump-installqtaction-v3 2022-09-06 20:36:35 +05:30
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
4817f0312d Fixed up a warning
Signed-off-by: timoreo <contact@timoreo.fr>
2022-09-06 14:32:19 +02:00
b70a82c609 Merge pull request #1111 from PolyMC/revert-1067-classpath-epicness 2022-09-05 20:06:33 +02:00
25d1e0c4e6 Merge pull request #1107 from DioEgizio/smaller-about 2022-09-05 17:52:16 +02:00
8e3356f11a Merge pull request #1034 from Scrumplex/detect-performance-features 2022-09-05 17:45:17 +02:00
1b559c7776 Revert "Move classpath definition into NewLaunch itself"
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-09-05 17:37:10 +02:00
d5583f0f02 make the about dialog smaller
Signed-off-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com>
2022-09-04 14:32:33 +02:00
bedd3c50b6 fix: improve handling of unrecognized pack formats
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 15:05:23 -03:00
43a7af3f44 fix: removing mods with their metadata as well
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:23 -03:00
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
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
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
0331f5a1eb feat(tests): add tests for resource pack parsing
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:22 -03:00
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
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
dd9e30b24a feat: add resource icon to InfoFrame
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:21 -03:00
6a93688b2e fix: filtering in regex search in resource packs
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:21 -03:00
3ab17a97a8 fix: sorting by pack format
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-09-03 13:37:21 -03:00
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
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
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
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
2f167b1512 Merge pull request #1095 from flowln/ensure_file_path_in_override 2022-09-01 09:54:22 +02:00
ba3ac85356 Merge pull request #1067 from Scrumplex/classpath-epicness
Move classpath definition into NewLaunch itself
2022-08-31 18:28:29 -03:00
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
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
247f99ce2f feat(test): add more tests to Tasks
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
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
87a0482b8b refactor: make MultipleOptionsTask inherit from ConcurrentTask too
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
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
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
c410bb4ecb fix: 'succeeded while not running' spam in ConcurrentTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 16:29:01 -03:00
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
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
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
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
2186b134a4 fix: Mod type enum -> Resource type enum
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-28 14:47:52 -03:00
f371ec210c Merge pull request #1052 from flowln/resource_model 2022-08-28 16:52:53 +02:00
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
fbf542d205 Merge pull request #1087 from DioEgizio/fix-ftblegacy-url
fix: fix urls on ftb legacy
2022-08-24 20:37:07 -03:00
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
ddf1e1ccee fix: make FML libraries cache eternal
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-21 13:47:49 -03:00
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
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
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
0b81b283bf fix: LGTM warnings
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:49:56 -03:00
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
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
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
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
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
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
256f8094f5 refactor: make Resource Pack model inherit from ResourceFolderModel
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-20 10:47:11 -03:00
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
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
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
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
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
2dcff83be7 Merge pull request #1035 from Scrumplex/fix-coremods
Make Coremods / Mods seperation more clear
2022-08-20 10:15:50 -03:00
afb9ebcd99 fix: distinguish Coremods
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-20 12:53:13 +02:00
92d7e44525 Merge pull request #878 from flowln/lazy_settings 2022-08-20 12:50:56 +02:00
a517f442ea Merge pull request #1023 from flowln/better_shared_ptr 2022-08-20 12:50:50 +02:00
311758233b Merge pull request #1044 from flowln/better_orphan_fix 2022-08-20 12:50:43 +02:00
6e086eb808 Merge pull request #992 from Scrumplex/refactor-version 2022-08-20 12:50:25 +02:00
7e8644430c Merge pull request #1007 from Gingeh/disable-update-button 2022-08-20 12:50:19 +02:00
70a8f6743a Merge pull request #919 from kumquat-ir/download-all-blocked 2022-08-20 12:50:01 +02:00
69eafd0e11 Merge pull request #1058 from DioEgizio/fix-update-org.polymc.PolyMC.metainfo.xml.in 2022-08-19 20:34:11 +02:00
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
d5a2185030 Merge pull request #1068 from TayouVR/improvedWindowsJavaCheck 2022-08-19 14:26:36 +02:00
26f31e9288 use qEnvironmentVariable instead of qgetenv in JavaUtils
Signed-off-by: Tayou <tayou@gmx.net>
2022-08-18 23:59:35 +02:00
e654e66839 Merge pull request #1049 from flowln/waiting_for_news_-_- 2022-08-18 22:53:41 +02:00
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
01505910f4 refactor: move classpath definition into NewLaunch itself
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-18 18:14:01 +02:00
ab766a0598 Merge pull request #968 from magneticflux-/utf8-logging
Decode process lines as UTF-8
2022-08-18 10:44:01 +02:00
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
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
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
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
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
c375e7b4df Merge pull request #897 from jamierocks/atl-updating-initial 2022-08-11 08:50:05 +02:00
5d188c69ed Merge pull request #1039 from budak7273/fix-world-safety-nag-title-text 2022-08-11 07:33:13 +02:00
6bff7751d0 Merge pull request #909 from txtsd/markdownlint 2022-08-11 07:33:04 +02:00
1a5986abe0 Merge pull request #920 from flowln/metacache_fix 2022-08-11 07:32:43 +02:00
cebac3c10e Make new title strings translatable
Signed-off-by: Robb <computerguy440+gh@gmail.com>
2022-08-10 12:07:24 -05:00
a5da3db966 Merge pull request #1018 from Scrumplex/fix-infinite-auth-loop 2022-08-10 18:14:26 +02:00
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
94df4ceb36 Fix use of Qt 5.14 enum
Signed-off-by: Mitchell Skaggs <skaggsm333@gmail.com>
2022-08-09 00:17:53 -05:00
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
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
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
68f3f98bc3 feat: detect GameMode and MangoHud's presence
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-08 21:16:37 +02:00
f873cd5b1a refactor: store current capabilities
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-08 21:16:37 +02:00
fa8df286d9 chore(ci): Add markdownlint config to ignored paths
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:57 +05:30
76aa0c434a feat(markdown): Add markdownlint config
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:57 +05:30
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
9654728bfb chore(markdown): Align inline HTML correctly
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:57 +05:30
123d1864f4 chore(markdown): MD037 Spaces inside emphasis markers
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:57 +05:30
96a91e988d chore(markdown): MD010 Hard tabs
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:56 +05:30
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
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
56cad31a36 chore(markdown): MD034 Bare URL used
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 13:00:46 +05:30
3275bc4e93 chore(markdown): MD009 Trailing spaces
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:57:30 +05:30
8963378039 chore(markdown): MD007 Unordered list indentation
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:57:30 +05:30
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
06cc7e4ea0 chore(markdown): MD046 Code block style
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:55:11 +05:30
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
358f080c76 chore(markdown): MD012 Multiple consecutive blank lines
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-08-06 12:55:11 +05:30
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
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
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
d835e1d14e refactor: simplify smart pointers more
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-05 11:38:46 -03:00
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
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
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
8d6414d74a Merge pull request #1019 from Scrumplex/fix-openbsd-root
Add root path detection on OpenBSD
2022-08-04 21:47:35 +02:00
362ecdb583 refactor+fix: use QSharedPointer for shared_qobject_ptr
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-04 15:33:51 -03:00
058b9f9272 Merge pull request #994 from Scrumplex/fix-winget-releaser
Fix WinGet releaser
2022-08-04 16:20:23 +01:00
355762aa30 fix: emit abort in LaunchController
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-04 10:07:36 +02:00
be4fb65470 fix: Add root path detection on OpenBSD
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-08-03 21:14:32 +02:00
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
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
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
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
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
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
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
6fd3672618 Merge pull request #1012 from DioEgizio/patch-10
fix: remove iconfix from libraries/README.MD
2022-08-01 20:31:11 +02:00
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
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
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
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
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
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
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
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
6aaf1f4f21 feat: lazy-load CF mod descriptions
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
368a0ddd44 feat: add mod descriptions to CF mods
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
0808a10b7b feat: cache mod versions
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:30 -03:00
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
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
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
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
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
5936c7b65c change: preserve search term across different mod providers
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-08-01 07:33:29 -03:00
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
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
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
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
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
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
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
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
b15544c163 Trash instances instead of deleting (when possible) (#549)
Squashed because of :pofat: commit history
2022-07-30 14:42:33 -03:00
94a63e3859 Merge pull request #941 from Scrumplex/bump-cxx-standard
Bump to C++17
2022-07-30 17:10:59 +01:00
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
22f5011451 fix(winget): strictly match non-Legacy setup
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-29 16:25:12 +02:00
74120fe1f3 Merge pull request #699 from Scrumplex/resolve-ftb-mods-cf 2022-07-28 09:43:39 +02:00
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
336f1f4f50 Merge pull request #974 from flowln/accounts_qt6
Fix adding multiple accounts in Qt6
2022-07-26 16:08:05 -03:00
1c256d8876 Merge pull request #958 from jopejoe1/readme 2022-07-27 00:16:35 +05:30
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
fbf1901d86 refactor: shuffle some things around to improve readability
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 20:33:33 +02:00
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
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
e741cb7f0a fix: add abort handlign in Flame's FileResolvingTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 20:33:33 +02:00
fb289c6b17 chore: add license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-26 20:33:29 +02:00
75a7ea55d4 feat: implement mod resolving for FTB
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-26 20:33:10 +02:00
86573a5ccd Merge pull request #961 from flowln/fix_resource_filter 2022-07-26 20:14:18 +02:00
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
1a6cb9ee99 chore: add some debugging prints in AccountList
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-26 15:11:56 -03:00
a495d9eca5 chore: Normalize sentence in readme
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-07-26 22:00:40 +05:30
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
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
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
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
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
631a93bcd8 refactor: add a HashUtils place for hashing stuff
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:54 -03:00
b1763353ea feat: do incremental calculation of CF's hash
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-24 17:46:53 -03:00
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
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
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
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
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
bfa824ee71 Fix broken url in readme
Signed-off-by: jopejoe1 <johannes@joens.email>
2022-07-23 23:22:39 +02:00
1157436a24 fix: sigsegv when trying to use jar mods
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-23 14:24:24 -03:00
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
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
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
6aad750fe0 Merge pull request #893 from Scrumplex/refactor-env-handling 2022-07-23 14:08:10 +02:00
5e443ae347 fix(nix): change license to gpl3Only
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-23 14:00:11 +02:00
c65f5f7728 Merge pull request #877 from Scrumplex/refactor-offline-accounts 2022-07-23 13:54:36 +02:00
74b62727af Merge pull request #947 from flowln/unicode_uhh 2022-07-23 13:38:48 +02:00
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
061ea5648e Merge pull request #922 from DioEgizio/qt6-tarballs
feat(actions): package and deliver qt6 tarballs
2022-07-23 14:18:00 +05:30
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
0f1d51f866 Update .github/workflows/build.yml
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-22 22:11:53 +02:00
75cfaf0672 Merge pull request #938 from Scrumplex/fix-i18n3 2022-07-22 22:45:53 +05:30
ceaa732e5f Merge pull request #932 from Scrumplex/fix-nix 2022-07-22 22:43:57 +05:30
deb2a2bd14 Merge pull request #930 from TheOPtimal/develop 2022-07-22 22:43:00 +05:30
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
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
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: 3746a2566d7b0f758a1de7a3f78cb88bd28bb1e5

Signed-off-by: Jacob Gogichaishvili <iakob.gogichaishvili@gmail.com>
2022-07-20 23:27:07 +04:00
c666c3e251 refactor!: bump to C++17 and C17
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-20 14:22:10 +02:00
9cc1773fa7 fix: move HTML code outside of translation
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-20 10:15:21 +02:00
e78c7af715 Merge pull request #936 from Scrumplex/fix-windows-crap-2 2022-07-20 10:07:10 +02:00
b96e76134a fix(nix): switch to LD_LIBRARY_PATH
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 18:09:48 +02:00
fd2b206997 fix: support LD_* for OpenBSD
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 18:07:58 +02:00
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
28ae5d710e fix: fix translations for mod updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 18:03:45 +02:00
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
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
502750492c Merge pull request #929 from flowln/dark_theme_dark_font 2022-07-19 11:17:40 +02:00
8fc1653b0c fix: fix Java Checker on Windows, again
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-19 11:12:11 +02:00
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
8757281467 fix(nix): switch to PolyMC libnbtplusplus
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-18 20:34:36 +02:00
20b1723e78 merge origin/develop
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2022-07-18 14:05:23 -04:00
be78afeee5 qtcreator moment
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2022-07-18 14:03:06 -04:00
3746a2566d Add more Nix meta information 2022-07-18 21:47:26 +04:00
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
dec81c4f27 Merge pull request #588 from flowln/mod_update
Implement mod updater (😎)
2022-07-18 12:40:25 -03:00
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
6bb8332b4b fix: bogus returns in EnsureMetadataTask
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:43:12 -03:00
de9e304236 fix: std::list -> QList
Qt6 removed Qlist::toStdList() 😭

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:45 -03:00
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
47bdcb6050 feat: make second metadata pass concurrent
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
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
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
2b65ee433f fix: changelogs with too much space between lines
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
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
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
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
dfd6cb29be feat: improve changelog and sort updatable mods
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:44 -03:00
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
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
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
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
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
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
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
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
dfab55112b feat: remove existing mod when updating/redownloading it
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:42 -03:00
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
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
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
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
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
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
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
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
32a9545360 libs: add murmur2 library
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
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
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
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
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
43b9db6e45 change: allow deleting mods while preserving their metadata
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
032ceefa1d feat: add some helping methods to WideBar
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-17 11:33:41 -03:00
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
56085310cb Merge pull request #913 from Gingeh/cape-without-skin 2022-07-17 09:57:03 +02:00
6a1d611fd1 Restore ScrollMessageBox
Signed-off-by: kumquat-ir <66188216+kumquat-ir@users.noreply.github.com>
2022-07-17 02:40:27 -04:00
c8a72c876d fix: add missing HttpMetaCache entry for CF mods
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-16 21:25:29 -03:00
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
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
dce435c882 Merge pull request #917 from Scrumplex/fix-translations-2 2022-07-16 22:27:03 +02:00
396b3c3952 fix: add missing full-stop to message
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-16 21:26:23 +02:00
8cf42f4e15 Merge pull request #902 from Scrumplex/fix-unicode-windows 2022-07-16 21:15:55 +02:00
17ea51ce27 fix: fix memory leak on Windows
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-16 20:08:08 +02:00
04818ca626 Merge pull request #914 from DioEgizio/cacheqt 2022-07-16 00:42:44 +05:30
6732b77594 chore(actions): Remove superfluous whitespace
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-07-15 22:40:12 +05:30
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
4dfc01899a Make skin upload optional
Signed-off-by: Gingeh <39150378+Gingeh@users.noreply.github.com>
2022-07-15 12:23:11 +10:00
b0b8ccfd4a Merge pull request #911 from Scrumplex/fix-release-workflow-2 2022-07-14 07:59:34 +02:00
4d35c66af3 fix(actions): fix release workflow
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-13 22:47:55 +02:00
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
42b9b3d72a Merge pull request #905 from DioEgizio/fix-copying 2022-07-12 19:19:09 +05:30
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
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
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
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
a4672ba00f fix: remove unnecessary code for Windows
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-11 19:09:20 +02:00
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
1a26a53659 Merge pull request #901 from txtsd/scdoc 2022-07-11 14:56:19 +02:00
8f4d7ac655 Merge pull request #678 from Scrumplex/improvements-around-proprietary-services 2022-07-11 14:56:09 +02:00
c5625d8d32 Merge pull request #847 from EliteTK/switch-to-scdoc 2022-07-11 14:47:44 +02:00
548a2a1d64 Merge pull request #900 from DioEgizio/CI/fix
fix(actions): fix ccache on windows
2022-07-11 08:02:27 -03:00
df01a58099 feat(ci): Install scdoc to build manpage
Signed-off-by: txtsd <thexerothermicsclerodermoid@gmail.com>
2022-07-11 14:30:46 +05:30
ac8ee9f981 Merge pull request #479 from kthchew/feature/sparkle-mac 2022-07-11 09:02:41 +02:00
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
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
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: 92b913ca3740ea1aa799a69d65dc13d0c3612b87
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: 7eb61a28be3b66c1016eab434ae93b5d94eb11af
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: ea4ef1655bdadf04c36768f0f641ca7579f754cf
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: b5bdfa6c2e9a0eb62e476dd399b82bfa972e0320
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: f9f46609ee288d8df80dd978f8c619a7e02e4787
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: 34adcec6165662d6245a55ee0a75c36753061df2
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: 05cd30ac06b67ebc594773fc7e7ccf110fc336a3
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: f3c72f4f0888aa16793354890055e17df07084fc
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: b1f486518e3db19cca8ea9f33eb1d8d1afa247e7
I, Kenneth Chew <kenneth.c0@protonmail.com>, hereby add my Signed-off-by to this commit: 3bc02b9662b84c2ab86b5de1b08b4537177fde90

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

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

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

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

Signed-off-by: Jamie Mansfield <jmansfield@cadixdev.org>
2022-07-10 19:12:08 +01:00
b3b76d5d56 Merge branch 'develop' into feature/sparkle-mac
# Conflicts:
#	.github/workflows/build.yml
2022-07-10 19:38:30 +02:00
cd948dceae Merge pull request #575 from Scrumplex/qt6 2022-07-10 19:21:01 +02:00
eb33a87ff5 fix: remove TODOs
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 18:11:13 +02:00
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
d77237ca5d refactor(actions): rename Windows builds
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
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
f464b347b2 fix: install TLS plugins for release builds
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
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
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
4e99da7b62 refactor: query Qt variables using ECM
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
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
3b4539de79 chore: update license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
3e4d1c04de fix: include TLS plugins in bundle
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
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
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
15c5bbcf22 fix: fix slots for Qt 6
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
c363423718 refactor: fix deprecation up to Qt 6
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:15 +02:00
e58158c3cd feat: add Qt 6 support to CMake
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:19:14 +02:00
ff2cd50bfa refactor: replace QRegExp with QRegularExpression
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-10 12:17:52 +02:00
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
a7fc23dd96 ATLauncher: Reset existing directory if required 2022-07-10 11:15:48 +01:00
c1bcbf8c63 Merge pull request #880 from Scrumplex/fix-loader-importance
Make loader components not important
2022-07-10 15:44:17 +05:30
9e69b8fe1b ATLauncher: Parse keeps and deletes from pack manifests 2022-07-10 11:05:11 +01:00
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
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
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
f591c87665 Merge pull request #851 from russellbanks/patch-1 2022-07-09 01:16:07 +02:00
e6fe701727 Merge pull request #808 from Scrumplex/fix-lgtm-warnings 2022-07-09 01:10:59 +02:00
35a698ef72 Merge pull request #884 from jopejoe1/ftbuifixed
Updated FTB Classic layout
2022-07-08 16:19:14 -03:00
998271414e Merge pull request #890 from Scrumplex/fix-technic-forge
Fix Technic instances using Forge
2022-07-08 16:18:59 -03:00
1749f25420 Merge pull request #881 from gytis-ivaskevicius/develop 2022-07-08 17:29:12 +02:00
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
08989bde5e Merge pull request #839 from flowln/modrinth_packs_bug_hunt 2022-07-08 16:25:35 +02:00
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
962923bbce chore: add missing license headers
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
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
4103948132 feat: track capabilities of application
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
906f26698b fix: spelling of CF
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
8a1a583afe refactor: rename references to CurseForge to Flame
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-08 16:25:03 +02:00
9e19b73ce6 Updated FTB Classic layout
Signed-off-by: jopejoe1 <johannes@joens.email>
2022-07-07 23:18:13 +02:00
e11706d99d Cleanup flake.nix
Signed-off-by: Gytis Ivaskevicius <me@gytis.io>
2022-07-07 19:25:14 +03:00
301b811310 fix: make loader components not important
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-07 09:58:03 +02:00
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
f432cfd73a change: put settings initialization in a separate function
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-06 16:18:09 -03:00
ffa756ccee fix: remove tests for updater
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-06 18:13:51 +02:00
e210a4b244 Revert "fix: remove updater if it is not used"
This reverts commit 2ff0aa09e35eb6910ef0a030ea41f84a1ed95782.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-06 18:13:51 +02:00
f1902a4471 Merge pull request #794 from Scrumplex/resolve-jars-dynamically 2022-07-06 17:40:09 +02:00
04b865adae Merge pull request #707 from Jan200101/PR/gamemode
Add Performance related settings
2022-07-06 17:11:43 +02:00
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
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
e7ed3abb79 Merge pull request #871 from Scrumplex/configure-dco 2022-07-03 18:16:25 +02:00
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
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
64776d6bac feat+fix: cache Flame modpack versions
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:43:05 -03:00
64d123f524 fix: use better naming for Modrinth pack versions
Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-03 12:43:04 -03:00
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
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
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
474d77ac57 feat: resolve JARs dynamically
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:31:01 +02:00
3c40355d7c chore(DCO): allow remediation
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:28:01 +02:00
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
89a30a47c5 fix: use semver format for build tag
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:23:13 +02:00
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
68c48b2c8a feat: store git tag in buildconfig
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:23:13 +02:00
0f9260869b chore: update Git CMake module
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-07-03 17:23:13 +02:00
412fdb0f7b Merge pull request #870 from Scrumplex/fix-release-build
Fix release builds
2022-07-04 00:25:03 +10:00
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
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
5599b5a337 Merge pull request #855 from Gingeh/account-list 2022-07-03 12:55:36 +02:00
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
b90d6b0f26 Merge pull request #857 from Scrumplex/dco
Add Developer's Certificate of Origin (DCO)
2022-07-03 16:23:25 +10:00
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
fb75c23f4e Merge pull request #784 from Scrumplex/refactor-cmake
Refactor tests
2022-07-02 17:50:08 -03:00
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
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
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
b40619bcbd don't censor offline access token 2022-07-02 18:05:33 +03:00
fe2e1d931f Merge pull request #786 from flowln/concurrent_tasks_slimmed 2022-07-01 20:09:18 +02:00
2e17e78052 Merge pull request #845 from flowln/news_in_launcher 2022-07-01 20:04:06 +02:00
f2fa82fd3c Merge pull request #863 from Scrumplex/fix-braindead-moment
update NewLaunch package name
2022-07-01 19:55:01 +02:00
8cec4b60a6 fix: update NewLaunch package name 2022-07-01 19:50:41 +02:00
bf9888099c Merge pull request #800 from Scrumplex/refactor-newlaunch-package
Rename NewLaunch package
2022-07-01 10:05:07 -03:00
02201631e7 feat: use ConcurrentTask for mod downloads
Way faster :)

Signed-off-by: flow <flowlnlnln@gmail.com>
2022-07-01 08:34:17 -03:00
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
63dfc0633f Merge pull request #652 from flowln/mod_page 2022-07-01 10:00:36 +02:00
50f1847904 Merge pull request #785 from icelimetea/reformat-javacheck 2022-07-01 10:00:08 +02:00
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
06bf7b0f31 Fix Minecraft version not appearing in status bar 2022-06-30 23:02:56 -04:00
dbb63b97bd Merge branch 'PolyMC:develop' into account-list 2022-07-01 10:43:41 +10:00
3039cb5c02 chore: add DCO requirement
Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-06-30 16:37:13 +02:00
b5d2570fe2 Change Online status to Ready 2022-06-30 22:17:15 +10:00
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
286f82cc99 Merge pull request #826 from kthchew/fix/kill-menubar 2022-06-30 11:50:43 +02:00
ed5415aeb8 Merge pull request #837 from DioEgizio/fix-sort-mr 2022-06-30 08:24:51 +02:00
bef79df6bb Disable the refresh button for offline accounts 2022-06-30 09:08:53 +10:00
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
91b5f0228d add tr() to offline account name
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-06-30 08:59:41 +10:00
d639da741b add tr() to offline account name
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-06-30 08:49:40 +10:00
84bd5ace6c Move account checkboxes to the profile column (oops) 2022-06-29 19:58:41 +10:00
63589d2ba9 Rename profile column to username and update the tooltip 2022-06-29 18:49:06 +10:00
d6f4ff26b5 Disable skin buttons for offline accounts 2022-06-29 18:46:39 +10:00
b606a2e040 Make the profile and account name columns use all available space 2022-06-29 18:45:36 +10:00
f685139d89 Move the profile name column to the left 2022-06-29 18:43:29 +10:00
68d6ce60a9 Don't show account name for offline accounts 2022-06-29 18:42:01 +10:00
2bba64fe3a Create winget.yml 2022-06-28 12:11:52 +01:00
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
9cc235cde0 Merge pull request #811 from jn64/fix/window-title
Fix duplicate name in window title
2022-06-27 01:13:58 +10:00
91375e4c6d Merge pull request #834 from DioEgizio/reword-flame-warning
chore(flame): reword warning
2022-06-27 01:12:18 +10:00
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
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
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
4e319254dd fix: use right name for the content of a News entry 2022-06-25 20:14:27 -03:00
04e8780dd0 fix(modrinth): fix sorting 2022-06-24 10:47:02 +02:00
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
bdfcd0b99e chore(flame): reword warning 2022-06-23 17:06:49 +02:00
5da87d1904 fix: add missing connections to the abort signal
Beginning with efa3fbff39bf0dabebdf1c6330090ee320895a4d, 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
821edf0f51 Merge pull request #830 from Scrumplex/fix-launchermeta
Replace old reference to launchermeta
2022-06-22 18:12:20 -03:00
04e822acfb fix: remove old reference to launchermeta 2022-06-22 20:47:47 +02:00
c31fce3621 Workaround Qt bug to fix menu bar separators on macOS 2022-06-22 00:34:04 -04:00
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
d4e544c62c Separate the kill and launch instance actions 2022-06-21 19:19:55 -04:00
d232248268 Merge pull request #807 from Scrumplex/lgtm-config
Add LGTM config
2022-06-22 01:14:08 +10:00
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
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
409c9bf9d2 Merge pull request #778 from Scrumplex/track-real-architecture
Track real CPU architecture for instances
2022-06-22 01:13:10 +10:00
a135c06bcf fix: scale mod icons to the right size 2022-06-21 06:41:56 -03:00
efb1f4abf2 Merge pull request #797 from kthchew/fix/update-shortcut 2022-06-21 11:29:15 +02:00
036a826b3a Merge pull request #788 from kthchew/fix/win-install-version 2022-06-21 11:29:06 +02:00
8d2b66a0fd Merge pull request #715 from Heath123/patch-1 2022-06-21 11:18:37 +02:00
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
5558d7eef8 Update bug_report.yml 2022-06-20 11:03:22 -04:00
6103d86a47 Merge branch 'PolyMC:develop' into develop 2022-06-20 11:02:40 -04:00
b8899a534d Merge pull request #633 from Scrumplex/chore-remove-unused-workflows
Remove unused GH Workflows
2022-06-20 11:42:53 -03:00
fa6829a6a1 Set beam cursor on selectable labels 2022-06-20 14:28:38 +08:00
5335540c33 Rename main window 2022-06-20 13:45:36 +08:00
7f62de3854 fix: don't create unnecessary folders when extracting ZIPs 2022-06-19 22:03:02 -03:00
0afa2e92d5 Make GitHub link focusable by keyboard 2022-06-18 22:20:38 +08:00
6d1b166ad7 Make labels selectable
User can copy version/build info easily.
2022-06-18 22:19:23 +08:00
4b6ddfb89b Add version to Qt applicationDisplayName 2022-06-18 20:00:28 +08:00
9ec260619b fix: fix warnings reported by LGTM.com 2022-06-17 16:34:32 +02:00
4c6ac9e4fe chore: add LGTM config 2022-06-17 16:24:06 +02:00
08fc3ea2e0 fix: add classpath exception to launcher library
Signed-off-by: icelimetea <fr3shtea@outlook.com>
2022-06-16 17:58:38 +02:00
03e454b71d Merge pull request #694 from Technous285/develop-1
Add OpenBSD support
2022-06-15 06:32:14 -03:00
c527ea83fb Merge pull request #799 from DioEgizio/fix-oopsie
fix websiteurl in cf modpacks (part 2)
2022-06-15 06:28:09 -03:00
8b9ac63657 chore: update COPYING.md 2022-06-15 10:15:35 +02:00
0ba02f0830 refactor: rename NewLaunch package 2022-06-15 10:05:35 +02:00
1f6cef6f8a fix https://github.com/PolyMC/PolyMC/issues/798 2022-06-15 09:11:23 +02:00
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
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
3d0740f80e fix(cmake): allow disabling tests 2022-06-14 21:42:44 +02:00
707a68cb4f Merge pull request #787 from DioEgizio/macos-12-gha
update macos runner to macos 12
2022-06-14 23:30:41 +05:30
e6b1a1fa76 Merge pull request #716 from flowln/mod_perma_2
Hide index folder on Windows
2022-06-14 23:58:35 +10:00
3e8d450741 Merge pull request #665 from jamierocks/h-managed-packs
PackPlatforms: Record where packs come from
2022-06-14 23:54:44 +10:00
d0881b7420 Merge pull request #731 from Scrumplex/update-readme-macstadium
Add sponsors to README
2022-06-14 23:52:38 +10:00
27239b2dde Merge pull request #634 from flowln/donate_links
More links for CF / Modrinth mods / modpacks
2022-06-14 23:52:00 +10:00
3fbbaddece fix(actions): install extra-cmake-modules 2022-06-14 14:44:49 +02:00
effe46db86 refactor: move away from UnitTest.cmake 2022-06-14 14:44:49 +02:00
ba939c92ec feat(actions): test before packaging 2022-06-14 14:44:49 +02:00
e25cdd9d12 refector: move download action to ExternalResourcesPage 2022-06-14 07:04:31 -03:00
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
349fc4143d Merge pull request #714 from Scrumplex/fix-tests
Fix mod metadata tests
2022-06-13 23:10:35 +02:00
4be9e6a0bc refactor: make is_indexed false by default
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-06-13 22:07:42 +02:00
cb258146c4 Merge pull request #782 from Scrumplex/chore-bump-1.4.0 2022-06-13 22:05:40 +02:00
9f039cef72 Set correct installer properties and uninstall registry keys 2022-06-12 14:21:56 -04:00
d08815bbc1 Merge pull request #759 from flowln/mod_perma_3 2022-06-12 19:17:08 +02:00
c04e38d011 update macos runner to macos 12 2022-06-12 19:13:19 +02:00
794022d399 Merge pull request #783 from Scrumplex/fix-avoid-settings-register-warnings
Avoid re-registering InstanceType
2022-06-12 13:46:46 -03:00
8e43190984 Compile JavaCheck for Java 7 2022-06-12 17:46:40 +01:00
2212a6e40f Merge pull request #679 from kthchew/fix/win-install-version 2022-06-12 18:12:42 +02:00
63b69c0b0c Change formatting of JavaCheck 2022-06-12 16:29:39 +01:00
278219b1d8 fix(installer): use Windows version number format 2022-06-12 16:24:05 +02:00
2ce4ce9064 fix(installer): add version info to installer 2022-06-12 14:52:54 +02:00
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
9f1f37e780 fix: correctly handle disabled mods with metadata
im stupid
2022-06-12 09:25:25 -03:00
40ccd1a469 fix: handling of incomplete mods
(i.e. mods without ModDetails that may have metadata)
2022-06-12 09:25:21 -03:00
a4ef0940ed chore: add license headers 2022-06-12 13:50:58 +02:00
2ff0aa09e3 fix: remove updater if it is not used 2022-06-12 13:39:47 +02:00
32217a774f fix(tests): wait until ModFolderModel has updated 2022-06-12 13:33:17 +02:00
8856c8cd62 refactor(test): fix loading mod metadata setting 2022-06-12 13:33:17 +02:00
e843b8e188 fix(test): fix packwiz test 2022-06-12 13:33:17 +02:00
c4f2e3a955 Merge pull request #771 from flowln/modrinth_multiple_downloads 2022-06-12 10:50:57 +02:00
91301ec7fe Merge pull request #632 from ryanccn/macos-app-heuristic 2022-06-12 10:46:49 +02:00
13b03e7e50 Update Application.cpp 2022-06-12 11:44:04 +08:00
8a0aa5a0c8 fix: avoid re-registering InstanceType 2022-06-11 23:06:42 +02:00
2bd8e7dca4 Merge pull request #780 from flowln/guo_ext_2 2022-06-11 19:45:51 +02:00
d75571ffa1 Merge pull request #773 from vancez/fix-launch-button 2022-06-11 19:41:02 +02:00
8683d529fc chore: bump version 2022-06-11 19:35:40 +02:00
2ee4b6768d Merge pull request #770 from flowln/technic_links 2022-06-11 19:34:59 +02:00
a9f0a85590 Merge pull request #764 from Scrumplex/fix-compile-flags 2022-06-11 19:34:01 +02:00
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
9bbf50e864 Merge pull request #720 from icelimetea/fix-legacy-issues 2022-06-11 19:29:59 +02:00
51258ab28c Merge pull request #709 from Scrumplex/fix-instancetypes
Always store InstanceType
2022-06-11 19:29:46 +02:00
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
2d261607df Merge pull request #732 from MrMelon54/develop 2022-06-11 19:14:26 +02:00
54144154f9 fix: apply client overrides in mrpacks
another oopsie x.x
2022-06-11 13:44:31 -03:00
81daffe68e fix: remove file filter from translation 2022-06-11 14:10:42 +02:00
2ea20a8b29 fix: allow discovering mrpacks in languages without dot 2022-06-11 07:12:59 -03:00
2257c875f5 Merge pull request #708 from ryanccn/custom-user-agent 2022-06-11 10:53:58 +02:00
8a2e8ad953 feat: track real CPU architecture for instances 2022-06-11 10:48:58 +02:00
fa5b1d9978 change slot name 2022-06-10 15:48:18 +08:00
529fb07b42 I changed my mind 2022-06-10 15:18:47 +08:00
4a261cac1a fix: update toolbar when instance state changes 2022-06-10 10:25:13 +08:00
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
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
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
1b1f728c58 fix: allow opening external links in technic modpack page 2022-06-09 18:46:19 -03:00
309013efb3 Merge pull request #762 from muscaln/flake
Bump flake lock
2022-06-09 05:58:42 +05:30
705cf6499e Merge pull request #734 from babbaj/extra-jdks
nix: add package argument for extra jdks
2022-06-09 05:57:23 +05:30
f2ed4a92e2 Update README.md
Co-authored-by: Tatsuya Noda <topia@clovery.jp>
2022-06-08 15:55:28 -04:00
0c8ca1b3c0 fix: remove debug CXX flags 2022-06-08 21:04:27 +02:00
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
7f8aa2099c Make it responsive 2022-06-07 18:58:02 -04:00
1d9797660b QString::locateAwareCompare() is better for human-like sorting 2022-06-07 15:27:57 +01:00
cd0d8a76c5 chore: add sponsors to README 2022-06-07 10:33:09 +02:00
3f1251e78b nix: add package argument for extra jdks 2022-06-06 22:13:10 -04:00
89d4405563 Simplify sorting logic to a single std::sort call 2022-06-06 22:18:19 +01:00
8966364648 Merge pull request #685 from kthchew/fix/technic-quilt
Add Quilt support for Technic modpacks
2022-06-06 18:03:05 -03:00
1c60e9b4fc Add initial sorting function 2022-06-06 21:51:08 +01:00
843c860d98 Update bug_report.yml 2022-06-06 13:52:50 -04:00
6587e39992 Resize PolyMC logo 2022-06-05 18:05:09 -04:00
757fa1410c Update launcher/Application.cpp
Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net>
2022-06-05 23:52:21 +08:00
dd6d8e0002 Make Launcher class to look more like original 2022-06-05 02:43:14 +01:00
cd49406bfe Fix launching process for some legacy Forge versions 2022-06-05 01:18:59 +01:00
7a3acc3249 refactor(ui): use tabs for APIPage 2022-06-04 22:04:36 +02:00
db1c804812 Merge pull request #718 from DioEgizio/revert-unfunny-pr 2022-06-04 21:49:15 +02:00
493d58f358 Merge pull request #719 from RaptaG/patch-1
Capitalization fix in the README
2022-06-04 16:16:15 -03:00
fcd56dddc2 Capitalization fix 2022-06-04 22:08:35 +03:00
91b85f9919 Revert "Merge pull request #315 from txtsd/display_scaling"
This reverts commit fcf728f3b5f4923cc05edfeb45f8340f420669cf.
2022-06-04 17:09:11 +02:00
4cecba8787 make $LAUNCHER_VER actually work 2022-06-04 22:59:57 +08:00
5930acc418 change UI to scroll
let me just say, this does not look right
2022-06-04 22:54:05 +08:00
61d36c1723 Clarify the forking policy a bit more 2022-06-04 15:20:49 +01:00
c2a43c6f40 fix: hide .index folder on Windows 2022-06-04 11:02:59 -03:00
1ab00ca8b2 Merge pull request #426 from flowln/mod_perma
Add on-disk mod metadata information
2022-06-04 13:23:38 +02:00
778baa6dbe fix: always store InstanceType 2022-06-04 11:59:12 +02:00
25ab121e42 feat: custom user-agent 2022-06-04 15:33:17 +08:00
cf4949b4f5 Prepare for Nix 2.7 (#286)
* Prepare for Nix 2.7

* Fix embarassing oopsie
2022-06-03 22:26:46 -03:00
4ca634d229 Merge pull request #701 from jn64/patch-1
Add "mc" keyword to desktop file
2022-06-03 09:30:36 +02:00
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
38ff76d2b8 Add OpenBSD support
Adds OpenBSD support.
2022-06-02 02:02:42 +10:00
147bde5294 Merge pull request #692 from glowiak/patch-6 2022-06-01 17:46:12 +02:00
1a004f0c4d Update MCEditTool.cpp 2022-06-01 15:50:43 +02:00
7d21bf15e8 Update UpdateController.cpp 2022-06-01 15:50:02 +02:00
a88ad8025b Merge pull request #682 from istudyatuni/fix-add-account-behaviour 2022-06-01 10:13:35 +02:00
e06bf17d13 Merge branch 'PolyMC:develop' into macos-app-heuristic 2022-06-01 00:12:14 +08:00
04a3669fc4 Merge pull request #687 from PolyMC/LennyMcLennington-patch-1
Change forking policy a bit
2022-05-31 08:22:33 +02:00
795075f90d Update README.md 2022-05-30 23:59:48 +01:00
2727df704f change the wording a bit 2022-05-30 23:52:12 +01:00
8ce8aadd9b fix typo 2022-05-30 23:50:35 +01:00
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
7ac16ed073 Use QStringList instead of QSet<QString>
Co-authored-by: flow <flowlnlnln@gmail.com>
2022-05-30 14:40:20 -04:00
3585e4764b Add Quilt support for Technic modpacks 2022-05-30 14:14:03 -04:00
065e38c6aa Move Windows installer configure to program_info 2022-05-30 12:56:29 -04:00
9054ee18a1 Merge pull request #505 from flowln/improve_download_ux 2022-05-30 13:41:02 +02:00
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
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
80da1f1bb9 ATLauncher: Use ATLauncher rather than FTB in error messages 2022-05-29 00:04:28 +01:00
febdb85f96 ModpacksCH: Use ModpacksCH rather than FTB in error messages 2022-05-29 00:04:28 +01:00
96b76c8f5c ModpacksCH: Make packs managed when installing 2022-05-29 00:04:27 +01:00
411bf3be03 ATLauncher: Make packs managed when installing 2022-05-29 00:04:27 +01:00
a98b6663e1 ATLauncher: Pass the full pack name through to the install task 2022-05-29 00:04:27 +01:00
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
f8e7fb3d48 fix: better handle corner case 2022-05-24 20:27:25 -03:00
e644380160 feat: add links to curseforge modpacks 2022-05-24 12:27:32 -03:00
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
ae2ef324f2 feat: add remaining links to modrinth mods 2022-05-24 11:58:11 -03:00
d0337da8ea feat: add remaining links to modrinth modpacks 2022-05-24 11:52:27 -03:00
5e17d53c7f fix: missing tr() and update donate message 2022-05-24 11:11:40 -03:00
22e0527502 feat: add donate info to modrinth modpacks 2022-05-24 09:46:58 -03:00
ca3c6c5e8a feat: add donate links for modrinth mods 2022-05-24 09:38:48 -03:00
4bd30f5e72 chore: remove unused GH Workflows 2022-05-24 14:17:44 +02:00
9673dac22b add more #ifdefs 2022-05-24 16:18:02 +08:00
0426149580 standard macOS app behavior 2022-05-24 13:35:01 +08:00
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
42f8ec5b14 fix: do modrinth changes on flame too
Also fix a dumb moment
2022-05-23 14:58:14 -03:00
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
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
0985adfd74 change: support newest changes with packwiz regarding CF 2022-05-23 14:58:08 -03:00
59d628208b feat: allow trying to use multiple hash types 2022-05-23 14:43:31 -03:00
5c5699bba5 refactor: move individual pack version parsing to its own function 2022-05-23 14:43:31 -03:00
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
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
96e36f0604 refactor: make mod metadata presence (or lack of) easier to find out 2022-05-23 14:43:09 -03:00
a99858c64d refactor: move code out of ModIndex.h
Now it's in ModIndex.cpp
2022-05-23 14:43:07 -03:00
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
d7f6b36990 test+fix: add basic tests and fix issues with it 2022-05-23 14:42:28 -03:00
4439666e67 feat: allow disabling mod metadata usage 2022-05-23 14:42:28 -03:00
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
fab4a7a602 refactor: abstract metadata handling and clarify names 2022-05-23 14:42:28 -03:00
092d2f8917 feat: add support for converting builtin -> packwiz mod formats
Also adds more documentation.
2022-05-23 14:42:28 -03:00
e9fb566c07 refactor: remove unused mod info and organize some stuff 2022-05-23 14:42:27 -03:00
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
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
e93b9560b5 feat: add method to delete mod metadata
Also moves indexDir setting from LocalModUpdateTask -> ModFolderModel
2022-05-23 14:42:27 -03:00
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
eaa5ce4467 feat(ui): adapt SequentialTask to nested SequentialTasks 2022-05-23 14:42:27 -03:00
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
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
3bc02b9662 Fix Sparkle signing step 2022-05-21 13:23:02 -04:00
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
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
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
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
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
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
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
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
b5bdfa6c2e Implement automatic and manual updates on macOS 2022-05-19 15:16:37 -04:00
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
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
92b913ca37 Add Sparkle Updater framework to macOS build 2022-05-19 15:16:37 -04:00
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,10 +1,12 @@
---
Language: Cpp
BasedOnStyle: Chromium
IndentWidth: 4
AlignConsecutiveMacros: false
AlignConsecutiveAssignments: false
AllowShortIfStatementsOnASingleLine: false
ColumnLimit: 140
---
Language: Cpp
AlignConsecutiveMacros: None
AlignConsecutiveAssignments: None
BraceWrapping:
AfterFunction: true
SplitEmptyFunction: false
@ -12,5 +14,4 @@ BraceWrapping:
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
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Backport PR by cherry-pick-ing
uses: Nathanmalnoury/gh-backport-action@master
ref: ${{ github.event.pull_request.head.sha }}
- name: Create backport PRs
uses: korthout/backport-action@v2.1.0
with:
pr_branch: 'stable'
github_token: ${{ secrets.GITHUB_TOKEN }}
# 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"))
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")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
elseif(ipo_supported)
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,6 +1,40 @@
# PolyMC
## Prism Launcher
Copyright (C) 2012-2021 MultiMC 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 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.
## PolyMC
PolyMC - Minecraft Launcher
Copyright (C) 2021-2022 PolyMC Contributors
This program is free software: you can redistribute it and/or modify
@ -15,8 +49,11 @@
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
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
@ -29,36 +66,56 @@
See the License for the specific language governing permissions and
limitations under the License.
# MinGW runtime (Windows)
## MinGW-w64 runtime (Windows)
Copyright (c) 2012 MinGW.org project
Copyright (c) 2009, 2010, 2011, 2012, 2013 by the mingw-w64 project
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:
This license has been certified as open source. It has also been designated
as GPL compatible by the Free Software Foundation (FSF).
The above copyright notice, this permission notice and the below disclaimer
shall be included in all copies or substantial portions of the Software.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
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.
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.
# Qt 5
Disclaimer
Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
Contact: http://www.qt-project.org/legal
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.
Licensed under LGPL v2.1
Information on third party licenses used in MinGW-w64 can be found in its COPYING.MinGW-w64-runtime.txt.
# libnbt++
## 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})
# 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: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${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)
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,11 +178,15 @@ 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()
@ -104,27 +200,85 @@ function(git_describe _var)
#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)

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

160
flake.lock generated
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 "$@"

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,
#ifdef Q_OS_MACOS
void clickedOnDock();
#endif
public slots:
bool launch(InstancePtr instance,
bool online = true,
BaseProfilerFactory *profiler = nullptr,
bool demo = false,
MinecraftServerTargetPtr serverToJoin = nullptr,
MinecraftAccountPtr accountToUse = 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
};
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,4 +1,24 @@
/* Copyright 2013-2021 MultiMC Contributors
// 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.
@ -16,29 +36,26 @@
#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,12 +63,11 @@ 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)
{
switch (role) {
case VersionPointerRole:
return qVariantFromValue(version);
return QVariant::fromValue(version);
case VersionRole:
return version->name();
@ -69,18 +85,18 @@ QVariant BaseVersionList::data(const QModelIndex &index, int role) const
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,4 +1,24 @@
/* Copyright 2013-2021 MultiMC Contributors
// 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
*
* Authors: Orochimarufan <orochimarufan.x3@gmail.com>
*
@ -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,20 +131,14 @@ 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
{
if (!isSandbox()) {
return IndirectOpen([&]() { return QProcess::startDetached(application, QStringList() << path, workingDirectory); }, pid);
} else {
return QProcess::startDetached(application, QStringList() << path, workingDirectory, pid);
}
#else
@ -174,20 +146,14 @@ bool openFile(const QString &application, const QString &path, const QString &wo
#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())
{
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 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
{
/**
namespace DesktopServices {
/**
* Open a file in whatever application is applicable
*/
bool openFile(const QString &path);
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);
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);
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);
bool openDirectory(const QString& path, bool ensureExists = false);
/**
/**
* Open the URL, most likely in a browser. Maybe.
*/
bool openUrl(const QUrl &url);
}
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,74 +35,81 @@
*/
#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();
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;
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 = new NetJob(tr("Modpack download"), APPLICATION->network());
m_filesNetJob->addNetAction(Net::Download::makeCached(m_sourceUrl, entry));
m_filesNetJob.reset(new NetJob(tr("Modpack download"), APPLICATION->network()));
m_filesNetJob->addNetAction(Net::ApiDownload::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);
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()
@ -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();
connect(inst_creation_task.get(), &Task::succeeded, this, [this, inst_creation_task] {
setOverride(inst_creation_task->shouldOverride(), inst_creation_task->originalInstanceID());
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";
}
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);
auto relpath = FS::PathCombine("minecraft", result.targetFolder, filename);
auto path = FS::PathCombine(m_stagingPath, relpath);
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);
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(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();
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);
}
}
inst_creation_task =
new ModrinthCreationTask(m_stagingPath, m_globalSettings, m_parent, pack_id, pack_version_id, original_instance_id);
} else {
throw JSONValidationError(QStringLiteral("Unknown format version: %s").arg(formatVersion));
}
QFile::remove(indexPath);
} catch (const JSONValidationError& e) {
emitFailed(tr("Could not understand pack index:\n") + e.cause());
return;
QString pack_id;
if (!m_sourceUrl.isEmpty()) {
QRegularExpression regex(R"(data\/([^\/]*)\/versions)");
pack_id = regex.match(m_sourceUrl.toString()).captured(1);
}
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;
}
// 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 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();
inst_creation_task->setName(*this);
inst_creation_task->setIcon(m_instIcon);
inst_creation_task->setGroup(m_instGroup);
inst_creation_task->setConfirmUpdate(shouldConfirmUpdate());
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();
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::failed, [&](const 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(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