diff --git a/.github/ISSUE_TEMPLATE/1-app-bug.yml b/.github/ISSUE_TEMPLATE/1-app-bug.yml new file mode 100644 index 000000000..fad0c15ca --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-app-bug.yml @@ -0,0 +1,60 @@ +name: 🎮 Bug with Modrinth App +description: For issues with Modrinth App. +labels: [app] +type: 'bug' +body: + - type: checkboxes + attributes: + label: Please confirm the following. + options: + - label: I checked the [existing issues](https://github.com/modrinth/code/issues?q=is%3Aissue) for duplicate problems + required: true + - label: I have tried resolving the issue using the [support portal](https://support.modrinth.com) + required: true + - label: I have ensured my Modrinth App installation is up to date + required: true + - type: input + id: version + attributes: + label: What version of the Modrinth App are you using? + description: Find this in ⚙️ Settings (bottom right) -> After Modrinth App (bottom left) + validations: + required: true + - type: dropdown + id: oses + attributes: + label: What operating systems are you seeing the problem on? + multiple: true + options: + - Windows + - MacOS + - Linux + - type: textarea + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. Include screenshots if applicable. + validations: + required: true + - type: textarea + attributes: + label: Steps to reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. Go to '...' + 2. Click on '...' + 3. Scroll down to '...' + 4. See error + validations: + required: false + - type: textarea + attributes: + label: Expected behavior + description: A clear and concise description of what you expected to happen. + validations: + required: false + - type: textarea + attributes: + label: Additional context + description: Add any other context about the problem here. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/2-web-bug.yml b/.github/ISSUE_TEMPLATE/2-web-bug.yml new file mode 100644 index 000000000..983279c14 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-web-bug.yml @@ -0,0 +1,53 @@ +name: 🌐 Bug with Modrinth.com +description: For issues with the Modrinth website. +labels: [website] +type: 'bug' +body: + - type: checkboxes + attributes: + label: Please confirm the following. + options: + - label: I checked the [existing issues](https://github.com/modrinth/code/issues?q=is%3Aissue) for duplicate problems + required: true + - label: I have tried resolving the issue using the [support portal](https://support.modrinth.com) + required: true + - type: dropdown + id: browsers + attributes: + label: What browsers are you seeing the problem on? + multiple: true + options: + - Chrome (including Arc, Brave, Opera, Vivaldi) + - Microsoft Edge + - Firefox + - Safari + - Other (please specify) + - type: textarea + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. Include screenshots if applicable. + validations: + required: false + - type: textarea + attributes: + label: Steps to reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. Go to '...' + 2. Click on '...' + 3. Scroll down to '...' + 4. See error + validations: + required: false + - type: textarea + attributes: + label: Expected behavior + description: A clear and concise description of what you expected to happen. + validations: + required: false + - type: textarea + attributes: + label: Additional context + description: Add any other context about the problem here. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/4-api-bug.yml b/.github/ISSUE_TEMPLATE/4-api-bug.yml new file mode 100644 index 000000000..00fac9bac --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4-api-bug.yml @@ -0,0 +1,42 @@ +name: 🛠 Bug with Modrinth API +description: For issues with the Modrinth API for developers. +labels: [api, backend] +type: 'bug' +body: + - type: checkboxes + attributes: + label: Please confirm the following. + options: + - label: I checked the [existing issues](https://github.com/modrinth/code/issues?q=is%3Aissue) for duplicate problems + required: true + - label: I have tried resolving the issue using the [support portal](https://support.modrinth.com) + required: true + - type: textarea + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. Include screenshots if applicable. + validations: + required: false + - type: textarea + attributes: + label: Steps to reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. Go to '...' + 2. Click on '...' + 3. Scroll down to '...' + 4. See error + validations: + required: false + - type: textarea + attributes: + label: Expected behavior + description: A clear and concise description of what you expected to happen. + validations: + required: false + - type: textarea + attributes: + label: Additional context + description: Add any other context about the problem here. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/5-feature-request.yml b/.github/ISSUE_TEMPLATE/5-feature-request.yml new file mode 100644 index 000000000..0b358e9b4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/5-feature-request.yml @@ -0,0 +1,47 @@ +name: 💡 Feature request +description: Suggest an idea +type: 'feature' + +body: + - type: checkboxes + attributes: + label: Please confirm the following. + options: + - label: I checked the [existing issues](https://github.com/modrinth/code/issues?q=is%3Aissue) for duplicate feature requests + required: true + - label: I have checked that this feature request is not on our [roadmap](https://roadmap.modrinth.com) + required: true + - type: dropdown + id: projects + attributes: + label: What parts of Modrinth is your feature request related too? + multiple: true + options: + - Modrinth App + - Modrinth.com website + - Modrinth Servers + - Modrinth API for developers + - type: textarea + attributes: + label: Is your suggested feature related to a problem? Please describe. + description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + validations: + required: false + - type: textarea + attributes: + label: Describe the solution you'd like + description: A clear and concise description of what you want to happen. + validations: + required: false + - type: textarea + attributes: + label: Describe alternatives you've considered + description: A clear and concise description of any alternative solutions or features you've considered. + validations: + required: false + - type: textarea + attributes: + label: Additional context + description: Add any other context or screenshots about the suggested enhancement here. + validations: + required: false diff --git a/.github/workflows/astralrinth-build.yml b/.github/workflows/astralrinth-build.yml deleted file mode 100644 index 63bb12c65..000000000 --- a/.github/workflows/astralrinth-build.yml +++ /dev/null @@ -1,158 +0,0 @@ -name: AstralRinth App build - -on: - push: - branches: - - main - - master - - prod - - release - - beta - - feature* - tags: - - release-* - - beta-* - paths: - - .github/workflows/astralrinth-build.yml - - 'apps/app/**' - - 'apps/app-frontend/**' - - 'packages/app-lib/**' - - 'packages/app-macros/**' - - 'packages/assets/**' - - 'packages/ui/**' - - 'packages/utils/**' - workflow_dispatch: - -jobs: - build: - name: Build - strategy: - fail-fast: false - matrix: - # platform: [macos-latest, windows-latest, ubuntu-latest] - platform: [windows-latest, ubuntu-latest] - include: - # - platform: macos-latest - # artifact-target-name: universal-apple-darwin - - platform: windows-latest - artifact-target-name: x86_64-pc-windows-msvc - - platform: ubuntu-latest - artifact-target-name: x86_64-unknown-linux-gnu - - runs-on: ${{ matrix.platform }} - - steps: - - name: 📥 Check out code - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - - name: 🔍 Validate Git config does not introduce CRLF - shell: bash - run: | - echo "🔍 Checking Git config for CRLF settings..." - - autocrlf=$(git config --get core.autocrlf || echo "unset") - eol_setting=$(git config --get core.eol || echo "unset") - - echo "core.autocrlf = $autocrlf" - echo "core.eol = $eol_setting" - - if [ "$autocrlf" = "true" ]; then - echo "⚠️ WARNING: core.autocrlf is set to 'true'. Consider setting it to 'input' or 'false'." - fi - - if [ "$eol_setting" = "crlf" ]; then - echo "⚠️ WARNING: core.eol is set to 'crlf'. Consider unsetting it or setting to 'lf'." - fi - - - name: 🔍 Check migration files line endings (LF only) - shell: bash - run: | - echo "🔍 Scanning migration SQL files for CR characters (\\r)..." - if grep -Iq $'\r' packages/app-lib/migrations/*.sql; then - echo "❌ ERROR: Some migration files contain CR (\\r) characters — expected only LF line endings." - exit 1 - fi - echo "✅ All migration files use LF line endings" - - - name: 🧰 Setup Rust toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - target: ${{ matrix.artifact-target-name }} - - - name: 🧰 Install pnpm - uses: pnpm/action-setup@v4 - - - name: 🧰 Setup Node.js - uses: actions/setup-node@v4 - with: - node-version-file: .nvmrc - cache: pnpm - - - name: 🧰 Install Linux build dependencies - if: matrix.platform == 'ubuntu-latest' - run: | - sudo apt-get update - sudo apt-get install -yq \ - libgtk-3-dev \ - libwebkit2gtk-4.1-dev \ - libayatana-appindicator3-dev \ - librsvg2-dev \ - xdg-utils \ - openjdk-17-jdk - - - name: ⚙️ Set application environment - shell: bash - run: | - cp packages/app-lib/.env.prod packages/app-lib/.env - - - name: 💨 Setup Turbo cache - uses: rharkor/caching-for-turbo@v1.8 - - - name: 🧰 Install dependencies - run: pnpm install - - - name: ✍️ Set up Windows code signing (jsign) - if: matrix.platform == 'windows-latest' && env.SIGN_WINDOWS_BINARIES == 'true' - shell: bash - run: | - choco install jsign --ignore-dependencies - - - name: 🗑️ Clean up cached bundles - shell: bash - run: | - rm -rf target/release/bundle - rm -rf target/*/release/bundle || true - - # - name: 🔨 Build macOS app - # if: matrix.platform == 'macos-latest' - # run: pnpm --filter=@modrinth/app run tauri build --target universal-apple-darwin --config tauri-release.conf.json - # env: - # TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} - # TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} - - - name: 🔨 Build Linux app - if: matrix.platform == 'ubuntu-latest' - run: pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json - env: - TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} - TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} - - - name: 🔨 Build Windows app - if: matrix.platform == 'windows-latest' - shell: pwsh - run: | - $env:JAVA_HOME = "$env:JAVA_HOME_17_X64" - pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json --verbose --bundles 'nsis' - env: - TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} - TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} - - - name: 📤 Upload app bundles - uses: actions/upload-artifact@v3 - with: - name: App bundle (${{ matrix.artifact-target-name }}) - path: | - target/release/bundle/** - target/*/release/bundle/** diff --git a/.github/workflows/daedalus-docker.yml b/.github/workflows/daedalus-docker.yml new file mode 100644 index 000000000..ad6661134 --- /dev/null +++ b/.github/workflows/daedalus-docker.yml @@ -0,0 +1,62 @@ +name: daedalus-docker-build + +on: + push: + branches: + - '**' + paths: + - .github/workflows/daedalus-docker.yml + - 'apps/daedalus_client/**' + - 'packages/daedalus/**' + pull_request: + types: [opened, synchronize] + paths: + - .github/workflows/daedalus-docker.yml + - 'apps/daedalus_client/**' + - 'packages/daedalus/**' + merge_group: + types: [checks_requested] + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: 📥 Check out code + uses: actions/checkout@v4 + + - name: 🧰 Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: ⚙️ Generate Docker image metadata + id: docker_meta + uses: docker/metadata-action@v5 + env: + DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index + with: + images: ghcr.io/modrinth/daedalus + labels: | + org.opencontainers.image.title=daedalus + org.opencontainers.image.description=Modrinth game metadata query client + org.opencontainers.image.licenses=MIT + annotations: | + org.opencontainers.image.title=daedalus + org.opencontainers.image.description=Modrinth game metadata query client + org.opencontainers.image.licenses=MIT + + - name: 🔑 Login to GitHub Packages + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: 🔨 Build and push + uses: docker/build-push-action@v6 + with: + file: ./apps/daedalus_client/Dockerfile + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.docker_meta.outputs.tags }} + labels: ${{ steps.docker_meta.outputs.labels }} + annotations: ${{ steps.docker_meta.outputs.annotations }} + cache-from: type=registry,ref=ghcr.io/modrinth/daedalus:main + cache-to: type=inline diff --git a/.github/workflows/daedalus-run.yml b/.github/workflows/daedalus-run.yml new file mode 100644 index 000000000..56fbd9f82 --- /dev/null +++ b/.github/workflows/daedalus-run.yml @@ -0,0 +1,51 @@ +name: Run Meta + +on: + schedule: + - cron: '*/5 * * * *' + workflow_dispatch: + +jobs: + run-docker: + if: github.repository_owner == 'modrinth' + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Pull Docker image from GHCR + run: docker pull ghcr.io/modrinth/daedalus:main + + - name: Run Docker container + env: + BASE_URL: ${{ secrets.BASE_URL }} + S3_ACCESS_TOKEN: ${{ secrets.S3_ACCESS_TOKEN }} + S3_SECRET: ${{ secrets.S3_SECRET }} + S3_URL: ${{ secrets.S3_URL }} + S3_REGION: ${{ secrets.S3_REGION }} + S3_BUCKET_NAME: ${{ secrets.S3_BUCKET_NAME }} + CLOUDFLARE_INTEGRATION: ${{ secrets.CLOUDFLARE_INTEGRATION }} + CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }} + CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }} + run: | + docker run \ + --name daedalus \ + -e RUST_LOG=warn,daedalus_client=trace \ + -e BASE_URL=$BASE_URL \ + -e S3_ACCESS_TOKEN=$S3_ACCESS_TOKEN \ + -e S3_SECRET=$S3_SECRET \ + -e S3_URL=$S3_URL \ + -e S3_REGION=$S3_REGION \ + -e S3_BUCKET_NAME=$S3_BUCKET_NAME \ + -e CLOUDFLARE_INTEGRATION=$CLOUDFLARE_INTEGRATION \ + -e CLOUDFLARE_TOKEN=$CLOUDFLARE_TOKEN \ + -e CLOUDFLARE_ZONE_ID=$CLOUDFLARE_ZONE_ID \ + ghcr.io/modrinth/daedalus:main diff --git a/.github/workflows/frontend-pages.yml b/.github/workflows/frontend-pages.yml new file mode 100644 index 000000000..cd575fdfe --- /dev/null +++ b/.github/workflows/frontend-pages.yml @@ -0,0 +1,30 @@ +name: Clear pages cache + +on: + push: + branches: + - prod + +jobs: + wait: + if: github.repository_owner == 'modrinth' + runs-on: ubuntu-latest + permissions: + contents: read + deployments: write + steps: + - name: Cloudflare Pages deployment + uses: WalshyDev/cf-pages-await@v1 + with: + apiToken: ${{ secrets.CF_API_TOKEN }} + accountId: '9ddae624c98677d68d93df6e524a6061' + project: 'frontend' + commitHash: ${{ steps.push-changes.outputs.commit-hash }} + - name: Purge cache + if: github.ref == 'refs/heads/prod' + run: | + curl -X POST \ + -H "Authorization: Bearer ${{ secrets.CF_API_TOKEN }}" \ + -H "Content-Type: application/json" \ + --data '{"hosts": ["modrinth.com", "www.modrinth.com"]}' \ + https://api.cloudflare.com/client/v4/zones/e39df17b9c4ef44cbce2646346ee6d33/purge_cache diff --git a/.github/workflows/labrinth-docker.yml b/.github/workflows/labrinth-docker.yml new file mode 100644 index 000000000..99a57f7a8 --- /dev/null +++ b/.github/workflows/labrinth-docker.yml @@ -0,0 +1,70 @@ +name: docker-build + +on: + push: + branches: + - '**' + paths: + - .github/workflows/labrinth-docker.yml + - 'apps/labrinth/**' + - Cargo.toml + - Cargo.lock + pull_request: + types: [opened, synchronize] + paths: + - .github/workflows/labrinth-docker.yml + - 'apps/labrinth/**' + - Cargo.toml + - Cargo.lock + merge_group: + types: [checks_requested] + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: 📥 Check out code + uses: actions/checkout@v4 + + - name: 🧰 Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: ⚙️ Generate Docker image metadata + id: docker_meta + uses: docker/metadata-action@v5 + env: + # GitHub Packages requires annotations metadata in at least the index descriptor to show them + # up properly in its UI it seems, but it's not clear about it, because the docs refer to the + # image manifest only. See: + # https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry#adding-a-description-to-multi-arch-images + DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index + with: + images: ghcr.io/modrinth/labrinth + labels: | + org.opencontainers.image.title=labrinth + org.opencontainers.image.description=Modrinth API + org.opencontainers.image.licenses=AGPL-3.0-only + annotations: | + org.opencontainers.image.title=labrinth + org.opencontainers.image.description=Modrinth API + org.opencontainers.image.licenses=AGPL-3.0-only + + - name: 🔑 Login to GitHub Packages + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: 🔨 Build and push + uses: docker/build-push-action@v6 + with: + file: ./apps/labrinth/Dockerfile + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.docker_meta.outputs.tags }} + labels: ${{ steps.docker_meta.outputs.labels }} + annotations: ${{ steps.docker_meta.outputs.annotations }} + build-args: | + GIT_HASH=${{ fromJSON(steps.docker_meta.outputs.json).labels['org.opencontainers.image.revision'] }} + cache-from: type=registry,ref=ghcr.io/modrinth/labrinth:main + cache-to: type=inline diff --git a/.github/workflows/theseus-build.yml b/.github/workflows/theseus-build.yml new file mode 100644 index 000000000..287f5b6de --- /dev/null +++ b/.github/workflows/theseus-build.yml @@ -0,0 +1,152 @@ +name: Modrinth App build +on: + push: + branches: + - main + tags: + - 'v*' + paths: + - .github/workflows/theseus-build.yml + - 'apps/app/**' + - 'apps/app-frontend/**' + - 'packages/app-lib/**' + - 'packages/app-macros/**' + - 'packages/assets/**' + - 'packages/ui/**' + - 'packages/utils/**' + workflow_dispatch: + inputs: + sign-windows-binaries: + description: Sign Windows binaries + type: boolean + default: true + required: false + +jobs: + build: + name: Build + strategy: + fail-fast: false + matrix: + platform: [macos-latest, windows-latest, ubuntu-latest] + include: + - platform: macos-latest + artifact-target-name: universal-apple-darwin + - platform: windows-latest + artifact-target-name: x86_64-pc-windows-msvc + - platform: ubuntu-latest + artifact-target-name: x86_64-unknown-linux-gnu + + runs-on: ${{ matrix.platform }} + + steps: + - name: 📥 Check out code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: 🧰 Setup Rust toolchain + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + rustflags: '' + target: ${{ startsWith(matrix.platform, 'macos') && 'x86_64-apple-darwin' || '' }} + + - name: 🧰 Install pnpm + uses: pnpm/action-setup@v4 + + - name: 🧰 Setup Node.js + uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: pnpm + + - name: 🧰 Install Linux build dependencies + if: startsWith(matrix.platform, 'ubuntu') + run: | + sudo apt-get update + sudo apt-get install -yq libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev + + - name: 🧰 Setup Dasel + uses: jaxxstorm/action-install-gh-release@v2.1.0 + with: + repo: TomWright/dasel + tag: v2.8.1 + extension-matching: disable + rename-to: ${{ startsWith(matrix.platform, 'windows') && 'dasel.exe' || 'dasel' }} + chmod: 0755 + + - name: ⚙️ Set application version and environment + shell: bash + run: | + APP_VERSION="$(git describe --tags --always | sed -E 's/-([0-9]+)-(g[0-9a-fA-F]+)$/-canary+\1.\2/')" + echo "Setting application version to $APP_VERSION" + dasel put -f apps/app/Cargo.toml -t string -v "${APP_VERSION#v}" 'package.version' + dasel put -f packages/app-lib/Cargo.toml -t string -v "${APP_VERSION#v}" 'package.version' + dasel put -f apps/app-frontend/package.json -t string -v "${APP_VERSION#v}" 'version' + + cp packages/app-lib/.env.prod packages/app-lib/.env + + - name: 💨 Setup Turbo cache + uses: rharkor/caching-for-turbo@v1.8 + + - name: 🧰 Install dependencies + run: pnpm install + + - name: ✍️ Set up Windows code signing + if: startsWith(matrix.platform, 'windows') + shell: bash + run: | + if [ '${{ startsWith(github.ref, 'refs/tags/v') || inputs.sign-windows-binaries }}' = 'true' ]; then + choco install jsign --ignore-dependencies # GitHub runners come with a global Java installation already + else + dasel delete -f apps/app/tauri-release.conf.json 'bundle.windows.signCommand' + fi + + - name: 🔨 Build macOS app + run: pnpm --filter=@modrinth/app run tauri build --target universal-apple-darwin --config tauri-release.conf.json + if: startsWith(matrix.platform, 'macos') + env: + ENABLE_CODE_SIGNING: ${{ secrets.APPLE_CERTIFICATE }} + APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} + APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} + APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} + + - name: 🔨 Build Linux app + run: pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json + if: startsWith(matrix.platform, 'ubuntu') + env: + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} + + - name: 🔨 Build Windows app + run: | + [System.Convert]::FromBase64String("$env:DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_BASE64") | Set-Content -Path signer-client-cert.p12 -AsByteStream + $env:DIGICERT_ONE_SIGNER_CREDENTIALS = "$env:DIGICERT_ONE_SIGNER_API_KEY|$PWD\signer-client-cert.p12|$env:DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_PASSWORD" + $env:JAVA_HOME = "$env:JAVA_HOME_17_X64" + pnpm --filter=@modrinth/app run tauri build --config tauri-release.conf.json --verbose --bundles 'nsis,updater' + Remove-Item -Path signer-client-cert.p12 -ErrorAction SilentlyContinue + if: startsWith(matrix.platform, 'windows') + env: + TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} + TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} + DIGICERT_ONE_SIGNER_API_KEY: ${{ secrets.DIGICERT_ONE_SIGNER_API_KEY }} + DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_BASE64: ${{ secrets.DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_BASE64 }} + DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_PASSWORD: ${{ secrets.DIGICERT_ONE_SIGNER_CLIENT_CERTIFICATE_PASSWORD }} + + - name: 📤 Upload app bundles + uses: actions/upload-artifact@v4 + with: + name: App bundle (${{ matrix.artifact-target-name }}) + path: | + target/release/bundle/appimage/Modrinth App_*.AppImage* + target/release/bundle/deb/Modrinth App_*.deb* + target/release/bundle/rpm/Modrinth App-*.rpm* + target/universal-apple-darwin/release/bundle/macos/Modrinth App.app.tar.gz* + target/universal-apple-darwin/release/bundle/dmg/Modrinth App_*.dmg* + target/release/bundle/nsis/Modrinth App_*-setup.exe* + target/release/bundle/nsis/Modrinth App_*-setup.nsis.zip* diff --git a/.github/workflows/theseus-release.yml b/.github/workflows/theseus-release.yml new file mode 100644 index 000000000..6cd2be01f --- /dev/null +++ b/.github/workflows/theseus-release.yml @@ -0,0 +1,118 @@ +name: Modrinth App release +on: + workflow_dispatch: + inputs: + version-tag: + description: Version tag to release to the wide public + type: string + required: true + release-notes: + description: Release notes to include in the Tauri version manifest + default: A new release of the Modrinth App is available! + type: string + required: true + +jobs: + release: + name: Release Modrinth App + runs-on: ubuntu-latest + + env: + LINUX_X64_BUNDLE_ARTIFACT_NAME: App bundle (x86_64-unknown-linux-gnu) + WINDOWS_X64_BUNDLE_ARTIFACT_NAME: App bundle (x86_64-pc-windows-msvc) + MACOS_UNIVERSAL_BUNDLE_ARTIFACT_NAME: App bundle (universal-apple-darwin) + LAUNCHER_FILES_BUCKET_BASE_URL: https://launcher-files.modrinth.com + + steps: + - name: 📥 Download Modrinth App artifacts + uses: dawidd6/action-download-artifact@v11 + with: + workflow: theseus-build.yml + workflow_conclusion: success + event: push + branch: ${{ inputs.version-tag }} + use_unzip: true + + - name: 🛠️ Generate version manifest + env: + VERSION_TAG: ${{ inputs.version-tag }} + RELEASE_NOTES: ${{ inputs.release-notes }} + run: | + # Reference: https://tauri.app/plugin/updater/#server-support + jq -nc \ + --arg versionTag "${VERSION_TAG#v}" \ + --arg releaseNotes "$RELEASE_NOTES" \ + --rawfile macOsAarch64UpdateArtifactSignature "${MACOS_UNIVERSAL_BUNDLE_ARTIFACT_NAME}/universal-apple-darwin/release/bundle/macos/Modrinth App.app.tar.gz.sig" \ + --rawfile macOsX64UpdateArtifactSignature "${MACOS_UNIVERSAL_BUNDLE_ARTIFACT_NAME}/universal-apple-darwin/release/bundle/macos/Modrinth App.app.tar.gz.sig" \ + --rawfile linuxX64UpdateArtifactSignature "${LINUX_X64_BUNDLE_ARTIFACT_NAME}/release/bundle/appimage/Modrinth App_${VERSION_TAG#v}_amd64.AppImage.tar.gz.sig" \ + --rawfile windowsX64UpdateArtifactSignature "${WINDOWS_X64_BUNDLE_ARTIFACT_NAME}/release/bundle/nsis/Modrinth App_${VERSION_TAG#v}_x64-setup.nsis.zip.sig" \ + '{ + "version": $versionTag, + "notes": $releaseNotes, + "pub_date": now | todateiso8601, + "platforms": { + "darwin-aarch64": { + "signature": $macOsAarch64UpdateArtifactSignature, + "url": @uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/macos/\("Modrinth App.app.tar.gz")", + "install_urls": [@uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/macos/\("Modrinth App_" + $versionTag + "_universal.dmg")"] + }, + "darwin-x86_64": { + "signature": $macOsX64UpdateArtifactSignature, + "url": @uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/macos/\("Modrinth App.app.tar.gz")", + "install_urls": [@uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/macos/\("Modrinth App_" + $versionTag + "_universal.dmg")"] + }, + "linux-x86_64": { + "signature": $linuxX64UpdateArtifactSignature, + "url": @uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/linux/\("Modrinth App_" + $versionTag + "_amd64.AppImage.tar.gz")", + "install_urls": [ + @uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/linux/\("Modrinth App_" + $versionTag + "_amd64.deb")", + @uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/linux/\("Modrinth App_" + $versionTag + "_amd64.AppImage")", + @uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/linux/\("Modrinth App-" + $versionTag + "-1.x86_64.rpm")" + ] + }, + "windows-x86_64": { + "signature": $windowsX64UpdateArtifactSignature, + "url": @uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/windows/\("Modrinth App_" + $versionTag + "_x64-setup.nsis.zip")", + "install_urls": [@uri "${{ env.LAUNCHER_FILES_BUCKET_BASE_URL }}/versions/\($versionTag)/windows/\("Modrinth App_" + $versionTag + "_x64-setup.exe")"] + } + } + }' > updates.json + + echo "Generated manifest for version ${VERSION_TAG}:" + cat updates.json + + - name: 📤 Upload release artifacts + env: + VERSION_TAG: ${{ inputs.version-tag }} + AWS_ACCESS_KEY_ID: ${{ secrets.LAUNCHER_FILES_BUCKET_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.LAUNCHER_FILES_BUCKET_SECRET_ACCESS_KEY }} + AWS_BUCKET: ${{ secrets.LAUNCHER_FILES_BUCKET_NAME }} + AWS_REGION: ${{ secrets.LAUNCHER_FILES_BUCKET_REGION }} + AWS_ENDPOINT_URL: ${{ secrets.LAUNCHER_FILES_BUCKET_ENDPOINT_URL }} + AWS_PAGER: '' + # Work around incompatible checksum behavior with some S3-like object storage providers, + # such as Cloudflare R2. See: + # - https://developers.cloudflare.com/r2/examples/aws/aws-cli/ + # - https://developers.cloudflare.com/r2/examples/aws/aws-sdk-java/ + AWS_REQUEST_CHECKSUM_CALCULATION: when_required + AWS_RESPONSE_CHECKSUM_VALIDATION: when_required + run: | + for macosBundleType in 'macos' 'dmg'; do + aws s3 cp --recursive \ + "${MACOS_UNIVERSAL_BUNDLE_ARTIFACT_NAME}/universal-apple-darwin/release/bundle/${macosBundleType}" \ + "s3://${AWS_BUCKET}/versions/${VERSION_TAG#v}/macos" + done + + for linuxBundleType in 'appimage' 'deb' 'rpm'; do + aws s3 cp --recursive \ + "${LINUX_X64_BUNDLE_ARTIFACT_NAME}/release/bundle/${linuxBundleType}" \ + "s3://${AWS_BUCKET}/versions/${VERSION_TAG#v}/linux" + done + + for windowsBundleType in 'nsis'; do + aws s3 cp --recursive \ + "${WINDOWS_X64_BUNDLE_ARTIFACT_NAME}/release/bundle/${windowsBundleType}" \ + "s3://${AWS_BUCKET}/versions/${VERSION_TAG#v}/windows" + done + + aws s3 cp updates.json "s3://${AWS_BUCKET}" diff --git a/.github/workflows/turbo-ci.yml b/.github/workflows/turbo-ci.yml new file mode 100644 index 000000000..ba62ac5a5 --- /dev/null +++ b/.github/workflows/turbo-ci.yml @@ -0,0 +1,92 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + types: [opened, synchronize] + merge_group: + types: [checks_requested] + +jobs: + build: + name: Lint and Test + runs-on: ubuntu-latest + + env: + # Ensure pnpm output is colored in GitHub Actions logs + FORCE_COLOR: 3 + # Make cargo nextest successfully ignore projects without tests + NEXTEST_NO_TESTS: pass + # Fail on warnings in CI + # (but don't do this in the root `Cargo.toml`, + # since we don't want warnings to become errors + # while developing) + RUSTFLAGS: -Dwarnings + + steps: + - name: 📥 Check out code + uses: actions/checkout@v4 + with: + fetch-depth: 2 + + - name: 🧰 Install build dependencies + run: | + sudo apt-get update + sudo apt-get install -yq libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev + + - name: 🧰 Install pnpm + uses: pnpm/action-setup@v4 + + - name: 🧰 Setup Node.js + uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: pnpm + + - name: 🧰 Setup Rust toolchain + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + rustflags: '' + components: clippy, rustfmt + cache: false + + - name: 🧰 Setup nextest + uses: taiki-e/install-action@nextest + + # cargo-binstall does not have pre-built binaries for sqlx-cli, so we fall + # back to a cached cargo install + - name: 🧰 Setup cargo-sqlx + uses: taiki-e/cache-cargo-install-action@v2 + with: + tool: sqlx-cli + locked: false + no-default-features: true + features: rustls,postgres + + - name: 💨 Setup Turbo cache + uses: rharkor/caching-for-turbo@v1.8 + + - name: 🧰 Install dependencies + run: pnpm install + + - name: ⚙️ Start services + run: docker compose up --wait + + - name: ⚙️ Setup labrinth environment and database + working-directory: apps/labrinth + run: | + cp .env.local .env + sqlx database setup + + - name: ⚙️ Set app environment + working-directory: packages/app-lib + run: cp .env.staging .env + + - name: 🔍 Lint and test + run: pnpm run ci + + - name: 🔍 Verify intl:extract has been run + run: | + pnpm intl:extract + git diff --exit-code --color */*/src/locales/en-US/index.json diff --git a/Cargo.lock b/Cargo.lock index d2cd92361..069844001 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,7 +8,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "bytes", "futures-core", "futures-sink", @@ -44,7 +44,7 @@ dependencies = [ "actix-service", "actix-utils", "actix-web", - "bitflags 2.10.0", + "bitflags 2.9.4", "bytes", "derive_more 2.0.1", "futures-core", @@ -68,7 +68,7 @@ dependencies = [ "actix-service", "actix-utils", "base64 0.22.1", - "bitflags 2.10.0", + "bitflags 2.9.4", "brotli", "bytes", "bytestring", @@ -103,7 +103,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -141,7 +141,7 @@ dependencies = [ "parse-size", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -259,7 +259,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -324,7 +324,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.4", + "getrandom 0.3.3", "once_cell", "version_check", "zerocopy", @@ -332,9 +332,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.4" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -434,15 +434,6 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" -[[package]] -name = "ar_archive_writer" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c269894b6fe5e9d7ada0cf69b5bf847ff35bc25fc271f08e1d080fce80339a" -dependencies = [ - "object 0.32.2", -] - [[package]] name = "arbitrary" version = "1.4.2" @@ -460,7 +451,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -653,7 +644,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -693,7 +684,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -734,7 +725,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -831,7 +822,7 @@ dependencies = [ "base64 0.22.1", "http 1.3.1", "log", - "rustls 0.23.34", + "rustls 0.23.32", "serde", "serde_json", "url", @@ -846,14 +837,14 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "av1-grain" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" +checksum = "4f3efb2ca85bc610acfa917b5aaa36f3fcbebed5b3182d7f877b02531c4b80c8" dependencies = [ "anyhow", "arrayvec", "log", - "nom 8.0.0", + "nom 7.1.3", "num-rational", "v_frame", ] @@ -896,15 +887,16 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.32.3" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" +checksum = "a2b715a6010afb9e457ca2b7c9d2b9c344baa8baed7b38dc476034c171b32575" dependencies = [ "bindgen", "cc", "cmake", "dunce", "fs_extra", + "libloading 0.8.8", ] [[package]] @@ -973,7 +965,7 @@ dependencies = [ "cfg-if", "libc", "miniz_oxide", - "object 0.37.3", + "object", "rustc-demangle", "windows-link 0.2.1", ] @@ -1020,7 +1012,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1031,7 +1023,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -1063,11 +1055,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" dependencies = [ - "serde_core", + "serde", ] [[package]] @@ -1157,7 +1149,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -1183,9 +1175,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", ] @@ -1262,9 +1254,9 @@ dependencies = [ [[package]] name = "bzip2" -version = "0.6.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" +checksum = "bea8dcd42434048e4f7a304411d9273a411f647446c1234a65ce0554923f4cff" dependencies = [ "libbz2-rs-sys", ] @@ -1275,7 +1267,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "cairo-sys-rs", "glib", "libc", @@ -1347,9 +1339,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.44" +version = "1.2.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" +checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" dependencies = [ "find-msvc-tools", "jobserver", @@ -1404,9 +1396,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.4" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -1478,14 +1470,14 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.9", + "libloading 0.8.8", ] [[package]] name = "clap" -version = "4.5.51" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" +checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" dependencies = [ "clap_builder", "clap_derive", @@ -1493,9 +1485,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.51" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" +checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" dependencies = [ "anstream", "anstyle", @@ -1505,21 +1497,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.49" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] name = "clap_lex" -version = "0.7.6" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "clickhouse" @@ -1558,7 +1550,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -1877,7 +1869,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "core-foundation 0.10.1", "core-graphics-types", "foreign-types", @@ -1890,7 +1882,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "core-foundation 0.10.1", "libc", ] @@ -2029,26 +2021,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] name = "csv" -version = "1.4.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" dependencies = [ "csv-core", "itoa", "ryu", - "serde_core", + "serde", ] [[package]] name = "csv-core" -version = "0.1.13" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" dependencies = [ "memchr", ] @@ -2060,7 +2052,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" dependencies = [ "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2084,7 +2076,7 @@ dependencies = [ "dashmap", "dotenvy", "futures", - "indexmap 2.12.0", + "indexmap 2.11.4", "itertools 0.14.0", "reqwest", "rust-s3", @@ -2130,7 +2122,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2144,7 +2136,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2155,7 +2147,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2166,7 +2158,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2256,9 +2248,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.5" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", "serde_core", @@ -2272,7 +2264,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2293,7 +2285,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2303,7 +2295,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2316,7 +2308,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2336,7 +2328,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", "unicode-xid", ] @@ -2430,7 +2422,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "block2 0.6.2", "libc", "objc2 0.6.3", @@ -2444,7 +2436,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2453,7 +2445,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.9", + "libloading 0.8.8", ] [[package]] @@ -2476,7 +2468,7 @@ checksum = "788160fb30de9cdd857af31c6a2675904b16ece8fc2737b2c7127ba368c9d0f4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2490,9 +2482,9 @@ dependencies = [ [[package]] name = "document-features" -version = "0.2.12" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" dependencies = [ "litrs", ] @@ -2660,7 +2652,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2681,7 +2673,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2703,7 +2695,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2748,7 +2740,7 @@ checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2823,7 +2815,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" dependencies = [ "bit_field", - "half 2.7.1", + "half 2.7.0", "lebe", "miniz_oxide", "rayon-core", @@ -2884,7 +2876,7 @@ checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -2948,9 +2940,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.5" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" dependencies = [ "crc32fast", "libz-rs-sys", @@ -2998,7 +2990,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -3159,7 +3151,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -3313,12 +3305,12 @@ dependencies = [ [[package]] name = "gethostname" -version = "1.1.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" dependencies = [ "rustix 1.1.2", - "windows-link 0.2.1", + "windows-targets 0.52.6", ] [[package]] @@ -3347,15 +3339,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.4" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasip2", + "wasi 0.14.7+wasi-0.2.4", "wasm-bindgen", ] @@ -3413,7 +3405,7 @@ version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "futures-channel", "futures-core", "futures-executor", @@ -3441,7 +3433,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -3531,7 +3523,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -3546,7 +3538,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.12.0", + "indexmap 2.11.4", "slab", "tokio", "tokio-util", @@ -3565,7 +3557,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.12.0", + "indexmap 2.11.4", "slab", "tokio", "tokio-util", @@ -3580,9 +3572,9 @@ checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "half" -version = "2.7.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +checksum = "e54c115d4f30f52c67202f079c5f9d8b49db4691f460fdb0b4c2e838261b2ba5" dependencies = [ "cfg-if", "crunchy", @@ -3737,11 +3729,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.12" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -3940,8 +3932,8 @@ dependencies = [ "http 1.3.1", "hyper 1.7.0", "hyper-util", - "rustls 0.23.34", - "rustls-native-certs 0.8.2", + "rustls 0.23.32", + "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -4024,9 +4016,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", "potential_utf", @@ -4037,9 +4029,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -4050,10 +4042,11 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ + "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -4064,38 +4057,42 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "2.1.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ + "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", + "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.1.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", "icu_locale_core", + "stable_deref_trait", + "tinystr", "writeable", "yoke", "zerofrom", @@ -4195,9 +4192,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", "hashbrown 0.16.0", @@ -4207,9 +4204,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.18.2" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade6dfcba0dfb62ad59e59e7241ec8912af34fd29e0e743e3db992bd278e8b65" +checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" dependencies = [ "console", "portable-atomic", @@ -4245,7 +4242,7 @@ dependencies = [ "crossbeam-utils", "dashmap", "env_logger", - "indexmap 2.12.0", + "indexmap 2.11.4", "itoa", "log", "num-format", @@ -4261,7 +4258,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "inotify-sys", "libc", ] @@ -4292,7 +4289,18 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", +] + +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", ] [[package]] @@ -4340,13 +4348,13 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.17" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -4361,9 +4369,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.2" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "iso8601" @@ -4475,15 +4483,15 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.3.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.82" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -4552,7 +4560,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "serde", "unicode-segmentation", ] @@ -4585,7 +4593,7 @@ checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" dependencies = [ "cssparser", "html5ever", - "indexmap 2.12.0", + "indexmap 2.11.4", "selectors", ] @@ -4606,7 +4614,7 @@ dependencies = [ "async-stripe", "async-trait", "base64 0.22.1", - "bitflags 2.10.0", + "bitflags 2.9.4", "bytes", "censor", "chrono", @@ -4648,7 +4656,7 @@ dependencies = [ "rust-s3", "rust_decimal", "rust_iso3166", - "rustls 0.23.34", + "rustls 0.23.32", "rusty-money", "sentry", "sentry-actix", @@ -4725,8 +4733,8 @@ dependencies = [ "nom 8.0.0", "percent-encoding", "quoted_printable", - "rustls 0.23.34", - "rustls-native-certs 0.8.2", + "rustls 0.23.32", + "rustls-native-certs 0.8.1", "socket2 0.6.1", "tokio", "tokio-rustls 0.26.4", @@ -4791,12 +4799,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.9" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-link 0.2.1", + "windows-targets 0.53.5", ] [[package]] @@ -4811,7 +4819,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "libc", "redox_syscall", ] @@ -4860,15 +4868,15 @@ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "litrs" -version = "1.0.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" [[package]] name = "local-channel" @@ -4964,7 +4972,7 @@ checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -5009,7 +5017,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -5048,7 +5056,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -5145,14 +5153,14 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", "log", "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -5204,9 +5212,9 @@ dependencies = [ [[package]] name = "moxcms" -version = "0.7.9" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbdd3d7436f8b5e892b8b7ea114271ff0fa00bc5acae845d53b07d498616ef6" +checksum = "c588e11a3082784af229e23e8e4ecf5bcc6fbe4f69101e0421ce8d79da7f0b40" dependencies = [ "num-traits", "pxfm", @@ -5275,7 +5283,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "jni-sys", "log", "ndk-sys", @@ -5311,7 +5319,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "cfg-if", "cfg_aliases", "libc", @@ -5355,7 +5363,7 @@ version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "fsevent-sys", "inotify", "kqueue", @@ -5429,10 +5437,11 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c79c15c05d4bf82b6f5ef163104cc81a760d8e874d38ac50ab67c8877b647b" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" dependencies = [ + "byteorder", "lazy_static", "libm", "num-integer", @@ -5466,7 +5475,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -5532,9 +5541,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.5" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", "rustversion", @@ -5542,14 +5551,14 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.5" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -5584,7 +5593,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "block2 0.6.2", "libc", "objc2 0.6.3", @@ -5605,7 +5614,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "objc2 0.6.3", "objc2-foundation 0.3.2", ] @@ -5616,7 +5625,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "objc2 0.6.3", "objc2-foundation 0.3.2", ] @@ -5627,7 +5636,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "dispatch2", "objc2 0.6.3", ] @@ -5638,7 +5647,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "dispatch2", "objc2 0.6.3", "objc2-core-foundation", @@ -5661,7 +5670,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "objc2 0.6.3", "objc2-core-foundation", "objc2-core-graphics", @@ -5673,7 +5682,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "objc2 0.6.3", "objc2-core-foundation", "objc2-core-graphics", @@ -5701,7 +5710,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "block2 0.5.1", "libc", "objc2 0.5.2", @@ -5713,7 +5722,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "block2 0.6.2", "libc", "objc2 0.6.3", @@ -5736,7 +5745,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "objc2 0.6.3", "objc2-core-foundation", ] @@ -5757,7 +5766,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5769,7 +5778,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f112d1746737b0da274ef79a23aac283376f335f4095a083a267a082f21db0c0" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "objc2 0.6.3", "objc2-app-kit", "objc2-foundation 0.3.2", @@ -5781,7 +5790,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -5794,7 +5803,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "objc2 0.6.3", "objc2-foundation 0.3.2", ] @@ -5805,7 +5814,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "709fe137109bd1e8b5a99390f77a7d8b2961dafc1a1c5db8f2e60329ad6d895a" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "objc2 0.6.3", "objc2-core-foundation", ] @@ -5816,7 +5825,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "objc2 0.6.3", "objc2-core-foundation", "objc2-foundation 0.3.2", @@ -5828,7 +5837,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "block2 0.6.2", "objc2 0.6.3", "objc2-app-kit", @@ -5838,15 +5847,6 @@ dependencies = [ "objc2-security", ] -[[package]] -name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - [[package]] name = "object" version = "0.37.3" @@ -5868,9 +5868,9 @@ dependencies = [ [[package]] name = "once_cell_polyfill" -version = "1.70.2" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "open" @@ -6193,7 +6193,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -6206,7 +6206,7 @@ dependencies = [ "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -6262,7 +6262,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -6322,7 +6322,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" dependencies = [ "base64 0.22.1", - "indexmap 2.12.0", + "indexmap 2.11.4", "quick-xml 0.38.3", "serde", "time", @@ -6347,7 +6347,7 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "crc32fast", "fdeflate", "flate2", @@ -6376,9 +6376,9 @@ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -6426,7 +6426,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -6524,7 +6524,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -6535,9 +6535,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] @@ -6548,7 +6548,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "hex", "procfs-core", "rustix 0.38.44", @@ -6560,7 +6560,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "hex", ] @@ -6580,7 +6580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" dependencies = [ "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -6620,7 +6620,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -6660,11 +6660,10 @@ checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" [[package]] name = "psm" -version = "0.1.28" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d11f2fedc3b7dafdc2851bc52f277377c5473d378859be234bc7ebb593144d01" +checksum = "e66fcd288453b748497d8fb18bccc83a16b0518e3906d4b8df0a8d42d93dbb1c" dependencies = [ - "ar_archive_writer", "cc", ] @@ -6779,7 +6778,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.34", + "rustls 0.23.32", "socket2 0.6.1", "thiserror 2.0.17", "tokio", @@ -6794,12 +6793,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.4", + "getrandom 0.3.3", "lru-slab", "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.34", + "rustls 0.23.32", "rustls-pki-types", "slab", "thiserror 2.0.17", @@ -6949,7 +6948,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.3.3", ] [[package]] @@ -7076,7 +7075,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", ] [[package]] @@ -7118,7 +7117,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -7200,8 +7199,8 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.34", - "rustls-native-certs 0.8.2", + "rustls 0.23.32", + "rustls-native-certs 0.8.1", "rustls-pki-types", "serde", "serde_json", @@ -7360,7 +7359,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.108", + "syn 2.0.106", "walkdir", ] @@ -7442,7 +7441,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae8c0cb48f413ebe24dc2d148788e0efbe09ba3e011d9277162f2eaf8e1069a3" dependencies = [ "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -7484,7 +7483,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys 0.4.15", @@ -7497,7 +7496,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys 0.11.0", @@ -7518,16 +7517,16 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.34" +version = "0.23.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" +checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" dependencies = [ "aws-lc-rs", "log", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.8", + "rustls-webpki 0.103.7", "subtle", "zeroize", ] @@ -7546,9 +7545,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -7576,9 +7575,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ "web-time", "zeroize", @@ -7596,9 +7595,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.8" +version = "0.103.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" dependencies = [ "aws-lc-rs", "ring", @@ -7722,7 +7721,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -7761,7 +7760,7 @@ checksum = "22f968c5ea23d555e670b449c1c5e7b2fc399fdaec1d304a17cd48e288abc107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -7784,7 +7783,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -7797,7 +7796,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -7850,7 +7849,7 @@ checksum = "48b85e25e8a1fc13928885e8bf13abe8a09e15c46993aed05d6405f7755d6e20" dependencies = [ "httpdate", "reqwest", - "rustls 0.23.34", + "rustls 0.23.32", "sentry-backtrace", "sentry-contexts", "sentry-core", @@ -7938,7 +7937,7 @@ version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "428f780866a613142dcc81b7f8551ae4d1c056f4df22b6d7ddd9154a9974eb03" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "sentry-backtrace", "sentry-core", "tracing-core", @@ -8033,7 +8032,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8044,7 +8043,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8121,7 +8120,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8151,7 +8150,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8168,15 +8167,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.15.1" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" +checksum = "6093cd8c01b25262b84927e0f7151692158fab02d961e04c979d3903eba7ecc5" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.12.0", + "indexmap 2.11.4", "schemars 0.9.0", "schemars 1.0.4", "serde_core", @@ -8187,14 +8186,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.15.1" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" +checksum = "a7e6c180db0816026a61afa1cff5344fb7ebded7e4d3062772179f2501481c27" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8216,7 +8215,7 @@ checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8487,13 +8486,13 @@ dependencies = [ "futures-util", "hashbrown 0.15.5", "hashlink", - "indexmap 2.12.0", + "indexmap 2.11.4", "log", "memchr", "once_cell", "percent-encoding", "rust_decimal", - "rustls 0.23.34", + "rustls 0.23.32", "serde", "serde_json", "sha2", @@ -8517,7 +8516,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8540,7 +8539,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.108", + "syn 2.0.106", "tokio", "url", ] @@ -8553,7 +8552,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.10.0", + "bitflags 2.9.4", "byteorder", "bytes", "chrono", @@ -8598,7 +8597,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.10.0", + "bitflags 2.9.4", "byteorder", "chrono", "crc", @@ -8744,7 +8743,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8755,7 +8754,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8788,9 +8787,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.108" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -8814,7 +8813,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8846,7 +8845,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -8882,11 +8881,11 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" [[package]] name = "tao" -version = "0.34.5" +version = "0.34.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a753bdc39c07b192151523a3f77cd0394aa75413802c883a0f6f6a0e5ee2e7" +checksum = "959469667dbcea91e5485fc48ba7dd6023face91bb0f1a14681a70f99847c3f7" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "block2 0.6.2", "core-foundation 0.10.1", "core-graphics", @@ -8928,7 +8927,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -8956,9 +8955,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tauri" -version = "2.9.2" +version = "2.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bceb52453e507c505b330afe3398510e87f428ea42b6e76ecb6bd63b15965b5" +checksum = "d4d1d3b3dc4c101ac989fd7db77e045cc6d91a25349cd410455cb5c57d510c1c" dependencies = [ "anyhow", "bytes", @@ -8966,7 +8965,7 @@ dependencies = [ "dirs", "dunce", "embed_plist", - "getrandom 0.3.4", + "getrandom 0.3.3", "glob", "gtk", "heck 0.5.0", @@ -9000,6 +8999,7 @@ dependencies = [ "tokio", "tray-icon", "url", + "urlpattern", "webkit2gtk", "webview2-com", "window-vibrancy", @@ -9008,9 +9008,9 @@ dependencies = [ [[package]] name = "tauri-build" -version = "2.5.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a924b6c50fe83193f0f8b14072afa7c25b7a72752a2a73d9549b463f5fe91a38" +checksum = "9c432ccc9ff661803dab74c6cd78de11026a578a9307610bbc39d3c55be7943f" dependencies = [ "anyhow", "cargo_toml", @@ -9032,9 +9032,9 @@ dependencies = [ [[package]] name = "tauri-codegen" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c1fe64c74cc40f90848281a90058a6db931eb400b60205840e09801ee30f190" +checksum = "1ab3a62cf2e6253936a8b267c2e95839674e7439f104fa96ad0025e149d54d8a" dependencies = [ "base64 0.22.1", "brotli", @@ -9048,7 +9048,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "syn 2.0.108", + "syn 2.0.106", "tauri-utils", "thiserror 2.0.17", "time", @@ -9059,23 +9059,23 @@ dependencies = [ [[package]] name = "tauri-macros" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "260c5d2eb036b76206b9fca20b7be3614cfd21046c5396f7959e0e64a4b07f2f" +checksum = "4368ea8094e7045217edb690f493b55b30caf9f3e61f79b4c24b6db91f07995e" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", "tauri-codegen", "tauri-utils", ] [[package]] name = "tauri-plugin" -version = "2.5.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076c78a474a7247c90cad0b6e87e593c4c620ed4efdb79cbe0214f0021f6c39d" +checksum = "9946a3cede302eac0c6eb6c6070ac47b1768e326092d32efbb91f21ed58d978f" dependencies = [ "anyhow", "glob", @@ -9090,9 +9090,9 @@ dependencies = [ [[package]] name = "tauri-plugin-deep-link" -version = "2.4.5" +version = "2.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e82759f7c7d51de3cbde51c04b3f2332de52436ed84541182cd8944b04e9e73" +checksum = "cd67112fb1131834c2a7398ffcba520dbbf62c17de3b10329acd1a3554b1a9bb" dependencies = [ "dunce", "plist", @@ -9111,9 +9111,9 @@ dependencies = [ [[package]] name = "tauri-plugin-dialog" -version = "2.4.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "313f8138692ddc4a2127c4c9607d616a46f5c042e77b3722450866da0aad2f19" +checksum = "0beee42a4002bc695550599b011728d9dfabf82f767f134754ed6655e434824e" dependencies = [ "log", "raw-window-handle", @@ -9129,9 +9129,9 @@ dependencies = [ [[package]] name = "tauri-plugin-fs" -version = "2.4.4" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47df422695255ecbe7bac7012440eddaeefd026656171eac9559f5243d3230d9" +checksum = "315784ec4be45e90a987687bae7235e6be3d6e9e350d2b75c16b8a4bf22c1db7" dependencies = [ "anyhow", "dunce", @@ -9151,9 +9151,9 @@ dependencies = [ [[package]] name = "tauri-plugin-http" -version = "2.5.4" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00685aceab12643cf024f712ab0448ba8fcadf86f2391d49d2e5aa732aacc70" +checksum = "938a3d7051c9a82b431e3a0f3468f85715b3442b3c3a3913095e9fa509e2652c" dependencies = [ "bytes", "cookie_store", @@ -9175,9 +9175,9 @@ dependencies = [ [[package]] name = "tauri-plugin-opener" -version = "2.5.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c26b72571d25dee25667940027114e60f569fc3974f8cefbe50c2cbc5fd65e3b" +checksum = "786156aa8e89e03d271fbd3fe642207da8e65f3c961baa9e2930f332bf80a1f5" dependencies = [ "dunce", "glob", @@ -9197,9 +9197,9 @@ dependencies = [ [[package]] name = "tauri-plugin-os" -version = "2.3.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f08346c8deb39e96f86973da0e2d76cbb933d7ac9b750f6dc4daf955a6f997" +checksum = "77a1c77ebf6f20417ab2a74e8c310820ba52151406d0c80fbcea7df232e3f6ba" dependencies = [ "gethostname", "log", @@ -9215,9 +9215,9 @@ dependencies = [ [[package]] name = "tauri-plugin-single-instance" -version = "2.3.6" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd707f8c86b4e3004e2c141fa24351f1909ba40ce1b8437e30d5ed5277dd3710" +checksum = "fb9cac815bf11c4a80fb498666bcdad66d65b89e3ae24669e47806febb76389c" dependencies = [ "serde", "serde_json", @@ -9262,11 +9262,11 @@ dependencies = [ [[package]] name = "tauri-plugin-window-state" -version = "2.4.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73736611e14142408d15353e21e3cca2f12a3cfb523ad0ce85999b6d2ef1a704" +checksum = "2d5f6fe3291bfa609c7e0b0ee3bedac294d94c7018934086ce782c1d0f2a468e" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "log", "serde", "serde_json", @@ -9277,9 +9277,9 @@ dependencies = [ [[package]] name = "tauri-runtime" -version = "2.9.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9368f09358496f2229313fccb37682ad116b7f46fa76981efe116994a0628926" +checksum = "d4cfc9ad45b487d3fded5a4731a567872a4812e9552e3964161b08edabf93846" dependencies = [ "cookie 0.18.1", "dpi", @@ -9302,9 +9302,9 @@ dependencies = [ [[package]] name = "tauri-runtime-wry" -version = "2.9.1" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "929f5df216f5c02a9e894554401bcdab6eec3e39ec6a4a7731c7067fc8688a93" +checksum = "c1fe9d48bd122ff002064e88cfcd7027090d789c4302714e68fcccba0f4b7807" dependencies = [ "gtk", "http 1.3.1", @@ -9329,9 +9329,9 @@ dependencies = [ [[package]] name = "tauri-utils" -version = "2.8.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6b8bbe426abdbf52d050e52ed693130dbd68375b9ad82a3fb17efb4c8d85673" +checksum = "41a3852fdf9a4f8fbeaa63dc3e9a85284dd6ef7200751f0bd66ceee30c93f212" dependencies = [ "anyhow", "brotli", @@ -9382,7 +9382,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand 2.3.0", - "getrandom 0.3.4", + "getrandom 0.3.3", "once_cell", "rustix 1.1.2", "windows-sys 0.61.2", @@ -9558,7 +9558,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -9569,7 +9569,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -9589,7 +9589,7 @@ checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" dependencies = [ "fax", "flate2", - "half 2.7.1", + "half 2.7.0", "quick-error", "weezl", "zune-jpeg", @@ -9597,9 +9597,9 @@ dependencies = [ [[package]] name = "tikv-jemalloc-ctl" -version = "0.6.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "661f1f6a57b3a36dc9174a2c10f19513b4866816e13425d3e418b11cc37bc24c" +checksum = "f21f216790c8df74ce3ab25b534e0718da5a1916719771d3fec23315c99e468b" dependencies = [ "libc", "paste", @@ -9608,9 +9608,9 @@ dependencies = [ [[package]] name = "tikv-jemalloc-sys" -version = "0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" +version = "0.6.0+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8aa5b2ab86a2cefa406d889139c162cbb230092f7d1d7cbc1716405d852a3b" +checksum = "cd3c60906412afa9c2b5b5a48ca6a5abe5736aec9eb48ad05037a677e52e4e2d" dependencies = [ "cc", "libc", @@ -9618,9 +9618,9 @@ dependencies = [ [[package]] name = "tikv-jemallocator" -version = "0.6.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0359b4327f954e0567e69fb191cf1436617748813819c94b8cd4a431422d053a" +checksum = "4cec5ff18518d81584f477e9bfdf957f5bb0979b0bac3af4ca30b5b3ae2d2865" dependencies = [ "libc", "tikv-jemalloc-sys", @@ -9668,9 +9668,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -9693,31 +9693,34 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.48.0" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ + "backtrace", "bytes", + "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", + "slab", "socket2 0.6.1", "tokio-macros", "tracing", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -9736,7 +9739,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.34", + "rustls 0.23.32", "tokio", ] @@ -9784,7 +9787,7 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.11.4", "serde_core", "serde_spanned 1.0.3", "toml_datetime 0.7.3", @@ -9817,7 +9820,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.11.4", "toml_datetime 0.6.3", "winnow 0.5.40", ] @@ -9828,7 +9831,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.11.4", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.3", @@ -9841,7 +9844,7 @@ version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.11.4", "toml_datetime 0.7.3", "toml_parser", "winnow 0.7.13", @@ -9947,7 +9950,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "bytes", "futures-util", "http 1.3.1", @@ -10004,7 +10007,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -10075,9 +10078,9 @@ dependencies = [ [[package]] name = "tray-icon" -version = "0.21.2" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d5572781bee8e3f994d7467084e1b1fd7a93ce66bd480f8156ba89dee55a2b" +checksum = "a0d92153331e7d02ec09137538996a7786fe679c629c279e82a6be762b7e6fe2" dependencies = [ "crossbeam-channel", "dirs", @@ -10092,7 +10095,7 @@ dependencies = [ "png 0.17.16", "serde", "thiserror 2.0.17", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -10113,7 +10116,7 @@ dependencies = [ "httparse", "log", "rand 0.9.2", - "rustls 0.23.34", + "rustls 0.23.32", "rustls-pki-types", "sha1", "thiserror 2.0.17", @@ -10213,24 +10216,24 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-normalization" -version = "0.1.25" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.4" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" [[package]] name = "unicode-segmentation" @@ -10277,7 +10280,7 @@ dependencies = [ "base64 0.22.1", "log", "percent-encoding", - "rustls 0.23.34", + "rustls 0.23.32", "rustls-pemfile 2.2.0", "rustls-pki-types", "ureq-proto", @@ -10351,7 +10354,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.11.4", "serde", "serde_json", "utoipa-gen", @@ -10377,7 +10380,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -10420,7 +10423,7 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.3.3", "js-sys", "rand 0.9.2", "serde", @@ -10471,7 +10474,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -10488,9 +10491,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version-compare" -version = "0.2.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" @@ -10571,6 +10574,15 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" +[[package]] +name = "wasi" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" @@ -10588,9 +10600,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.105" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", @@ -10599,11 +10611,25 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +dependencies = [ + "bumpalo", + "log", + "proc-macro2", + "quote", + "syn 2.0.106", + "wasm-bindgen-shared", +] + [[package]] name = "wasm-bindgen-futures" -version = "0.4.55" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -10614,9 +10640,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.105" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10624,22 +10650,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.105" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ - "bumpalo", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", + "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.105" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] @@ -10677,7 +10703,7 @@ version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "rustix 1.1.2", "wayland-backend", "wayland-scanner", @@ -10689,7 +10715,7 @@ version = "0.32.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" dependencies = [ - "bitflags 2.10.0", + "bitflags 2.9.4", "wayland-backend", "wayland-client", "wayland-scanner", @@ -10719,9 +10745,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.82" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -10830,7 +10856,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -11002,7 +11028,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -11013,7 +11039,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -11462,15 +11488,15 @@ dependencies = [ [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wry" -version = "0.53.5" +version = "0.53.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2" +checksum = "6d78ec082b80fa088569a970d043bb3050abaabf4454101d44514ee8d9a8c9f6" dependencies = [ "base64 0.22.1", "block2 0.6.2", @@ -11553,9 +11579,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.28" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] name = "yaserde" @@ -11580,7 +11606,7 @@ dependencies = [ "quote", "serde", "serde_tokenstream", - "syn 2.0.108", + "syn 2.0.106", "xml-rs", ] @@ -11597,10 +11623,11 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ + "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -11608,21 +11635,21 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", "synstructure", ] [[package]] name = "zbus" -version = "5.12.0" +version = "5.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91" +checksum = "2d07e46d035fb8e375b2ce63ba4e4ff90a7f73cf2ffb0138b29e1158d2eaadf7" dependencies = [ "async-broadcast", "async-executor", @@ -11645,8 +11672,7 @@ dependencies = [ "tokio", "tracing", "uds_windows", - "uuid 1.18.1", - "windows-sys 0.61.2", + "windows-sys 0.60.2", "winnow 0.7.13", "zbus_macros", "zbus_names", @@ -11655,14 +11681,14 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.12.0" +version = "5.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314" +checksum = "57e797a9c847ed3ccc5b6254e8bcce056494b375b511b3d6edcec0aeb4defaca" dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", "zbus_names", "zvariant", "zvariant_utils", @@ -11697,7 +11723,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -11717,7 +11743,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", "synstructure", ] @@ -11729,9 +11755,9 @@ checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" dependencies = [ "displaydoc", "yoke", @@ -11740,9 +11766,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -11751,13 +11777,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", ] [[package]] @@ -11769,7 +11795,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.12.0", + "indexmap 2.11.4", "memchr", "zopfli", ] @@ -11782,7 +11808,7 @@ checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1" dependencies = [ "arbitrary", "crc32fast", - "indexmap 2.12.0", + "indexmap 2.11.4", "memchr", ] @@ -11797,7 +11823,7 @@ dependencies = [ "crc32fast", "deflate64", "flate2", - "indexmap 2.12.0", + "indexmap 2.11.4", "memchr", "zopfli", "zstd", @@ -11811,9 +11837,9 @@ checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" [[package]] name = "zopfli" -version = "0.8.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" dependencies = [ "bumpalo", "crc32fast", @@ -11875,9 +11901,9 @@ dependencies = [ [[package]] name = "zvariant" -version = "5.8.0" +version = "5.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c" +checksum = "999dd3be73c52b1fccd109a4a81e4fcd20fab1d3599c8121b38d04e1419498db" dependencies = [ "endi", "enumflags2", @@ -11890,14 +11916,14 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.8.0" +version = "5.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006" +checksum = "6643fd0b26a46d226bd90d3f07c1b5321fe9bb7f04673cb37ac6d6883885b68e" dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.108", + "syn 2.0.106", "zvariant_utils", ] @@ -11910,7 +11936,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.108", + "syn 2.0.106", "winnow 0.7.13", ] diff --git a/README.md b/README.md index 6bd709c34..74def556e 100644 --- a/README.md +++ b/README.md @@ -1,125 +1,39 @@ -# 📘 Navigation +# ![Modrinth Monorepo Cover](/.github/assets/monorepo_cover.png) -- [🔧 Install Instructions](#install-instructions) -- [✨ Features](#features) -- [🚀 Getting Started](#getting-started) -- [⚠️ Disclaimer](#disclaimer) -- [💰 Donate](#support-our-project-crypto-wallets) +![Issues](https://img.shields.io/github/issues-raw/Modrinth/code?color=c78aff&label=issues&style=for-the-badge) +![Pull Requests](https://img.shields.io/github/issues-pr-raw/Modrinth/code?color=c78aff&label=PRs&style=for-the-badge) +![Contributors](https://img.shields.io/github/contributors/Modrinth/code?color=c78aff&label=contributors&style=for-the-badge) +![Lines](https://img.shields.io/endpoint?url=https://ghloc.vercel.app/api/modrinth/code/badge?style=flat&logoColor=white&color=c78aff&style=for-the-badge) +![Commit Activity](https://img.shields.io/github/commit-activity/m/Modrinth/code?color=c78aff&label=commits&style=for-the-badge) +![Last Commit](https://img.shields.io/github/last-commit/Modrinth/code?color=c78aff&label=last%20commit&style=for-the-badge) -## Other languages -> [Русский](readme/ru_ru/README.md) +## Modrinth Monorepo -## Support channel -> [Telegram](https://me.astralium.su/ref/telegram_channel) +Welcome to the Modrinth Monorepo, the primary codebase for the Modrinth web interface and app. It contains ![Lines](https://img.shields.io/endpoint?url=https://ghloc.vercel.app/api/modrinth/olympus/badge?logoColor=white&color=black&label=) lines of code and has ![Contributors](https://img.shields.io/github/contributors/Modrinth/code?color=black&label=) contributors! ---- +If you're not a developer and you've stumbled upon this repository, you can access the web interface on the [Modrinth website](https://modrinth.com) and download the latest release of the app [here](https://modrinth.com/app). -# About Project +## Development -## **AstralRinth • Empowering Your Minecraft Adventure** +This repository contains two primary packages. For detailed development information, please refer to their respective READMEs: -Welcome to **AstralRinth (AR)** — a powerful fork of Modrinth, reimagined to enhance your Minecraft journey. Whether you're a GUI enthusiast or a developer building with Modrinth’s API, **Theseus Core** is your launchpad into a new era of Minecraft gameplay. +- [Web Interface](apps/frontend/README.md) +- [Desktop App](apps/app/README.md) -- *Recently, improved integration with the Git Astralium API has been added.* +## Contributing -## **About the Software** +We welcome contributions! Before submitting any contributions, please read our [contributing guidelines](https://docs.modrinth.com/contributing/getting-started/). -**AstralRinth** is a dedicated branch of the Theseus project, focused on **offline authentication**, offering you more flexibility and control. Play Minecraft without the need for constant online verification — a user-first approach to modern modded gaming. +If you plan to fork this repository for your own purposes, please review our [copying guidelines](COPYING.md). -## **AR • Unlocking Minecraft's Boundless Horizon** +## Security -This unique fork introduces a **free trial Minecraft experience**, bypassing license checks while maintaining rich functionality. Currently includes: +If you discover a security vulnerability within our codebase, please follow our [responsible disclosure guidelines](https://modrinth.com/legal/security). ---- +## Support -# Install Instructions +If you need help with the Modrinth web interface or app, please visit our [support page](https://support.modrinth.com). For general inquiries, you can also join our [Discord server](https://discord.modrinth.com). -To install the launcher: +## License -1. Visit the [releases page](https://git.astralium.su/didirus/AstralRinth/releases) to download the correct version for your system. -2. Run the downloaded file or extract and launch it, depending on the format. - -### Downloadable File Extensions - -| Extension | OS | Notes | -| --------- | ------- | --------------------------------------------------------------------- | -| `.msi` | Windows | Supported on all recent Windows versions | -| `.dmg` | macOS | Works on Ventura, Sonoma, Sequoia _(may also support older versions)_ | -| `.deb` | Linux | Basic support; compatibility may vary by distribution | - -### Installation Warnings - -Avoid using builds with these prefixes — they may be unstable or experimental: - -- `dev` -- `nightly` -- `dirty` -- `dirty-dev` -- `dirty-nightly` -- `dirty_dev` -- `dirty_nightly` - ---- - -# Features - -> _The launcher provides an opportunity to use the well-known Modrinth, but with an improved user experience._ - -## Included exclusive features - -- No ads in the entire launcher. -- Custom `.svg` vector icons for a distinct UI. -- Improved compatibility with both licensed and pirate accounts. - - Use **official microsoft accounts** or **offline/pirate accounts** — login won't break. - - Supports license-free access for testing or personal use. - - No dependence on official authentication services. -- Discord Rich Presence integration: - - Dynamic status messages. - - In-game timer and AFK counter. -- Strict disabling of statistics and other Modrinth metrics. -- Optimized archive/package size. -- Integrated update fetcher for seamless version management. - - Built-in update alerts for new versions posted on Git Astralium. - - Automatic download and installation capabilities. -- Database migration fixes, when error occurred (Interactive Mode) (Modrinth issue) -- Ely.by full integration - - The official account skin system is managed by ely.by - - Offline accounts must install AuthLib through the instance settings - ---- - -# Getting Started - -To begin using AstralRinth: - -1. **Download Your OS Version** - - - Go to the [releases page](https://git.astralium.su/didirus/AstralRinth/releases) - - [How to choose a file](#downloadable-file-extensions) - - [How to choose a release](#installation-warnings) - -2. **Log In** - - - Use your official Mojang/Microsoft account, or test using a non-licensed account. - -3. **Launch Minecraft** - - Start Minecraft from the launcher. - - The launcher will auto-detect the recommended JVM version. - - You can also configure Java manually in the settings. - ---- - -# Disclaimer - -- **AstralRinth** is intended **solely for educational and experimental use**. -- We **do not condone piracy** — users are encouraged to purchase a legitimate Minecraft license. -- Respect all relevant licensing agreements and support Minecraft developers. - ---- - -# Support Our Project (Crypto Wallets) - -If you'd like to support development, you can donate via the following crypto wallets: - -- Toncoin (TON): UQA5pGOJhIz9UAVEOh5t2ur1QVbNr_FC1eq9bOb3GwTgaiqk -- USDT (TON): UQA5pGOJhIz9UAVEOh5t2ur1QVbNr_FC1eq9bOb3GwTgaiqk +All packages in this repository are licensed under their respective licenses. Refer to the LICENSE file in each package for more information. diff --git a/apps/app-frontend/index.html b/apps/app-frontend/index.html index 876739c33..50867a419 100644 --- a/apps/app-frontend/index.html +++ b/apps/app-frontend/index.html @@ -4,7 +4,7 @@ - AstralRinth App + Modrinth App diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue index e70f31776..e281beb6e 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -32,7 +32,7 @@ import { NotificationPanel, OverflowMenu, ProgressSpinner, - provideNotificationManager + provideNotificationManager, } from '@modrinth/ui' import { renderString } from '@modrinth/utils' import { getVersion } from '@tauri-apps/api/app' @@ -43,9 +43,10 @@ import { type } from '@tauri-apps/plugin-os' import { saveWindowState, StateFlags } from '@tauri-apps/plugin-window-state' import { defineMessages, useVIntl } from '@vintl/vintl' import { $fetch } from 'ofetch' -import { computed, onMounted, onUnmounted, provide, ref } from 'vue' +import { computed, onMounted, onUnmounted, provide, ref, watch } from 'vue' import { RouterView, useRoute, useRouter } from 'vue-router' +import ModrinthAppLogo from '@/assets/modrinth_app.svg?component' import ModrinthLoadingIndicator from '@/components/LoadingIndicatorBar.vue' import AccountsCard from '@/components/ui/AccountsCard.vue' import Breadcrumbs from '@/components/ui/Breadcrumbs.vue' @@ -58,12 +59,15 @@ import InstanceCreationModal from '@/components/ui/InstanceCreationModal.vue' import AppSettingsModal from '@/components/ui/modal/AppSettingsModal.vue' import AuthGrantFlowWaitModal from '@/components/ui/modal/AuthGrantFlowWaitModal.vue' import NavButton from '@/components/ui/NavButton.vue' +import PromotionWrapper from '@/components/ui/PromotionWrapper.vue' import QuickInstanceSwitcher from '@/components/ui/QuickInstanceSwitcher.vue' import RunningAppBar from '@/components/ui/RunningAppBar.vue' import SplashScreen from '@/components/ui/SplashScreen.vue' +import UpdateToast from '@/components/ui/UpdateToast.vue' import URLConfirmModal from '@/components/ui/URLConfirmModal.vue' import { useCheckDisableMouseover } from '@/composables/macCssFix.js' -import { debugAnalytics, optOutAnalytics, trackEvent } from '@/helpers/analytics' +import { hide_ads_window, init_ads_window, show_ads_window } from '@/helpers/ads.js' +import { debugAnalytics, initAnalytics, optOutAnalytics, trackEvent } from '@/helpers/analytics' import { get_user } from '@/helpers/cache.js' import { command_listener, warning_listener } from '@/helpers/events.js' import { useFetch } from '@/helpers/fetch.js' @@ -72,11 +76,16 @@ import { list } from '@/helpers/profile.js' import { get as getSettings, set as setSettings } from '@/helpers/settings.ts' import { get_opening_command, initialize_state } from '@/helpers/state' import { + areUpdatesEnabled, + enqueueUpdateForInstallation, getOS, - isDev + getUpdateSize, + isDev, + isNetworkMetered, } from '@/helpers/utils.js' import { - provideAppUpdateDownloadProgress + provideAppUpdateDownloadProgress, + subscribeToDownloadProgress, } from '@/providers/download-progress.ts' import { useError } from '@/store/error.js' import { useInstall } from '@/store/install.js' @@ -87,10 +96,6 @@ import { generateSkinPreviews } from './helpers/rendering/batch-skin-renderer' import { get_available_capes, get_available_skins } from './helpers/skins' import { AppNotificationManager } from './providers/app-notifications' -// [AR] Imports -import { get, set } from '@/helpers/settings.ts' -import { getRemote, updateState } from '@/helpers/update.js' - const themeStore = useTheming() const notificationManager = new AppNotificationManager() @@ -123,15 +128,18 @@ const isMaximized = ref(false) onMounted(async () => { await useCheckDisableMouseover() - await getRemote(false) // [AR] Check for updates document.querySelector('body').addEventListener('click', handleClick) document.querySelector('body').addEventListener('auxclick', handleAuxClick) + + checkUpdates() }) onUnmounted(async () => { document.querySelector('body').removeEventListener('click', handleClick) document.querySelector('body').removeEventListener('auxclick', handleAuxClick) + + await unlistenUpdateDownload?.() }) const { formatMessage } = useVIntl() @@ -159,18 +167,11 @@ const messages = defineMessages({ }) async function setupApp() { - // [AR] Patched - const settings = await get() - settings.personalized_ads = false - settings.telemetry = false - await set(settings) - stateInitialized.value = true const { native_decorations, theme, telemetry, - personalized_ads, collapsed_navigation, advanced_rendering, onboarded, @@ -206,14 +207,10 @@ async function setupApp() { isMaximized.value = await getCurrentWindow().isMaximized() }) - // [AR] Patched + initAnalytics() if (!telemetry) { - console.info("[AR] • Telemetry disabled by default (Hard patched).") - optOutAnalytics() - } - if (!personalized_ads) { - console.info("[AR] • Personalized ads disabled by default (Hard patched).") - } + optOutAnalytics() + } if (dev) debugAnalytics() trackEvent('Launched', { version, dev, onboarded }) @@ -386,6 +383,19 @@ const forceSidebar = computed( () => route.path.startsWith('/browse') || route.path.startsWith('/project'), ) const sidebarVisible = computed(() => sidebarToggled.value || forceSidebar.value) +const showAd = computed(() => !(!sidebarVisible.value || hasPlus.value)) + +watch( + showAd, + () => { + if (!showAd.value) { + hide_ads_window(true) + } else { + init_ads_window(true) + } + }, + { immediate: true }, +) onMounted(() => { invoke('show_window') @@ -422,6 +432,108 @@ const appUpdateDownload = { progress: ref(0), version: ref(), } +let unlistenUpdateDownload + +const downloadProgress = computed(() => appUpdateDownload.progress.value) +const downloadPercent = computed(() => Math.trunc(appUpdateDownload.progress.value * 100)) + +const metered = ref(true) +const finishedDownloading = ref(false) +const restarting = ref(false) +const updateToastDismissed = ref(false) +const availableUpdate = ref(null) +const updateSize = ref(null) +async function checkUpdates() { + if (!(await areUpdatesEnabled())) { + console.log('Skipping update check as updates are disabled in this build or environment') + return + } + + async function performCheck() { + const update = await invoke('plugin:updater|check') + const isExistingUpdate = update.version === availableUpdate.value?.version + + if (!update) { + console.log('No update available') + return + } + + if (isExistingUpdate) { + console.log('Update is already known') + return + } + + appUpdateDownload.progress.value = 0 + finishedDownloading.value = false + updateToastDismissed.value = false + + console.log(`Update ${update.version} is available.`) + + metered.value = await isNetworkMetered() + if (!metered.value) { + console.log('Starting download of update') + downloadUpdate(update) + } else { + console.log(`Metered connection detected, not auto-downloading update.`) + } + + getUpdateSize(update.rid).then((size) => (updateSize.value = size)) + + availableUpdate.value = update + } + + await performCheck() + setTimeout( + () => { + checkUpdates() + }, + 5 /* min */ * 60 /* sec */ * 1000 /* ms */, + ) +} + +async function showUpdateToast() { + updateToastDismissed.value = false +} + +async function downloadAvailableUpdate() { + return downloadUpdate(availableUpdate.value) +} + +async function downloadUpdate(versionToDownload) { + if (!versionToDownload) { + handleError(`Failed to download update: no version available`) + } + + if (appUpdateDownload.progress.value !== 0) { + console.error(`Update ${versionToDownload.version} already downloading`) + return + } + + console.log(`Downloading update ${versionToDownload.version}`) + + try { + enqueueUpdateForInstallation(versionToDownload.rid).then(() => { + finishedDownloading.value = true + unlistenUpdateDownload?.().then(() => { + unlistenUpdateDownload = null + }) + console.log('Finished downloading!') + }) + unlistenUpdateDownload = await subscribeToDownloadProgress( + appUpdateDownload, + versionToDownload.version, + ) + } catch (e) { + handleError(e) + } +} + +async function installUpdate() { + restarting.value = true + setTimeout(async () => { + await handleClose() + }, 250) +} function handleClick(e) { let target = e.target @@ -496,20 +608,24 @@ async function openSurvey() { onOpen: () => console.info('Opened user survey'), onClose: () => { console.info('Closed user survey') + show_ads_window() }, onSubmit: () => console.info('Active user survey submitted'), } try { + hide_ads_window() if (window.Tally?.openPopup) { console.info(`Opening Tally popup for user survey (form ID: ${formId})`) dismissSurvey() window.Tally.openPopup(formId, popupOptions) } else { console.warn('Tally script not yet loaded') + show_ads_window() } } catch (e) { console.error('Error opening Tally popup:', e) + show_ads_window() } console.info(`Found user survey to show with tally_id: ${formId}`) @@ -564,13 +680,46 @@ async function processPendingSurveys() { } } -provideAppUpdateDownloadProgress(appUpdateDownload) // [AR Note] If delete this shit line -> SettingsModal will not work. +provideAppUpdateDownloadProgress(appUpdateDownload) diff --git a/apps/app-frontend/src/components/ui/ErrorModal.vue b/apps/app-frontend/src/components/ui/ErrorModal.vue index 1636ce4af..17a9dffc7 100644 --- a/apps/app-frontend/src/components/ui/ErrorModal.vue +++ b/apps/app-frontend/src/components/ui/ErrorModal.vue @@ -19,18 +19,12 @@ import { install } from '@/helpers/profile.js' import { cancel_directory_change } from '@/helpers/settings.ts' import { handleSevereError } from '@/store/error.js' -// [AR] Imports -import { applyMigrationFix } from '@/helpers/utils.js' -import { restartApp } from '@/helpers/utils.js' - const { handleError } = injectNotificationManager() const errorModal = ref() const error = ref() const closable = ref(true) const errorCollapsed = ref(false) -const migrationFixSuccess = ref(null) // null | true | false -const migrationFixCallbackModel = ref() const title = ref('An error occurred') const errorType = ref('unknown') @@ -78,7 +72,7 @@ defineExpose({ supportLink.value = 'https://support.modrinth.com' metadata.value.profilePath = context.profilePath } else if (source === 'state_init') { - title.value = 'Error initializing AstralRinth App' + title.value = 'Error initializing Modrinth App' errorType.value = 'state_init' supportLink.value = 'https://support.modrinth.com' } else { @@ -156,26 +150,6 @@ async function copyToClipboard(text) { copied.value = false }, 3000) } - -async function onApplyMigrationFix(eol) { - console.log(`[AR] • Attempting to apply migration ${eol.toUpperCase()} fix`) - try { - const result = await applyMigrationFix(eol) - migrationFixSuccess.value = result === true - console.log(`[AR] • Successfully applied migration ${eol.toUpperCase()} fix`, result) - } catch (err) { - console.error(`[AR] • Failed to apply migration fix:`, err) - migrationFixSuccess.value = false - } finally { - migrationFixCallbackModel.value?.show?.() - if (migrationFixSuccess.value === true) { - setTimeout(async () => { - await restartApp() - }, 3000) - } - } -} - diff --git a/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue b/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue index ec6806fc0..72474057c 100644 --- a/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue +++ b/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue @@ -25,7 +25,6 @@ import { type Project, type Version, } from '@modrinth/utils' -import ModalWrapper from '@/components/ui/modal/ModalWrapper.vue' import { defineMessages, useVIntl } from '@vintl/vintl' import dayjs from 'dayjs' import { computed, type ComputedRef, type Ref, ref, shallowRef, watch } from 'vue' @@ -44,11 +43,6 @@ import type { ManifestLoaderVersion, } from '../../../helpers/types' -import { initAuthlibPatching } from '@/helpers/utils.js' -const authLibPatchingModal = ref(null) -const isAuthLibPatchedSuccess = ref(false) -const isAuthLibPatching = ref(false) - const { handleError } = injectNotificationManager() const { formatMessage } = useVIntl() @@ -462,43 +456,9 @@ const messages = defineMessages({ defaultMessage: 'reinstall', }, }) - -async function handleInitAuthLibPatching(ismojang: boolean) { - isAuthLibPatching.value = true - let state = false - let instance_path = props.instance.loader_version != null ? props.instance.game_version + "-" + props.instance.loader_version : props.instance.game_version - try { - state = await initAuthlibPatching(instance_path, ismojang) - } catch (err) { - console.error(err) - } - isAuthLibPatching.value = false - isAuthLibPatchedSuccess.value = state - authLibPatchingModal.value.show() -} - - diff --git a/apps/app-frontend/src/components/ui/modal/AppSettingsModal.vue b/apps/app-frontend/src/components/ui/modal/AppSettingsModal.vue index c4dbed402..932540de9 100644 --- a/apps/app-frontend/src/components/ui/modal/AppSettingsModal.vue +++ b/apps/app-frontend/src/components/ui/modal/AppSettingsModal.vue @@ -3,9 +3,7 @@ import { CoffeeIcon, GameIcon, GaugeIcon, - AstralRinthLogo, - DownloadIcon, - SpinnerIcon, + ModrinthIcon, PaintbrushIcon, ReportIcon, SettingsIcon, @@ -25,24 +23,6 @@ import JavaSettings from '@/components/ui/settings/JavaSettings.vue' import PrivacySettings from '@/components/ui/settings/PrivacySettings.vue' import ResourceManagementSettings from '@/components/ui/settings/ResourceManagementSettings.vue' import { get, set } from '@/helpers/settings.ts' - -// [AR] Imports -import { installState, getRemote, updateState } from '@/helpers/update.js' - -const updateModalView = ref(null) -const updateRequestFailView = ref(null) - -const initUpdateModal = async () => { - updateModalView.value.show() -} - -const initDownload = async () => { - updateModalView.value.hide() - const result = await getRemote(true); - if (!result) { - updateRequestFailView.value.show() - } -} import { injectAppUpdateDownloadProgress } from '@/providers/download-progress.ts' import { useTheming } from '@/store/state' @@ -185,103 +165,19 @@ const messages = defineMessages({ }" @click="devModeCount" > - +
-

AstralRinth App {{ version }}

+

Modrinth App {{ version }}

macOS {{ osPlatform }} {{ osVersion }}

-
- - -
- - -
-
- The new version of the AstralRinth launcher is available! -

Your version is outdated. We recommend that you update to the latest version.

-
-
-

⚠️ Please, read this notice before initialize update process

-

- Before updating, make sure that you have saved and closed all running instances and made a backup copy of the launcher data such as - %appdata%\Roaming\AstralRinthApp on Windows or ~/Library/Application Support/AstralRinthApp on macOS. - Remember that the authors of the product are not responsible for the breakdown of - your files, so you should always make back up copies of them and keep them in a safe place. -

-
-
-

- ☁️ Latest release tag: - -
- ☁️ Latest release title: - -
- 💾 Installed & Running version: - v{{ version }} -

-
- - Checkout our git repository - -
- - -
-
-
- -
-
-

Error occurred

-

Unfortunately, the program was unable to download the file from our servers.

-

- Please try downloading it yourself from - Git - Astralium - if there are any updates available. -

-
- -
-

- Local AstralRinth: - v{{ version }} -

-
- -
- -
-
-
- - diff --git a/apps/app-frontend/src/components/ui/modal/ConfirmModalWrapper.vue b/apps/app-frontend/src/components/ui/modal/ConfirmModalWrapper.vue index fbae0e7d0..06e23d2e8 100644 --- a/apps/app-frontend/src/components/ui/modal/ConfirmModalWrapper.vue +++ b/apps/app-frontend/src/components/ui/modal/ConfirmModalWrapper.vue @@ -2,7 +2,7 @@ import { ConfirmModal } from '@modrinth/ui' import { ref } from 'vue' -// import { hide_ads_window, show_ads_window } from '@/helpers/ads.js' +import { hide_ads_window, show_ads_window } from '@/helpers/ads.js' import { useTheming } from '@/store/theme.ts' const themeStore = useTheming() @@ -38,10 +38,10 @@ const props = defineProps({ type: Boolean, default: true, }, - // showAdOnClose: { - // type: Boolean, - // default: true, - // }, + showAdOnClose: { + type: Boolean, + default: true, + }, markdown: { type: Boolean, default: true, @@ -53,7 +53,7 @@ const modal = ref(null) defineExpose({ show: () => { - // hide_ads_window() + hide_ads_window() modal.value.show() }, hide: () => { @@ -62,11 +62,11 @@ defineExpose({ }, }) -// function onModalHide() { -// if (props.showAdOnClose) { -// show_ads_window() -// } -// } +function onModalHide() { + if (props.showAdOnClose) { + show_ads_window() + } +} function proceed() { emit('proceed') diff --git a/apps/app-frontend/src/components/ui/modal/ModalWrapper.vue b/apps/app-frontend/src/components/ui/modal/ModalWrapper.vue index ce19cd5db..8f1f3db3f 100644 --- a/apps/app-frontend/src/components/ui/modal/ModalWrapper.vue +++ b/apps/app-frontend/src/components/ui/modal/ModalWrapper.vue @@ -2,7 +2,7 @@ import { NewModal as Modal } from '@modrinth/ui' import { useTemplateRef } from 'vue' -// import { hide_ads_window, show_ads_window } from '@/helpers/ads.js' +import { hide_ads_window, show_ads_window } from '@/helpers/ads.js' import { useTheming } from '@/store/theme.ts' const themeStore = useTheming() @@ -26,16 +26,16 @@ const props = defineProps({ return () => {} }, }, - // showAdOnClose: { - // type: Boolean, - // default: true, - // }, + showAdOnClose: { + type: Boolean, + default: true, + }, }) const modal = useTemplateRef('modal') defineExpose({ show: (e: MouseEvent) => { - // hide_ads_window() + hide_ads_window() modal.value?.show(e) }, hide: () => { @@ -45,9 +45,9 @@ defineExpose({ }) function onModalHide() { - // if (props.showAdOnClose) { - // show_ads_window() - // } + if (props.showAdOnClose) { + show_ads_window() + } props.onHide?.() } diff --git a/apps/app-frontend/src/components/ui/modal/ShareModalWrapper.vue b/apps/app-frontend/src/components/ui/modal/ShareModalWrapper.vue index aefea372e..9358ee908 100644 --- a/apps/app-frontend/src/components/ui/modal/ShareModalWrapper.vue +++ b/apps/app-frontend/src/components/ui/modal/ShareModalWrapper.vue @@ -2,7 +2,7 @@ import { ShareModal } from '@modrinth/ui' import { ref } from 'vue' -// import { hide_ads_window, show_ads_window } from '@/helpers/ads.js' +import { hide_ads_window, show_ads_window } from '@/helpers/ads.js' import { useTheming } from '@/store/theme.ts' const themeStore = useTheming() @@ -34,7 +34,7 @@ const modal = ref(null) defineExpose({ show: (passedContent) => { - // hide_ads_window() + hide_ads_window() modal.value.show(passedContent) }, hide: () => { @@ -43,9 +43,9 @@ defineExpose({ }, }) -// function onModalHide() { -// show_ads_window() -// } +function onModalHide() { + show_ads_window() +}