Compare commits

..

No commits in common. "main" and "oneclient-1.0.0-alpha.3" have entirely different histories.

1385 changed files with 69578 additions and 145472 deletions

View file

@ -1,27 +0,0 @@
[target.x86_64-unknown-linux-gnu]
linker = "clang"
rustflags = ["-C", "link-arg=-fuse-ld=lld"]
[target.aarch64-apple-darwin]
linker = "aarch64-apple-darwin-clang"
rustflags = [
"-C", "link-arg=-fuse-ld=lld",
"-C", "link-arg=-isysroot",
"-C", "link-arg=/home/oiupoyt/.local/share/MacOSX11.3.sdk",
]
[target.x86_64-apple-darwin]
linker = "x86_64-apple-darwin-clang"
rustflags = [
"-C", "link-arg=-fuse-ld=lld",
"-C", "link-arg=-isysroot",
"-C", "link-arg=/home/oiupoyt/.local/share/MacOSX11.3.sdk",
]
# Linux and Macos by default have 8MB of stack storage.
# Windows has 1MB, it isn't enough, so it's changed to 8MB also.
[target.x86_64-pc-windows-msvc]
rustflags = ["-C", "link-arg=/STACK:8388608"]
[target.aarch64-pc-windows-msvc]
rustflags = ["-C", "link-arg=/STACK:8388608"]

View file

@ -0,0 +1,34 @@
{{#isMacOS}}
[target.x86_64-apple-darwin]
rustflags = ["-Csplit-debuginfo=unpacked"]
[target.aarch64-apple-darwin]
rustflags = ["-Csplit-debuginfo=unpacked"]
{{/isMacOS}}
{{#isWin}}
[target.'cfg(windows)']
rustflags = [
"-C",
"link-args=/STACK:16777220"
]
[target.x86_64-pc-windows-msvc]
{{#hasLLD}}
linker = "lld-link.exe"
{{/hasLLD}}
{{/isWin}}
{{#isLinux}}
[target.x86_64-unknown-linux-gnu]
{{#hasLLD}}
linker = "clang"
rustflags = ["-C", "link-args=-fuse-ld={{{linker}}}"]
{{/hasLLD}}
[target.aarch64-unknown-linux-gnu]
{{#hasLLD}}
linker = "clang"
rustflags = ["-C", "link-args=-fuse-ld={{{linker}}}"]
{{/hasLLD}}
{{/isLinux}}

1
.clippy.toml Normal file
View file

@ -0,0 +1 @@
cognitive-complexity-threshold = 30

3
.env.template Normal file
View file

@ -0,0 +1,3 @@
# Used by sea-orm-cli
# DOES NOT AFFECT THE CODE
DATABASE_URL=sqlite:///path/to/user_data.db?mode=rwc

View file

@ -1,122 +0,0 @@
name: Release Binaries (Forgejo)
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
tag:
description: 'Release Tag (e.g. v2.8.0-c1)'
required: false
default: 'v2.8.0-c1'
type: string
permissions:
contents: write
env:
SQLX_OFFLINE: true
SQLX_OFFLINE_DIR: packages/oneclient_db/.sqlx
jobs:
build-linux:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: x86_64-unknown-linux-gnu
- name: Rust Cache
uses: Swatinem/rust-cache@v2
with:
key: x86_64-unknown-linux-gnu
cache-all-crates: true
- name: Install Linux build dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libfontconfig1-dev \
libfreetype6-dev \
libgl1-mesa-dev \
libvulkan-dev \
libasound2-dev
- name: Install cargo-packager
run: cargo install cargo-packager --locked || true
- name: Build Release Binary
run: cargo build --release --bin oneclient_app --target x86_64-unknown-linux-gnu
- name: Package Application
run: cargo packager --release --target x86_64-unknown-linux-gnu --formats deb,appimage
continue-on-error: true
- name: Generate RPM Package (Linux)
run: |
cargo install cargo-generate-rpm --locked || true
cargo generate-rpm --target x86_64-unknown-linux-gnu -p oneclient_app || true
- name: Determine Release Tag
id: release_tag
run: |
if [[ "${{ github.ref_name }}" =~ ^v ]]; then
echo "tag=${{ github.ref_name }}" >> $GITHUB_OUTPUT
elif [ -n "${{ inputs.tag }}" ]; then
echo "tag=${{ inputs.tag }}" >> $GITHUB_OUTPUT
else
echo "tag=v2.8.0-c1" >> $GITHUB_OUTPUT
fi
- name: Publish Assets to Forgejo Release
run: |
TAG="${{ steps.release_tag.outputs.tag }}"
API_URL="${{ github.server_url }}/api/v1/repos/${{ github.repository }}"
echo "Connecting to $API_URL for release $TAG"
# 1. Fetch or create release on Forgejo
RELEASE_ID=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" "$API_URL/releases/tags/$TAG" | jq -r '.id // empty')
if [ -z "$RELEASE_ID" ] || [ "$RELEASE_ID" = "null" ]; then
RESP=$(curl -s -X POST "$API_URL/releases" \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"$TAG\",\"name\":\"OneLauncher-Cracked $TAG\",\"draft\":false,\"prerelease\":false,\"target_commitish\":\"main\"}")
RELEASE_ID=$(echo "$RESP" | jq -r '.id // empty')
fi
echo "Target Release ID: $RELEASE_ID"
# 2. Upload generated packages
shopt -s nullglob
FILES=(
target/x86_64-unknown-linux-gnu/release/*.deb
target/x86_64-unknown-linux-gnu/release/*.AppImage
target/x86_64-unknown-linux-gnu/generate-rpm/*.rpm
target/release/*.deb
target/release/*.AppImage
target/generate-rpm/*.rpm
)
for f in "${FILES[@]}"; do
if [ -f "$f" ]; then
fname=$(basename "$f")
echo "Uploading asset $fname..."
curl -s -X POST "$API_URL/releases/$RELEASE_ID/assets?name=$fname" \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-F "attachment=@$f"
fi
done
echo "Release upload completed!"

4
.gemini/config.yml Normal file
View file

@ -0,0 +1,4 @@
code_review:
comment_severity_threshold: LOW
ignore_patterns:
- '**/*.gen.ts'

4
.gitattributes vendored
View file

@ -1,2 +1,6 @@
* text=auto eol=lf
Cargo.lock -diff linguist-generated
pnpm-lock.yaml -diff linguist-generated
packages/client/src/bindings.ts -diff linguist-generated=true
.github/actions/publish-artifacts/dist/index.js -diff linguist-generated=true
.github/actions/clippy/dist/index.js -diff linguist-generated=true

View file

@ -1,47 +0,0 @@
name: Install cargo tool
description: >
Install a cargo binary from a prebuilt release instead of compiling it from
source, and skip the work entirely when the Rust cache already restored it.
inputs:
tool:
description: Crate name providing the binary (e.g. cargo-packager)
required: true
version:
description: Exact version to install
required: true
runs:
using: composite
steps:
# Swatinem/rust-cache restores $CARGO_HOME/bin, so on a cache hit the tool is
# already here and `cargo install` would otherwise re-resolve it every run.
- name: Check for an already-installed ${{ inputs.tool }}
id: check
shell: bash
env:
TOOL: ${{ inputs.tool }}
VERSION: ${{ inputs.version }}
run: |
if command -v "$TOOL" > /dev/null 2>&1 \
&& cargo install --list | grep -qF "$TOOL v$VERSION:"; then
echo "Found $TOOL v$VERSION in \$CARGO_HOME/bin"
echo "installed=true" >> "$GITHUB_OUTPUT"
else
echo "installed=false" >> "$GITHUB_OUTPUT"
fi
- name: Setup cargo-binstall
if: steps.check.outputs.installed == 'false'
uses: cargo-bins/cargo-binstall@e00d2c94cc0067b77737821097a62d91c0301baa # v1.21.1
- name: Install ${{ inputs.tool }}
if: steps.check.outputs.installed == 'false'
shell: bash
env:
TOOL: ${{ inputs.tool }}
VERSION: ${{ inputs.version }}
run: |
# Prebuilt download takes seconds; building cargo-packager from source
# takes minutes on every leg of the matrix. Fall back to a source build
# so a missing prebuilt artifact can never break a release.
cargo binstall --no-confirm --force "${TOOL}@${VERSION}" \
|| cargo install "${TOOL}" --version "${VERSION}" --locked --force

View file

@ -0,0 +1,14 @@
name: Publish Artifacts
description: Publish Artifacts
inputs:
target:
description: Target triples for build artifact
profile:
description: '''debug'' or ''release'''
os:
description: '''darwin'', ''windows'', or ''linux'''
arch:
description: '''x86_64'' or ''aarch64'''
runs:
using: node20
main: dist/index.js

File diff suppressed because it is too large Load diff

79
.github/actions/publish-artifacts/dist/index.js generated vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,26 @@
{
"name": "@onelauncher/action-publish-artifacts",
"version": "1.0.0-alpha.3",
"private": true,
"description": "Next-generation open source Minecraft launcher",
"license": "GPL-3.0-only",
"repository": {
"type": "git",
"url": "git@github.com:polyfrost/onelauncher",
"directory": ".github/actions/publish-artifacts"
},
"bugs": "https://github.com/polyfrost/onelauncher/issues",
"sideEffects": false,
"scripts": {
"build": "rimraf dist && ncc build src/index.ts -m -q --license ../../LICENSE"
},
"dependencies": {
"@actions/artifact": "^2.1.9",
"@actions/core": "^1.10.1",
"@actions/glob": "^0.5.0",
"@actions/io": "^1.1.3"
},
"devDependencies": {
"@vercel/ncc": "^0.38.2"
}
}

View file

@ -0,0 +1,147 @@
import process from 'node:process';
import client from '@actions/artifact';
import core from '@actions/core';
import glob from '@actions/glob';
import io from '@actions/io';
import { exists } from '@actions/io/lib/io-util';
type OS = 'darwin' | 'windows' | 'linux';
type Arch = 'x64' | 'arm64';
type Profile = 'debug' | 'release' | 'dev' | 'dev-debug';
interface Updater {
bundle: string;
bundleExt: string;
archiveExt: string;
}
interface TargetConfig {
bundle: string;
ext: string;
}
interface BuildTarget {
updater: false | Updater;
standalone: Array<TargetConfig>;
}
const osTargets = {
darwin: {
updater: {
bundle: 'macos',
bundleExt: 'app',
archiveExt: 'tar.gz',
},
standalone: [
{ ext: 'dmg', bundle: 'dmg' },
],
},
windows: {
updater: {
bundle: 'msi',
bundleExt: 'msi',
archiveExt: 'zip',
},
standalone: [
{ ext: 'msi', bundle: 'msi' },
],
},
linux: {
updater: false, // TODO
standalone: [
{ ext: 'deb', bundle: 'deb' },
],
},
} satisfies Record<OS, BuildTarget>;
const getInput = <T = string>(name: string): T => core.getInput(name) as T;
const os: OS = getInput('os');
const arch: Arch = getInput('arch');
const profile: Profile = getInput('profile');
const target = getInput('target');
const binaryName = getInput<string | undefined>('binary');
const targetDir = `target/${target}`;
const bundleDir = `${targetDir}/${profile}/bundle`;
const artifactsDir = '.artifacts';
const artifactBase = `OneLauncher-${os}-${arch}`;
const frontendBundle = 'apps/frontend/dist.tar.xz';
const updaterName = `OneLauncher-Updater-${os}-${arch}`;
const frontendName = `OneLauncher-Frontend-${os}-${arch}`;
const globFiles = async (pattern: string): Promise<Array<string>> => await (await glob.create(pattern)).glob();
async function uploadFrontend() {
if (!(await exists(frontendBundle))) {
console.error('frontend archive missing!');
return;
}
const artifactName = `${frontendName}.tar.xz`;
const artifactPath = `${artifactsDir}/${artifactName}`;
await io.cp(frontendBundle, artifactPath);
await client.uploadArtifact(artifactName, [artifactPath], artifactsDir);
}
async function uploadUpdater(updater: BuildTarget['updater']) {
if (!updater)
return;
const { bundle, bundleExt, archiveExt } = updater;
const fullExt = `${bundleExt}.${archiveExt}`;
const files = await globFiles(`${bundleDir}/${bundle}/*.${fullExt}*`);
const updaterPath = files.find(f => f.endsWith(fullExt));
if (!updaterPath)
throw new Error(`failed to find updater path in ${files.join(',')}`);
const artifactPath = `${artifactsDir}/${updaterName}.${archiveExt}`;
await io.cp(updaterPath, artifactPath);
await io.cp(`${updaterPath}.sig`, `${artifactPath}.sig`);
await client.uploadArtifact(updaterName, [artifactPath, `${artifactPath}.sig`], artifactsDir);
}
async function uploadStandalone({ bundle, ext }: TargetConfig) {
const files = await globFiles(`${bundleDir}/${bundle}/*.${ext}*`);
const standalonePath = files.find(f => f.endsWith(ext));
if (!standalonePath)
throw new Error(`failed to find standalone path in ${files.join(',')}`);
const artifactName = `${artifactBase}.${ext}`;
const artifactPath = `${artifactsDir}/${artifactName}`;
await io.cp(standalonePath, artifactPath, { recursive: true });
await client.uploadArtifact(artifactName, [artifactPath], artifactsDir);
}
async function uploadBinary() {
if (typeof binaryName !== 'string')
return;
const file = binaryName || 'onelauncher_gui';
const binaryPath = `${targetDir}/${file}`;
if (!(await exists(binaryPath))) {
console.error('binary missing!');
return;
}
await io.cp(binaryPath, `${artifactsDir}/${file}`);
await client.uploadArtifact(file, [`${artifactsDir}/${file}`], artifactsDir);
}
async function run() {
await io.mkdirP(artifactsDir);
const { updater, standalone } = osTargets[os];
await Promise.all([
uploadUpdater(updater),
uploadFrontend(),
uploadBinary(),
...standalone.map(uploadStandalone),
]);
}
run().catch((error) => {
console.error(error);
process.exit(1);
});

View file

@ -0,0 +1,9 @@
{
"extends": "../../../tsconfig.base.json",
"compilerOptions": {
"allowImportingTsExtensions": false,
"noEmit": true,
"skipLibCheck": true
},
"exclude": ["**/dist/**"]
}

View file

@ -0,0 +1,59 @@
name: Setup System and Rust
description: Setup System and Rust
inputs:
token:
description: GitHub token
required: false
default: ''
setup-arg:
description: Argument for the system setup script
required: false
default: ''
runs:
using: composite
steps:
- name: (macOS) Install bash@latest
shell: bash
if: ${{ runner.os == 'macOS' }}
run: brew install bash
- name: (Linux) Install mold@latest
shell: bash
if: ${{ runner.os == 'Linux' }}
run: |
curl -L# 'https://github.com/rui314/mold/releases/download/v2.33.0/mold-2.33.0-x86_64-linux.tar.gz' \
| sudo tar -xzf- -C /usr/local
- name: (Linux) Cleanup Runner
shell: bash
if: ${{ runner.os == 'Linux' }}
run: |
set -eux
if dpkg -l | grep i386; then
sudo apt-get purge --allow-remove-essential libc6-i386 ".*:i386" || true
sudo dpkg --remove-architecture i386 || true
fi
sudo apt-get remove libunwind-* || true
- name: (Linux/macOS) - Setup System
shell: bash
if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }}
run: ./packages/scripts/setup.sh ${{ inputs.setup-arg }}
- name: (Windows) - Setup System
if: ${{ runner.os == 'Windows' }}
shell: powershell
run: ./packages/scripts/setup.ps1
- name: Setup pnpm
uses: ./.github/actions/setup-pnpm
with:
token: ${{ github.token }}
- name: Setup Shared Libraries
shell: bash
env:
GITHUB_TOKEN: ${{ inputs.token }}
NODE_ENV: debug
run: pnpm prep

29
.github/actions/setup-pnpm/action.yml vendored Normal file
View file

@ -0,0 +1,29 @@
name: Setup Pnpm
description: Setup Pnpm
inputs:
token:
description: GitHub token
required: false
default: ''
runs:
using: composite
steps:
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Install Node.js
uses: actions/setup-node@v4
with:
token: ${{ inputs.token }}
check-latest: true
node-version-file: .nvmrc
cache: pnpm
- name: Install dependencies
shell: ${{ runner.os == 'Windows' && 'powershell' || 'bash' }}
env:
NODE_ENV: debug
GITHUB_TOKEN: ${{ inputs.token }}
run: pnpm install --frozen-lockfile

View file

@ -1,43 +1,42 @@
name: Setup Rust
description: Install the Rust toolchain (+ optional targets) and restore the build cache.
description: Setup Rust
inputs:
target:
description: Comma-separated extra target triples to install
description: Toolchain target triple
required: false
default: ''
save-cache:
description: Whether to save the Rust cache
description: Whether or not to save the rust cache
required: false
default: 'false'
restore-cache:
description: Whether to restore the Rust cache
description: Whether or not to restore the rust cache
required: false
default: 'true'
cache-namespace:
description: >
Cache namespace. Workflows that compile with different profile settings
MUST use different namespaces - cargo fingerprints every dependency by its
profile, so sharing one would mean each workflow evicts artifacts the other
cannot use.
required: false
default: release-cache
runs:
using: composite
steps:
- name: Install Rust (stable)
uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 # stable branch @ 2026-07-16
# - name: Install Rust Stable
# uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a
# with:
# toolchain: stable
# targets: ${{ inputs.target }}
# components: clippy, rustfmt
- name: Install Rust Nightly
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
toolchain: nightly-2025-07-23
targets: ${{ inputs.target }}
components: cargo, clippy, rustc, rustfmt
- name: Cache Rust
if: ${{ inputs.restore-cache == 'true' }}
uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
uses: Swatinem/rust-cache@master
with:
key: ${{ inputs.target }}
save-if: ${{ inputs.save-cache }}
shared-key: ${{ inputs.cache-namespace }}
# Release builds are long and can fail late (signing, notarization,
# upload). Without this the whole compile is thrown away on those runs.
cache-on-failure: true
shared-key: stable-cache
- name: Prepare Cargo
shell: bash
run: echo '{}' | npx -y mustache - .cargo/config.toml.mustache .cargo/config.toml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View file

@ -1,97 +0,0 @@
name: Publish AUR Packages
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag:
description: 'Release tag (e.g. oneclient-2.0.1)'
required: true
jobs:
resolve:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.parse.outputs.version }}
steps:
- name: Parse release tag
id: parse
run: |
TAG="${{ github.event.release.tag_name || inputs.tag }}"
if [[ "$TAG" =~ ^oneclient-(.+)$ ]]; then
echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT"
else
echo "::error::Tag '$TAG' does not match oneclient-*"
exit 1
fi
publish-source:
needs: resolve
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Compute source sha256
id: hash
env:
VERSION: ${{ needs.resolve.outputs.version }}
run: |
URL="https://github.com/${{ github.repository }}/archive/refs/tags/oneclient-${VERSION}.tar.gz"
SHA=$(curl -sL "$URL" | sha256sum | cut -d' ' -f1)
echo "sha256=$SHA" >> "$GITHUB_OUTPUT"
- name: Prepare PKGBUILD
env:
VERSION: ${{ needs.resolve.outputs.version }}
SHA256: ${{ steps.hash.outputs.sha256 }}
run: |
PKGBUILD="distribution/aur/oneclient/PKGBUILD"
sed -i "s/^pkgver=.*/pkgver=${VERSION}/" "$PKGBUILD"
sed -i "s/^pkgrel=.*/pkgrel=1/" "$PKGBUILD"
sed -i "s/^sha256sums=.*/sha256sums=('${SHA256}')/" "$PKGBUILD"
- name: Publish to AUR
uses: KSXGitHub/github-actions-deploy-aur@a97f56a8425a7a7f3b8c58607f769c69b089cadb # v3.0.1
with:
pkgname: oneclient
pkgbuild: distribution/aur/oneclient/PKGBUILD
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: "oneclient ${{ needs.resolve.outputs.version }}-1"
publish-bin:
needs: resolve
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Compute deb sha256
id: hash
env:
VERSION: ${{ needs.resolve.outputs.version }}
run: |
URL="https://github.com/${{ github.repository }}/releases/download/oneclient-${VERSION}/OneClient_${VERSION}_linux_x86_64.deb"
SHA=$(curl -sL "$URL" | sha256sum | cut -d' ' -f1)
echo "sha256=$SHA" >> "$GITHUB_OUTPUT"
- name: Prepare PKGBUILD
env:
VERSION: ${{ needs.resolve.outputs.version }}
SHA256: ${{ steps.hash.outputs.sha256 }}
run: |
PKGBUILD="distribution/aur/oneclient-bin/PKGBUILD"
sed -i "s/^pkgver=.*/pkgver=${VERSION}/" "$PKGBUILD"
sed -i "s/^pkgrel=.*/pkgrel=1/" "$PKGBUILD"
sed -i "s/^sha256sums=.*/sha256sums=('${SHA256}')/" "$PKGBUILD"
- name: Publish to AUR
uses: KSXGitHub/github-actions-deploy-aur@a97f56a8425a7a7f3b8c58607f769c69b089cadb # v3.0.1
with:
pkgname: oneclient-bin
pkgbuild: distribution/aur/oneclient-bin/PKGBUILD
commit_username: ${{ secrets.AUR_USERNAME }}
commit_email: ${{ secrets.AUR_EMAIL }}
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
commit_message: "oneclient-bin ${{ needs.resolve.outputs.version }}-1"

View file

@ -1,35 +0,0 @@
name: Publish Changelog
on:
release:
types: [published, edited]
workflow_dispatch:
concurrency:
group: changelog-publish
cancel-in-progress: true
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
steps:
# The launcher reads releases/latest/download/changelog.json, so the
# snapshot of the last 50 release bodies always lives on the latest release.
- name: Build changelog.json from release bodies
run: |
gh api "repos/$GH_REPO/releases?per_page=50" --jq '[.[]
| select(.draft | not)
| select(.tag_name | startswith("oneclient-"))
| {
version: (.tag_name | ltrimstr("oneclient-")),
body: ((.body // "") | sub("^Automated release for OneClient [^\n]*\\s*"; ""))
}]' > changelog.json
jq -r '.[].version' changelog.json
- name: Upload to latest release
run: gh release upload "$(gh release view --json tagName -q .tagName)" changelog.json --clobber

View file

@ -1,23 +0,0 @@
name: Changeset Check
on:
pull_request:
types: [opened, synchronize, reopened, labeled, unlabeled]
jobs:
changeset:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no changeset') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
fetch-depth: 0
- name: Require a change file
env:
BASE_REF: ${{ github.base_ref }}
run: |
if ! git diff --name-only --diff-filter=A "origin/$BASE_REF...HEAD" -- '.changeset/*.md' | grep -q .; then
echo "::error::Add a change file with \`knope document-change\`, or label the PR 'no changeset' if it isn't user-facing."
exit 1
fi

View file

@ -1,60 +0,0 @@
name: Publish COPR Package
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag:
description: 'Release tag (e.g. oneclient-2.0.1)'
required: true
jobs:
resolve:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.parse.outputs.version }}
steps:
- name: Parse release tag
id: parse
run: |
TAG="${{ github.event.release.tag_name || inputs.tag }}"
if [[ "$TAG" =~ ^oneclient-(.+)$ ]]; then
echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT"
else
echo "::error::Tag '$TAG' does not match oneclient-*"
exit 1
fi
publish-bin:
needs: resolve
runs-on: ubuntu-latest
container: fedora:latest
steps:
- name: Install tooling
run: dnf -y install rpm-build rpmdevtools copr-cli bsdtar git
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: Prepare spec
env:
VERSION: ${{ needs.resolve.outputs.version }}
run: |
SPEC="distribution/copr/oneclient-bin.spec"
sed -i "s/^Version:.*/Version: ${VERSION}/" "$SPEC"
sed -i "s/^Release:.*/Release: 1%{?dist}/" "$SPEC"
- name: Build SRPM
run: |
rpmdev-setuptree
spectool -g -R distribution/copr/oneclient-bin.spec
rpmbuild -bs distribution/copr/oneclient-bin.spec
- name: Submit to COPR
env:
COPR_CONFIG_CONTENT: ${{ secrets.COPR_CONFIG }}
run: |
mkdir -p ~/.config
printf '%s' "$COPR_CONFIG_CONTENT" > ~/.config/copr
chmod 600 ~/.config/copr
copr-cli build polyfrost/OneClient ~/rpmbuild/SRPMS/oneclient-bin-*.src.rpm

51
.github/workflows/format.yml vendored Normal file
View file

@ -0,0 +1,51 @@
name: Build and Lint
on:
push:
branches: [main]
pull_request:
types: [opened, synchronize]
merge_group:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
es:
name: ES Checks
runs-on: ubuntu-22.04
timeout-minutes: 7
steps:
- name: Prepare Target
run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1))" >> "${GITHUB_ENV}"
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pnpm
uses: ./.github/actions/setup-pnpm
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Linting
run: pnpm lint:es
clippy:
name: Rust Checks
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: ./.github/actions/setup-rust
with:
save-cache: true
restore-cache: true
- name: Setup Packages
uses: ./.github/actions/setup-packages
- name: Run Clippy
run: cargo clippy --all-targets --all-features -- -D warnings

View file

@ -1,324 +0,0 @@
name: OneClient Nightly (Unsigned)
on:
push:
branches: [main]
workflow_dispatch:
concurrency:
group: oneclient-nightly-${{ github.ref }}
cancel-in-progress: true
# Nightlies are unsigned test builds, so they do not need the release profile's
# whole-program optimization - and that optimization is exactly what makes them
# slow. `lto = "fat"` + `codegen-units = 1` force a single-threaded re-optimization
# of the entire dependency graph at link time, on every run, which no cache can
# ever skip. Thin LTO keeps nearly all of the runtime benefit at a fraction of the
# link cost, and 16 codegen units lets the whole compile use every runner core.
#
# These are cargo's documented profile overrides, so `target/release` stays the
# output directory and every path below is unaffected. The shipped release binary
# is untouched: oneclient_release.yml still builds the fat-LTO profile from
# Cargo.toml. That difference is why the two workflows must not share a cache
# namespace - see `cache-namespace` on the Setup Rust step.
env:
CARGO_PROFILE_RELEASE_LTO: thin
CARGO_PROFILE_RELEASE_CODEGEN_UNITS: '16'
jobs:
build:
permissions:
contents: read
strategy:
fail-fast: false
matrix:
include:
- platform: macos-latest
target: aarch64-apple-darwin
os_key: darwin
arch: aarch64
formats: app,dmg
- platform: macos-latest
target: x86_64-apple-darwin
os_key: darwin
arch: x86_64
formats: app,dmg
macos_deployment_target: '10.14'
- platform: ubuntu-22.04
target: ''
os_key: linux
arch: x86_64
formats: deb,appimage
- platform: windows-latest
target: ''
os_key: windows
arch: x86_64
formats: nsis
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- name: (macOS) Pin deployment target
if: matrix.macos_deployment_target != ''
shell: bash
run: echo "MACOSX_DEPLOYMENT_TARGET=${{ matrix.macos_deployment_target }}" >> "$GITHUB_ENV"
- name: Setup Rust
uses: ./.github/actions/setup-rust
with:
target: ${{ matrix.target }}
save-cache: true
restore-cache: true
# Separate namespace: nightly's thin-LTO dependency artifacts have
# different cargo fingerprints than the release workflow's fat-LTO ones,
# so a shared cache would just thrash between the two.
cache-namespace: nightly-cache
- name: (Linux) Install system dependencies
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential cmake pkg-config clang python3 \
libfontconfig-dev libfreetype-dev \
libgl1-mesa-dev libx11-dev libxcursor-dev libxi-dev libxrandr-dev \
libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libdbus-1-dev \
libgtk-3-dev libayatana-appindicator3-dev \
libfuse2
- name: Install cargo-packager
uses: ./.github/actions/install-cargo-tool
with:
tool: cargo-packager
version: 0.11.8
- name: Build release binary
shell: bash
run: |
if [ -n "${{ matrix.target }}" ]; then
cargo build --release --bin oneclient_app --target ${{ matrix.target }}
else
cargo build --release --bin oneclient_app
fi
- name: (macOS) Verify deployment target
if: matrix.macos_deployment_target != ''
shell: bash
run: |
set -euo pipefail
bin="target/${{ matrix.target }}/release/oneclient_app"
minos="$(vtool -show-build "$bin" | awk '/minos/ {print $2; exit}')"
echo "linked minos=$minos, declared minimum=${{ matrix.macos_deployment_target }}"
if [ "$(printf '%s\n%s\n' "$minos" "${{ matrix.macos_deployment_target }}" | sort -V | tail -n1)" != "${{ matrix.macos_deployment_target }}" ]; then
echo "::error::Binary requires macOS $minos but the bundle advertises ${{ matrix.macos_deployment_target }}."
exit 1
fi
- name: (macOS) Compile app icon catalog
if: startsWith(matrix.platform, 'macos')
shell: bash
run: |
set -euo pipefail
out="packages/oneclient_app/icons/generated"
mkdir -p "$out"
xcrun actool packages/oneclient_app/icons/OneClient.icon \
--compile "$out" \
--app-icon OneClient \
--output-partial-info-plist "$out/partial.plist" \
--platform macosx \
--minimum-deployment-target 26.0 \
--errors --warnings --notices
rm -f "$out/OneClient.icns"
test -f "$out/Assets.car" || { echo "::error::actool produced no Assets.car"; exit 1; }
- name: (Windows) Stage app-local VC++ runtime
if: matrix.platform == 'windows-latest'
shell: bash
run: python3 distribution/windows/bundle-crt.py
- name: (Windows) Verify staged runtime is Microsoft-signed
if: matrix.platform == 'windows-latest'
shell: pwsh
run: |
$dlls = @(Get-ChildItem 'target/crt/*.dll')
if ($dlls.Count -eq 0) { Write-Error 'no CRT DLLs staged'; exit 1 }
foreach ($dll in $dlls) {
$sig = Get-AuthenticodeSignature $dll.FullName
Write-Host "$($dll.Name): $($sig.Status) $($sig.SignerCertificate.Subject)"
if ($sig.Status -ne 'Valid') {
Write-Error "$($dll.Name) signature is $($sig.Status), refusing to ship it"
exit 1
}
if ($sig.SignerCertificate.Subject -notmatch 'O=Microsoft Corporation') {
Write-Error "$($dll.Name) is not signed by Microsoft"
exit 1
}
}
- name: Package (unsigned)
shell: bash
env:
CI: 'true'
run: |
ARGS="--release --formats ${{ matrix.formats }}"
if [ -n "${{ matrix.target }}" ]; then
ARGS="$ARGS --target ${{ matrix.target }}"
fi
cargo packager $ARGS --verbose
- name: Resolve packager output dir
id: outdir
shell: bash
run: |
if [ -n "${{ matrix.target }}" ]; then
echo "dir=target/${{ matrix.target }}/release" >> "$GITHUB_OUTPUT"
else
echo "dir=target/release" >> "$GITHUB_OUTPUT"
fi
- name: (Linux) Install cargo-generate-rpm
if: matrix.platform == 'ubuntu-22.04'
uses: ./.github/actions/install-cargo-tool
with:
tool: cargo-generate-rpm
version: 0.21.0
- name: (Linux) Build RPM
if: matrix.platform == 'ubuntu-22.04'
shell: bash
run: |
set -euo pipefail
cp target/release/.cargo-packager/deb/*/data/usr/share/applications/oneclient_app.desktop \
target/release/oneclient_app.desktop
cargo generate-rpm -p packages/oneclient_app
cp target/generate-rpm/*.rpm "${{ steps.outdir.outputs.dir }}/"
- name: (Windows) Smoke-test installer layout
if: matrix.platform == 'windows-latest'
shell: pwsh
run: |
$ErrorActionPreference = 'Stop'
$dest = 'C:\oneclient-smoke'
Remove-Item -Recurse -Force $dest -ErrorAction SilentlyContinue
$exe = Resolve-Path (Get-ChildItem '${{ steps.outdir.outputs.dir }}/*-setup.exe')[0].FullName
# NSIS: /S is silent, /D= sets the install dir and must be the last arg.
$p = Start-Process -FilePath $exe -ArgumentList '/S', "/D=$dest" -Wait -PassThru
if ($p.ExitCode -ne 0) { Write-Error "installer exited $($p.ExitCode)"; exit 1 }
Write-Host '--- installed layout ---'
Get-ChildItem -Recurse $dest | ForEach-Object { Write-Host $_.FullName }
if (-not (Test-Path "$dest\oneclient_app.exe")) {
Write-Error "oneclient_app.exe is not at the root of $dest"
exit 1
}
foreach ($dll in @(Get-ChildItem 'target/crt/*.dll')) {
if (-not (Test-Path (Join-Path $dest $dll.Name))) {
Write-Error "$($dll.Name) did not land beside oneclient_app.exe - cargo-packager put resources elsewhere, so app-local CRT loading will not work"
exit 1
}
}
Write-Host "OK: $($(Get-ChildItem 'target/crt/*.dll').Count) CRT DLLs sit beside oneclient_app.exe"
# Upload debug info (dSYM / .dwp / .pdb produced by the release profile's
# split-debuginfo) to Sentry so nightly crash reports get real file/function/
# line stack traces instead of raw addresses. Runs on every main push, so
# each unique build's symbols land in Sentry (matched by debug-id). Skips
# silently unless SENTRY_AUTH_TOKEN secret + SENTRY_ORG/SENTRY_PROJECT vars
# are configured.
- name: Upload debug symbols to Sentry
shell: bash
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ vars.SENTRY_ORG }}
SENTRY_PROJECT: ${{ vars.SENTRY_PROJECT }}
OUT_DIR: ${{ steps.outdir.outputs.dir }}
run: |
set -euo pipefail
if [ -z "${SENTRY_AUTH_TOKEN:-}" ] || [ -z "${SENTRY_ORG:-}" ] || [ -z "${SENTRY_PROJECT:-}" ]; then
echo "Sentry credentials not configured (need SENTRY_AUTH_TOKEN secret + SENTRY_ORG/SENTRY_PROJECT vars); skipping debug-symbol upload."
exit 0
fi
curl -sL https://sentry.io/get-cli/ | bash
export PATH="/usr/local/bin:$PATH"
SYMS="$(mktemp -d)"
shopt -s nullglob
for f in "$OUT_DIR"/oneclient_app "$OUT_DIR"/oneclient_app.exe \
"$OUT_DIR"/oneclient_app.pdb "$OUT_DIR"/*.dwp "$OUT_DIR"/*.dSYM; do
[ -e "$f" ] || continue
cp -R "$f" "$SYMS/"
done
sentry-cli debug-files upload --include-sources "$SYMS"
- name: Collect installers
id: collect
shell: bash
run: |
set -euo pipefail
shopt -s nullglob
mkdir -p dist
# Human-facing installers only; skip the .sig-paired updater bundles
# (no updater manifest is produced for unsigned nightly builds).
for f in "${{ steps.outdir.outputs.dir }}"/*.dmg \
"${{ steps.outdir.outputs.dir }}"/*.deb \
"${{ steps.outdir.outputs.dir }}"/*.rpm \
"${{ steps.outdir.outputs.dir }}"/*.AppImage; do
[ -e "$f" ] || continue
cp "$f" dist/
done
# Raw executable, renamed per platform so the unzipped uploads don't collide.
bin="${{ steps.outdir.outputs.dir }}/oneclient_app"
ext=""
[ -e "$bin.exe" ] && ext=".exe"
cp "$bin$ext" "dist/oneclient_app-${{ matrix.os_key }}-${{ matrix.arch }}$ext"
if [ -z "$(ls -A dist)" ]; then
echo "::error::No installers found in ${{ steps.outdir.outputs.dir }}"
exit 1
fi
ls -la dist
- name: Upload unsigned executable
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
path: dist/oneclient_app-${{ matrix.os_key }}-${{ matrix.arch }}*
archive: false
if-no-files-found: error
retention-days: 14
- name: (macOS) Upload unsigned dmg
if: matrix.os_key == 'darwin'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
path: dist/*.dmg
archive: false
if-no-files-found: error
retention-days: 14
- name: (Linux) Upload unsigned deb
if: matrix.os_key == 'linux'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
path: dist/*.deb
archive: false
if-no-files-found: error
retention-days: 14
- name: (Linux) Upload unsigned rpm
if: matrix.os_key == 'linux'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
path: dist/*.rpm
archive: false
if-no-files-found: error
retention-days: 14
- name: (Linux) Upload unsigned AppImage
if: matrix.os_key == 'linux'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
path: dist/*.AppImage
archive: false
if-no-files-found: error
retention-days: 14

View file

@ -1,612 +1,55 @@
name: OneClient Release Build
on:
workflow_dispatch:
# NOTE: CARGO_PACKAGER_SIGN_PRIVATE_KEY* are deliberately NOT declared at
# workflow level. Swatinem/rust-cache folds every `CARGO*`-prefixed environment
# variable into its cache key, so a workflow-level declaration gave this workflow
# a cache namespace that the nightly workflow could never populate - every
# release built the whole dependency graph from scratch. They are scoped to the
# individual steps that actually need them instead.
concurrency:
group: oneclient-release
cancel-in-progress: false
jobs:
prepare:
runs-on: ubuntu-latest
publish-tauri:
permissions:
contents: write
outputs:
version: ${{ steps.version.outputs.version }}
tag: ${{ steps.version.outputs.tag }}
sha: ${{ steps.version.outputs.sha }}
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
# Knope finds the commit (and so the PR author) that added each change file
fetch-depth: 0
- name: Setup Rust
uses: ./.github/actions/setup-rust
with:
restore-cache: false
- name: Install Knope
uses: ./.github/actions/install-cargo-tool
with:
tool: knope
version: 0.23.0
- name: Consume changesets
id: version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
run: |
set -euo pipefail
read_version() {
sed -n -E '/^\[workspace\.package\]/,/^\[/ s/^version[[:space:]]*=[[:space:]]*"([^"]+)".*/\1/p' Cargo.toml | head -n1
}
# No change files means a re-run of a release whose version commit
# already landed, so carry on with the current version.
RELEASED=0
if compgen -G ".changeset/*.md" > /dev/null; then
knope prepare-release
cargo update --workspace --offline || cargo update --workspace
RELEASED=1
fi
VERSION="$(read_version)"
if [ -z "$VERSION" ]; then
echo "::error::Could not read version from [workspace.package] in Cargo.toml"
exit 1
fi
TAG="oneclient-$VERSION"
echo "Releasing OneClient $VERSION"
# Abort rather than clobber: a published release (or an existing tag,
# which only appears once a release is published) means this version
# already shipped. A *draft* is a previous failed/partial run of this
# same workflow, so reuse it.
if git ls-remote --exit-code --tags origin "refs/tags/$TAG" >/dev/null 2>&1; then
echo "::error::Tag $TAG already exists on origin - OneClient $VERSION has already been released. Add a change file with \`knope document-change\` first."
exit 1
fi
RELEASE_EXISTS=0
IS_DRAFT=""
if IS_DRAFT="$(gh release view "$TAG" --json isDraft -q .isDraft 2>/dev/null)"; then
RELEASE_EXISTS=1
fi
if [ "$RELEASE_EXISTS" = "1" ] && [ "$IS_DRAFT" != "true" ]; then
echo "::error::Release $TAG already exists and is published - refusing to overwrite OneClient $VERSION. Add a change file with \`knope document-change\` first."
exit 1
fi
# Commit only after the guards pass, so a rejected release does not
# leave a stray version bump on the branch.
if [ "$RELEASED" = "1" ]; then
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add -A Cargo.toml Cargo.lock .changeset CHANGELOG.md
git commit -m "chore: release $VERSION"
git push origin "HEAD:${GITHUB_REF_NAME}"
fi
SHA="$(git rev-parse HEAD)"
if [ "$RELEASE_EXISTS" = "1" ]; then
echo "Reusing existing draft release $TAG"
gh release edit "$TAG" --target "$SHA"
else
# The body is what the launcher's changelog page shows
awk -v heading="## $VERSION " '/^## /{p = index($0, heading) == 1; next} p' \
CHANGELOG.md > notes.md 2>/dev/null || true
if ! grep -q '[^[:space:]]' notes.md; then
echo "::error::No changelog entry for $VERSION. Add a change file with \`knope document-change\` first."
exit 1
fi
gh release create "$TAG" \
--draft \
--target "$SHA" \
--title "OneClient $VERSION" \
--notes-file notes.md
fi
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
echo "sha=$SHA" >> "$GITHUB_OUTPUT"
# ---------------------------------------------------------------------------
package:
needs: prepare
permissions:
contents: write
# Required so SignPath can download the uploaded build artifact.
actions: read
strategy:
fail-fast: false
matrix:
include:
- platform: macos-latest
target: aarch64-apple-darwin
os_key: darwin
arch: aarch64
formats: app,dmg
- platform: macos-latest
target: x86_64-apple-darwin
os_key: darwin
arch: x86_64
formats: app,dmg
macos_deployment_target: '10.14'
- platform: macos-latest # ARM
args: --target aarch64-apple-darwin
- platform: macos-latest # Intel
args: --target x86_64-apple-darwin
- platform: ubuntu-22.04
target: ''
os_key: linux
arch: x86_64
formats: deb,appimage
args: ''
- platform: windows-latest
target: ''
os_key: windows
arch: x86_64
formats: nsis
args: ''
runs-on: ${{ matrix.platform }}
steps:
# Pin to the commit `prepare` resolved - after a release that is the version
# commit it just pushed, which github.sha would not point at.
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
ref: ${{ needs.prepare.outputs.sha }}
- name: (macOS) Pin deployment target
if: matrix.macos_deployment_target != ''
shell: bash
run: echo "MACOSX_DEPLOYMENT_TARGET=${{ matrix.macos_deployment_target }}" >> "$GITHUB_ENV"
- uses: actions/checkout@v4
- name: Setup Rust
uses: ./.github/actions/setup-rust
with:
target: ${{ matrix.target }}
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
target: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
save-cache: true
restore-cache: true
- name: (Linux) Install system dependencies
if: matrix.platform == 'ubuntu-22.04'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential cmake pkg-config clang python3 \
libfontconfig-dev libfreetype-dev \
libgl1-mesa-dev libx11-dev libxcursor-dev libxi-dev libxrandr-dev \
libxkbcommon-dev libxkbcommon-x11-dev libwayland-dev libdbus-1-dev \
libgtk-3-dev libayatana-appindicator3-dev \
libfuse2
- name: Add x86_64-apple-darwin target
if: contains(matrix.args, 'x86_64-apple-darwin')
run: rustup target add x86_64-apple-darwin
- name: Install cargo-packager
uses: ./.github/actions/install-cargo-tool
with:
tool: cargo-packager
version: 0.11.8
- name: Setup Packages
uses: ./.github/actions/setup-packages
- name: Import Apple Developer certificate
if: startsWith(matrix.platform, 'macos')
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
echo "$APPLE_CERTIFICATE" | base64 --decode > certificate.p12
security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain
security set-keychain-settings -t 3600 -u build.keychain
security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain
CERT_ID=$(security find-identity -v -p codesigning build.keychain | awk -F'"' '/Developer ID Application/ {print $2; exit}')
if [ -z "$CERT_ID" ]; then
echo "::error::No Developer ID Application certificate found in keychain."
exit 1
fi
echo "APPLE_SIGNING_IDENTITY=$CERT_ID" >> "$GITHUB_ENV"
# cargo-packager only codesigns when `signing-identity` is present in the
# packager config; it does NOT read APPLE_SIGNING_IDENTITY. Inject it into
# the macOS metadata so signing + notarization actually run.
CERT_ID="$CERT_ID" python3 - <<'PY'
import os, re
p = "packages/oneclient_app/Cargo.toml"
s = open(p).read()
ident = os.environ["CERT_ID"]
hdr = "[package.metadata.packager.macos]"
assert hdr in s, "macos packager section not found"
if "signing-identity" not in s:
s = s.replace(hdr, f'{hdr}\nsigning-identity = "{ident}"', 1)
open(p, "w").write(s)
print(f"signing-identity set to: {ident}")
PY
- name: Build release binary
shell: bash
run: |
if [ -n "${{ matrix.target }}" ]; then
cargo build --release --bin oneclient_app --target ${{ matrix.target }}
else
cargo build --release --bin oneclient_app
fi
- name: (macOS) Verify deployment target
if: matrix.macos_deployment_target != ''
shell: bash
run: |
set -euo pipefail
bin="target/${{ matrix.target }}/release/oneclient_app"
minos="$(vtool -show-build "$bin" | awk '/minos/ {print $2; exit}')"
echo "linked minos=$minos, declared minimum=${{ matrix.macos_deployment_target }}"
if [ "$(printf '%s\n%s\n' "$minos" "${{ matrix.macos_deployment_target }}" | sort -V | tail -n1)" != "${{ matrix.macos_deployment_target }}" ]; then
echo "::error::Binary requires macOS $minos but the bundle advertises ${{ matrix.macos_deployment_target }}."
exit 1
fi
- name: (Windows) Upload unsigned app binary artifact
if: matrix.platform == 'windows-latest'
id: win_upload_unsigned_bin
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: oneclient-windows-binary-unsigned
path: target/release/oneclient_app.exe
- name: (Windows) Submit SignPath signing request for app binary
if: matrix.platform == 'windows-latest'
uses: signpath/github-action-submit-signing-request@ced31329c0317e779dad2eec2a7c3bb46ea1343e # v1.3
with:
api-token: ${{ secrets.SIGNPATH_API_TOKEN }}
organization-id: ${{ secrets.SIGNPATH_ORGANIZATION_ID }}
project-slug: onelauncher
signing-policy-slug: release-signing
artifact-configuration-slug: onelauncher-binary
github-artifact-id: ${{ steps.win_upload_unsigned_bin.outputs.artifact-id }}
wait-for-completion: true
output-artifact-directory: signed-bin
- name: (Windows) Swap in signed app binary
if: matrix.platform == 'windows-latest'
shell: bash
run: |
set -euo pipefail
signed="signed-bin/oneclient_app.exe"
if [ ! -e "$signed" ]; then
echo "::error::SignPath did not return signed-bin/oneclient_app.exe"
ls -R signed-bin || true
exit 1
fi
cp "$signed" target/release/oneclient_app.exe
- name: (Windows) Verify app binary is signed
if: matrix.platform == 'windows-latest'
shell: pwsh
run: |
$sig = Get-AuthenticodeSignature 'target/release/oneclient_app.exe'
Write-Host "Authenticode status: $($sig.Status)"
Write-Host "Signer: $($sig.SignerCertificate.Subject)"
if ($sig.Status -eq 'NotSigned') {
Write-Error 'oneclient_app.exe carries no Authenticode signature'
exit 1
}
- name: (macOS) Compile app icon catalog
if: startsWith(matrix.platform, 'macos')
shell: bash
run: |
set -euo pipefail
out="packages/oneclient_app/icons/generated"
mkdir -p "$out"
xcrun actool packages/oneclient_app/icons/OneClient.icon \
--compile "$out" \
--app-icon OneClient \
--output-partial-info-plist "$out/partial.plist" \
--platform macosx \
--minimum-deployment-target 26.0 \
--errors --warnings --notices
rm -f "$out/OneClient.icns"
test -f "$out/Assets.car" || { echo "::error::actool produced no Assets.car"; exit 1; }
- name: (Windows) Stage app-local VC++ runtime
if: matrix.platform == 'windows-latest'
shell: bash
run: python3 distribution/windows/bundle-crt.py
- name: (Windows) Verify staged runtime is Microsoft-signed
if: matrix.platform == 'windows-latest'
shell: pwsh
run: |
$dlls = @(Get-ChildItem 'target/crt/*.dll')
if ($dlls.Count -eq 0) { Write-Error 'no CRT DLLs staged'; exit 1 }
foreach ($dll in $dlls) {
$sig = Get-AuthenticodeSignature $dll.FullName
Write-Host "$($dll.Name): $($sig.Status) $($sig.SignerCertificate.Subject)"
if ($sig.Status -ne 'Valid') {
Write-Error "$($dll.Name) signature is $($sig.Status), refusing to ship it"
exit 1
}
if ($sig.SignerCertificate.Subject -notmatch 'O=Microsoft Corporation') {
Write-Error "$($dll.Name) is not signed by Microsoft"
exit 1
}
}
- name: Package
shell: bash
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
CI: ${{ startsWith(matrix.platform, 'macos') && 'false' || 'true' }}
CARGO_PACKAGER_SIGN_PRIVATE_KEY: ${{ secrets.CARGO_PACKAGER_SIGN_PRIVATE_KEY }}
CARGO_PACKAGER_SIGN_PRIVATE_KEY_PASSWORD: ${{ secrets.CARGO_PACKAGER_SIGN_PRIVATE_KEY_PASSWORD }}
run: |
ARGS="--release --formats ${{ matrix.formats }}"
if [ -n "${{ matrix.target }}" ]; then
ARGS="$ARGS --target ${{ matrix.target }}"
fi
cargo packager $ARGS --verbose
- name: Resolve packager output dir
id: outdir
shell: bash
run: |
if [ -n "${{ matrix.target }}" ]; then
echo "dir=target/${{ matrix.target }}/release" >> "$GITHUB_OUTPUT"
else
echo "dir=target/release" >> "$GITHUB_OUTPUT"
fi
- name: (Linux) Install cargo-generate-rpm
if: matrix.platform == 'ubuntu-22.04'
uses: ./.github/actions/install-cargo-tool
with:
tool: cargo-generate-rpm
version: 0.21.0
- name: (Linux) Build RPM
if: matrix.platform == 'ubuntu-22.04'
shell: bash
run: |
set -euo pipefail
cp target/release/.cargo-packager/deb/*/data/usr/share/applications/oneclient_app.desktop \
target/release/oneclient_app.desktop
cargo generate-rpm -p packages/oneclient_app
cp target/generate-rpm/*.rpm "${{ steps.outdir.outputs.dir }}/"
# Upload debug info (dSYM / .dwp / .pdb produced by the release profile's
# split-debuginfo) to Sentry so crash reports get real file/function/line
# stack traces instead of raw addresses. Skips silently unless the repo has
# a SENTRY_AUTH_TOKEN secret plus SENTRY_ORG / SENTRY_PROJECT variables.
- name: Upload debug symbols to Sentry
shell: bash
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: ${{ vars.SENTRY_ORG }}
SENTRY_PROJECT: ${{ vars.SENTRY_PROJECT }}
OUT_DIR: ${{ steps.outdir.outputs.dir }}
run: |
set -euo pipefail
if [ -z "${SENTRY_AUTH_TOKEN:-}" ] || [ -z "${SENTRY_ORG:-}" ] || [ -z "${SENTRY_PROJECT:-}" ]; then
echo "Sentry credentials not configured (need SENTRY_AUTH_TOKEN secret + SENTRY_ORG/SENTRY_PROJECT vars); skipping debug-symbol upload."
exit 0
fi
curl -sL https://sentry.io/get-cli/ | bash
export PATH="/usr/local/bin:$PATH"
SYMS="$(mktemp -d)"
shopt -s nullglob
for f in "$OUT_DIR"/oneclient_app "$OUT_DIR"/oneclient_app.exe \
"$OUT_DIR"/oneclient_app.pdb "$OUT_DIR"/*.dwp "$OUT_DIR"/*.dSYM; do
[ -e "$f" ] || continue
cp -R "$f" "$SYMS/"
done
sentry-cli debug-files upload --include-sources "$SYMS"
- name: (Windows) Locate installer
if: matrix.platform == 'windows-latest'
id: win_installer
shell: bash
run: echo "path=$(ls ${{ steps.outdir.outputs.dir }}/*-setup.exe | head -n1)" >> "$GITHUB_OUTPUT"
- name: (Windows) Smoke-test installer layout
if: matrix.platform == 'windows-latest'
shell: pwsh
run: |
$ErrorActionPreference = 'Stop'
$dest = 'C:\oneclient-smoke'
Remove-Item -Recurse -Force $dest -ErrorAction SilentlyContinue
$exe = Resolve-Path '${{ steps.win_installer.outputs.path }}'
# NSIS: /S is silent, /D= sets the install dir and must be the last arg.
$p = Start-Process -FilePath $exe -ArgumentList '/S', "/D=$dest" -Wait -PassThru
if ($p.ExitCode -ne 0) { Write-Error "installer exited $($p.ExitCode)"; exit 1 }
Write-Host '--- installed layout ---'
Get-ChildItem -Recurse $dest | ForEach-Object { Write-Host $_.FullName }
if (-not (Test-Path "$dest\oneclient_app.exe")) {
Write-Error "oneclient_app.exe is not at the root of $dest"
exit 1
}
foreach ($dll in @(Get-ChildItem 'target/crt/*.dll')) {
if (-not (Test-Path (Join-Path $dest $dll.Name))) {
Write-Error "$($dll.Name) did not land beside oneclient_app.exe - cargo-packager put resources elsewhere, so app-local CRT loading will not work"
exit 1
}
}
Write-Host "OK: $($(Get-ChildItem 'target/crt/*.dll').Count) CRT DLLs sit beside oneclient_app.exe"
- name: (Windows) Upload unsigned installer artifact
if: matrix.platform == 'windows-latest'
id: win_upload_unsigned
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: oneclient-windows-installer-unsigned
path: ${{ steps.win_installer.outputs.path }}
- name: (Windows) Submit SignPath signing request
if: matrix.platform == 'windows-latest'
uses: signpath/github-action-submit-signing-request@ced31329c0317e779dad2eec2a7c3bb46ea1343e # v1.3
with:
api-token: ${{ secrets.SIGNPATH_API_TOKEN }}
organization-id: ${{ secrets.SIGNPATH_ORGANIZATION_ID }}
project-slug: onelauncher
signing-policy-slug: release-signing
artifact-configuration-slug: onelauncher-installer
github-artifact-id: ${{ steps.win_upload_unsigned.outputs.artifact-id }}
wait-for-completion: true
output-artifact-directory: signed
- name: (Windows) Replace installer with signed one + recompute updater sig
if: matrix.platform == 'windows-latest'
shell: bash
env:
CARGO_PACKAGER_SIGN_PRIVATE_KEY: ${{ secrets.CARGO_PACKAGER_SIGN_PRIVATE_KEY }}
CARGO_PACKAGER_SIGN_PRIVATE_KEY_PASSWORD: ${{ secrets.CARGO_PACKAGER_SIGN_PRIVATE_KEY_PASSWORD }}
run: |
signed="$(ls signed/*-setup.exe | head -n1)"
# Overwrite the unsigned installer in the packager out dir with the signed exe.
cp "$signed" "${{ steps.win_installer.outputs.path }}"
# Recompute the updater signature over the SIGNED exe.
cargo packager signer sign \
--private-key "$CARGO_PACKAGER_SIGN_PRIVATE_KEY" \
--password "$CARGO_PACKAGER_SIGN_PRIVATE_KEY_PASSWORD" \
"${{ steps.win_installer.outputs.path }}"
- name: Upload installers and build manifest fragment
shell: bash
- uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ needs.prepare.outputs.tag }}
OUT_DIR: ${{ steps.outdir.outputs.dir }}
OS_KEY: ${{ matrix.os_key }}
ARCH: ${{ matrix.arch }}
VERSION: ${{ needs.prepare.outputs.version }}
run: |
set -euo pipefail
shopt -s nullglob
# Identify the single updater artifact for this platform (the file with a
# sibling .sig): -setup.exe (nsis), *.app.tar.gz (app), *.AppImage (appimage).
# NOTE: nullglob is on, so an unmatched glob expands to nothing. Use arrays
# rather than `ls <glob> | head` - the latter falls back to listing the cwd
# when nothing matches, silently picking an unrelated file.
fmt=""; ext=""; matches=()
case "$OS_KEY" in
windows) matches=("$OUT_DIR"/*-setup.exe); fmt="nsis"; ext="exe" ;;
darwin) matches=("$OUT_DIR"/*.app.tar.gz); fmt="app"; ext="app.tar.gz" ;;
linux) matches=("$OUT_DIR"/*.AppImage); fmt="appimage"; ext="AppImage" ;;
esac
updater_file="${matches[0]:-}"
if [ -z "$updater_file" ]; then
echo "::error::No updater artifact found in $OUT_DIR for $OS_KEY"
exit 1
fi
# The updater bundle isn't always arch-tagged by cargo-packager, so the two
# macOS legs would collide on the release. Rename the updater artifact + its .sig
# to an arch-unique name before upload, and point the manifest at that name.
unique="OneClient_${VERSION}_${OS_KEY}_${ARCH}.${ext}"
cp "$updater_file" "$OUT_DIR/$unique"
cp "$updater_file.sig" "$OUT_DIR/$unique.sig"
# cargo-packager names the .deb after the binary (oneclient_app_<ver>_amd64.deb).
# Rename it to the same OneClient_<ver>_<os>_<arch> scheme as the other assets so
# the AUR oneclient-bin package can point at a stable, predictable URL.
deb_unique=""
deb_matches=("$OUT_DIR"/*.deb)
if [ -e "${deb_matches[0]:-}" ]; then
deb_unique="OneClient_${VERSION}_${OS_KEY}_${ARCH}.deb"
cp "${deb_matches[0]}" "$OUT_DIR/$deb_unique"
fi
# Same treatment for the .rpm (cargo-generate-rpm names it
# oneclient_app-<ver>-1.x86_64.rpm).
rpm_unique=""
rpm_matches=("$OUT_DIR"/*.rpm)
if [ -e "${rpm_matches[0]:-}" ]; then
rpm_unique="OneClient_${VERSION}_${OS_KEY}_${ARCH}.rpm"
cp "${rpm_matches[0]}" "$OUT_DIR/$rpm_unique"
fi
# Upload human-facing installers (dmg/renamed deb/renamed rpm/AppImage/signed exe) +
# the renamed updater bundle and its .sig. Skip the un-renamed updater bundle to avoid clashes.
for f in "$OUT_DIR"/*.dmg ${deb_unique:+"$OUT_DIR/$deb_unique"} ${rpm_unique:+"$OUT_DIR/$rpm_unique"} "$OUT_DIR"/*.AppImage "$OUT_DIR"/*-setup.exe "$OUT_DIR/$unique" "$OUT_DIR/$unique.sig"; do
[ -e "$f" ] || continue
gh release upload "$TAG" "$f" --clobber
done
base="$unique"
mkdir -p fragments
case "$OS_KEY" in
darwin) KEYS="darwin-${ARCH} macos-${ARCH}" ;;
*) KEYS="${OS_KEY}-${ARCH}" ;;
esac
SIG="$(cat "$updater_file.sig")" \
URL="https://github.com/${GITHUB_REPOSITORY}/releases/download/${TAG}/${base}" \
FMT="$fmt" \
KEYS="$KEYS" \
FRAG_NAME="${OS_KEY}-${ARCH}" \
python3 - <<'PY'
import json, os
entry = {
"signature": os.environ["SIG"],
"url": os.environ["URL"],
"format": os.environ["FMT"],
}
frag = {key: entry for key in os.environ["KEYS"].split()}
with open(f"fragments/{os.environ['FRAG_NAME']}.json", "w") as f:
json.dump(frag, f)
PY
- name: Upload manifest fragment
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
with:
name: manifest-${{ matrix.os_key }}-${{ matrix.arch }}
path: fragments/*.json
manifest:
needs: [prepare, package]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all manifest fragments
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
pattern: manifest-*
path: fragments
merge-multiple: true
- name: Assemble latest.json
env:
VERSION: ${{ needs.prepare.outputs.version }}
run: |
python3 - <<'PY'
import json, glob, os, datetime
platforms = {}
for path in glob.glob("fragments/*.json"):
with open(path) as f:
platforms.update(json.load(f))
manifest = {
"version": os.environ["VERSION"],
"pub_date": datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
"platforms": platforms,
}
with open("latest.json", "w") as f:
json.dump(manifest, f, indent=2)
print(json.dumps(manifest, indent=2))
PY
- name: Upload latest.json to release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ needs.prepare.outputs.tag }}
run: gh release upload "$TAG" latest.json --clobber --repo "$GITHUB_REPOSITORY"
tagName: oneclient-__VERSION__
releaseName: OneClient __VERSION__
releaseDraft: true
prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }}
tauriScript: pnpm -w oneclient:desktop
args: ${{ matrix.args }}
projectPath: ./apps/oneclient/desktop/
uploadUpdaterJson: true

View file

@ -0,0 +1,48 @@
name: OneLauncher Release Build
on:
workflow_dispatch:
jobs:
publish-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
include:
- platform: macos-latest # ARM
args: --target aarch64-apple-darwin
- platform: macos-latest # Intel
args: --target x86_64-apple-darwin
- platform: ubuntu-22.04
args: ''
- platform: windows-latest
args: ''
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: Setup Rust
uses: ./.github/actions/setup-rust
with:
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
target: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
save-cache: true
restore-cache: true
- name: Setup Packages
uses: ./.github/actions/setup-packages
- uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tagName: onelauncher-__VERSION__
releaseName: OneLauncher __VERSION__
releaseDraft: true
prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }}
tauriScript: pnpm -w onelauncher:desktop
args: ${{ matrix.args }}
projectPath: ./apps/onelauncher/desktop/

View file

@ -1,171 +0,0 @@
name: Release Multiplatform Binaries
on:
push:
tags:
- 'v*'
workflow_dispatch:
inputs:
tag:
description: 'Release Tag (e.g. v2.5.1)'
required: false
default: 'v2.5.1-c3'
type: string
permissions:
contents: write
env:
SQLX_OFFLINE: true
SQLX_OFFLINE_DIR: packages/oneclient_db/.sqlx
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
# Linux x86_64
- os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
name: linux-x86_64
formats: deb,appimage
# Windows x86_64
- os: windows-latest
target: x86_64-pc-windows-msvc
name: windows-x86_64
formats: nsis
# macOS Apple Silicon
- os: macos-14
target: aarch64-apple-darwin
name: macos-arm64
formats: dmg,app
# macOS Intel (cross-compiled on macos-14)
- os: macos-14
target: x86_64-apple-darwin
name: macos-x86_64
formats: dmg,app
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Rust Cache
uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}
cache-all-crates: true
- name: Install Linux build dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libfontconfig1-dev \
libfreetype6-dev \
libgl1-mesa-dev \
libvulkan-dev \
libasound2-dev
- name: Install cargo-packager
run: cargo install cargo-packager --locked || true
- name: Build Release Binary
run: cargo build --release --bin oneclient_app --target ${{ matrix.target }}
- name: Package Application
run: cargo packager --release --target ${{ matrix.target }} --formats ${{ matrix.formats }}
continue-on-error: true
- name: Generate RPM Package (Linux)
if: runner.os == 'Linux'
run: |
cargo install cargo-generate-rpm --locked || true
cargo generate-rpm --target ${{ matrix.target }} -p oneclient_app || true
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: binaries-${{ matrix.name }}
if-no-files-found: warn
path: |
target/${{ matrix.target }}/release/*.deb
target/${{ matrix.target }}/release/*.AppImage
target/${{ matrix.target }}/release/*.dmg
target/${{ matrix.target }}/release/*-setup.exe
target/${{ matrix.target }}/generate-rpm/*.rpm
target/generate-rpm/*.rpm
target/release/*.deb
target/release/*.AppImage
target/release/*.dmg
target/release/*-setup.exe
create-release:
needs: build
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: ./artifacts
merge-multiple: true
- name: Determine Release Tag
id: release_tag
run: |
if [[ "${{ github.ref_name }}" =~ ^v ]]; then
echo "tag=${{ github.ref_name }}" >> $GITHUB_OUTPUT
elif [ -n "${{ inputs.tag }}" ]; then
echo "tag=${{ inputs.tag }}" >> $GITHUB_OUTPUT
else
echo "tag=v2.5.1-c3" >> $GITHUB_OUTPUT
fi
- name: Clean up previous release if exists
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release delete "${{ steps.release_tag.outputs.tag }}" -y --cleanup-tag=false || true
- name: Publish GitHub Release
uses: softprops/action-gh-release@v2
with:
files: ./artifacts/**/*
tag_name: ${{ steps.release_tag.outputs.tag }}
name: "OneLauncher-Cracked ${{ steps.release_tag.outputs.tag }}"
body: |
### What's New in ${{ steps.release_tag.outputs.tag }}
- **Complete Multiplayer Server Skin Support**: Native integration with client-side `OfflineSkins Reloaded` for Fabric 1.21.11, allowing skins to render directly on cracked multiplayer servers (e.g. `alwto.net`) when the server transmits empty player profiles.
- **Proper Isolated Offline Skin System (Authlib-Injector)**: Embedded, zero-network-dependency Authlib-Injector session provider with RSA signature verification. Your skin is attached strictly and exclusively to your player profile, completely eliminating the bug where other players or NPCs on offline servers would receive your skin.
- **Dynamic Version Compatibility**: Automatically gates offline skin mod integration strictly to matching versions, while Authlib-Injector handles clean, zero-dependency offline profile signing across all Minecraft versions.
- **Purged Incompatible Mods**: Completely cleaned and prevented CustomSkinLoader crashes on modern Fabric Loader (0.17+) and Sponge Mixin 0.8.7.
- **Vanilla & Multi-server Integrity**: Other offline players remain authentic vanilla Steve/Alex, while online players on hybrid servers display their legitimate Mojang skins via transparent caching session proxying.
- **Automatic Legacy Cleanup**: Restores pristine `client.jar` and removes stale skin resource packs from `options.txt` on launch.
- **Guaranteed Offline Game Launch**: Direct offline launching with 0 Microsoft accounts required.
- **In-Launcher 3D Skin Changer**: Full 3D skin preview, slim/classic arm model toggle, local file import, and online skin downloads.
- **Rebased on Upstream 2.5.1**: All upstream 2.5.1 features, hook error reporting, and metadata self-healing.
draft: false
prerelease: false
generate_release_notes: false
make_latest: true
fail_on_unmatched_files: false

524
.gitignore vendored
View file

@ -1,7 +1,519 @@
/target
/dist
.DS_Store
/.idea
OneLauncher.iml
dev.db
dev.db-journal
.cargo/config.toml
.deps/*
vite.config.ts.timestamp*
/packages/oneclient_app/icons/generated/
# Created by https://www.toptal.com/developers/gitignore/api/node,rust,yarn,linux,macos,windows,intellij+all,rust-analyzer,visualstudiocode,intellij,intellij+iml,git
# Edit at https://www.toptal.com/developers/gitignore?templates=node,rust,yarn,linux,macos,windows,intellij+all,rust-analyzer,visualstudiocode,intellij,intellij+iml,git
### Git ###
# Created by git for backups. To disable backups in Git:
# $ git config --global mergetool.keepBackup false
*.orig
# Created by git when using merge tools for conflicts
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
# https://plugins.jetbrains.com/plugin/7973-sonarlint
.idea/**/sonarlint/
# SonarQube Plugin
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
.idea/**/sonarIssues.xml
# Markdown Navigator plugin
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator-enh.xml
.idea/**/markdown-navigator/
# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/$CACHE_FILE$
# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml
# Azure Toolkit for IntelliJ plugin
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
.idea/**/azureSettings.xml
### Intellij+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
# AWS User-specific
# Generated files
# Sensitive or high-churn files
# Gradle
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
# Mongo Explorer plugin
# File-based project format
# IntelliJ
# mpeltonen/sbt-idea plugin
# JIRA plugin
# Cursive Clojure plugin
# SonarLint plugin
# Crashlytics plugin (for Android Studio and IntelliJ)
# Editor-based Rest Client
# Android studio 3.1+ serialized cache file
### Intellij+all Patch ###
# Ignore everything but code style settings and run configurations
# that are supposed to be shared within teams.
.idea/*
### Intellij+iml ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
# AWS User-specific
# Generated files
# Sensitive or high-churn files
# Gradle
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
# Mongo Explorer plugin
# File-based project format
# IntelliJ
# mpeltonen/sbt-idea plugin
# JIRA plugin
# Cursive Clojure plugin
# SonarLint plugin
# Crashlytics plugin (for Android Studio and IntelliJ)
# Editor-based Rest Client
# Android studio 3.1+ serialized cache file
### Intellij+iml Patch ###
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
modules.xml
.idea/misc.xml
*.ipr
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
# vuepress v2.x temp and cache directory
.temp
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
### Node Patch ###
# Serverless Webpack directories
.webpack/
# Optional stylelint cache
# SvelteKit build / generate output
.svelte-kit
### Rust ###
# Generated by Cargo
# will have compiled files and executables
debug/
target/
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
# Cargo.lock
# These are backup files generated by rustfmt
**/*.rs.bk
# MSVC Windows builds of rustc generate these, which store debugging information
*.pdb
### rust-analyzer ###
# Can be generated by other build systems other than cargo (ex: bazelbuild/rust_rules)
rust-project.json
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
### yarn ###
# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored
.yarn/*
!.yarn/releases
!.yarn/patches
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
# if you are NOT using Zero-installs, then:
# comment the following lines
!.yarn/cache
# and uncomment the following lines
# .pnp.*
# End of https://www.toptal.com/developers/gitignore/api/node,rust,yarn,linux,macos,windows,intellij+all,rust-analyzer,visualstudiocode,intellij,intellij+iml,git

1
.husky/pre-commit Normal file
View file

@ -0,0 +1 @@
pnpm lint-staged

9
.npmrc Normal file
View file

@ -0,0 +1,9 @@
; make all engine requirements (e.g. node version) strictly kept
engine-strict=true
dedupe-peer-dependents=true
# strict-peer-dependencies=true
auto-install-peers=true
max-old-space-size=4096
enable-pre-post-scripts=true
package-manager-strict=true
package-manager-strict-version=true

1
.nvmrc Normal file
View file

@ -0,0 +1 @@
24

23
.rustfmt.toml Normal file
View file

@ -0,0 +1,23 @@
max_width = 100
hard_tabs = true
newline_style = "Unix"
use_small_heuristics = "Default"
reorder_imports = true
imports_granularity = "Module"
reorder_modules = true
remove_nested_parens = true
edition = "2024"
merge_derives = true
use_try_shorthand = false
use_field_init_shorthand = false
force_explicit_abi = true
unstable_features = true
deprecated = "warn"
deprecated_in_future = "forbid"
rust_2018_idioms = { level = "warn", priority = -1 }
trivial_casts = "warn"
trivial_numeric_casts = "warn"
unused_allocation = "warn"
unused_import_braces = "warn"
unused_must_use = "deny"
unused_qualifications = "warn"

View file

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<artifact-configuration xmlns="http://signpath.io/artifact-configuration/v1">
<zip-file>
<pe-file path="oneclient_app.exe">
<authenticode-sign />
</pe-file>
</zip-file>
</artifact-configuration>

View file

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
SignPath artifact configuration for the OneClient Windows installer.
GitHub Actions wraps every uploaded artifact in a ZIP archive, so the root
element MUST be <zip-file> (see https://docs.signpath.io/trusted-build-systems/github).
The NSIS bundle produced by Tauri is named e.g. "OneClient_1.1.6_x64-setup.exe",
so we match it with a wildcard instead of a fixed, version-specific name.
Upload this file in the SignPath portal:
Project "onelauncher" -> Artifact Configurations -> slug "onelauncher-installer"
-->
<artifact-configuration xmlns="http://signpath.io/artifact-configuration/v1">
<zip-file>
<pe-file path="*-setup.exe" min-matches="1" max-matches="unbounded">
<!-- optionally, add metadata constraints: product-name, product-version, file-version, company-name, copyright, original-filename -->
<authenticode-sign />
</pe-file>
</zip-file>
</artifact-configuration>

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n INSERT OR IGNORE INTO cluster_bundle_choices (cluster_id, bundle_name, accepted)\n SELECT ?, bundle_name, accepted\n FROM cluster_bundle_choices\n WHERE cluster_id = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "001a994c740f7a015152319eb16fc113954af25ebd2a44d55e95833adda53268"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "UPDATE cluster_artifacts SET seen_status = ? WHERE seen_status <> ?",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "011448f2ce79e981700ee75c8cd5db5e0fcb793b72671c20a925b73ee6fb9456"
}

View file

@ -1,170 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT name, java_path, resolution, force_fullscreen, mem_max, launch_args, game_args, launch_env,\n\t\t hook_pre, hook_wrapper, hook_post, os_extra, browser_update_mode\n\t\tFROM setting_profiles\n\t\tORDER BY name ASC\n\t\t",
"describe": {
"columns": [
{
"name": "name",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "name"
}
}
},
{
"name": "java_path",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "java_path"
}
}
},
{
"name": "resolution",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "resolution"
}
}
},
{
"name": "force_fullscreen",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "force_fullscreen"
}
}
},
{
"name": "mem_max",
"ordinal": 4,
"type_info": "Integer",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "mem_max"
}
}
},
{
"name": "launch_args",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "launch_args"
}
}
},
{
"name": "game_args",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "game_args"
}
}
},
{
"name": "launch_env",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "launch_env"
}
}
},
{
"name": "hook_pre",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_pre"
}
}
},
{
"name": "hook_wrapper",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_wrapper"
}
}
},
{
"name": "hook_post",
"ordinal": 10,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_post"
}
}
},
{
"name": "os_extra",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "os_extra"
}
}
},
{
"name": "browser_update_mode",
"ordinal": 12,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "browser_update_mode"
}
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
]
},
"hash": "01b2ef24541af92505a3c2bc14037a61470a393dffa06da8bebfba98138709d0"
}

View file

@ -1,74 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT cluster_id, hash, cluster_file_name, enabled, seen_status\n\t\tFROM cluster_artifacts\n\t\tWHERE cluster_id = ? AND hash = ?\n\t\t",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_id"
}
}
},
{
"name": "hash",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "hash"
}
}
},
{
"name": "cluster_file_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_file_name"
}
}
},
{
"name": "enabled",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "enabled"
}
}
},
{
"name": "seen_status",
"ordinal": 4,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "seen_status"
}
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false,
false,
false,
false,
false
]
},
"hash": "071d02aba0d2eb073b8ca1e6488087101255147c064612fad99500d3c993f61f"
}

View file

@ -1,26 +0,0 @@
{
"db_name": "SQLite",
"query": "SELECT id FROM applied_migrations WHERE id = ?",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "applied_migrations",
"name": "id"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false
]
},
"hash": "07450861d48b3bff106b7c06e958665f6be44e7937deffb921ddb6a5450805ab"
}

View file

@ -1,38 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT started_at, ended_at\n\t\tFROM game_sessions\n\t\tWHERE ended_at IS NOT NULL\n\t\tORDER BY started_at ASC\n\t\t",
"describe": {
"columns": [
{
"name": "started_at",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_sessions",
"name": "started_at"
}
}
},
{
"name": "ended_at",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_sessions",
"name": "ended_at"
}
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false,
true
]
},
"hash": "0c13ec99c2157d0f8fe60a159807e23cd24ddea07917d5f77b7c0d01cc617ccb"
}

View file

@ -1,98 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT absolute_path, major, version, vendor, os_arch, is_jdk as \"is_jdk: bool\", probe_version\n FROM java_versions\n ORDER BY major DESC, version DESC\n ",
"describe": {
"columns": [
{
"name": "absolute_path",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "absolute_path"
}
}
},
{
"name": "major",
"ordinal": 1,
"type_info": "Integer",
"origin": {
"Table": {
"table": "java_versions",
"name": "major"
}
}
},
{
"name": "version",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "version"
}
}
},
{
"name": "vendor",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "vendor"
}
}
},
{
"name": "os_arch",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "os_arch"
}
}
},
{
"name": "is_jdk: bool",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "java_versions",
"name": "is_jdk"
}
}
},
{
"name": "probe_version",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "java_versions",
"name": "probe_version"
}
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false,
false,
false,
false,
false,
false,
false
]
},
"hash": "0c3651cf175cb900c2466f0e97beca338b95637d43d9d067b974327f7720637b"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tINSERT INTO clusters (\n\t\t\tname, folder_name, mc_version, mc_loader, mc_loader_version,\n\t\t\tsetting_profile_name, stage, created_at\n\t\t)\n\t\tVALUES (?, ?, ?, ?, ?, ?, ?, ?)\n\t\tRETURNING\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
}
],
"parameters": {
"Right": 8
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true
]
},
"hash": "0f4cedf6055f4ba6a5e6ef78304c5f9df31fc6de0f6aa3dc09c4341fcb19c871"
}

View file

@ -1,110 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT\n cluster_id, hash, cluster_file_name, enabled,\n bundle_name, bundle_version_id, package_id, installed_at\n FROM cluster_artifacts\n WHERE cluster_id = ? AND bundle_name IS NOT NULL\n ",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_id"
}
}
},
{
"name": "hash",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "hash"
}
}
},
{
"name": "cluster_file_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_file_name"
}
}
},
{
"name": "enabled",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "enabled"
}
}
},
{
"name": "bundle_name",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "bundle_name"
}
}
},
{
"name": "bundle_version_id",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "bundle_version_id"
}
}
},
{
"name": "package_id",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "package_id"
}
}
},
{
"name": "installed_at",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "installed_at"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true
]
},
"hash": "0fa6a144689ecd95fc076d340645a3417d56b455c6bb2a9ef3e027a3e1915813"
}

View file

@ -1,98 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT absolute_path, major, version, vendor, os_arch, is_jdk as \"is_jdk: bool\", probe_version\n\t\tFROM java_versions\n\t\tWHERE major = ?\n\t\tORDER BY version DESC\n\t\tLIMIT 1\n\t\t",
"describe": {
"columns": [
{
"name": "absolute_path",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "absolute_path"
}
}
},
{
"name": "major",
"ordinal": 1,
"type_info": "Integer",
"origin": {
"Table": {
"table": "java_versions",
"name": "major"
}
}
},
{
"name": "version",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "version"
}
}
},
{
"name": "vendor",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "vendor"
}
}
},
{
"name": "os_arch",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "os_arch"
}
}
},
{
"name": "is_jdk: bool",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "java_versions",
"name": "is_jdk"
}
}
},
{
"name": "probe_version",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "java_versions",
"name": "probe_version"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
false,
false,
false
]
},
"hash": "14ab205c5b8d4c1c435814e4b7a155acbae41a67925b6b179b82dea1758d621a"
}

View file

@ -1,110 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\ttarget_cluster_id, provider, project_id, content_type,\n\t\t\tsource_hash, display_name, expires_at, enabled\n\t\tFROM release_migration_waitlist\n\t\t",
"describe": {
"columns": [
{
"name": "target_cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "release_migration_waitlist",
"name": "target_cluster_id"
}
}
},
{
"name": "provider",
"ordinal": 1,
"type_info": "Integer",
"origin": {
"Table": {
"table": "release_migration_waitlist",
"name": "provider"
}
}
},
{
"name": "project_id",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "release_migration_waitlist",
"name": "project_id"
}
}
},
{
"name": "content_type",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "release_migration_waitlist",
"name": "content_type"
}
}
},
{
"name": "source_hash",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "release_migration_waitlist",
"name": "source_hash"
}
}
},
{
"name": "display_name",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "release_migration_waitlist",
"name": "display_name"
}
}
},
{
"name": "expires_at",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "release_migration_waitlist",
"name": "expires_at"
}
}
},
{
"name": "enabled",
"ordinal": 7,
"type_info": "Integer",
"origin": {
"Table": {
"table": "release_migration_waitlist",
"name": "enabled"
}
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
false
]
},
"hash": "15dc690e91fe0bc7e1932a5051f8edd855deaeb31e52209ae436680962dea954"
}

View file

@ -1,38 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT bundle_name, accepted\n FROM cluster_bundle_choices\n WHERE cluster_id = ?\n ",
"describe": {
"columns": [
{
"name": "bundle_name",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_bundle_choices",
"name": "bundle_name"
}
}
},
{
"name": "accepted",
"ordinal": 1,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_bundle_choices",
"name": "accepted"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "171c6771d06656c2fe375f6a0da889f828f400e950f103f0ed44f5f98a48dc50"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE clusters\n\t\tSET mc_version = ?,\n\t\t name = ?,\n\t\t folder_name = ?\n\t\tWHERE id = ?\n\t\tRETURNING\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
}
],
"parameters": {
"Right": 4
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true
]
},
"hash": "1a83654d854901219ca4be57d793ddef96835a67aa8affe3453845a646e5ba61"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "DELETE FROM release_migration_waitlist WHERE target_cluster_id = ? AND provider = ? AND project_id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "1e43f93b56bb495e13826c734fe5fb64515cf1d7c28bc6a1bf1fb1645fdba2a1"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "DELETE FROM setting_profiles WHERE name = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "1f0b5e466773838f6b800f9d5afe5b84ad8ece01b56b9e22d595271db2c5c202"
}

View file

@ -1,146 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tcluster_id, hash, provider as \"provider!: i64\", project_id,\n\t\t\tinstalled_version_id, installed_version_name,\n\t\t\tlatest_version_id, latest_version_name,\n\t\t\tdisplay_name, checked_at, skipped\n\t\tFROM browser_package_updates\n\t\t",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "cluster_id"
}
}
},
{
"name": "hash",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "hash"
}
}
},
{
"name": "provider!: i64",
"ordinal": 2,
"type_info": "Integer",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "provider"
}
}
},
{
"name": "project_id",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "project_id"
}
}
},
{
"name": "installed_version_id",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "installed_version_id"
}
}
},
{
"name": "installed_version_name",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "installed_version_name"
}
}
},
{
"name": "latest_version_id",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "latest_version_id"
}
}
},
{
"name": "latest_version_name",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "latest_version_name"
}
}
},
{
"name": "display_name",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "display_name"
}
}
},
{
"name": "checked_at",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "checked_at"
}
}
},
{
"name": "skipped",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "skipped"
}
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
]
},
"hash": "2005ac6f15d4c5fe36d5bfa87191e6be22264a2ca3e91155cb01f2debd39b319"
}

View file

@ -1,74 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tINSERT INTO cluster_artifacts (cluster_id, hash, cluster_file_name, enabled)\n\t\tVALUES (?, ?, ?, 1)\n\t\tON CONFLICT(cluster_id, hash) DO UPDATE SET\n\t\t\tcluster_file_name = excluded.cluster_file_name\n\t\tRETURNING cluster_id, hash, cluster_file_name, enabled, seen_status\n\t\t",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_id"
}
}
},
{
"name": "hash",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "hash"
}
}
},
{
"name": "cluster_file_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_file_name"
}
}
},
{
"name": "enabled",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "enabled"
}
}
},
{
"name": "seen_status",
"ordinal": 4,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "seen_status"
}
}
}
],
"parameters": {
"Right": 3
},
"nullable": [
false,
false,
false,
false,
false
]
},
"hash": "25259e9d6eda7f5113e0d88f00b24b28b98de1eda40a1e25d48bbcf212af42b5"
}

View file

@ -1,74 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT DISTINCT ca.cluster_id, ca.hash, ca.cluster_file_name, ca.enabled, ca.seen_status\n\t\tFROM cluster_artifacts ca\n\t\tJOIN provider_releases pr ON pr.hash = ca.hash\n\t\tWHERE ca.cluster_id = ?\n\t\t\tAND pr.provider = ?\n\t\t\tAND pr.project_id = ?\n\t\t\tAND ca.hash <> ?\n\t\t",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_id"
}
}
},
{
"name": "hash",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "hash"
}
}
},
{
"name": "cluster_file_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_file_name"
}
}
},
{
"name": "enabled",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "enabled"
}
}
},
{
"name": "seen_status",
"ordinal": 4,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "seen_status"
}
}
}
],
"parameters": {
"Right": 4
},
"nullable": [
false,
false,
false,
false,
false
]
},
"hash": "25f4eb2e9040bb8f1c9a38ca41a773225099f150c3fc8a41d31fd40c09711d0c"
}

View file

@ -1,110 +0,0 @@
{
"db_name": "SQLite",
"query": "\n UPDATE cluster_artifacts\n SET\n bundle_name = ?,\n bundle_version_id = ?,\n package_id = ?,\n installed_at = ?\n WHERE cluster_id = ? AND hash = ?\n RETURNING\n cluster_id, hash, cluster_file_name, enabled,\n bundle_name, bundle_version_id, package_id, installed_at\n ",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_id"
}
}
},
{
"name": "hash",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "hash"
}
}
},
{
"name": "cluster_file_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_file_name"
}
}
},
{
"name": "enabled",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "enabled"
}
}
},
{
"name": "bundle_name",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "bundle_name"
}
}
},
{
"name": "bundle_version_id",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "bundle_version_id"
}
}
},
{
"name": "package_id",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "package_id"
}
}
},
{
"name": "installed_at",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "installed_at"
}
}
}
],
"parameters": {
"Right": 6
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true
]
},
"hash": "26faf03500344e939addc574799459bb3294907c8fdf0727c0ef503e4b7bdf2c"
}

View file

@ -1,146 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tcluster_id, hash, provider as \"provider!: i64\", project_id,\n\t\t\tinstalled_version_id, installed_version_name,\n\t\t\tlatest_version_id, latest_version_name,\n\t\t\tdisplay_name, checked_at, skipped\n\t\tFROM browser_package_updates\n\t\tWHERE cluster_id = ?\n\t\t",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "cluster_id"
}
}
},
{
"name": "hash",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "hash"
}
}
},
{
"name": "provider!: i64",
"ordinal": 2,
"type_info": "Integer",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "provider"
}
}
},
{
"name": "project_id",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "project_id"
}
}
},
{
"name": "installed_version_id",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "installed_version_id"
}
}
},
{
"name": "installed_version_name",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "installed_version_name"
}
}
},
{
"name": "latest_version_id",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "latest_version_id"
}
}
},
{
"name": "latest_version_name",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "latest_version_name"
}
}
},
{
"name": "display_name",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "display_name"
}
}
},
{
"name": "checked_at",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "checked_at"
}
}
},
{
"name": "skipped",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "skipped"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
]
},
"hash": "271e5a3e03861f3699e3b32dc4a9bb0c0dcb880fcff67a096fa94b236fbe6107"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE clusters\n\t\tSET name = ?,\n\t\t setting_profile_name = ?,\n\t\t mc_loader_version = ?,\n\t\t linked_modpack_hash = ?\n\t\tWHERE id = ?\n\t\tRETURNING\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
}
],
"parameters": {
"Right": 5
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true
]
},
"hash": "2b5b633bb658e5f3c733acc7977b3c7fd7f8d8b5f425e71989e98a2b27338b42"
}

View file

@ -1,98 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT absolute_path, major, version, vendor, os_arch, is_jdk as \"is_jdk: bool\", probe_version\n FROM java_versions\n WHERE absolute_path = ?\n ",
"describe": {
"columns": [
{
"name": "absolute_path",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "absolute_path"
}
}
},
{
"name": "major",
"ordinal": 1,
"type_info": "Integer",
"origin": {
"Table": {
"table": "java_versions",
"name": "major"
}
}
},
{
"name": "version",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "version"
}
}
},
{
"name": "vendor",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "vendor"
}
}
},
{
"name": "os_arch",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "java_versions",
"name": "os_arch"
}
}
},
{
"name": "is_jdk: bool",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "java_versions",
"name": "is_jdk"
}
}
},
{
"name": "probe_version",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "java_versions",
"name": "probe_version"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
false,
false,
false
]
},
"hash": "331bee3da454f39a8a2cc8ed4e5338b743a7cd033fdef023c4b3b93827248be1"
}

View file

@ -1,74 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT session_started_at, address, port, joined_at, disconnected_at\n\t\tFROM game_session_servers\n\t\tORDER BY joined_at ASC\n\t\t",
"describe": {
"columns": [
{
"name": "session_started_at",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "session_started_at"
}
}
},
{
"name": "address",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "address"
}
}
},
{
"name": "port",
"ordinal": 2,
"type_info": "Integer",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "port"
}
}
},
{
"name": "joined_at",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "joined_at"
}
}
},
{
"name": "disconnected_at",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "disconnected_at"
}
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false,
false,
true,
false,
true
]
},
"hash": "3ab373a6f0167df9b2fa3a6a2f2c6ee2a9a36d8ae0948b71369897c014acae77"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n INSERT INTO cluster_optional_mods\n (cluster_id, bundle_name, package_id, bundle_version_id, seen_status)\n VALUES (?, ?, ?, ?, ?)\n ON CONFLICT(cluster_id, package_id) DO UPDATE SET\n bundle_name = excluded.bundle_name,\n bundle_version_id = excluded.bundle_version_id\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 5
},
"nullable": []
},
"hash": "3b87531a1231c467072ec4d1f9afd3c93114777031250c7f9e74f6b9eef4ab9f"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE clusters\n\t\tSET overall_played = COALESCE(overall_played, 0) + ?,\n\t\t last_played = ?\n\t\tWHERE id = ?\n\t\tRETURNING\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
}
],
"parameters": {
"Right": 3
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true
]
},
"hash": "3fb91d89cb135d2af105a0f40f7150d03ab2fa9b955ba223066edf210e3556a1"
}

View file

@ -1,74 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT session_started_at, address, port, joined_at, disconnected_at\n\t\tFROM game_session_servers\n\t\tWHERE session_started_at = ?\n\t\tORDER BY joined_at ASC\n\t\t",
"describe": {
"columns": [
{
"name": "session_started_at",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "session_started_at"
}
}
},
{
"name": "address",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "address"
}
}
},
{
"name": "port",
"ordinal": 2,
"type_info": "Integer",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "port"
}
}
},
{
"name": "joined_at",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "joined_at"
}
}
},
{
"name": "disconnected_at",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "disconnected_at"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
true,
false,
true
]
},
"hash": "42c26d63ca860840c0e8e75bf1a46218b16c849301fa3db250e24ec81d15d1c7"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n DELETE FROM cluster_bundle_overrides\n WHERE cluster_id = ? AND package_id = ? AND override_type IN ('disabled', 'removed')\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "43521070cb5de5b2fe5e25c88e683b933c2f6788e2d2482ca9fd7d71ee67381a"
}

View file

@ -1,74 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT hash, content_type, path, file_name, size_bytes\n\t\tFROM artifacts\n\t\tWHERE hash = ?\n\t\t",
"describe": {
"columns": [
{
"name": "hash",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "artifacts",
"name": "hash"
}
}
},
{
"name": "content_type",
"ordinal": 1,
"type_info": "Integer",
"origin": {
"Table": {
"table": "artifacts",
"name": "content_type"
}
}
},
{
"name": "path",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "artifacts",
"name": "path"
}
}
},
{
"name": "file_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "artifacts",
"name": "file_name"
}
}
},
{
"name": "size_bytes",
"ordinal": 4,
"type_info": "Integer",
"origin": {
"Table": {
"table": "artifacts",
"name": "size_bytes"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true
]
},
"hash": "439e74ae2697056b206fc346749b190781cf0aac8ae6b4e1a333608d29946919"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE game_sessions\n\t\tSET ended_at = ?, exit_code = ?\n\t\tWHERE started_at = ? AND ended_at IS NULL\n\t\t",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "44e40c724779e5e1cffbbbcf857223cac28f59431933ffefea04e59b62deab3a"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash\n\t\tFROM clusters\n\t\tORDER BY last_played IS NULL, last_played DESC, name ASC\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
}
],
"parameters": {
"Right": 0
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true
]
},
"hash": "4557535ab4f4e972a2b3111cc29af15fd91e22e080742f75a0a393fc45c59b22"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE browser_package_updates\n\t\tSET skipped = ?\n\t\tWHERE cluster_id = ? AND hash = ?\n\t\t",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "472a614b1f1484e839f373fcfecf338462888518de3307bdab3db0b419a82be9"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash\n\t\tFROM clusters\n\t\tWHERE id = ?\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true
]
},
"hash": "4b7fa3441d3d18943086acd54232c492521a693f48d07f9230cda440297ac02d"
}

View file

@ -1,218 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE clusters\n\t\tSET overall_played = COALESCE(overall_played, 0) + ?,\n\t\t last_played = ?\n\t\tWHERE id = ?\n\t\tRETURNING\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash,\n\t\t\tkind, user_created, description, tags, cover_path\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
},
{
"name": "kind",
"ordinal": 12,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "kind"
}
}
},
{
"name": "user_created",
"ordinal": 13,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "user_created"
}
}
},
{
"name": "description",
"ordinal": 14,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "description"
}
}
},
{
"name": "tags",
"ordinal": 15,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "tags"
}
}
},
{
"name": "cover_path",
"ordinal": 16,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "cover_path"
}
}
}
],
"parameters": {
"Right": 3
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true,
false,
false,
true,
false,
true
]
},
"hash": "4c6d40e97401e1321abccd7f413b49dda16a5bdf29eb90459ac140d8208db479"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "DELETE FROM artifacts WHERE hash = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "4ce8e2a5f335030cf0b851a92bd08f37b12f571608bbafc0a2e1a083ec73239f"
}

View file

@ -1,110 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT\n cluster_id, hash, cluster_file_name, enabled,\n bundle_name, bundle_version_id, package_id, installed_at\n FROM cluster_artifacts\n WHERE cluster_id = ? AND hash = ? AND bundle_name IS NOT NULL\n ",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_id"
}
}
},
{
"name": "hash",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "hash"
}
}
},
{
"name": "cluster_file_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "cluster_file_name"
}
}
},
{
"name": "enabled",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "enabled"
}
}
},
{
"name": "bundle_name",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "bundle_name"
}
}
},
{
"name": "bundle_version_id",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "bundle_version_id"
}
}
},
{
"name": "package_id",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "package_id"
}
}
},
{
"name": "installed_at",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_artifacts",
"name": "installed_at"
}
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true
]
},
"hash": "4d14a10baba86d0d63f6b172873f4fffe319a5de18e34f5f190366a113a8831c"
}

View file

@ -1,146 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tINSERT INTO browser_package_updates (\n\t\t\tcluster_id, hash, provider, project_id,\n\t\t\tinstalled_version_id, installed_version_name,\n\t\t\tlatest_version_id, latest_version_name,\n\t\t\tdisplay_name, checked_at, skipped\n\t\t)\n\t\tVALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)\n\t\tON CONFLICT(cluster_id, hash) DO UPDATE SET\n\t\t\tprovider = excluded.provider,\n\t\t\tproject_id = excluded.project_id,\n\t\t\tinstalled_version_id = excluded.installed_version_id,\n\t\t\tinstalled_version_name = excluded.installed_version_name,\n\t\t\tlatest_version_name = excluded.latest_version_name,\n\t\t\tdisplay_name = excluded.display_name,\n\t\t\tchecked_at = excluded.checked_at,\n\t\t\tskipped = CASE\n\t\t\t\tWHEN browser_package_updates.latest_version_id = excluded.latest_version_id\n\t\t\t\tTHEN browser_package_updates.skipped\n\t\t\t\tELSE 0\n\t\t\tEND,\n\t\t\tlatest_version_id = excluded.latest_version_id\n\t\tRETURNING\n\t\t\tcluster_id, hash, provider as \"provider!: i64\", project_id,\n\t\t\tinstalled_version_id, installed_version_name,\n\t\t\tlatest_version_id, latest_version_name,\n\t\t\tdisplay_name, checked_at, skipped\n\t\t",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "cluster_id"
}
}
},
{
"name": "hash",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "hash"
}
}
},
{
"name": "provider!: i64",
"ordinal": 2,
"type_info": "Integer",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "provider"
}
}
},
{
"name": "project_id",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "project_id"
}
}
},
{
"name": "installed_version_id",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "installed_version_id"
}
}
},
{
"name": "installed_version_name",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "installed_version_name"
}
}
},
{
"name": "latest_version_id",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "latest_version_id"
}
}
},
{
"name": "latest_version_name",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "latest_version_name"
}
}
},
{
"name": "display_name",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "display_name"
}
}
},
{
"name": "checked_at",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "checked_at"
}
}
},
{
"name": "skipped",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "browser_package_updates",
"name": "skipped"
}
}
}
],
"parameters": {
"Right": 10
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
]
},
"hash": "5183d452802d8bbec7f2a52ceba7ffe26960fdc25855f6cc993d6ab5deb84c02"
}

View file

@ -1,74 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT s.session_started_at, s.address, s.port, s.joined_at, s.disconnected_at\n\t\tFROM game_session_servers s\n\t\tJOIN game_sessions g ON g.started_at = s.session_started_at\n\t\tWHERE g.cluster_id = ?\n\t\tORDER BY s.joined_at ASC\n\t\t",
"describe": {
"columns": [
{
"name": "session_started_at",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "session_started_at"
}
}
},
{
"name": "address",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "address"
}
}
},
{
"name": "port",
"ordinal": 2,
"type_info": "Integer",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "port"
}
}
},
{
"name": "joined_at",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "joined_at"
}
}
},
{
"name": "disconnected_at",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "disconnected_at"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
true,
false,
true
]
},
"hash": "53373194f104bdefd553ff6669b53d367c52a142b7afdae2f1bf8c07444d9e30"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "DELETE FROM clusters WHERE id = ?",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "54da501aee46ee04b6f3c628737cece742d6ce62a230335e56e987b6b1d0996a"
}

View file

@ -1,218 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tINSERT INTO clusters (\n\t\t\tname, folder_name, mc_version, mc_loader, mc_loader_version,\n\t\t\tsetting_profile_name, stage, created_at,\n\t\t\tkind, user_created, description, tags, cover_path\n\t\t)\n\t\tVALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n\t\tRETURNING\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash,\n\t\t\tkind, user_created, description, tags, cover_path\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
},
{
"name": "kind",
"ordinal": 12,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "kind"
}
}
},
{
"name": "user_created",
"ordinal": 13,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "user_created"
}
}
},
{
"name": "description",
"ordinal": 14,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "description"
}
}
},
{
"name": "tags",
"ordinal": 15,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "tags"
}
}
},
{
"name": "cover_path",
"ordinal": 16,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "cover_path"
}
}
}
],
"parameters": {
"Right": 13
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true,
false,
false,
true,
false,
true
]
},
"hash": "54dea3f4093ceee9dcd5f0ae9bf072ec3615954b60bffa33bff7fd3f9bf14210"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n INSERT INTO cluster_bundle_overrides (cluster_id, bundle_name, package_id, override_type)\n VALUES (?, ?, ?, ?)\n ON CONFLICT(cluster_id, bundle_name, package_id) DO UPDATE SET\n override_type = excluded.override_type\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 4
},
"nullable": []
},
"hash": "56a95ce1cf65b5628481aeb2c6bbd20f083308b702a51c3e490409c37d0e8549"
}

View file

@ -1,170 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tINSERT INTO setting_profiles (\n\t\t\tname, java_path, resolution, force_fullscreen, mem_max, launch_args, game_args, launch_env,\n\t\t\thook_pre, hook_wrapper, hook_post, os_extra, browser_update_mode\n\t\t)\n\t\tVALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n\t\tON CONFLICT(name) DO UPDATE SET\n\t\t\tjava_path = excluded.java_path,\n\t\t\tresolution = excluded.resolution,\n\t\t\tforce_fullscreen = excluded.force_fullscreen,\n\t\t\tmem_max = excluded.mem_max,\n\t\t\tlaunch_args = excluded.launch_args,\n\t\t\tgame_args = excluded.game_args,\n\t\t\tlaunch_env = excluded.launch_env,\n\t\t\thook_pre = excluded.hook_pre,\n\t\t\thook_wrapper = excluded.hook_wrapper,\n\t\t\thook_post = excluded.hook_post,\n\t\t\tos_extra = excluded.os_extra,\n\t\t\tbrowser_update_mode = excluded.browser_update_mode\n\t\tRETURNING name, java_path, resolution, force_fullscreen, mem_max, launch_args, game_args, launch_env,\n hook_pre, hook_wrapper, hook_post, os_extra, browser_update_mode\n\t\t",
"describe": {
"columns": [
{
"name": "name",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "name"
}
}
},
{
"name": "java_path",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "java_path"
}
}
},
{
"name": "resolution",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "resolution"
}
}
},
{
"name": "force_fullscreen",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "force_fullscreen"
}
}
},
{
"name": "mem_max",
"ordinal": 4,
"type_info": "Integer",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "mem_max"
}
}
},
{
"name": "launch_args",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "launch_args"
}
}
},
{
"name": "game_args",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "game_args"
}
}
},
{
"name": "launch_env",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "launch_env"
}
}
},
{
"name": "hook_pre",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_pre"
}
}
},
{
"name": "hook_wrapper",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_wrapper"
}
}
},
{
"name": "hook_post",
"ordinal": 10,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_post"
}
}
},
{
"name": "os_extra",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "os_extra"
}
}
},
{
"name": "browser_update_mode",
"ordinal": 12,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "browser_update_mode"
}
}
}
],
"parameters": {
"Right": 13
},
"nullable": [
false,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
]
},
"hash": "598a34a0eb0f4d497cfd9bd77696310d1088e8baec677e07843a21ce6978652e"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n INSERT OR IGNORE INTO cluster_bundle_type_opt_outs (cluster_id, bundle_name, content_type)\n VALUES (?, ?, ?)\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "59a29c97c422e8721c29b9517ae834ea97776c57bb129a9d67007cdd979ae841"
}

View file

@ -1,98 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT id, cluster_id, bundle_name, package_id, bundle_version_id,\n seen_status, queued_at\n FROM cluster_optional_mods\n WHERE cluster_id = ?\n ORDER BY queued_at, id\n ",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_optional_mods",
"name": "id"
}
}
},
{
"name": "cluster_id",
"ordinal": 1,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_optional_mods",
"name": "cluster_id"
}
}
},
{
"name": "bundle_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_optional_mods",
"name": "bundle_name"
}
}
},
{
"name": "package_id",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_optional_mods",
"name": "package_id"
}
}
},
{
"name": "bundle_version_id",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_optional_mods",
"name": "bundle_version_id"
}
}
},
{
"name": "seen_status",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_optional_mods",
"name": "seen_status"
}
}
},
{
"name": "queued_at",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_optional_mods",
"name": "queued_at"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
false,
false,
false
]
},
"hash": "5b3dd7940a9bd6f0067fac7b5f21e83f8d9eeceda6b1c53c5ce5b735a8fe2a71"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n INSERT INTO bundles (\n remote_path, mc_version, mc_loader, file_name, name, version_id,\n category, loader_version, disk_path, hidden, etag, synced_at\n )\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(remote_path) DO UPDATE SET\n mc_version = excluded.mc_version,\n mc_loader = excluded.mc_loader,\n file_name = excluded.file_name,\n name = COALESCE(excluded.name, bundles.name),\n version_id = COALESCE(excluded.version_id, bundles.version_id),\n category = COALESCE(excluded.category, bundles.category),\n loader_version = COALESCE(excluded.loader_version, bundles.loader_version),\n disk_path = excluded.disk_path,\n hidden = excluded.hidden,\n etag = COALESCE(excluded.etag, bundles.etag),\n synced_at = COALESCE(excluded.synced_at, bundles.synced_at)\n RETURNING\n remote_path, mc_version, mc_loader, file_name, name, version_id,\n category, loader_version, disk_path, hidden, etag, synced_at\n ",
"describe": {
"columns": [
{
"name": "remote_path",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "remote_path"
}
}
},
{
"name": "mc_version",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 2,
"type_info": "Integer",
"origin": {
"Table": {
"table": "bundles",
"name": "mc_loader"
}
}
},
{
"name": "file_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "file_name"
}
}
},
{
"name": "name",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "name"
}
}
},
{
"name": "version_id",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "version_id"
}
}
},
{
"name": "category",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "category"
}
}
},
{
"name": "loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "loader_version"
}
}
},
{
"name": "disk_path",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "disk_path"
}
}
},
{
"name": "hidden",
"ordinal": 9,
"type_info": "Integer",
"origin": {
"Table": {
"table": "bundles",
"name": "hidden"
}
}
},
{
"name": "etag",
"ordinal": 10,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "etag"
}
}
},
{
"name": "synced_at",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "synced_at"
}
}
}
],
"parameters": {
"Right": 12
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
true,
true
]
},
"hash": "5c51104ad11fd39178c9eb43f8c3a9b4f796753ab1fbb28efcbf71562b3fafa1"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash\n\t\tFROM clusters\n\t\tWHERE mc_version = ? AND mc_loader = ?\n\t\tLIMIT 1\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true
]
},
"hash": "5d302dbecf00a8e32014e0cb6ffecab5db70f3f37058b87fc9896028c1e8f644"
}

View file

@ -1,218 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash,\n\t\t\tkind, user_created, description, tags, cover_path\n\t\tFROM clusters\n\t\tWHERE folder_name = ?\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
},
{
"name": "kind",
"ordinal": 12,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "kind"
}
}
},
{
"name": "user_created",
"ordinal": 13,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "user_created"
}
}
},
{
"name": "description",
"ordinal": 14,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "description"
}
}
},
{
"name": "tags",
"ordinal": 15,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "tags"
}
}
},
{
"name": "cover_path",
"ordinal": 16,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "cover_path"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true,
false,
false,
true,
false,
true
]
},
"hash": "5e18763a28af3660503e223c35875454b1e3fc4bb10c19d1c286d3e45afdd159"
}

View file

@ -1,38 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT bundle_name, content_type\n FROM cluster_bundle_type_opt_outs\n WHERE cluster_id = ?\n ",
"describe": {
"columns": [
{
"name": "bundle_name",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "cluster_bundle_type_opt_outs",
"name": "bundle_name"
}
}
},
{
"name": "content_type",
"ordinal": 1,
"type_info": "Integer",
"origin": {
"Table": {
"table": "cluster_bundle_type_opt_outs",
"name": "content_type"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "5f45ecf4e5ac27ad3a7ef4e5f9c2e6466ef51af11c332a2e6089c90759b9871f"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT\n remote_path, mc_version, mc_loader, file_name, name, version_id,\n category, loader_version, disk_path, hidden, etag, synced_at\n FROM bundles\n WHERE mc_version = ? AND mc_loader = ? AND hidden = 0\n ORDER BY name, file_name\n ",
"describe": {
"columns": [
{
"name": "remote_path",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "remote_path"
}
}
},
{
"name": "mc_version",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 2,
"type_info": "Integer",
"origin": {
"Table": {
"table": "bundles",
"name": "mc_loader"
}
}
},
{
"name": "file_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "file_name"
}
}
},
{
"name": "name",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "name"
}
}
},
{
"name": "version_id",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "version_id"
}
}
},
{
"name": "category",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "category"
}
}
},
{
"name": "loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "loader_version"
}
}
},
{
"name": "disk_path",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "disk_path"
}
}
},
{
"name": "hidden",
"ordinal": 9,
"type_info": "Integer",
"origin": {
"Table": {
"table": "bundles",
"name": "hidden"
}
}
},
{
"name": "etag",
"ordinal": 10,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "etag"
}
}
},
{
"name": "synced_at",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "synced_at"
}
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
true,
true
]
},
"hash": "628245048eb9791987e8d1ac5a97c8364fda672d92ba43b641edf8c028e25186"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE game_session_servers\n\t\tSET disconnected_at = ?\n\t\tWHERE joined_at = ? AND disconnected_at IS NULL\n\t\t",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "6c4518b6e29605c7699e12aa80e8202b0de13f77c7dc9ef0c4a967fab8135e02"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE clusters\n\t\tSET stage = ?\n\t\tWHERE id = ?\n\t\tRETURNING\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
}
],
"parameters": {
"Right": 2
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true
]
},
"hash": "70b38391613b4f5d538c18e08014661d57dc172286b91235ab034a827fcc061e"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE game_sessions\n\t\tSET pid = ?, pid_started_at = ?\n\t\tWHERE started_at = ?\n\t\t",
"describe": {
"columns": [],
"parameters": {
"Right": 3
},
"nullable": []
},
"hash": "71fbe674b85a1fd6dc07a062e96a35888bb3b6a5a4fda5df3c662ca16b1d801e"
}

View file

@ -1,110 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tcluster_id, started_at, ended_at, exit_code,\n\t\t\tram_allocated_mb, mods_enabled, java_vendor, java_version\n\t\tFROM game_sessions\n\t\tWHERE cluster_id = ?\n\t\tORDER BY started_at DESC\n\t\t",
"describe": {
"columns": [
{
"name": "cluster_id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "game_sessions",
"name": "cluster_id"
}
}
},
{
"name": "started_at",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_sessions",
"name": "started_at"
}
}
},
{
"name": "ended_at",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_sessions",
"name": "ended_at"
}
}
},
{
"name": "exit_code",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "game_sessions",
"name": "exit_code"
}
}
},
{
"name": "ram_allocated_mb",
"ordinal": 4,
"type_info": "Integer",
"origin": {
"Table": {
"table": "game_sessions",
"name": "ram_allocated_mb"
}
}
},
{
"name": "mods_enabled",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "game_sessions",
"name": "mods_enabled"
}
}
},
{
"name": "java_vendor",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_sessions",
"name": "java_vendor"
}
}
},
{
"name": "java_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_sessions",
"name": "java_version"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
true,
true,
false,
false,
true,
true
]
},
"hash": "7d5011427a55581c66ea9d8ade35b33ced5913589907d80f4b20159150e1d1f1"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n UPDATE cluster_artifacts\n SET bundle_name = NULL, bundle_version_id = NULL, package_id = NULL, installed_at = NULL\n WHERE cluster_id = ? AND hash = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "80e69ca0c87bb70e0fcf7bf6c0aefc092f51300c10ad8776815637fc4616d12b"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "INSERT OR IGNORE INTO applied_migrations (id, applied_at) VALUES (?, ?)",
"describe": {
"columns": [],
"parameters": {
"Right": 2
},
"nullable": []
},
"hash": "836429d5d4054d1605d7de4cbcf3703ba78d72f39b3090734bb3e69c2b72d50c"
}

View file

@ -1,170 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT name, java_path, resolution, force_fullscreen, mem_max, launch_args, game_args, launch_env,\n\t\t hook_pre, hook_wrapper, hook_post, os_extra, browser_update_mode\n\t\tFROM setting_profiles\n\t\tWHERE name = ?\n\t\t",
"describe": {
"columns": [
{
"name": "name",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "name"
}
}
},
{
"name": "java_path",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "java_path"
}
}
},
{
"name": "resolution",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "resolution"
}
}
},
{
"name": "force_fullscreen",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "force_fullscreen"
}
}
},
{
"name": "mem_max",
"ordinal": 4,
"type_info": "Integer",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "mem_max"
}
}
},
{
"name": "launch_args",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "launch_args"
}
}
},
{
"name": "game_args",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "game_args"
}
}
},
{
"name": "launch_env",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "launch_env"
}
}
},
{
"name": "hook_pre",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_pre"
}
}
},
{
"name": "hook_wrapper",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_wrapper"
}
}
},
{
"name": "hook_post",
"ordinal": 10,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_post"
}
}
},
{
"name": "os_extra",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "os_extra"
}
}
},
{
"name": "browser_update_mode",
"ordinal": 12,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "browser_update_mode"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
]
},
"hash": "86e3ba70da419464c0be3b3971f613c5a112558472cf2dcdeffa5907e3785318"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tINSERT INTO package_metadata (provider, project_id, name, summary, author, icon_url, updated_at)\n\t\tVALUES (?, ?, ?, ?, ?, ?, datetime('now'))\n\t\tON CONFLICT(provider, project_id) DO UPDATE SET\n\t\t\tname = excluded.name,\n\t\t\tsummary = excluded.summary,\n\t\t\tauthor = excluded.author,\n\t\t\ticon_url = excluded.icon_url,\n\t\t\tupdated_at = excluded.updated_at\n\t\t",
"describe": {
"columns": [],
"parameters": {
"Right": 6
},
"nullable": []
},
"hash": "8efa8fcf00c6aca1714253c35f3850f3bf1f02bebabd8239716c2b3f2853dfcd"
}

View file

@ -1,122 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tprovider as \"provider!: i64\", project_id, version_id, hash,\n\t\t\tdisplay_name, display_version, published_at, mc_versions, mc_loaders\n\t\tFROM provider_releases\n\t\tWHERE provider = ? AND project_id = ? AND version_id = ?\n\t\t",
"describe": {
"columns": [
{
"name": "provider!: i64",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "provider_releases",
"name": "provider"
}
}
},
{
"name": "project_id",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "provider_releases",
"name": "project_id"
}
}
},
{
"name": "version_id",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "provider_releases",
"name": "version_id"
}
}
},
{
"name": "hash",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "provider_releases",
"name": "hash"
}
}
},
{
"name": "display_name",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "provider_releases",
"name": "display_name"
}
}
},
{
"name": "display_version",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "provider_releases",
"name": "display_version"
}
}
},
{
"name": "published_at",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "provider_releases",
"name": "published_at"
}
}
},
{
"name": "mc_versions",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "provider_releases",
"name": "mc_versions"
}
}
},
{
"name": "mc_loaders",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "provider_releases",
"name": "mc_loaders"
}
}
}
],
"parameters": {
"Right": 3
},
"nullable": [
false,
false,
false,
false,
false,
false,
true,
false,
false
]
},
"hash": "968efdce37d30ac18897c64536707be05abf1a8a20b730075288e20d6166044f"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash\n\t\tFROM clusters\n\t\tWHERE folder_name = ?\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true
]
},
"hash": "97d17b2c905bdd08abf41039e31972d10b5ac1d6b0d4df02f42edbf250d81782"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT name, java_path, resolution, force_fullscreen, mem_max, launch_args, launch_env,\n\t\t hook_pre, hook_wrapper, hook_post, os_extra, browser_update_mode\n\t\tFROM setting_profiles\n\t\tWHERE name = ?\n\t\t",
"describe": {
"columns": [
{
"name": "name",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "name"
}
}
},
{
"name": "java_path",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "java_path"
}
}
},
{
"name": "resolution",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "resolution"
}
}
},
{
"name": "force_fullscreen",
"ordinal": 3,
"type_info": "Integer",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "force_fullscreen"
}
}
},
{
"name": "mem_max",
"ordinal": 4,
"type_info": "Integer",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "mem_max"
}
}
},
{
"name": "launch_args",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "launch_args"
}
}
},
{
"name": "launch_env",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "launch_env"
}
}
},
{
"name": "hook_pre",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_pre"
}
}
},
{
"name": "hook_wrapper",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_wrapper"
}
}
},
{
"name": "hook_post",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "hook_post"
}
}
},
{
"name": "os_extra",
"ordinal": 10,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "os_extra"
}
}
},
{
"name": "browser_update_mode",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "setting_profiles",
"name": "browser_update_mode"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true
]
},
"hash": "98500a40f7e1ca7df79dd0ca90eaaa4f0b079ccbd757e5db1a8229ea58d2e700"
}

View file

@ -1,33 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT s.address AS \"address!\", COUNT(*) AS \"joins!: i64\"\n\t\tFROM game_session_servers s\n\t\tJOIN game_sessions g ON g.started_at = s.session_started_at\n\t\tWHERE g.cluster_id = ?\n\t\tGROUP BY s.address\n\t\tORDER BY COUNT(*) DESC\n\t\t",
"describe": {
"columns": [
{
"name": "address!",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_session_servers",
"name": "address"
}
}
},
{
"name": "joins!: i64",
"ordinal": 1,
"type_info": "Integer",
"origin": "Expression"
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false
]
},
"hash": "9882797c904aa209f9cd6504ddb938a45c3a1dde7fe82f61aa78012f372a3263"
}

View file

@ -1,218 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash,\n\t\t\tkind, user_created, description, tags, cover_path\n\t\tFROM clusters\n\t\tWHERE id = ?\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
},
{
"name": "kind",
"ordinal": 12,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "kind"
}
}
},
{
"name": "user_created",
"ordinal": 13,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "user_created"
}
}
},
{
"name": "description",
"ordinal": 14,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "description"
}
}
},
{
"name": "tags",
"ordinal": 15,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "tags"
}
}
},
{
"name": "cover_path",
"ordinal": 16,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "cover_path"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
true,
false,
false,
true,
false,
true
]
},
"hash": "9b769a1467201ee998290c51b2cf51144a34c01975b898ee749b4e2111856119"
}

View file

@ -1,218 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tUPDATE clusters\n\t\tSET name = ?,\n\t\t setting_profile_name = ?,\n\t\t mc_loader_version = ?,\n\t\t linked_modpack_hash = ?,\n\t\t description = ?,\n\t\t tags = ?,\n\t\t cover_path = ?\n\t\tWHERE id = ?\n\t\tRETURNING\n\t\t\tid, name, folder_name, setting_profile_name, mc_version, mc_loader,\n\t\t\tstage, mc_loader_version, created_at, last_played, overall_played, linked_modpack_hash,\n\t\t\tkind, user_created, description, tags, cover_path\n\t\t",
"describe": {
"columns": [
{
"name": "id",
"ordinal": 0,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "id"
}
}
},
{
"name": "name",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "name"
}
}
},
{
"name": "folder_name",
"ordinal": 2,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "folder_name"
}
}
},
{
"name": "setting_profile_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "setting_profile_name"
}
}
},
{
"name": "mc_version",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 5,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader"
}
}
},
{
"name": "stage",
"ordinal": 6,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "stage"
}
}
},
{
"name": "mc_loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "mc_loader_version"
}
}
},
{
"name": "created_at",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "created_at"
}
}
},
{
"name": "last_played",
"ordinal": 9,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "last_played"
}
}
},
{
"name": "overall_played",
"ordinal": 10,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "overall_played"
}
}
},
{
"name": "linked_modpack_hash",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "linked_modpack_hash"
}
}
},
{
"name": "kind",
"ordinal": 12,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "kind"
}
}
},
{
"name": "user_created",
"ordinal": 13,
"type_info": "Integer",
"origin": {
"Table": {
"table": "clusters",
"name": "user_created"
}
}
},
{
"name": "description",
"ordinal": 14,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "description"
}
}
},
{
"name": "tags",
"ordinal": 15,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "tags"
}
}
},
{
"name": "cover_path",
"ordinal": 16,
"type_info": "Text",
"origin": {
"Table": {
"table": "clusters",
"name": "cover_path"
}
}
}
],
"parameters": {
"Right": 8
},
"nullable": [
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true,
false,
false,
true,
false,
true
]
},
"hash": "9e4cbbc2c299861132749196c4e248e4309c2449e181b3b9ae16e7f7b4d9e627"
}

View file

@ -1,38 +0,0 @@
{
"db_name": "SQLite",
"query": "\n\t\tSELECT started_at, ended_at\n\t\tFROM game_sessions\n\t\tWHERE cluster_id = ? AND ended_at IS NOT NULL\n\t\tORDER BY started_at ASC\n\t\t",
"describe": {
"columns": [
{
"name": "started_at",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_sessions",
"name": "started_at"
}
}
},
{
"name": "ended_at",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "game_sessions",
"name": "ended_at"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
true
]
},
"hash": "a5b7826e41c36b5c781d9e6c012a32dce67133c35f44119a81996f3fc9145a4e"
}

View file

@ -1,158 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT\n remote_path, mc_version, mc_loader, file_name, name, version_id,\n category, loader_version, disk_path, hidden, etag, synced_at\n FROM bundles\n WHERE remote_path = ?\n ",
"describe": {
"columns": [
{
"name": "remote_path",
"ordinal": 0,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "remote_path"
}
}
},
{
"name": "mc_version",
"ordinal": 1,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "mc_version"
}
}
},
{
"name": "mc_loader",
"ordinal": 2,
"type_info": "Integer",
"origin": {
"Table": {
"table": "bundles",
"name": "mc_loader"
}
}
},
{
"name": "file_name",
"ordinal": 3,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "file_name"
}
}
},
{
"name": "name",
"ordinal": 4,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "name"
}
}
},
{
"name": "version_id",
"ordinal": 5,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "version_id"
}
}
},
{
"name": "category",
"ordinal": 6,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "category"
}
}
},
{
"name": "loader_version",
"ordinal": 7,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "loader_version"
}
}
},
{
"name": "disk_path",
"ordinal": 8,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "disk_path"
}
}
},
{
"name": "hidden",
"ordinal": 9,
"type_info": "Integer",
"origin": {
"Table": {
"table": "bundles",
"name": "hidden"
}
}
},
{
"name": "etag",
"ordinal": 10,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "etag"
}
}
},
{
"name": "synced_at",
"ordinal": 11,
"type_info": "Text",
"origin": {
"Table": {
"table": "bundles",
"name": "synced_at"
}
}
}
],
"parameters": {
"Right": 1
},
"nullable": [
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
true,
true
]
},
"hash": "a68c066d19000056ed56251834ecf6d83ed846b9b65132a46ccb14de5abe9391"
}

View file

@ -1,21 +0,0 @@
{
"db_name": "SQLite",
"query": "\n SELECT 1 FROM cluster_artifacts\n WHERE cluster_id = ? AND bundle_name IS NOT NULL AND package_id = ?\n LIMIT 1\n ",
"describe": {
"columns": [
{
"name": "1",
"ordinal": 0,
"type_info": "Integer",
"origin": "Expression"
}
],
"parameters": {
"Right": 2
},
"nullable": [
false
]
},
"hash": "ab6dcea84a9502d5f8396a207ae613a4c41eb729ca22249f15eb45e6c6030094"
}

View file

@ -1,12 +0,0 @@
{
"db_name": "SQLite",
"query": "\n DELETE FROM java_versions WHERE absolute_path = ?\n ",
"describe": {
"columns": [],
"parameters": {
"Right": 1
},
"nullable": []
},
"hash": "ade5a33ae1812b878e1ad43f6e2758d1103037947f14aeff5794511f1c002d55"
}

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