Merge branch 'testing' into nightly

nightly pre-release of the 0.20.0b0 release (26.5.21 version)
This commit is contained in:
xgui4
2026-05-21 15:42:09 -04:00
25 changed files with 224 additions and 324 deletions

BIN
.github/screenshots/image-old.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 210 KiB

View File

@@ -47,45 +47,48 @@ jobs:
*.zip
*.tar.gz
# # --- JOB 2 : Building Windows Installer ---
# # Disabled due to not working
# build_windows_installer:
# name: Build Inno Setup
# runs-on: windows-latest
# steps:
# - uses: actions/checkout@v6.0.2
# - name: Compile .ISS
# uses: Minionguyjpro/Inno-Setup-Action@v1.2.8
# with:
# path: packages\windows\setup-nigthly.iss
# options: '/O+ /F"LCE_Qt_Launcher_Windows_Nigthly_Setup"'
# --- JOB 2 : Building Windows Installer ---
build_windows_installer:
name: Build Inno Setup
runs-on: windows-latest
steps:
- uses: actions/checkout@v4 # test to see if version 4 work, verfify if update coudld be fixed or needed
- name: Compile .ISS
uses: Minionguyjpro/Inno-Setup-Action@v1.2.8
with:
path: packages\windows\setup-nigthly.iss
options: '/O+ /F"LCE_Qt_Launcher_Windows_Nigthly_Setup"'
# - name: Upload Artifact
# uses: actions/upload-artifact@v7.0.1
# with:
# name: installer-windows
# path: packages\windows\Output\*.exe
- name: Upload Artifact
uses: actions/upload-artifact@v7.0.1
with:
name: installer-windows
path: packages\windows\Output\*.exe
# # --- JOB 3 : Making Arch Linux Packages ---
# # Disabled due to not working
# build_arch_installer:
# name: Build Arch Package
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v6.0.2
# - name: Validate and Build package
# uses: heyhusen/archlinux-package-action@v3.0.0
# with:
# namcap: true
# updpkgsums : true
# path : "packages/linux/nigthly"
# srcinfo: true
# --- JOB 3 : Making Arch Linux Packages ---
# Disabled due to not working
build_arch_installer:
name: Build Arch Package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- name: Validate and Build package
uses: heyhusen/archlinux-package-action@v3.0.0
with:
namcap: true
updpkgsums : true
path : "packages/linux/nigthly"
# - name: Upload Artifact
# uses: actions/upload-artifact@v7.0.1
# with:
# name: packages-arch
# path: packages/linux/nightly/****.pkg.tar.zst
- name: Upload Artifact
uses: actions/upload-artifact@v7.0.1
with:
name: packages-arch
path: |
packages/linux/nigthly/*
packages/linux/nigthly/lce-qt-launcher-git-*.r?.*-?-any.pkg.tar.zst
!packages/linux/nigthly/pkg/
!packages/linux/nigthly/src/
!packages/linux/nigthly/lce-qt-launcher-git/
# --- JOB 4 : Publish the Nightly Release ---
release:
@@ -111,6 +114,8 @@ jobs:
> The nightly prebuild is only avaiable for GNU/Linux and Windows. \n
> For NixOS/Nixpkg you need to build it yourself by downloading the source files
and then run `./nix-helper install` \n
> For FreeBSD, check [my FreeBSD Port Overlay collection](https://github.com/xgui4/freebsd-ports/).
Note that the Nightly build is not avaiable as a port right now.
\n
Automatic Nighty (daily) binary build powered by GtiHub Actions. \n
The nighy build are experimental nuitka compilation from the nighly branch \n

View File

@@ -4,10 +4,10 @@
"installation_path": ".lce-revelations ",
"archive_file": "LCE-Revelations-Client-Win64.zip",
"exe_name": "Minecraft.Client.exe",
"repo_url": "https://github.com/itsRevela/LCE-Revelations",
"repo_url": "https://git.revela.dev/itsRevela/LCE-Revelations",
"image" : ":/assets/Revelation.jpg",
"news_feed" : "https://github.com/itsRevela/LCE-Revelations/commits/main/",
"instance_source": "InstanceSource.GITHUB_RELEASE",
"news_feed" : "https://git.revela.dev/itsRevela/LCE-Revelations/commits/branch/main",
"instance_source": "InstanceSource.FORGEJO_RELEASE",
"instance_type": "InstanceType.CLIENT_VANILLA",
"version": "Nightly"
}

View File

@@ -13,27 +13,7 @@
### Nix Package
<!--
#### Nix Flake (Coming Soon)
Run `nix build`
-->
#### Nixpkg
```bash
if [[ $user_input == "install" ]]; then
nix-build default.nix
nix-env -i ./result
fi
if [[ $user_input == "compile" ]]; then
./scripts/build.sh
fi
if [[ $user_input == "clear" ]]; then
./scripts/clear.sh
fi
```
Documentation Coming Soon
#### Windows Installer
@@ -43,7 +23,10 @@ Requirements :
1. Go to the windows packages locations : `cd pacakges/windows`
2. run the script with Inno Setup for your desired channel [`setup-nightly.iss`](packages/windows/setup-nigthly.iss) or [`setup.iss`](packages/windows/setup.iss))
#### FreeBSD
#### FreeBSD Port (Experimental)
> [!NOTE]
> The FreeBSD port is only avaiable for the latest tagged release right now and is experimental. And sometime may lagged in version. To get the nightly build or custom version, the UV method is currently the only officially supported method.
Using my Github FreeBSD [Overlay](https://github.com/xgui4/freebsd-ports/tree/master/lce-qt-launcher)

View File

@@ -20,20 +20,10 @@
## FreeBSD
```shell
#!/usr/bin/env sh
if [ "$1" = "create-venv" ]; then
uv venv --system-site-packages
fi
if [ "$1" = "sync" ]; then
uv sync --system-certs
fi
```
1. Create a virtual Python environment with system access using the command `uv venv --system-site-packages`
2. Synchronize the virtual environment with `uv sync`
3. Activate the virtual environment (replace {.sh} with .sh for bash, .fish for fish, or leave it blank for the POSIX shell) using `source .venv/bin/activate{.sh}`
4. Run the program with the command `python src/lce_qt_launcher/main.py`
## Using the command line

View File

@@ -13,31 +13,20 @@
### Paquet Nix
Documentation à venir
<!--
#### Nix Flake (Bientôt disponible)
#### Nix Flake (Expérimental)
Exécutez `nix build`.
1. Exécutez `nix build`.
-->
#### Nixpkg
```bash
1. nix-build default.nix
if [[ $user_input == "install" ]]; then
2. nix-env -i ./result
nix-build default.nix
nix-env -i ./result
fi
if [[ $user_input == "compile" ]]; puis
./scripts/build.sh
fi puis
./scripts/clear.sh
fi
```
-->
#### Programme d'installation Windows
@@ -47,7 +36,10 @@ Prérequis :
1. Accédez au répertoire des paquets Windows : `cd packages/windows`
2. Exécutez le script avec Inno Setup pour le canal souhaité : [`setup-nightly.iss`](packages/windows/setup-nightly.iss) ou [`setup.iss`](packages/windows/setup.iss)
#### FreeBSD
#### Via système de portage FreeBSD (Expérimental)
> [!NOTE]
> La version pour le system de portage pour FreeBSD n'est actuellement disponible que pour la dernière version étiquetée et est expérimental. Il peut arriver qu'il y ait un retard de version. Pour obtenir une version de développement ou une version personnalisée, la méthode UV est actuellement la seule méthode officiellement prise en charge.
Utilité mon FreeBSD Port [Overlay](https://github.com/xgui4/freebsd-ports/tree/master/lce-qt-launcher)

View File

@@ -10,24 +10,14 @@
1. Créez un environnement virtuel Python à l'aide d'un outil comme UV (si ce n'est pas déjà fait).
2. Configurez VSCode pour utiliser cet environnement virtuel Python.
3. Exécutez « Pyside : Synchroniser l'environnement virtuel et lancer ».
4. Lancez l'application via le mode débogage de VSCode ou directement le fichier [`src/lce_qt_launcher/main.py`](src/lce_qt_launcher/main.py).
## FreeBSD
```shell
#!/usr/bin/env sh
if [ "$1" = "create-venv" ]; then
uv venv --system-site-packages
fi
if [ "$1" = "sync" ]; then
uv sync --system-certs
fi
```
1. Crée un environnemnt python virtuelle avec accès system avec la commande `uv venv --system-site-packages`
2. Synchroniser l'environnement virtuelle avec `uv sync`
3. Activer l'environnement virtuelle (remplace {.sh} par .sh pour bash, .fish pour fish ou rien pour le shell POSIX) `source .venv/bin/activate{.sh}`
4. Executer le programme avec la commande `python src/lce_qt_launcher/main.py`
## NixOS

View File

@@ -3,7 +3,7 @@
[Version anglaise](readme.md)
![LCE-QT-Launcher](assets/io.github.xgui4.lce_qt_launcher.png)
![Capture d'écran du lanceur](.github/screenshots/image.png)
![Capture d'écran du lanceur (version à jour)](.github/screenshots/image.png)
> [!WARNING]
> Ce lanceur est en cours de développement et ses fonctionnalités peuvent être modifiées ou supprimées à tout moment.
@@ -87,6 +87,7 @@ Vous pouvez également télécharger ce dépôt avec la commande `git clone http
- Un environnement virtuel avec les bibliothèques requises installées (spécifiées dans le fichier README et le fichier [`pyproject.toml`](pyproject.toml))
- [PySide6](https://pypi.org/project/PySide6/)
- [Police Monocraft](https://github.com/IdreesInc/Monocraft) installée
- [Police Miracode](https://github.com/IdreesInc/Miracode)
- Pour les systèmes de type UNIX
- Un serveur d'affichage ou un compositeur (sauf sur macOS où un serveur propriétaire est utilisé).
- Bash (normalement préinstallé sous Linux, mais souvent requis sous *BSD et macOS)

View File

@@ -1,63 +0,0 @@
# Maintainer: Xgui4
pkgname=lce-qt-launcher-dev
pkgver=3076fd1
pkgrel=1
pkgdesc="A custom Minecraft LCE Launcher written in Python and Qt with GNU/Linux support in mind. (Nightly Beta Build)"
arch=('any')
url="https://github.com/xgui4/LCE-Qt-Launcher"
license=('GPL-3.0-or-later')
depends=(
'python'
'pyside6'
'python-vdf'
'python-platformdirs'
'python-rich'
)
makedepends=(
'git'
'bash'
'curl'
'python-build'
'python-installer'
'python-hatchling'
'python-wheel'
'qt6-tools'
)
optdepends=(
'wine: Allow to launch non-Linux-native Minecraft LCE ports'
'steam: Allow for Steam integration'
'steamtinkerlaunch: For better Stream integration on Linux'
)
replace=("${pkgname%-beta}")
provides=("${pkgname%-dev}" "${pkgname%}")
conflicts=("${pkgname%-nightly}" "${pkgname%-git}" "${pkgname%-stable}")
source=("${pkgname}::git+${url}.git#branch=testing")
sha256sums=('SKIP')
pkgver() {
cd "$pkgname"
# cutting off 'foo-' prefix that presents in the git tag
git describe --long --always --tags | sed 's/^foo-//;s/\([^-]*-g\)/r\1/;s/-/./g'
}
build() {
cd "$pkgname"
rm -rf dist/ build/
/usr/bin/python -m build --wheel --no-isolation
}
package() {
cd "$pkgname"
/usr/bin/python -m installer --destdir="$pkgdir" dist/*.whl
install -d "$pkgdir/opt/lce_qt_launcher"
cp -r data assets "$pkgdir"
install -Dm644 "data/lce_qt_launcher.ini" "$pkgdir/etc/lce_qt_launcher.ini"
install -Dm644 "packages/io.github.xgui4.lce_qt_launcher.desktop" "$pkgdir/usr/share/applications/io.github.xgui4.lce_qt_launcher.desktop"
install -Dm644 "packages/lce_inst-mime.xml" "$pkgdir/usr/share/mime/packages/io.github.xgui4.lce_qt_launcher.xml"
install -Dm644 "license.md" -t "$pkgdir/usr/share/licenses/$pkgname/"
install -Dm644 "readme.md" "code-of-conduct.md" -t "$pkgdir/usr/share/doc/$pkgname/"
install -Dm644 "packages/io.github.xgui4.lce_qt_launcher.metainfo.xml" "$pkgdir/usr/share/metainfo/io.github.xgui4.lce_qt_launcher.metainfo.xml"
install -Dm644 "assets/io.github.xgui4.lce_qt_launcher.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/io.github.xgui4.lce_qt_launcher.png"
install -Dm644 "assets/lce_inst.png" "$pkgdir/usr/share/icons/hicolor/128x128/mimetypes/application-x-lce_inst.png"
}

View File

@@ -1,8 +1,8 @@
# Maintainer: Xgui4
pkgname=lce-qt-launcher-git
pkgver=nightly.r0.g3b0a721
pkgver=nightly.r0.gef515be
pkgrel=1
pkgdesc="A custom Minecraft LCE Launcher written in Python and Qt with GNU/Linux support in mind. (Nigthly Build)"
pkgdesc="A custom Minecraft LCE Launcher written in Python and Qt with GNU/Linux support in mind. (Nightly/Git Build)"
arch=('any')
url="https://github.com/xgui4/LCE-Qt-Launcher"
license=('GPL-3.0-or-later')
@@ -16,7 +16,6 @@ depends=(
makedepends=(
'git'
'bash'
'curl'
'python-build'
'python-installer'
'python-hatchling'
@@ -24,20 +23,20 @@ makedepends=(
'qt6-tools'
)
optdepends=(
'wine: Allow to launch non-Linux-native Minecraft LCE ports'
'wine: Allow to launch non-Linux-native Minecraft LCE ports'
'steam: Allow for Steam integration'
'steamtinkerlaunch: For better Stream integration on Linux'
)
provides=("${pkgname%-nightly}" "${pkgname%}")
conflicts=("${pkgname%-dev}" "${pkgname%-stable}")
conflicts=("${pkgname%-dev}" "${pkgname%-git}" "${pkgname%-stable}")
source=("${pkgname}::git+${url}.git#branch=nightly")
sha256sums=('SKIP')
pkgver() {
cd "$pkgname"
# cutting off 'foo-' prefix that presents in the git tag
git describe --long --tags | sed 's/^foo-//;s/\([^-]*-g\)/r\1/;s/-/./g'
git describe --long --always --tags | sed 's/^foo-//;s/\([^-]*-g\)/r\1/;s/-/./g'
}
build() {
@@ -53,10 +52,10 @@ package() {
cp -r data assets "$pkgdir"
install -Dm644 "data/lce_qt_launcher.ini" "$pkgdir/etc/lce_qt_launcher.ini"
install -Dm644 "packages/io.github.xgui4.lce_qt_launcher.desktop" "$pkgdir/usr/share/applications/io.github.xgui4.lce_qt_launcher.desktop"
install -Dm644 "packages/lce_inst-mime.xml" "$pkgdir/usr/share/mime/packages/io.github.xgui4.lce_qt_launcher.xml"
install -Dm644 "license.md" -t "$pkgdir/usr/share/licenses/$pkgname/"
install -Dm644 "readme.md" "code-of-conduct.md" -t "$pkgdir/usr/share/doc/$pkgname/"
install -Dm644 "packages/io.github.xgui4.lce_qt_launcher.metainfo.xml" "$pkgdir/usr/share/metainfo/io.github.xgui4.lce_qt_launcher.metainfo.xml"
install -Dm644 "packages/lce_inst-mime.xml" "$pkgdir/usr/share/mime/packages/io.github.xgui4.lce_qt_launcher.metainfo.xml"
install -Dm644 "assets/io.github.xgui4.lce_qt_launcher.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/io.github.xgui4.lce_qt_launcher.png"
install -Dm644 "assets/lce_inst.png" "$pkgdir/usr/share/icons/hicolor/128x128/mimetypes/application-x-lce_inst.png"
}

View File

@@ -1 +0,0 @@
the nix package is at the root of the package for technical reason, since this is how a nix package are usally places

View File

@@ -1,3 +0,0 @@
# Notice
This `PKGBUILD` is for the upcoming version, so it won't work until the version is released.

View File

@@ -1,8 +1,8 @@
# Maintainer: Xgui4
pkgname=lce-qt-launcher
pkgver=0.0.2.0
pkgver="0.0.20b0"
pkgrel=1
pkgdesc="A custom Minecraft LCE Launcher written with PySide6 (Python) with GNU/Linux support in mind. (Master/Stable Branch)"
pkgdesc="A custom Minecraft LCE Launcher written in Python and Qt with GNU/Linux support in mind."
arch=('any')
url="https://github.com/xgui4/LCE-Qt-Launcher"
license=('GPL-3.0-or-later')
@@ -16,7 +16,6 @@ depends=(
makedepends=(
'git'
'bash'
'curl'
'python-build'
'python-installer'
'python-hatchling'
@@ -24,13 +23,13 @@ makedepends=(
'qt6-tools'
)
optdepends=(
'wine: Allow to launch non-Linux-native Minecraft LCE ports'
'wine: Allow to launch non-Linux-native Minecraft LCE ports'
'steam: Allow for Steam integration'
'steamtinkerlaunch: For better Stream integration on Linux'
)
provides=("${pkgname%-stable}" "${pkgname%}")
conflicts=("${pkgname%-git}" "${pkgname%-dev}")
source=("${pkgname}::git+${url}.git#tag=beta-v0.2.0")
source=("${pkgname}::git+${url}.git#tag=v0.0.20b0")
sha256sums=('SKIP')
build() {
@@ -46,10 +45,10 @@ package() {
cp -r data assets "$pkgdir"
install -Dm644 "data/lce_qt_launcher.ini" "$pkgdir/etc/lce_qt_launcher.ini"
install -Dm644 "packages/io.github.xgui4.lce_qt_launcher.desktop" "$pkgdir/usr/share/applications/io.github.xgui4.lce_qt_launcher.desktop"
install -Dm644 "packages/lce_inst-mime.xml" "$pkgdir/usr/share/mime/packages/io.github.xgui4.lce_qt_launcher.metainfo.xml"
install -Dm644 "packages/lce_inst-mime.xml" "$pkgdir/usr/share/mime/packages/io.github.xgui4.lce_qt_launcher.xml"
install -Dm644 "license.md" -t "$pkgdir/usr/share/licenses/$pkgname/"
install -Dm644 "readme.md" "code-of-conduct.md" -t "$pkgdir/usr/share/doc/$pkgname/"
install -Dm644 "packages/io.github.xgui4.lce_qt_launcher.metainfo.xml" "$pkgdir/usr/share/metainfo/io.github.xgui4.lce_qt_launcher.metainfo.xml"
install -Dm644 "assets/io.github.xgui4.lce_qt_launcher.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/io.github.xgui4.lce_qt_launcher.png"
install -Dm644 "assets/lce_inst.png" "$pkgdir/usr/share/icons/hicolor/128x128/mimetypes/application-x-lce_inst.png"
}
}

View File

@@ -3,7 +3,7 @@
; Non-commercial use only
#define MyAppName "LCE Qt Launcher (Nightly)"
#define MyAppVersion "0.0.20b0"
#define MyAppVersion "nighly"
#define MyAppPublisher "Xgui4"
#define MyAppURL "https://github.com/xgui4/lce-qt-launcher"
#define MyAppExeName "main.exe"

View File

@@ -24,8 +24,18 @@ AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
DisableDirPage=yes
UninstallDisplayIcon={app}\{#MyAppExeName}
DefaultGroupName={#MyAppName}
LicenseFile=..\..\license.md
InfoBeforeFile=..\..\code-of-conduct.md
InfoAfterFile=..\..\readme.md
; Uncomment the following line to run in non administrative install mode (install for current user only).
;PrivilegesRequired=lowest
PrivilegesRequiredOverridesAllowed=dialog
OutputBaseFilename=LCE-Qt-Launcher-Windows-Setup
SetupIconFile=..\..\assets\setup.ico
SolidCompression=yes
WizardStyle=modern dark polar
; ArchiveExtraction=full
; "ArchitecturesAllowed=x64compatible" specifies that Setup cannot run
; on anything but x64 and Windows 11 on Arm.
ArchitecturesAllowed=x64compatible
@@ -34,18 +44,7 @@ ArchitecturesAllowed=x64compatible
; meaning it should use the native 64-bit Program Files directory and
; the 64-bit view of the registry.
ArchitecturesInstallIn64BitMode=x64compatible
ChangesAssociations=yes
LicenseFile=..\..\license.md
InfoBeforeFile=..\..\code-of-conduct.md
InfoAfterFile=..\..\lisezmoi.md
; Uncomment the following line to run in non administrative install mode (install for current user only).
;PrivilegesRequired=lowest
PrivilegesRequiredOverridesAllowed=dialog
OutputDir=.
OutputBaseFilename=LCE-Qt-Launcher-Windows-Setup
SetupIconFile=..\..\assets\setup.ico
SolidCompression=yes
WizardStyle=modern dark polar
; SetupArchitecture=x64 ; for the inno 7 preview
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
@@ -55,14 +54,15 @@ Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
Source: "..\..\dist\main.dist\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\..\dist\main.dist\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Use the "issigverify" flag or the "Hash" parameter to verify downloads
Source: "https://github.com/xgui4/LCE-Qt-Launcher/releases/download/v0.0.20b0/LCE-Qt-Launcher-Windows.zip"; DestDir: "{app}"; DestName: "LCE-Qt-Launcher-Windows.zip"; ExternalSize: "186646528"; Flags: ignoreversion external download extractarchive recursesubdirs createallsubdirs
Source: "lce_inst.ico"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
[Registry]
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\lce_inst.ico"
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
[Icons]

View File

@@ -8,7 +8,7 @@ build-backend = "hatchling.build"
[project]
name = "LCE-Qt-Launcher"
version = "0.0.20a0"
description = "This is a custom Free/Libre Minecraft LCE Launcher written in Python and Qt. (Nightly Build)"
description = "A custom Free/Libre Minecraft LCE Launcher written with PySide6 (Python for Qt 6."
requires-python = ">3.10, <3.13"
license = "GPL-3.0-or-later"
readme = "readme.md"
@@ -38,7 +38,6 @@ path = "hatch_build.py"
[tool.hatch.envs.default.scripts]
packages = "python packages.py"
run-app = "python run.py"
[tool.pyright]
reportImportCycles="hint"

View File

@@ -3,7 +3,7 @@
[French Version](lisezmoi.md)
![LCE-QT-Launcher](assets/io.github.xgui4.lce_qt_launcher.png)
![Screnshot of the launcher](.github/screenshots/image.png)
![Screnshot of the launcher (updated version)](.github/screenshots/image.png)
> [!WARNING]
> This launcher is work in progress and its feature could be changes or remove at any time.
@@ -88,6 +88,7 @@ You can also, downloading this repo with the command `git clone https://github.c
- with a virtual env with the required library install (specified in the readme and [`pyproject.toml`](pyproject.toml))
- [PySide6](https://pypi.org/project/PySide6/)
- [Monocraft Font](https://github.com/IdreesInc/Monocraft) installed
- [Miracode Font](https://github.com/IdreesInc/Miracode)
- For UNIX like system
- A display server or compositor (Except on MacOS where it use its own proprietary one)
- Bash (normally pre-installed on Linux but often demand installation in *BSD and MacOS)

7
run.py
View File

@@ -1,7 +0,0 @@
import os
import subprocess
if os.name == "posix":
_ = subprocess.run("./scripts/run.sh", check=True)
if os.name == "nt":
_ = subprocess.run("scripts\\run.cmd", check=True, shell=True)

View File

@@ -5,43 +5,48 @@ set -e
QT_RESSOURCE="res.qrc"
UI_FILES=("form" "system_info" "instance" "settingDialog" "about" "contentInstaller")
if [[ $(uname -s) != "FreeBSD" ]]; then
if command -v pyside6-rcc &> /dev/null; then
echo "Starting Compilaton of Qt Ressource"
pyside6-rcc $QT_RESSOURCE -o src/lce_qt_launcher/res_rc.py
echo "done"
for ui in "${UI_FILES[@]}"; do
echo "Compiling ${ui}.ui"
OUT="src/lce_qt_launcher/ui_${ui}.py"
pyside6-uic -g python "src/${ui}.ui" -o "$OUT"
echo "done"
sed -i "s/^import res_rc/from . import res_rc/g" "$OUT"
echo "fixed the import done"
done
else
echo "Starting Compilaton of Qt Ressource"
/usr/lib/qt6/rcc -g python $QT_RESSOURCE -o src/lce_qt_launcher/res_rc.py
echo "done"
for ui in "${UI_FILES[@]}"; do
echo "Compiling ${ui}.ui"
OUT="src/lce_qt_launcher/ui_${ui}.py"
/usr/lib/qt6/uic -g python "src/${ui}.ui" -o "$OUT"
echo "done"
sed -i "s/^import res_rc/from . import res_rc/g" "$OUT"
echo "fixed the import done"
done
RCC="pyside6-rcc"
UIC="pyside6-ui"
fix_import() {
if [[ $(uname -o) == "GNU/Linux" ]]; then
sed -i 's/^import res_rc/from . import res_rc/g' "$1"
else
sed -i.bak 's/^import res_rc/from . import res_rc/g' "$1"
rm "$1.bak"
fi
else
echo "Starting Compilaton of Qt Ressource"
/usr/local/PySide6/bin/rcc -g python $QT_RESSOURCE -o src/lce_qt_launcher/res_rc.py
}
find_qt_tool() {
if command -v pyside6-rcc &> /dev/null; then
RCC="pyside6-rcc"
UIC="pyside6-uic"
elif command -v /usr/local/bin/pyside6-rcc &> /dev/null; then
RCC="/usr/local/bin/pyside6-rcc"
UIC="/usr/local/bin/pyside6-uic"
elif command -v /usr/lib/qt6/rcc &> /dev/null; then
RCC="/usr/lib/qt6/rcc -g python"
UIC="/usr/lib/qt6/uic -g python"
elif command -v /usr/local/PySide6/bin/rcc &> /dev/null; then
RCC="/usr/local/PySide6/bin/rcc -g python"
UIC="/usr/local/PySide6/bin/uic -g python"
fi
}
echo "finding the correct path for the Qt compilers"
find_qt_tool
echo "done"
echo "Starting Compilaton of Qt Ressource"
$RCC -g python $QT_RESSOURCE -o src/lce_qt_launcher/res_rc.py
echo "done"
for ui in "${UI_FILES[@]}"; do
echo "Compiling ${ui}.ui"
OUT="src/lce_qt_launcher/ui_${ui}.py"
$UIC "src/${ui}.ui" -o "$OUT"
echo "done"
for ui in "${UI_FILES[@]}"; do
echo "Compiling ${ui}.ui"
OUT="src/lce_qt_launcher/ui_${ui}.py"
/usr/local/PySide6/bin/uic -g python "src/${ui}.ui" -o "$OUT"
echo "done"
done
fi
echo "fixing the import"
fix_import "$OUT"
echo "done"
done

View File

@@ -4,10 +4,40 @@ set -e
scripts/prepare.sh
echo "Beginning the Nuitka compilation"
hatch run python -m nuitka --standalone --assume-yes-for-download --output-dir=dist src/lce_qt_launcher/main.py
echo "done"
echo "NOTE : this new version of the packages helper script
for UNIX like system is experiental and a work in progrss
The script in nightly or in other branch/channel might be
more up to date."
echo "Compressing the Nuitka compressions"
tar -czf LCE-Qt-Launcher-Linux.tar.gz -C dist/main.dist .
echo "done"
echo "1. Ntuika portable build"
echo "2. Arch Packages (Require Arch)"
echo "3. Flatpak. (Hightly experiental)"
echo "Choose a option (between 1 and 3):"
read -r user_input
if [[ $user_input == "1" ]]; then
echo "Beginning the Nuitka compilation"
hatch run python -m nuitka --standalone --assume-yes-for-download --output-dir=dist src/lce_qt_launcher/main.py
echo "done"
echo "Compressing the Nuitka compressions"
tar -czf LCE-Qt-Launcher-Linux.tar.gz -C dist/main.dist .
echo "done"
elif [[ $user_input == "2" ]]; then
cd packages/linux
echo "stable (0) or nigthly (git)"
echo "Choose a channel (0 or 1):"
read -r user_input
if [[ $user_input == "0" ]]; then
cd stable
makepkg -s
elif [[ $user_input == "1" ]]; then
cd "dev"
makepkg -s
fi
elif [[ $user_input == "3" ]]; then
cd packages/flatpak
flatpak-builder --user --install build-dir io.github.xgui4 .lce_qt_launcher.yml --install-deps-from=flathub
fi

View File

@@ -1,7 +0,0 @@
@echo off
echo "Activate the python venv"
call .venv\Scripts\activate.bat || exit /b 1
echo "done"
python src\lce_qt_launcher\main.py || exit /b 1

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bash
set -e
echo "Activate the python venv"
# shellcheck source=/dev/null
source .venv/bin/activate
echo "done"
src/lce_qt_launcher/main.py

View File

@@ -320,9 +320,6 @@ class LauncherView(QMainWindow):
self.ui.actionLoad360RevivedInstance.setEnabled(False) # Due to dcma it is disabled
self.ui.actionLoad360RevivedInstance.setText("360Revived (Disabled due to DMCA)")
self.ui.actionLoadRevelationsInstance.setEnabled(False) # Due to dcma it is disabled
self.ui.actionLoadRevelationsInstance.setText("Revelations (Disabled due to DMCA)")
# hellishEndsJson = QFile(":/instances/hellishends.lce_inst")
# if not hellishEndsJson.open(QIODevice.OpenModeFlag.ReadOnly):
# term_service.print_error("Cannot found or open Helish Ends Instance")
@@ -345,16 +342,16 @@ class LauncherView(QMainWindow):
# load360RevivedInstance = lambda : self.loadInstanceCommand(data_360, instanceManager)
# self.ui.actionLoad360RevivedInstance.triggered.connect(load360RevivedInstance)
# revelationJson = QFile(":/instances/revelations.lce_inst")
# if not revelationJson.open(QIODevice.OpenModeFlag.ReadOnly):
# term_service.print_error("Cannot found or open revelations Instance")
# self.ui.actionLoadRevelationsInstance.setEnabled(False)
# return None
# else:
# raw_text_rev = bytes(revelationJson.readAll().data()).decode('utf-8')
# data_rev = json.loads(raw_text_rev)
# loadRevelationInstance = lambda : self.loadInstanceCommand(data_rev, instanceManager)
# self.ui.actionLoadRevelationsInstance.triggered.connect(loadRevelationInstance)
revelationJson = QFile(":/instances/revelations.lce_inst")
if not revelationJson.open(QIODevice.OpenModeFlag.ReadOnly):
term_service.print_error("Cannot found or open revelations Instance")
self.ui.actionLoadRevelationsInstance.setEnabled(False)
return None
else:
raw_text_rev = bytes(revelationJson.readAll().data()).decode('utf-8')
data_rev = json.loads(raw_text_rev)
loadRevelationInstance = lambda : self.loadInstanceCommand(data_rev, instanceManager)
self.ui.actionLoadRevelationsInstance.triggered.connect(loadRevelationInstance)
aetherJson = QFile(":/instances/aether.lce_inst")
if not aetherJson.open(QIODevice.OpenModeFlag.ReadOnly):

64
uv.lock generated
View File

@@ -98,11 +98,11 @@ wheels = [
[[package]]
name = "certifi"
version = "2026.4.22"
version = "2026.5.20"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = 137077, upload-time = "2026-04-22T11:26:11.191Z" }
sdist = { url = "https://files.pythonhosted.org/packages/f3/ce/ee2ecad540810a79593028e88299baeae54d346cc7a0d94b6199988b89b1/certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d", size = 135422, upload-time = "2026-05-20T11:46:50.073Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size = 135707, upload-time = "2026-04-22T11:26:09.372Z" },
{ url = "https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897", size = 134134, upload-time = "2026-05-20T11:46:48.578Z" },
]
[[package]]
@@ -141,14 +141,14 @@ wheels = [
[[package]]
name = "click"
version = "8.3.3"
version = "8.4.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
]
sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" }
sdist = { url = "https://files.pythonhosted.org/packages/23/e4/796662cd90cf80e3a363c99db2b88e0e394b988a575f60a17e16440cd011/click-8.4.0.tar.gz", hash = "sha256:638f1338fe1235c8f4e008e4a8a254fb5c5fbdcbb40ece3c9142ebb78e792973", size = 350843, upload-time = "2026-05-17T00:47:58.425Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" },
{ url = "https://files.pythonhosted.org/packages/ee/ae/8e92f8058baf87f6c7d86ee7e457668690195cc77efedb8d3797a06e3940/click-8.4.0-py3-none-any.whl", hash = "sha256:40c50b7c6c6adac2823d411041ec84f3f103f1b280d5e9ce0d7f998995832f81", size = 116147, upload-time = "2026-05-17T00:47:56.842Z" },
]
[[package]]
@@ -730,11 +730,11 @@ wheels = [
[[package]]
name = "trove-classifiers"
version = "2026.5.7.17"
version = "2026.5.20.19"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/35/68/175e7c07c5be13200387d5c0995b0da1e198e360047c08eb17d1002fcd92/trove_classifiers-2026.5.7.17.tar.gz", hash = "sha256:a04a48f8f0a787cb996514d3969ac7608aa3c60cb15d073c1e02801e60533e80", size = 17041, upload-time = "2026-05-07T17:48:01.931Z" }
sdist = { url = "https://files.pythonhosted.org/packages/63/ee/4900b7d32cfe5bf40c31c3e65205922f65c6dceb32fc3f855711639d4025/trove_classifiers-2026.5.20.19.tar.gz", hash = "sha256:6e611993987ca9326968ad70452733dadd31471599d39896045b28970a9bb81e", size = 17036, upload-time = "2026-05-20T19:17:44.974Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/7b/e3/d81b065a2d866a33a541ac63a2a4cc5737e03ce2379ac3191c98bb8867e3/trove_classifiers-2026.5.7.17-py3-none-any.whl", hash = "sha256:5ec0800de5e2ddbd7c663cb4c0c15328f132dc168813897c18866c5c7b93db33", size = 14201, upload-time = "2026-05-07T17:48:00.488Z" },
{ url = "https://files.pythonhosted.org/packages/15/96/9666c8ba2e7695e804b2b2129e45202320d2a8b5e2c9f6e5e837a61708f5/trove_classifiers-2026.5.20.19-py3-none-any.whl", hash = "sha256:7a173916960d0635fcbf610550d2c27bcc9125164d6f397adf46fc1ef6455c7c", size = 14224, upload-time = "2026-05-20T19:17:42.949Z" },
]
[[package]]
@@ -760,28 +760,28 @@ wheels = [
[[package]]
name = "uv"
version = "0.11.14"
version = "0.11.15"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/30/a3/be4a946c7c2fc4094c020c8f7d8bd0a739bad55ebe4e2817d6e2b1bc6bff/uv-0.11.14.tar.gz", hash = "sha256:0ea006a117b586b2681b6dfd9703a540d2ad2a136ec0f48d272767e599cc3dfb", size = 4130699, upload-time = "2026-05-12T18:00:37.321Z" }
sdist = { url = "https://files.pythonhosted.org/packages/da/34/609d5d01ba21dc8f0974610ca7802fbb2c946a0c38665cfe5c5aeddbefb5/uv-0.11.15.tar.gz", hash = "sha256:755f959ec6a2fd8ccb6ee76ad90ab759d2eb1f4797444078645dd1ee4bca92d6", size = 4159545, upload-time = "2026-05-18T19:57:48.133Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/f7/15/9b2138b16eb1fa8c2cd84b1037ad10c38b3acc36ce96c6d27000bfb7e716/uv-0.11.14-py3-none-linux_armv6l.whl", hash = "sha256:78411a883f230a710af19f2ac6e6f0ba8eae90f0e5af4605f923fd367539fff4", size = 23545199, upload-time = "2026-05-12T18:01:34.526Z" },
{ url = "https://files.pythonhosted.org/packages/75/81/c678e8b9a8e624f9c338c66cd57dd9cfc6b5a0501ad3c87fd0cc0bf8850a/uv-0.11.14-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:078f2e63da89c8fcf6d578f02156045c5990c57d76464aab3f3f798d3fff95cd", size = 22957064, upload-time = "2026-05-12T18:00:54.225Z" },
{ url = "https://files.pythonhosted.org/packages/f7/ad/95fbd15b23f26f36d0cfb0ddf159b9602a1b1c0feced60a7f98385e919f1/uv-0.11.14-py3-none-macosx_11_0_arm64.whl", hash = "sha256:dcdad43d52c130e3159e84ab1844e04d819d2c4a2495a687d27f80d560a3650e", size = 21678307, upload-time = "2026-05-12T18:00:57.132Z" },
{ url = "https://files.pythonhosted.org/packages/8b/cb/b3da1c4d95d6dd507896bca16dbd643118013b2b151f5f35a08d3391728c/uv-0.11.14-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:9923da7c63d70de9fe71829503d7e7ebfd6304e804d7232aad5f716e190db25b", size = 23353409, upload-time = "2026-05-12T18:01:27.512Z" },
{ url = "https://files.pythonhosted.org/packages/51/ad/78c6b8d6bcc04c5043b50631e9b413422a03a0bd7c4a997748f8e9cbac25/uv-0.11.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:3b0759ca504e48dcd4fafb1a61ef69aeb24c5a60fbf5f504a7873c8db1b24718", size = 23103964, upload-time = "2026-05-12T18:01:31.094Z" },
{ url = "https://files.pythonhosted.org/packages/0f/7d/acb66e09bc54a74e4288e996d841af04d88588fd6bdbfbab2468ab7169a7/uv-0.11.14-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:78b51b117549ee4db7197ea5ece0848cecd443e464fb9dff9f254cdc1e4ed96f", size = 23104638, upload-time = "2026-05-12T18:01:10.093Z" },
{ url = "https://files.pythonhosted.org/packages/31/0a/8497be61accdb8e56d02e11edd3ac471466259420e0bd9c05c1966df134a/uv-0.11.14-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1ddbe8a2ab160affc179e9c3a40913b23a08cdf55254e1f3829cc22a51a0d8d", size = 24625888, upload-time = "2026-05-12T18:01:17.192Z" },
{ url = "https://files.pythonhosted.org/packages/95/91/f730799fd20a45777b255e20cf9f648a4e4e0979bf65e87a8633197cf7d9/uv-0.11.14-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3005a2db1e8d72e125630d4f22ac4ceddb2c033e1f9b94b7f3ea38ebac46dd6", size = 25445231, upload-time = "2026-05-12T18:00:40.012Z" },
{ url = "https://files.pythonhosted.org/packages/f5/4d/106463fc27e63e402aec2e791774dac2db5bd5e1c36cdcf38125aa97ab1c/uv-0.11.14-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5c8f9ea36274ef2f9d24f0522085e280844172e901d9213f66a21b212266706", size = 24571961, upload-time = "2026-05-12T18:00:43.713Z" },
{ url = "https://files.pythonhosted.org/packages/12/4d/163fe746b97bd1129627e8b1f943e17583ddc143eaab532d56a799a9ba5a/uv-0.11.14-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:379e64b236cf55f762a8308d7efe4365d5296ba29f3a4868761bc45b4e915a71", size = 24718523, upload-time = "2026-05-12T18:01:06.587Z" },
{ url = "https://files.pythonhosted.org/packages/19/fb/7a3673494a0cf70267559166398f9c50c4925ff20122f99a28d6c5a80d83/uv-0.11.14-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:29c12a562441fc2d604e6920c558cacce74a55f889468708683a79b35a6e18a1", size = 23454821, upload-time = "2026-05-12T18:00:51.166Z" },
{ url = "https://files.pythonhosted.org/packages/bb/43/6358394a567d865f3a5ce27b1e0d939549911e36d9b59f0c545a167f92f7/uv-0.11.14-py3-none-manylinux_2_31_riscv64.musllinux_1_1_riscv64.whl", hash = "sha256:e84069681c0334e07cbc7f114eb09d7fe1335e1db0297a66dbca80a1b393fe6d", size = 24087843, upload-time = "2026-05-12T18:00:47.272Z" },
{ url = "https://files.pythonhosted.org/packages/ef/f6/7d0ae1e1f52b85057ca24d8876d6a4cc87b541ea6aca627fe36594c06099/uv-0.11.14-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:b15bf7c146e38d7c938d3a207115d5fdd8ef764fe1f866c225b1bed27e88da1e", size = 24147611, upload-time = "2026-05-12T18:01:20.499Z" },
{ url = "https://files.pythonhosted.org/packages/5a/a2/511ad0c5da5697fd990b99569425b62b81cbc3458c35acc845211b55d6b5/uv-0.11.14-py3-none-musllinux_1_1_i686.whl", hash = "sha256:ddda5c5e41097814adac535c74851bae55e8097b9afc79aeae7fcffd8d86c06d", size = 23920348, upload-time = "2026-05-12T18:01:24.033Z" },
{ url = "https://files.pythonhosted.org/packages/6b/b6/7084e3401b1f1020f215a125136eec1ed2bd541e10a5fea1625515579599/uv-0.11.14-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:e54326703f1eca83a6fd73275e0f398b16b7d3f81531bf58899c2869bc403f6c", size = 24928981, upload-time = "2026-05-12T18:01:13.961Z" },
{ url = "https://files.pythonhosted.org/packages/4d/6a/7e81729fe729889c8cc63bbf64291734359bd7f6ba84852dc0504453511d/uv-0.11.14-py3-none-win32.whl", hash = "sha256:b384d873d0d18552c7524226125efd3965d921b7134c2f476c333771beb733e1", size = 22573503, upload-time = "2026-05-12T18:00:34.36Z" },
{ url = "https://files.pythonhosted.org/packages/94/5d/f8905f9af5cd46af2a688b2246dbb5a4d95b8557eeffd7f241e037659d9e/uv-0.11.14-py3-none-win_amd64.whl", hash = "sha256:f0a8b58b38e984241bca5d7a5a47bf9ffe1ca2ab392a640887db8a04c4a9ec95", size = 25175590, upload-time = "2026-05-12T18:01:00.38Z" },
{ url = "https://files.pythonhosted.org/packages/04/cb/7333d08d944f3018eb89242cd5e646e7b37faa1b567faeaf9254a8b59d53/uv-0.11.14-py3-none-win_arm64.whl", hash = "sha256:6a13e7e064563050c6606b3fd77091d427cdbdc5938b6f134baf8d8ec79bfdb7", size = 23594775, upload-time = "2026-05-12T18:01:03.55Z" },
{ url = "https://files.pythonhosted.org/packages/a6/7c/dcc230c5911884d8848145dabcac8fb95a5ed6f9fe1c57fae8242618f28a/uv-0.11.15-py3-none-linux_armv6l.whl", hash = "sha256:83b04ab49514a0a761ffedb36a748ee81f87746671e72088e5f32c9585e5f1a9", size = 23110183, upload-time = "2026-05-18T19:57:23.051Z" },
{ url = "https://files.pythonhosted.org/packages/f4/f3/efd4e044b60eb9c3c12ee386be098d56c335538ccec7caa49349cfba9344/uv-0.11.15-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6cae61f737be075b90be9e3f07d961072aed7019f4c9b8ed5c5d41c4d6cade3", size = 22637941, upload-time = "2026-05-18T19:57:26.752Z" },
{ url = "https://files.pythonhosted.org/packages/a6/b8/48627f895a1569e576822e0a8416aa4797eb4a4551de21a4ad97b9b5819d/uv-0.11.15-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9accae33619a9166e5c48531deb455d672cfb89f9357a00975e669c76b0bd49f", size = 21258803, upload-time = "2026-05-18T19:57:05.473Z" },
{ url = "https://files.pythonhosted.org/packages/af/50/4bc8a148274feabee2d9c9f1fa15009e10c0228dfe57981ee3ea2ef1d481/uv-0.11.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:c0cf52cd6d50bb9e05e2d968f45f80761107e4cbc8d4a26d9758f9d8274aaec1", size = 23066178, upload-time = "2026-05-18T19:57:33.058Z" },
{ url = "https://files.pythonhosted.org/packages/a9/56/139fc3bec9a8b0a25bfe2196123adb9f16124da437bf4fbcf0d21cfcafb2/uv-0.11.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:49dc6ed70bff00937384f96cdc4b1a4742d18e5504ec2c4a1214dba2dee5687a", size = 22705332, upload-time = "2026-05-18T19:57:36.714Z" },
{ url = "https://files.pythonhosted.org/packages/ca/b0/b18b3dd204f8c213236a1ebd148e009861637129a8cce34df0e9aa22ed40/uv-0.11.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:adb9a89352539fdd8f7cd5f9966cf9f94fc5b98e0ccdf5003a04123dc6423bec", size = 22707534, upload-time = "2026-05-18T19:58:04.117Z" },
{ url = "https://files.pythonhosted.org/packages/76/36/3ca09f95572df99d361b49c96b1297149e96e120d8d1ecf074095a4b6da4/uv-0.11.15-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40ff67e3f8e8a7533781a2e892a534975a93acb83ea35460e64e7b2bf2111774", size = 24096607, upload-time = "2026-05-18T19:58:11.625Z" },
{ url = "https://files.pythonhosted.org/packages/64/be/3bdee21a296bbf5336a526e3613d0e7d4538dacc39c62d7fcba55d15f6b0/uv-0.11.15-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6463a299ed7e6b5a800ed6f108af8e1588352629424133ddef7572b0e1e1118", size = 25082562, upload-time = "2026-05-18T19:57:40.69Z" },
{ url = "https://files.pythonhosted.org/packages/cd/73/f371f3689ffe741066468d001d85f739fc4b5574de83b639ef19b5e8a7f4/uv-0.11.15-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68c1e62d4b78578b90b833553286b65d6a7e327537716441068583ba652ec4f5", size = 24253391, upload-time = "2026-05-18T19:57:18.47Z" },
{ url = "https://files.pythonhosted.org/packages/d3/16/fe392d618af6b00c064b3e718d585dcf791546a77c5123a5bec07ce53a0a/uv-0.11.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98edf1bdaf82447014852051d93e3ee95012509c567bf057fd117e6bdbd9a807", size = 24415871, upload-time = "2026-05-18T19:58:19.651Z" },
{ url = "https://files.pythonhosted.org/packages/6e/24/2e92a052fb6334fcd746d1c7cb57847c204b118c84f5da53c0f9e129f7b7/uv-0.11.15-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:be8f76d25bcf4c92bb384240ac1bf9aa7f51063d0bdeca4c9cf0ec3ed8b145e0", size = 23159007, upload-time = "2026-05-18T19:57:10.653Z" },
{ url = "https://files.pythonhosted.org/packages/3d/2e/6923d0658d164bb2c435ed1868aa2d49b3074594679917a001ff92dc95bb/uv-0.11.15-py3-none-manylinux_2_31_riscv64.musllinux_1_1_riscv64.whl", hash = "sha256:f9f4fbbf4fe485522054f3c7496c6e8e932d6436e4200ff3daf718db0b7c7bd5", size = 23769385, upload-time = "2026-05-18T19:58:15.856Z" },
{ url = "https://files.pythonhosted.org/packages/a4/99/7e34cd949e57360814e8064cc9fb7104df445d0f6a663504e5f7473480aa/uv-0.11.15-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:0ed920e896b2fd13a35031707e307e42fbb2681458b967440a17272d86d49137", size = 23860973, upload-time = "2026-05-18T19:57:55.575Z" },
{ url = "https://files.pythonhosted.org/packages/28/98/8fe1f5f9d816e94569a0298dd8e0936801097625fa1952162951f0d628b6/uv-0.11.15-py3-none-musllinux_1_1_i686.whl", hash = "sha256:41d907611f3e6a13262807fd7f0a17849f76285ca80f536f6b3943732bdc6656", size = 23431392, upload-time = "2026-05-18T19:57:59.814Z" },
{ url = "https://files.pythonhosted.org/packages/cc/6b/76a1ce2fa860026913a5941700cdc7d715fce9c3277a3fa3489cf2523ca0/uv-0.11.15-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:e3b68f8bf1a4568710f77e5bda9182ce7682811d89a8e7468c22460e032b234d", size = 24519478, upload-time = "2026-05-18T19:57:51.165Z" },
{ url = "https://files.pythonhosted.org/packages/43/60/1d58e8a05718cb50494763115710b73846cacb651fd735d285233fd72c59/uv-0.11.15-py3-none-win32.whl", hash = "sha256:8e2da3076761086a5b76869c3f38ef0509c836046ef41ddd19485dfd7271dca9", size = 22020178, upload-time = "2026-05-18T19:58:07.64Z" },
{ url = "https://files.pythonhosted.org/packages/55/53/40fcefcb348af660488597ed3c01363df7344e60611f8883750dc596f5c6/uv-0.11.15-py3-none-win_amd64.whl", hash = "sha256:cc3915ab291a1ecaf31de05f5d8bd70d09c66fe9911a53f70d9efa62ff0dbd8a", size = 24668779, upload-time = "2026-05-18T19:57:44.894Z" },
{ url = "https://files.pythonhosted.org/packages/e5/7d/fa3a9960c95af9bbe2a629048760d0b9b4fead8ccd4f2235af747ec7cdf0/uv-0.11.15-py3-none-win_arm64.whl", hash = "sha256:4f39426a13dee24897aed60c4b98058c66f18bd983885ac5f4a54a04b24fbddf", size = 23198178, upload-time = "2026-05-18T19:57:14.68Z" },
]
[[package]]
@@ -811,9 +811,9 @@ wheels = [
[[package]]
name = "zipp"
version = "3.23.1"
version = "4.1.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/30/21/093488dfc7cc8964ded15ab726fad40f25fd3d788fd741cc1c5a17d78ee8/zipp-3.23.1.tar.gz", hash = "sha256:32120e378d32cd9714ad503c1d024619063ec28aad2248dc6672ad13edfa5110", size = 25965, upload-time = "2026-04-13T23:21:46.6Z" }
sdist = { url = "https://files.pythonhosted.org/packages/b9/d8/eab98a517c14134c0b2eb4e2387bc5f457334293ec5d2dd3857ec2966802/zipp-4.1.0.tar.gz", hash = "sha256:4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602", size = 26214, upload-time = "2026-05-18T20:08:57.967Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/08/8a/0861bec20485572fbddf3dfba2910e38fe249796cb73ecdeb74e07eeb8d3/zipp-3.23.1-py3-none-any.whl", hash = "sha256:0b3596c50a5c700c9cb40ba8d86d9f2cc4807e9bedb06bcdf7fac85633e444dc", size = 10378, upload-time = "2026-04-13T23:21:45.386Z" },
{ url = "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl", hash = "sha256:25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f", size = 10238, upload-time = "2026-05-18T20:08:57.045Z" },
]