Compare commits

...

32 Commits
1.5 ... develop

Author SHA1 Message Date
60234a550b feat: auto install modpack & choise nickname
Some checks failed
CodeQL Code Scanning / CodeQL (push) Has been cancelled
Build Application / Build Debug (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (macos-13, x86_64-darwin) (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (macos-14, aarch64-darwin) (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (ubuntu-22.04, x86_64-linux) (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (ubuntu-22.04-arm, aarch64-linux) (push) Has been cancelled
Update Flake Lockfile / update-flake (push) Has been cancelled
2025-04-15 11:13:45 +03:00
Luna
67bca78946 Delete publish.yml 2025-04-06 18:32:27 -05:00
Luna
2706ec5db6 chore: correct issues left by merge 2025-04-06 18:28:26 -05:00
Evan Goode
48689d1b79 Merge remote-tracking branch 'upstream/release-9.x' into develop 2025-04-06 18:16:05 -05:00
Luna
8940008b41 fix: readme formatting causes nix breakage 2025-04-06 18:03:03 -05:00
Evan Goode
7050d01aab Support authlib-injector skin upload 2025-04-06 17:46:06 -05:00
Evan Goode
b9ba1f1c65 clang-format 2025-04-06 17:46:05 -05:00
Evan Goode
d873774547 Create authlib-injector account with punycoded URL
Related: https://github.com/yushijinhun/authlib-injector/issues/270
2025-04-06 17:46:05 -05:00
Evan Goode
7c6204b5f1 Add back AuthlibInjectorMetadataStep
Apparently this was forgotten during the 9.0 merging.
2025-04-06 17:46:05 -05:00
Evan Goode
dd3a788f7b legacy: handle URL-encoded session ID 2025-04-06 17:46:05 -05:00
Evan Goode
c479712f32 legacy: rewrite http://session.minecraft.net/game/joinserver.jsp 2025-04-06 17:46:05 -05:00
Evan Goode
b43764d355 Show CurseForge in new instance dialog even if no API key 2025-04-06 17:46:05 -05:00
Luna
0565bd7c68
Update README.md 2025-03-04 23:12:53 -06:00
Luna
3e46252058
Adjust README in line of making the project's history more clear eventually 2025-03-04 22:44:12 -06:00
Luna
8239d03e0e
Update authlib-injector to point to local doc rather than fjord's 2025-02-26 15:19:00 -06:00
Luna
62fdcd5c33
Bump to 1.6 2025-02-26 01:27:51 -06:00
Luna
fa9259a167 Revert "README: Don't mention fjordlauncher-bin MPR package"
This reverts commit f66c5b116f.
2025-02-25 23:29:09 -06:00
Luna
11d1952696 Merge branch 'develop' of https://github.com/LunaisLazier/ShatteredPrism into develop 2025-02-25 23:28:28 -06:00
Luna
1220f8fd6e Fix instance launching drm issue + MSA Log-in Dialogue re-appearing
Hopefully fixes #3
2025-02-25 23:28:00 -06:00
Luna
19f5f25540
Merge pull request #2 from LunaisLazier/update_flake_lock_action
chore(nix): update lockfile
2025-02-25 23:07:36 -06:00
Luna
c95eedd72c Update copyright dates to 2025 2025-02-25 22:32:05 -06:00
Alexandru Ionut Tripon
631d465583 Update .github/workflows/build.yml
Co-authored-by: Seth Flynn <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
(cherry picked from commit db766574a42a4b7db6b320b6d469b233ce5f3100)
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-02-25 22:25:18 -06:00
Alexandru Ionut Tripon
b65d0d1fe6 Update .github/workflows/build.yml
Co-authored-by: seth <getchoo@tuta.io>
Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com>
(cherry picked from commit 1b5d3c2bf903bbcade7b38c22c0b103a0c6999f8)
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-02-25 22:25:17 -06:00
Trial97
f56dfbafb2 remove specific step for qt6
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
(cherry picked from commit be3eca8c97fdbb8daede84cab20fbd7695334242)
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-02-25 22:25:17 -06:00
Trial97
de438aea84 fix appimage
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
(cherry picked from commit bca517b8d3cd685540beebf69fbc1f80fe0a6ce4)
Signed-off-by: Seth Flynn <getchoo@tuta.io>
2025-02-25 22:25:17 -06:00
Evan Goode
3ec0820b45 Merge pull request #56 from unmojang/evan-goode/feed-the-beast
Use api.feed-the-beast.com, not modpacks.ch
2025-02-25 22:25:17 -06:00
Evan Goode
07dac3127a Use api.feed-the-beast.com, not modpacks.ch 2025-02-25 22:25:17 -06:00
Evan Goode
67e6e5e7b1 Merge pull request #51 from unmojang/evan-goode/fix-selectedProfile
Only send `selectedProfile` when selecting a profile
2025-02-25 22:25:17 -06:00
Evan Goode
80baecf088 Remove irrelevant FIXME comment 2025-02-25 22:25:17 -06:00
Evan Goode
b1e0b70833 Only send selectedProfile when selecting a profile
Some authentication servers (Blessing Skin) care when selectedProfile is
sent on POST /refresh but the clientToken is already bound to a profile.
We should only include selectedProfile in POST /refresh during the
initial "Add authlib-injector account" process when selecting a profile
from multiple availableProfiles.

For https://github.com/unmojang/FjordLauncher/issues/50
2025-02-25 22:25:17 -06:00
Evan Goode
f66c5b116f README: Don't mention fjordlauncher-bin MPR package
prismlauncher-bin [1] is out of date and so fjordlauncher-bin also hasn't been updated in a while. Not sure whether -bin packages are dangerous on MPR as they are on AUR, so we'll just omit it from the install instructions for now.

[1] https://mpr.makedeb.org/packages/prismlauncher-bin
2025-02-25 22:25:17 -06:00
github-actions[bot]
2c5a869dba chore(nix): update lockfile
Flake lock file updates:

• Updated input 'flake-compat':
    'github:edolstra/flake-compat/9ed2ac151eada2306ca8c418ebd97807bb08f6ac?narHash=sha256-HRJ/18p%2BWoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg%3D' (2024-11-27)
  → 'github:edolstra/flake-compat/ff81ac966bb2cae68946d5ed5fc4994f96d0ffec?narHash=sha256-NeCCThCEP3eCl2l/%2B27kNNK7QrwZB1IJCrXfrbv5oqU%3D' (2024-12-04)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/fa42b5a5f401aab8a32bd33c9a4de0738180dc59?narHash=sha256-RzaI1RO0UXqLjydtz3GAXSTzHkpb/lLD1JD8a0W4Wpo%3D' (2024-11-28)
  → 'github:NixOS/nixpkgs/73cf49b8ad837ade2de76f87eb53fc85ed5d4680?narHash=sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64%3D' (2025-02-18)
2025-02-23 01:19:53 +00:00
1631 changed files with 11330 additions and 278 deletions

View File

@ -39,9 +39,6 @@ on:
APPLE_NOTARIZE_PASSWORD:
description: Password used for notarizing macOS 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
@ -62,12 +59,15 @@ jobs:
qt_version: "5.15.2"
qt_modules: "qtnetworkauth"
- os: ubuntu-20.04
- os: ubuntu-22.04
qt_ver: 6
qt_host: linux
qt_arch: ""
qt_version: "6.5.3"
qt_modules: "qt5compat qtimageformats qtnetworkauth"
linuxdeploy_hash: "4648f278ab3ef31f819e67c30d50f462640e5365a77637d7e6f2ad9fd0b4522a linuxdeploy-x86_64.AppImage"
linuxdeploy_qt_hash: "15106be885c1c48a021198e7e1e9a48ce9d02a86dd0a1848f00bdbf3c1c92724 linuxdeploy-plugin-qt-x86_64.AppImage"
appimageupdate_hash: "f1747cf60058e99f1bb9099ee9787d16c10241313b7acec81810ea1b1e568c11 AppImageUpdate-x86_64.AppImage"
- os: windows-2022
name: "Windows-MinGW-w64"
@ -80,9 +80,9 @@ jobs:
architecture: "x64"
vcvars_arch: "amd64"
qt_ver: 6
qt_host: windows
qt_arch: ""
qt_version: "6.7.3"
qt_host: "windows"
qt_arch: "win64_msvc2022_64"
qt_version: "6.8.1"
qt_modules: "qt5compat qtimageformats qtnetworkauth"
nscurl_tag: "v24.9.26.122"
nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0"
@ -93,9 +93,9 @@ jobs:
architecture: "arm64"
vcvars_arch: "amd64_arm64"
qt_ver: 6
qt_host: windows
qt_arch: "win64_msvc2019_arm64"
qt_version: "6.7.3"
qt_host: "windows"
qt_arch: "win64_msvc2022_arm64_cross_compiled"
qt_version: "6.8.1"
qt_modules: "qt5compat qtimageformats qtnetworkauth"
nscurl_tag: "v24.9.26.122"
nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0"
@ -106,7 +106,7 @@ jobs:
qt_ver: 6
qt_host: mac
qt_arch: ""
qt_version: "6.7.3"
qt_version: "6.8.1"
qt_modules: "qt5compat qtimageformats qtnetworkauth"
- os: macos-14
@ -216,14 +216,14 @@ jobs:
- name: Install host Qt (Windows MSVC arm64)
if: runner.os == 'Windows' && matrix.architecture == 'arm64'
uses: jurplel/install-qt-action@v3
uses: jurplel/install-qt-action@v4
with:
aqtversion: "==3.1.*"
py7zrversion: ">=0.20.2"
version: ${{ matrix.qt_version }}
host: "windows"
target: "desktop"
arch: ""
arch: ${{ matrix.qt_arch }}
modules: ${{ matrix.qt_modules }}
cache: ${{ inputs.is_qt_cached }}
cache-key-prefix: host-qt-arm64-windows
@ -232,7 +232,7 @@ jobs:
- name: Install Qt (macOS, Linux & Windows MSVC)
if: matrix.msystem == ''
uses: jurplel/install-qt-action@v3
uses: jurplel/install-qt-action@v4
with:
aqtversion: "==3.1.*"
py7zrversion: ">=0.20.2"
@ -252,19 +252,26 @@ jobs:
- name: Prepare AppImage (Linux)
if: runner.os == 'Linux' && matrix.qt_ver != 5
env:
APPIMAGEUPDATE_HASH: ${{ matrix.appimageupdate_hash }}
LINUXDEPLOY_HASH: ${{ matrix.linuxdeploy_hash }}
LINUXDEPLOY_QT_HASH: ${{ matrix.linuxdeploy_qt_hash }}
run: |
wget "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
wget "https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage"
wget "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage"
wget "https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20250213-2/linuxdeploy-x86_64.AppImage"
wget "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/1-alpha-20250213-1/linuxdeploy-plugin-qt-x86_64.AppImage"
wget "https://github.com/AppImageCommunity/AppImageUpdate/releases/download/continuous/AppImageUpdate-x86_64.AppImage"
wget "https://github.com/AppImageCommunity/AppImageUpdate/releases/download/2.0.0-alpha-1-20241225/AppImageUpdate-x86_64.AppImage"
sudo apt install libopengl0
sha256sum -c - <<< "$LINUXDEPLOY_HASH"
sha256sum -c - <<< "$LINUXDEPLOY_QT_HASH"
sha256sum -c - <<< "$APPIMAGEUPDATE_HASH"
sudo apt install libopengl0 libfuse2
- name: Add QT_HOST_PATH var (Windows MSVC arm64)
if: runner.os == 'Windows' && matrix.architecture == 'arm64'
run: |
echo "QT_HOST_PATH=${{ github.workspace }}\HostQt\Qt\${{ matrix.qt_version }}\msvc2019_64" >> $env:GITHUB_ENV
echo "QT_HOST_PATH=${{ github.workspace }}\HostQt\Qt\${{ matrix.qt_version }}\msvc2022_64" >> $env:GITHUB_ENV
- name: Setup java (macOS)
if: runner.os == 'macOS'
@ -519,8 +526,8 @@ jobs:
cp -r ${{ runner.workspace }}/Qt/${{ matrix.qt_version }}/gcc_64/plugins/iconengines/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/plugins/iconengines
cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
cp /usr/lib/x86_64-linux-gnu/libcrypto.so.* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
cp /usr/lib/x86_64-linux-gnu/libssl.so.* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
cp /usr/lib/x86_64-linux-gnu/libOpenGL.so.0* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/
LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib"
@ -555,9 +562,9 @@ jobs:
mkdir ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /lib/x86_64-linux-gnu/libbz2.so.1.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libffi.so.7 ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libcrypto.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libssl.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib
cp /usr/lib/x86_64-linux-gnu/libffi.so.*.* ${{ env.INSTALL_PORTABLE_DIR }}/lib
mv ${{ env.INSTALL_PORTABLE_DIR }}/bin/*.so* ${{ env.INSTALL_PORTABLE_DIR }}/lib
for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt
@ -629,76 +636,3 @@ jobs:
shell: msys2 {0}
run: |
ccache -s
flatpak:
runs-on: ubuntu-latest
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.8
options: --privileged
steps:
- name: Checkout
uses: actions/checkout@v4
if: inputs.build_type == 'Debug'
with:
submodules: true
- name: Set short version
shell: bash
run: echo "VERSION=${GITHUB_SHA::7}" >> $GITHUB_ENV
- name: Build Flatpak (Linux)
if: inputs.build_type == 'Debug'
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: ShatteredPrism-${{ runner.os }}-${{ env.VERSION }}-Flatpak.flatpak
manifest-path: flatpak/org.lunaislazier.ShatteredPrism.yml
nix:
name: Nix (${{ matrix.system }})
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
system: x86_64-linux
- os: macos-13
system: x86_64-darwin
- os: macos-14
system: aarch64-darwin
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@v30
# For PRs
- name: Setup Nix Magic Cache
uses: DeterminateSystems/magic-nix-cache-action@v8
# For in-tree builds
- name: Setup Cachix
uses: cachix/cachix-action@v15
with:
name: unmojang
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Run flake checks
run: |
nix flake check --print-build-logs --show-trace
- name: Build debug package
if: ${{ inputs.build_type == 'Debug' }}
run: |
nix build --print-build-logs .#shatteredprism-debug
- name: Build release package
if: ${{ inputs.build_type != 'Debug' }}
run: |
nix build --print-build-logs .#shatteredprism

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

@ -0,0 +1,62 @@
name: Flatpak
on:
push:
paths-ignore:
- "**.md"
- "**/LICENSE"
- ".github/ISSUE_TEMPLATE/**"
- ".markdownlint**"
- "nix/**"
# We don't do anything with these artifacts on releases. They go to Flathub
tags-ignore:
- "*"
pull_request:
paths-ignore:
- "**.md"
- "**/LICENSE"
- ".github/ISSUE_TEMPLATE/**"
- ".markdownlint**"
- "nix/**"
workflow_dispatch:
permissions:
contents: read
jobs:
build:
name: Build (${{ matrix.arch }})
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
arch: x86_64
- os: ubuntu-22.04-arm
arch: aarch64
runs-on: ${{ matrix.os }}
container:
image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.8
options: --privileged
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: true
- name: Set short version
shell: bash
run: |
echo "VERSION=${GITHUB_SHA::7}" >> "$GITHUB_ENV"
- name: Build Flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
bundle: ShatteredPrism-${{ runner.os }}-${{ env.VERSION }}-Flatpak.flatpak
manifest-path: flatpak/org.lunaislazier.ShatteredPrism.yml
arch: ${{ matrix.arch }}

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

@ -0,0 +1,88 @@
name: Nix
on:
push:
paths-ignore:
- "**.md"
- "**/LICENSE"
- ".github/ISSUE_TEMPLATE/**"
- ".markdownlint**"
- "flatpak/**"
tags:
- "*"
pull_request_target:
paths-ignore:
- "**.md"
- "**/LICENSE"
- ".github/ISSUE_TEMPLATE/**"
- ".markdownlint**"
- "flatpak/**"
workflow_dispatch:
permissions:
contents: read
env:
DEBUG: ${{ github.ref_type != 'tag' }}
USE_DETERMINATE: ${{ github.event_name == 'pull_request' }}
jobs:
build:
name: Build (${{ matrix.system }})
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
system: x86_64-linux
- os: ubuntu-22.04-arm
system: aarch64-linux
- os: macos-13
system: x86_64-darwin
- os: macos-14
system: aarch64-darwin
runs-on: ${{ matrix.os }}
permissions:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v16
with:
determinate: ${{ env.USE_DETERMINATE }}
# For PRs
- name: Setup Nix Magic Cache
if: ${{ env.USE_DETERMINATE }}
uses: DeterminateSystems/flakehub-cache-action@v1
# For in-tree builds
- name: Setup Cachix
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
uses: cachix/cachix-action@v15
with:
name: lunaislazier
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Run Flake checks
run: |
nix flake check --print-build-logs --show-trace
- name: Build debug package
if: ${{ env.DEBUG }}
run: |
nix build --print-build-logs .#shatteredprism-debug
- name: Build release package
if: ${{ !env.DEBUG }}
run: |
nix build --print-build-logs .#shatteredprism

View File

@ -38,6 +38,5 @@ jobs:
APPLE_NOTARIZE_APPLE_ID: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }}
APPLE_NOTARIZE_TEAM_ID: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }}
APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }}
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

@ -23,7 +23,6 @@ jobs:
APPLE_NOTARIZE_APPLE_ID: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }}
APPLE_NOTARIZE_TEAM_ID: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }}
APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }}
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

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

6
.gitignore vendored
View File

@ -47,8 +47,12 @@ run/
# Nix/NixOS
.direnv/
.pre-commit-config.yaml
## Used when manually invoking stdenv phases
outputs/
## Regular artifacts
result
result-*
repl-result-*
# Flatpak
.flatpak-builder

View File

@ -4,6 +4,9 @@ MD012: false
# MD013/line-length - Line length
MD013: false
# MD022/blanks-around-headings
MD022: false
# MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
MD024:
siblings-only: true

View File

@ -78,6 +78,13 @@ else()
# ATL's pack list needs more than the default 1 Mib stack on windows
if(WIN32)
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack,8388608 ${CMAKE_EXE_LINKER_FLAGS}")
# -ffunction-sections and -fdata-sections help reduce binary size
# -mguard=cf enables Control Flow Guard
# TODO: Look into -gc-sections to further reduce binary size
foreach(lang C CXX)
set("CMAKE_${lang}_FLAGS_RELEASE" "-ffunction-sections -fdata-sections -mguard=cf")
endforeach()
endif()
endif()
@ -106,14 +113,14 @@ if ((CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI
else()
# AppleClang and Clang
message(STATUS "Address Sanitizer available on Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=null")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=null")
endif()
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# GCC
message(STATUS "Address Sanitizer available on GCC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover")
link_libraries("asan")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
message(STATUS "Address Sanitizer available on MSVC")
@ -181,7 +188,7 @@ set(Launcher_FMLLIBS_BASE_URL "https://files.prismlauncher.org/fmllibs/" CACHE S
######## Set version numbers ########
set(Launcher_VERSION_MAJOR 1)
set(Launcher_VERSION_MINOR 5)
set(Launcher_VERSION_MINOR 7)
set(Launcher_VERSION_NAME "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}")
set(Launcher_VERSION_NAME4 "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.0.0")

View File

@ -1,7 +1,7 @@
## Shattered Prism
Shattered Prism - Minecraft Launcher
Copyright (C) 2024-2024 Shattered Prism Contributors
Copyright (C) 2024-2025 Shattered Prism 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
@ -35,7 +35,7 @@
## Fjord Launcher
Fjord Launcher - Minecraft Launcher
Copyright (C) 2024-2024 Fjord Launcher Contributors
Copyright (C) 2024-2025 Fjord 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
@ -103,7 +103,7 @@
## Prism Launcher
Prism Launcher - Minecraft Launcher
Copyright (C) 2022-2024 Prism Launcher Contributors
Copyright (C) 2022-2025 Prism Launcher Contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@ -8,10 +8,13 @@
<p align="center">
Shattered Prism 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 PrismLauncher and is <b>not</b> endorsed by it.
<br />This is a <b>fork</b> of FjordLauncher and is <b>not</b> endorsed by it or Prism.
</p>
# Why does this exist?
## Why does this exist?
This project was originally a direct fork of upstream Prism, but spent most of it's time as a small group-oriented continuation of fn2006's PollyMC, except with continued support for Microsoft authentication and being without branding that would get it confused for a uh... *similarly named project*. Luckily though, [@evan-goode](https://github.com/evan-goode) eventually created Fjord and this project has been based upon it ever since!
## Differences from PrismLauncher
- Fully removed PrismLauncher's DRM.
- Restores the ability to download modpacks from FTB.
@ -25,10 +28,11 @@
## Community & Support
Feel free to create a GitHub issue if you find a bug or want to suggest something, it is currently the **only** way to contact anyone regarding this project.
Feel free to create a GitHub issue if you find a bug or want to suggest something.
Do **not** ask for support on any of the official PrismLauncher channels as they cannot be held responsible for any issues caused by the changes made.
For any other project-related inquiries, reach me at either my [Bluesky](https://bsky.app/profile/moonlitvtuber.org) or [Twitter](https://twitter.com/lunasc_ope).
Do **not** ask for support on any of the official PrismLauncher channels, please refer to the FjordLauncher ones **only** if the issue is shared between these two projects.
## License [![https://github.com/PrismLauncher/PrismLauncher/blob/develop/LICENSE](https://img.shields.io/github/license/PrismLauncher/PrismLauncher?label=License&logo=gnu&color=C4282D)](LICENSE)

View File

@ -179,7 +179,7 @@ class Config {
QString FMLLIBS_BASE_URL;
QString TRANSLATION_FILES_URL;
QString MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/";
QString MODPACKSCH_API_BASE_URL = "https://api.feed-the-beast.com/v1/modpacks/";
QString LEGACY_FTB_CDN_BASE_URL = "https://dist.creeper.host/FTB2/";

View File

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

12
flake.lock generated
View File

@ -3,11 +3,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1732722421,
"narHash": "sha256-HRJ/18p+WoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg=",
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
@ -49,11 +49,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1732758367,
"narHash": "sha256-RzaI1RO0UXqLjydtz3GAXSTzHkpb/lLD1JD8a0W4Wpo=",
"lastModified": 1739866667,
"narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fa42b5a5f401aab8a32bd33c9a4de0738180dc59",
"rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680",
"type": "github"
},
"original": {

131
flake.nix
View File

@ -15,28 +15,6 @@
url = "github:PrismLauncher/libnbtplusplus";
flake = false;
};
nix-filter.url = "github:numtide/nix-filter";
/*
Inputs below this are optional and can be removed
```
{
inputs.shatteredprism = {
url = "github:lunaislazier/ShatteredPrism";
inputs = {
flake-compat.follows = "";
};
};
}
```
*/
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
};
outputs =
@ -44,9 +22,8 @@
self,
nixpkgs,
libnbtplusplus,
nix-filter,
...
}:
let
inherit (nixpkgs) lib;
@ -58,27 +35,108 @@
forAllSystems = lib.genAttrs systems;
nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system});
in
{
checks = forAllSystems (
system:
let
checks' = nixpkgsFor.${system}.callPackage ./nix/checks.nix { inherit self; };
pkgs = nixpkgsFor.${system};
llvm = pkgs.llvmPackages_19;
in
lib.filterAttrs (_: lib.isDerivation) checks'
{
formatting =
pkgs.runCommand "check-formatting"
{
nativeBuildInputs = with pkgs; [
deadnix
llvm.clang-tools
markdownlint-cli
nixfmt-rfc-style
statix
];
}
''
cd ${self}
echo "Running clang-format...."
clang-format --dry-run --style='file' --Werror */**.{c,cc,cpp,h,hh,hpp}
echo "Running deadnix..."
deadnix --fail
echo "Running markdownlint..."
markdownlint --dot .
echo "Running nixfmt..."
find -type f -name '*.nix' -exec nixfmt --check {} +
echo "Running statix"
statix check .
touch $out
'';
}
);
devShells = forAllSystems (
system:
let
pkgs = nixpkgsFor.${system};
llvm = pkgs.llvmPackages_19;
packages' = self.packages.${system};
# Re-use our package wrapper to wrap our development environment
qt-wrapper-env = packages'.shatteredprism.overrideAttrs (old: {
name = "qt-wrapper-env";
# Required to use script-based makeWrapper below
strictDeps = true;
# We don't need/want the unwrapped Fjord package
paths = [ ];
nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [
# Ensure the wrapper is script based so it can be sourced
pkgs.makeWrapper
];
# Inspired by https://discourse.nixos.org/t/python-qt-woes/11808/10
buildCommand = ''
makeQtWrapper ${lib.getExe pkgs.runtimeShellPackage} "$out"
sed -i '/^exec/d' "$out"
'';
});
in
{
default = pkgs.mkShell {
inputsFrom = [ self.packages.${system}.shatteredprism-unwrapped ];
buildInputs = with pkgs; [
inputsFrom = [ packages'.shatteredprism-unwrapped ];
packages = with pkgs; [
ccache
ninja
llvm.clang-tools
];
cmakeBuildType = "Debug";
cmakeFlags = [ "-GNinja" ] ++ packages'.shatteredprism.cmakeFlags;
dontFixCmake = true;
shellHook = ''
echo "Sourcing ${qt-wrapper-env}"
source ${qt-wrapper-env}
git submodule update --init --force
if [ ! -f compile_commands.json ]; then
cmakeConfigurePhase
cd ..
ln -s "$cmakeBuildDir"/compile_commands.json compile_commands.json
fi
'';
};
}
);
@ -89,7 +147,6 @@
shatteredprism-unwrapped = prev.callPackage ./nix/unwrapped.nix {
inherit
libnbtplusplus
nix-filter
self
;
};
@ -99,6 +156,7 @@
packages = forAllSystems (
system:
let
pkgs = nixpkgsFor.${system};
@ -111,6 +169,7 @@
default = shatteredPackages.shatteredprism;
};
in
# Only output them if they're available on the current system
lib.filterAttrs (_: lib.meta.availableOn pkgs.stdenv.hostPlatform) packages
);
@ -118,16 +177,18 @@
# We put these under legacyPackages as they are meant for CI, not end user consumption
legacyPackages = forAllSystems (
system:
let
shatteredPackages = self.packages.${system};
legacyPackages = self.legacyPackages.${system};
packages' = self.packages.${system};
legacyPackages' = self.legacyPackages.${system};
in
{
shatteredprism-debug = shatteredPackages.shatteredprism.override {
shatteredprism-unwrapped = legacyPackages.shatteredprism-unwrapped-debug;
shatteredprism-debug = packages'.shatteredprism.override {
shatteredprism-unwrapped = legacyPackages'.shatteredprism-unwrapped-debug;
};
shatteredprism-unwrapped-debug = shatteredPackages.shatteredprism-unwrapped.overrideAttrs {
shatteredprism-unwrapped-debug = packages'.shatteredprism-unwrapped.overrideAttrs {
cmakeBuildType = "Debug";
dontStrip = true;
};

5
launcher/Application.cpp Normal file → Executable file
View File

@ -166,6 +166,8 @@
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#include "onimai.h"
static const QLatin1String liveCheckFile("live.check");
PixmapCache* PixmapCache::s_instance = nullptr;
@ -932,6 +934,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
connect(this, &Application::clickedOnDock, [this]() { this->showMainWindow(); });
#endif
onimaiLoadLauncher(this);
connect(this, &Application::aboutToQuit, [this]() {
if (m_instances) {
// save any remaining instance state
@ -1117,6 +1121,7 @@ bool Application::createSetupWizard()
bool validWidgets = m_themeManager->isValidApplicationTheme(settings()->get("ApplicationTheme").toString());
bool validIcons = m_themeManager->isValidIconTheme(settings()->get("IconTheme").toString());
bool login = !m_accounts->anyAccountIsValid() && capabilities() & Application::SupportsMSA;
login = false;
bool themeInterventionRequired = !validWidgets || !validIcons;
bool wizardRequired = javaRequired || languageRequired || pasteInterventionRequired || themeInterventionRequired || askjava || login;
if (wizardRequired) {

0
launcher/Application.h Normal file → Executable file
View File

0
launcher/ApplicationMessage.cpp Normal file → Executable file
View File

0
launcher/ApplicationMessage.h Normal file → Executable file
View File

0
launcher/BaseInstaller.cpp Normal file → Executable file
View File

0
launcher/BaseInstaller.h Normal file → Executable file
View File

2
launcher/BaseInstance.cpp Normal file → Executable file
View File

@ -58,6 +58,8 @@ BaseInstance::BaseInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr s
m_global_settings = globalSettings;
m_rootDir = rootDir;
qDebug() << "BaseInstance: " << rootDir;
m_settings->registerSetting("name", "Unnamed Instance");
m_settings->registerSetting("iconKey", "default");
m_settings->registerSetting("notes", "");

0
launcher/BaseInstance.h Normal file → Executable file
View File

0
launcher/BaseVersion.h Normal file → Executable file
View File

0
launcher/BaseVersionList.cpp Normal file → Executable file
View File

0
launcher/BaseVersionList.h Normal file → Executable file
View File

1
launcher/CMakeLists.txt Normal file → Executable file
View File

@ -5,6 +5,7 @@ project(application)
######## Sources and headers ########
set(CORE_SOURCES
onimai.cpp
# LOGIC - Base classes and infrastructure
BaseInstaller.h
BaseInstaller.cpp

0
launcher/Commandline.cpp Normal file → Executable file
View File

0
launcher/Commandline.h Normal file → Executable file
View File

0
launcher/DataMigrationTask.cpp Normal file → Executable file
View File

0
launcher/DataMigrationTask.h Normal file → Executable file
View File

0
launcher/DefaultVariable.h Normal file → Executable file
View File

0
launcher/DesktopServices.cpp Normal file → Executable file
View File

0
launcher/DesktopServices.h Normal file → Executable file
View File

0
launcher/Exception.h Normal file → Executable file
View File

0
launcher/ExponentialSeries.h Normal file → Executable file
View File

0
launcher/FastFileIconProvider.cpp Normal file → Executable file
View File

0
launcher/FastFileIconProvider.h Normal file → Executable file
View File

0
launcher/FileIgnoreProxy.cpp Normal file → Executable file
View File

0
launcher/FileIgnoreProxy.h Normal file → Executable file
View File

0
launcher/FileSystem.cpp Normal file → Executable file
View File

0
launcher/FileSystem.h Normal file → Executable file
View File

0
launcher/Filter.cpp Normal file → Executable file
View File

0
launcher/Filter.h Normal file → Executable file
View File

0
launcher/GZip.cpp Normal file → Executable file
View File

0
launcher/GZip.h Normal file → Executable file
View File

0
launcher/GetAuthlibInjectorApiLocation.cpp Normal file → Executable file
View File

0
launcher/GetAuthlibInjectorApiLocation.h Normal file → Executable file
View File

0
launcher/InstanceCopyPrefs.cpp Normal file → Executable file
View File

0
launcher/InstanceCopyPrefs.h Normal file → Executable file
View File

0
launcher/InstanceCopyTask.cpp Normal file → Executable file
View File

0
launcher/InstanceCopyTask.h Normal file → Executable file
View File

0
launcher/InstanceCreationTask.cpp Normal file → Executable file
View File

0
launcher/InstanceCreationTask.h Normal file → Executable file
View File

8
launcher/InstanceImportTask.cpp Normal file → Executable file
View File

@ -159,7 +159,7 @@ void InstanceImportTask::processZipPack()
}
QuaZipDir packZipDir(packZip.get());
qDebug() << "Attempting to determine instance type";
qDebug() << "Attempting to determine instance type ";
QString root;
@ -244,6 +244,8 @@ void InstanceImportTask::extractFinished()
}
}
qDebug() << "extractFinished " << static_cast<int>(m_modpackType);
switch (m_modpackType) {
case ModpackType::MultiMC:
processMultiMC();
@ -326,6 +328,8 @@ void InstanceImportTask::processMultiMC()
QString configPath = FS::PathCombine(m_stagingPath, "instance.cfg");
auto instanceSettings = std::make_shared<INISettingsObject>(configPath);
qDebug() << "processMultiMC: " << m_stagingPath;
NullInstance instance(m_globalSettings, instanceSettings, m_stagingPath);
// reset time played on import... because packs.
@ -334,6 +338,8 @@ void InstanceImportTask::processMultiMC()
// set a new nice name
instance.setName(name());
qDebug() << "processMultiMC2 " << instance.instanceRoot() << name();
// if the icon was specified by user, use that. otherwise pull icon from the pack
if (m_instIcon != "default") {
instance.setIconKey(m_instIcon);

0
launcher/InstanceImportTask.h Normal file → Executable file
View File

5
launcher/InstanceList.cpp Normal file → Executable file
View File

@ -449,6 +449,7 @@ QList<InstanceId> InstanceList::discoverInstances()
out.append(id);
qDebug() << "Found instance ID" << id;
}
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
instanceSet = QSet<QString>(out.begin(), out.end());
#else
@ -977,6 +978,7 @@ QString InstanceList::getStagedInstancePath()
#ifdef Q_OS_WIN32
SetFileAttributesA(tempRoot.toStdString().c_str(), FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED);
#endif
qDebug() << "get Debug" << result;
return result;
}
@ -994,7 +996,7 @@ bool InstanceList::commitStagedInstance(const QString& path,
auto should_override = commiting.shouldOverride();
if (should_override) {
instID = commiting.originalInstanceID();
instID = instanceName.modifiedName();
} else {
instID = FS::DirNameFromString(instanceName.modifiedName(), m_instDir);
}
@ -1010,6 +1012,7 @@ bool InstanceList::commitStagedInstance(const QString& path,
qWarning() << "Failed to override" << path << "to" << destination;
return false;
}
FS::deletePath(path);
} else {
if (!FS::move(path, destination)) {
qWarning() << "Failed to move" << path << "to" << destination;

0
launcher/InstanceList.h Normal file → Executable file
View File

0
launcher/InstancePageProvider.h Normal file → Executable file
View File

0
launcher/InstanceTask.cpp Normal file → Executable file
View File

31
launcher/InstanceTask.h Normal file → Executable file
View File

@ -30,26 +30,31 @@ struct InstanceName {
};
class InstanceTask : public Task, public InstanceName {
Q_OBJECT
public:
InstanceTask();
~InstanceTask() override = default;
Q_OBJECT
public:
InstanceTask();
~InstanceTask() override = default;
void setParentSettings(SettingsObjectPtr settings) { m_globalSettings = settings; }
void setParentSettings(SettingsObjectPtr settings) { m_globalSettings = settings; }
void setStagingPath(const QString& stagingPath) { m_stagingPath = stagingPath; }
void setStagingPath(const QString& stagingPath) { m_stagingPath = stagingPath; }
void setIcon(const QString& icon) { m_instIcon = icon; }
void setIcon(const QString& icon) { m_instIcon = icon; }
void setGroup(const QString& group) { m_instGroup = group; }
QString group() const { return m_instGroup; }
void setGroup(const QString& group) { m_instGroup = group; }
QString group() const { return m_instGroup; }
[[nodiscard]] bool shouldConfirmUpdate() const { return m_confirm_update; }
void setConfirmUpdate(bool confirm) { m_confirm_update = confirm; }
[[nodiscard]] bool shouldConfirmUpdate() const { return m_confirm_update; }
void setConfirmUpdate(bool confirm) { m_confirm_update = confirm; }
bool shouldOverride() const { return m_override_existing; }
bool shouldOverride() const { return m_override_existing; }
[[nodiscard]] QString originalInstanceID() const { return m_original_instance_id; };
[[nodiscard]] QString originalInstanceID() const { return m_original_instance_id; };
void setShouldOverride(bool should)
{
m_override_existing = should;
}
protected:
void setOverride(bool override, QString instance_id_to_override = {})

0
launcher/JavaCommon.cpp Normal file → Executable file
View File

0
launcher/JavaCommon.h Normal file → Executable file
View File

0
launcher/Json.cpp Normal file → Executable file
View File

0
launcher/Json.h Normal file → Executable file
View File

0
launcher/KonamiCode.cpp Normal file → Executable file
View File

0
launcher/KonamiCode.h Normal file → Executable file
View File

0
launcher/LaunchController.cpp Normal file → Executable file
View File

0
launcher/LaunchController.h Normal file → Executable file
View File

0
launcher/LoggedProcess.cpp Normal file → Executable file
View File

0
launcher/LoggedProcess.h Normal file → Executable file
View File

7
launcher/Logging.cpp Normal file
View File

@ -0,0 +1,7 @@
// This file was generated by ecm_qt_declare_logging_category(): DO NOT EDIT!
#include "Logging.h"
Q_LOGGING_CATEGORY(authCredentials, "launcher.auth.credentials", QtWarningMsg)

11
launcher/Logging.h Normal file
View File

@ -0,0 +1,11 @@
// This file was generated by ecm_qt_declare_logging_category(): DO NOT EDIT!
#ifndef ECM_QLOGGINGCATEGORY_AUTHCREDENTIALS_LOGGING_H
#define ECM_QLOGGINGCATEGORY_AUTHCREDENTIALS_LOGGING_H
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(authCredentials)
#endif

0
launcher/MMCTime.cpp Normal file → Executable file
View File

0
launcher/MMCTime.h Normal file → Executable file
View File

0
launcher/MMCZip.cpp Normal file → Executable file
View File

0
launcher/MMCZip.h Normal file → Executable file
View File

0
launcher/MTPixmapCache.h Normal file → Executable file
View File

10388
launcher/Makefile Executable file

File diff suppressed because it is too large Load Diff

0
launcher/MangoHud.cpp Normal file → Executable file
View File

0
launcher/MangoHud.h Normal file → Executable file
View File

0
launcher/Manifest.cpp Normal file → Executable file
View File

0
launcher/Manifest.h Normal file → Executable file
View File

0
launcher/Markdown.cpp Normal file → Executable file
View File

0
launcher/Markdown.h Normal file → Executable file
View File

0
launcher/MessageLevel.cpp Normal file → Executable file
View File

0
launcher/MessageLevel.h Normal file → Executable file
View File

0
launcher/NullInstance.h Normal file → Executable file
View File

0
launcher/PSaveFile.h Normal file → Executable file
View File

0
launcher/ProblemProvider.h Normal file → Executable file
View File

0
launcher/QObjectPtr.h Normal file → Executable file
View File

0
launcher/QVariantUtils.h Normal file → Executable file
View File

0
launcher/RWStorage.h Normal file → Executable file
View File

0
launcher/RecursiveFileSystemWatcher.cpp Normal file → Executable file
View File

0
launcher/RecursiveFileSystemWatcher.h Normal file → Executable file
View File

0
launcher/ResourceDownloadTask.cpp Normal file → Executable file
View File

0
launcher/ResourceDownloadTask.h Normal file → Executable file
View File

0
launcher/RuntimeContext.h Normal file → Executable file
View File

0
launcher/SeparatorPrefixTree.h Normal file → Executable file
View File

0
launcher/StringUtils.cpp Normal file → Executable file
View File

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