diff --git a/.github/ISSUE_TEMPLATE/1-app-bug.yml b/.github/ISSUE_TEMPLATE/1-app-bug.yml
deleted file mode 100644
index 7b32068e..00000000
--- a/.github/ISSUE_TEMPLATE/1-app-bug.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-name: 🎮 Modrinth App bug
-description: Report an issue in the Modrinth Launcher.
-labels: [bug, app]
-body:
-  - type: checkboxes
-    attributes:
-      label: Please confirm the following.
-      options:
-        - label: I checked the [existing issues](https://github.com/modrinth/code/issues) 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) -> About -> App version.
-    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
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/2-web-bug.yml b/.github/ISSUE_TEMPLATE/2-web-bug.yml
deleted file mode 100644
index 669225fc..00000000
--- a/.github/ISSUE_TEMPLATE/2-web-bug.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-name: 🌐 Website bug (modrinth.com)
-description: Report an issue on the Modrinth website.
-labels: [bug, frontend]
-body:
-  - type: checkboxes
-    attributes:
-      label: Please confirm the following.
-      options:
-        - label: I checked the [existing issues](https://github.com/modrinth/code/issues) 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
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/3-api-bug.yml b/.github/ISSUE_TEMPLATE/3-api-bug.yml
deleted file mode 100644
index f76a5f16..00000000
--- a/.github/ISSUE_TEMPLATE/3-api-bug.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-name: 🛠️ API issue (api.modrinth.com)
-description: Report an issue regarding the Modrinth API.
-labels: [bug, api]
-body:
-  - type: checkboxes
-    attributes:
-      label: Please confirm the following.
-      options:
-        - label: I checked the [existing issues](https://github.com/modrinth/code/issues) 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
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/4-feature-request.yml b/.github/ISSUE_TEMPLATE/4-feature-request.yml
deleted file mode 100644
index 42406120..00000000
--- a/.github/ISSUE_TEMPLATE/4-feature-request.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-name: 💡 Feature Request
-description: Suggest an idea
-labels: [enhancement]
-
-body:
-  - type: checkboxes
-    attributes:
-      label: Please confirm the following.
-      options:
-        - label: I checked the [existing issues](https://github.com/modrinth/code/issues) 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:
-        - App
-        - Website
-        - API
-  - 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
\ No newline at end of file
diff --git a/.github/workflows/app-release.yml b/.github/workflows/app-release.yml
index 9954a0d5..dfff2656 100644
--- a/.github/workflows/app-release.yml
+++ b/.github/workflows/app-release.yml
@@ -1,9 +1,10 @@
-name: 'Modrinth App build'
+name: 'AstralRinth App build'
 on:
   push:
     branches:
-      - main
+      - feature*
     tags:
+      - 'build*'
       - 'v*'
     paths:
       - .github/workflows/app-release.yml
@@ -21,7 +22,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        platform: [macos-latest, windows-latest, ubuntu-22.04]
+        platform: [macos-latest, windows-latest, ubuntu-latest]
 
     runs-on: ${{ matrix.platform }}
 
@@ -105,13 +106,6 @@ jobs:
         if: startsWith(matrix.platform, 'macos')
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-          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 }}
 
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index cea7e159..00000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,70 +0,0 @@
-name: CI
-
-on:
-  push:
-    branches: ["main"]
-  pull_request:
-    types: [opened, synchronize]
-  merge_group:
-    types: [ checks_requested ]
-
-jobs:
-  build:
-    name: Build, Test, and Lint
-    runs-on: ubuntu-22.04
-
-    steps:
-      - name: Check out code
-        uses: actions/checkout@v4
-        with:
-          fetch-depth: 2
-
-      - name: Cache turbo build setup
-        uses: actions/cache@v4
-        with:
-          path: .turbo
-          key: ${{ runner.os }}-turbo-${{ github.sha }}
-          restore-keys: |
-            ${{ runner.os }}-turbo-
-
-      - name: Install build dependencies
-        run: |
-          sudo apt-get update
-          sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
-
-      - name: Setup Node.JS environment
-        uses: actions/setup-node@v4
-        with:
-          node-version: 20
-
-      - name: Install pnpm via corepack
-        shell: bash
-        run: |
-          corepack enable
-          corepack prepare --activate
-
-      - name: Get pnpm store directory
-        id: pnpm-cache
-        shell: bash
-        run: |
-          echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
-
-      - uses: actions/cache@v4
-        name: Setup pnpm cache
-        with:
-          path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
-          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
-          restore-keys: |
-            ${{ runner.os }}-pnpm-store-
-
-      - name: Install dependencies
-        run: pnpm install
-
-      - name: Build
-        run: pnpm build
-
-      - name: Lint
-        run: pnpm lint
-
-      - name: Test
-        run: pnpm test
diff --git a/.github/workflows/frontend-pages.yml b/.github/workflows/frontend-pages.yml
deleted file mode 100644
index ce9b0664..00000000
--- a/.github/workflows/frontend-pages.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-name: Deploy frontend
-
-on: push
-
-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'
-          githubToken: ${{ secrets.GITHUB_TOKEN }}
-          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/Cargo.lock b/Cargo.lock
index 321453b4..dc5259d0 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -17,6 +17,12 @@ version = "1.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
+[[package]]
+name = "adler2"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+
 [[package]]
 name = "aes"
 version = "0.8.4"
@@ -248,7 +254,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -283,7 +289,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -373,7 +379,7 @@ dependencies = [
  "cc",
  "cfg-if",
  "libc",
- "miniz_oxide",
+ "miniz_oxide 0.7.4",
  "object",
  "rustc-demangle",
 ]
@@ -494,9 +500,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
 
 [[package]]
 name = "bytemuck"
-version = "1.17.0"
+version = "1.17.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31"
+checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2"
 
 [[package]]
 name = "byteorder"
@@ -603,9 +609,9 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.1.13"
+version = "1.1.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48"
+checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6"
 dependencies = [
  "jobserver",
  "libc",
@@ -1008,7 +1014,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
 dependencies = [
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1018,7 +1024,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f"
 dependencies = [
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1055,7 +1061,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "strsim",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1066,7 +1072,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
 dependencies = [
  "darling_core",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1136,7 +1142,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1149,7 +1155,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "rustc_version",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1232,7 +1238,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1255,7 +1261,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1411,7 +1417,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1474,9 +1480,9 @@ dependencies = [
 
 [[package]]
 name = "fastrand"
-version = "2.1.0"
+version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
+checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6"
 
 [[package]]
 name = "fdeflate"
@@ -1509,9 +1515,9 @@ dependencies = [
 
 [[package]]
 name = "filetime"
-version = "0.2.24"
+version = "0.2.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550"
+checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
 dependencies = [
  "cfg-if",
  "libc",
@@ -1521,12 +1527,12 @@ dependencies = [
 
 [[package]]
 name = "flate2"
-version = "1.0.31"
+version = "1.0.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920"
+checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253"
 dependencies = [
  "crc32fast",
- "miniz_oxide",
+ "miniz_oxide 0.8.0",
 ]
 
 [[package]]
@@ -1582,7 +1588,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1705,7 +1711,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -1974,7 +1980,7 @@ dependencies = [
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -2064,14 +2070,14 @@ dependencies = [
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
 name = "h2"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab"
+checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205"
 dependencies = [
  "atomic-waker",
  "bytes",
@@ -2079,7 +2085,7 @@ dependencies = [
  "futures-core",
  "futures-sink",
  "http",
- "indexmap 2.4.0",
+ "indexmap 2.5.0",
  "slab",
  "tokio",
  "tokio-util",
@@ -2364,9 +2370,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.4.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c"
+checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5"
 dependencies = [
  "equivalent",
  "hashbrown 0.14.5",
@@ -2644,9 +2650,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.156"
+version = "0.2.158"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a"
+checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439"
 
 [[package]]
 name = "libdbus-sys"
@@ -2687,9 +2693,9 @@ dependencies = [
 
 [[package]]
 name = "libsqlite3-sys"
-version = "0.28.0"
+version = "0.30.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c10584274047cb335c23d3e61bcef8e323adae7c5c8c760540f73610177fc3f"
+checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
 dependencies = [
  "cc",
  "pkg-config",
@@ -2816,9 +2822,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "minisign-verify"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881"
+checksum = "a05b5d0594e0cb1ad8cee3373018d2b84e25905dc75b2468114cc9a8e86cfc20"
 
 [[package]]
 name = "miniz_oxide"
@@ -2830,6 +2836,15 @@ dependencies = [
  "simd-adler32",
 ]
 
+[[package]]
+name = "miniz_oxide"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
+dependencies = [
+ "adler2",
+]
+
 [[package]]
 name = "mio"
 version = "0.8.11"
@@ -2856,9 +2871,9 @@ dependencies = [
 
 [[package]]
 name = "muda"
-version = "0.14.0"
+version = "0.14.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86c410a9d21523a819e84881603fbc00331c8001eb899964952046671deddb9c"
+checksum = "ba8ac4080fb1e097c2c22acae467e46e4da72d941f02e82b67a87a2a89fa38b1"
 dependencies = [
  "cocoa 0.26.0",
  "crossbeam-channel",
@@ -3103,10 +3118,10 @@ version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
 dependencies = [
- "proc-macro-crate 3.1.0",
+ "proc-macro-crate 3.2.0",
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -3256,9 +3271,9 @@ dependencies = [
 
 [[package]]
 name = "object"
-version = "0.36.3"
+version = "0.36.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9"
+checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a"
 dependencies = [
  "memchr",
 ]
@@ -3316,7 +3331,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -3620,7 +3635,7 @@ dependencies = [
  "phf_shared 0.11.2",
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -3667,7 +3682,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -3727,7 +3742,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016"
 dependencies = [
  "base64 0.22.1",
- "indexmap 2.4.0",
+ "indexmap 2.5.0",
  "quick-xml",
  "serde",
  "time",
@@ -3743,7 +3758,7 @@ dependencies = [
  "crc32fast",
  "fdeflate",
  "flate2",
- "miniz_oxide",
+ "miniz_oxide 0.7.4",
 ]
 
 [[package]]
@@ -3818,11 +3833,11 @@ dependencies = [
 
 [[package]]
 name = "proc-macro-crate"
-version = "3.1.0"
+version = "3.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
+checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b"
 dependencies = [
- "toml_edit 0.21.1",
+ "toml_edit 0.22.20",
 ]
 
 [[package]]
@@ -3923,9 +3938,9 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.36"
+version = "1.0.37"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
 dependencies = [
  "proc-macro2",
 ]
@@ -4063,9 +4078,9 @@ dependencies = [
 
 [[package]]
 name = "redox_users"
-version = "0.4.5"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891"
+checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
 dependencies = [
  "getrandom 0.2.15",
  "libredox",
@@ -4118,9 +4133,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
 
 [[package]]
 name = "reqwest"
-version = "0.12.5"
+version = "0.12.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37"
+checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63"
 dependencies = [
  "async-compression",
  "base64 0.22.1",
@@ -4164,7 +4179,7 @@ dependencies = [
  "wasm-streams",
  "web-sys",
  "webpki-roots",
- "winreg",
+ "windows-registry",
 ]
 
 [[package]]
@@ -4267,18 +4282,18 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
 
 [[package]]
 name = "rustc_version"
-version = "0.4.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
 dependencies = [
  "semver",
 ]
 
 [[package]]
 name = "rustix"
-version = "0.38.34"
+version = "0.38.35"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
+checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f"
 dependencies = [
  "bitflags 2.6.0",
  "errno",
@@ -4319,9 +4334,9 @@ checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0"
 
 [[package]]
 name = "rustls-webpki"
-version = "0.102.6"
+version = "0.102.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e"
+checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56"
 dependencies = [
  "ring",
  "rustls-pki-types",
@@ -4381,7 +4396,7 @@ dependencies = [
  "proc-macro2",
  "quote",
  "serde_derive_internals",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -4464,9 +4479,9 @@ dependencies = [
 
 [[package]]
 name = "serde"
-version = "1.0.208"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2"
+checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09"
 dependencies = [
  "serde_derive",
 ]
@@ -4484,13 +4499,13 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.208"
+version = "1.0.209"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf"
+checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -4501,7 +4516,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -4517,9 +4532,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.125"
+version = "1.0.127"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed"
+checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad"
 dependencies = [
  "itoa 1.0.11",
  "memchr",
@@ -4535,7 +4550,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -4569,7 +4584,7 @@ dependencies = [
  "chrono",
  "hex",
  "indexmap 1.9.3",
- "indexmap 2.4.0",
+ "indexmap 2.5.0",
  "serde",
  "serde_derive",
  "serde_json",
@@ -4586,7 +4601,7 @@ dependencies = [
  "darling",
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -4813,9 +4828,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27144619c6e5802f1380337a209d2ac1c431002dd74c6e60aebff3c506dc4f0c"
+checksum = "fcfa89bea9500db4a0d038513d7a060566bfc51d46d1c014847049a45cce85e8"
 dependencies = [
  "sqlx-core",
  "sqlx-macros",
@@ -4826,9 +4841,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-core"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a999083c1af5b5d6c071d34a708a19ba3e02106ad82ef7bbd69f5e48266b613b"
+checksum = "d06e2f2bd861719b1f3f0c7dbe1d80c30bf59e76cf019f07d9014ed7eefb8e08"
 dependencies = [
  "atoi",
  "byteorder",
@@ -4845,7 +4860,7 @@ dependencies = [
  "hashbrown 0.14.5",
  "hashlink",
  "hex",
- "indexmap 2.4.0",
+ "indexmap 2.5.0",
  "log",
  "memchr",
  "once_cell",
@@ -4865,22 +4880,22 @@ dependencies = [
 
 [[package]]
 name = "sqlx-macros"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a23217eb7d86c584b8cbe0337b9eacf12ab76fe7673c513141ec42565698bb88"
+checksum = "2f998a9defdbd48ed005a89362bd40dd2117502f15294f61c8d47034107dbbdc"
 dependencies = [
  "proc-macro2",
  "quote",
  "sqlx-core",
  "sqlx-macros-core",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
 name = "sqlx-macros-core"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a099220ae541c5db479c6424bdf1b200987934033c2584f79a0e1693601e776"
+checksum = "3d100558134176a2629d46cec0c8891ba0be8910f7896abfdb75ef4ab6f4e7ce"
 dependencies = [
  "dotenvy",
  "either",
@@ -4896,7 +4911,7 @@ dependencies = [
  "sqlx-mysql",
  "sqlx-postgres",
  "sqlx-sqlite",
- "syn 2.0.74",
+ "syn 2.0.77",
  "tempfile",
  "tokio",
  "url",
@@ -4904,9 +4919,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-mysql"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5afe4c38a9b417b6a9a5eeffe7235d0a106716495536e7727d1c7f4b1ff3eba6"
+checksum = "936cac0ab331b14cb3921c62156d913e4c15b74fb6ec0f3146bd4ef6e4fb3c12"
 dependencies = [
  "atoi",
  "base64 0.22.1",
@@ -4946,9 +4961,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-postgres"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1dbb157e65f10dbe01f729339c06d239120221c9ad9fa0ba8408c4cc18ecf21"
+checksum = "9734dbce698c67ecf67c442f768a5e90a49b2a4d61a9f1d59f73874bd4cf0710"
 dependencies = [
  "atoi",
  "base64 0.22.1",
@@ -4984,9 +4999,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-sqlite"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b2cdd83c008a622d94499c0006d8ee5f821f36c89b7d625c900e5dc30b5c5ee"
+checksum = "a75b419c3c1b1697833dd927bdc4c6545a620bc1bbafabd44e1efbe9afcd337e"
 dependencies = [
  "atoi",
  "flume",
@@ -5099,9 +5114,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.74"
+version = "2.0.77"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7"
+checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -5113,6 +5128,9 @@ name = "sync_wrapper"
 version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
+dependencies = [
+ "futures-core",
+]
 
 [[package]]
 name = "sys-info"
@@ -5150,20 +5168,20 @@ dependencies = [
 
 [[package]]
 name = "system-configuration"
-version = "0.5.1"
+version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
 dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.6.0",
  "core-foundation 0.9.4",
  "system-configuration-sys",
 ]
 
 [[package]]
 name = "system-configuration-sys"
-version = "0.5.0"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
 dependencies = [
  "core-foundation-sys",
  "libc",
@@ -5223,13 +5241,13 @@ dependencies = [
 
 [[package]]
 name = "tao-macros"
-version = "0.1.2"
+version = "0.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec114582505d158b669b136e6851f85840c109819d77c42bb7c0709f727d18c2"
+checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -5341,7 +5359,7 @@ dependencies = [
  "serde",
  "serde_json",
  "sha2",
- "syn 2.0.74",
+ "syn 2.0.77",
  "tauri-utils",
  "thiserror",
  "time",
@@ -5359,7 +5377,7 @@ dependencies = [
  "heck 0.5.0",
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
  "tauri-codegen",
  "tauri-utils",
 ]
@@ -5383,9 +5401,9 @@ dependencies = [
 
 [[package]]
 name = "tauri-plugin-deep-link"
-version = "2.0.0-rc.1"
+version = "2.0.0-rc.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c8e169df47aa4892184c812cc9753a486328835d38d2269a4b062179698a242"
+checksum = "a6b5660955c91ab25365613295788ce840c4e07b810e65436720b1a194cc72c2"
 dependencies = [
  "dunce",
  "log",
@@ -5403,9 +5421,9 @@ dependencies = [
 
 [[package]]
 name = "tauri-plugin-dialog"
-version = "2.0.0-rc.1"
+version = "2.0.0-rc.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcf99017391fdc40b6c8ae0dae8d970cc8151a8177d48b8805f320f52cac0e3c"
+checksum = "aa8bd381f75c47687f41fb603f67fdd99a1af377da22d03d8fb959d2481845c1"
 dependencies = [
  "dunce",
  "log",
@@ -5417,13 +5435,14 @@ dependencies = [
  "tauri-plugin",
  "tauri-plugin-fs",
  "thiserror",
+ "url",
 ]
 
 [[package]]
 name = "tauri-plugin-fs"
-version = "2.0.0-rc.0"
+version = "2.0.0-rc.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5df6b25b1f2b7b61565e66c4dbee9eb39e5635d2a763206e380e07cc3f601a67"
+checksum = "694a746b0e0c1d318198fabf4957800c42fb4b705e866e0eed7ec21476ef88db"
 dependencies = [
  "anyhow",
  "glob",
@@ -5440,9 +5459,9 @@ dependencies = [
 
 [[package]]
 name = "tauri-plugin-os"
-version = "2.0.0-rc.0"
+version = "2.0.0-rc.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b54cfeb26356822d3be3db4282041b03552f573a694b6b28aded7d95c62a039"
+checksum = "ebc4ee761edd532fce2232453e9c8e0f7d9c0b6fe125c4b90b3eb4362ee84224"
 dependencies = [
  "gethostname",
  "log",
@@ -5458,9 +5477,9 @@ dependencies = [
 
 [[package]]
 name = "tauri-plugin-shell"
-version = "2.0.0-rc.2"
+version = "2.0.0-rc.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46315cccdbc7686bfb9f17e4aab757e5bb50118bc42e52784cae3917c59ac4d7"
+checksum = "e83800ddf78b820172efb5ed7310344e8e4f97fd30cd8237a3f20c12a79eb136"
 dependencies = [
  "encoding_rs",
  "log",
@@ -5494,9 +5513,9 @@ dependencies = [
 
 [[package]]
 name = "tauri-plugin-updater"
-version = "2.0.0-rc.1"
+version = "2.0.0-rc.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8dfd104b50e1c17998fc131edd21ced948a9605bac7eb6827f94e099a644f924"
+checksum = "f7048854b4271f3bc58ee850f0582f8d9bb0190118afa8397f36fc260daaa68b"
 dependencies = [
  "base64 0.22.1",
  "dirs",
@@ -5523,9 +5542,9 @@ dependencies = [
 
 [[package]]
 name = "tauri-plugin-window-state"
-version = "2.0.0-rc.1"
+version = "2.0.0-rc.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb6839228cbd225b95681c766cc51113e9dad62c4b3f6ebb102234413ba85ee2"
+checksum = "ba56bcec4b7a1601cf3136c9a3a98f77036b7e1a67564788c5ccd051035d028a"
 dependencies = [
  "bitflags 2.6.0",
  "log",
@@ -5781,7 +5800,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -5851,9 +5870,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.39.3"
+version = "1.40.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5"
+checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998"
 dependencies = [
  "backtrace",
  "bytes",
@@ -5876,7 +5895,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -5964,7 +5983,7 @@ version = "0.19.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
 dependencies = [
- "indexmap 2.4.0",
+ "indexmap 2.5.0",
  "serde",
  "serde_spanned",
  "toml_datetime",
@@ -5977,18 +5996,7 @@ version = "0.20.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
 dependencies = [
- "indexmap 2.4.0",
- "toml_datetime",
- "winnow 0.5.40",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.21.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
-dependencies = [
- "indexmap 2.4.0",
+ "indexmap 2.5.0",
  "toml_datetime",
  "winnow 0.5.40",
 ]
@@ -5999,7 +6007,7 @@ version = "0.22.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d"
 dependencies = [
- "indexmap 2.4.0",
+ "indexmap 2.5.0",
  "serde",
  "serde_spanned",
  "toml_datetime",
@@ -6053,7 +6061,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -6246,9 +6254,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-properties"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291"
+checksum = "52ea75f83c0137a9b98608359a5f1af8144876eb67bcb1ce837368e906a9f524"
 
 [[package]]
 name = "unicode-segmentation"
@@ -6449,7 +6457,7 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
  "wasm-bindgen-shared",
 ]
 
@@ -6483,7 +6491,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -6580,9 +6588,9 @@ dependencies = [
 
 [[package]]
 name = "webpki-roots"
-version = "0.26.3"
+version = "0.26.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd"
+checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a"
 dependencies = [
  "rustls-pki-types",
 ]
@@ -6609,7 +6617,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -6771,7 +6779,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -6782,7 +6790,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -7192,10 +7200,10 @@ version = "4.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e"
 dependencies = [
- "proc-macro-crate 3.1.0",
+ "proc-macro-crate 3.2.0",
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
  "zvariant_utils",
 ]
 
@@ -7228,7 +7236,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
 
 [[package]]
@@ -7267,7 +7275,7 @@ dependencies = [
  "crc32fast",
  "crossbeam-utils",
  "displaydoc",
- "indexmap 2.4.0",
+ "indexmap 2.5.0",
  "memchr",
  "thiserror",
 ]
@@ -7339,10 +7347,10 @@ version = "4.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449"
 dependencies = [
- "proc-macro-crate 3.1.0",
+ "proc-macro-crate 3.2.0",
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
  "zvariant_utils",
 ]
 
@@ -7354,5 +7362,5 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.74",
+ "syn 2.0.77",
 ]
diff --git a/README.md b/README.md
index 9bf4cc6a..3fbe3766 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,64 @@
-# ![Modrinth Monorepo Cover](/.github/assets/monorepo_cover.png)
-
-![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)
-
-## Modrinth Monorepo
-
-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).
-
-## Development
-
-This repository contains two primary packages. For detailed development information, please refer to their respective READMEs:
-
-- [Web Interface](apps/frontend/README.md)
-- [Desktop App](apps/app/README.md)
-
-## Contributing
-
-We welcome contributions! Before submitting any contributions, please read our [contributing guidelines](https://support.modrinth.com/en/articles/8802215-contributing-to-modrinth).
-
-If you plan to fork this repository for your own purposes, please review our [copying guidelines](COPYING.md).
-
-## Security
-
-If you discover a security vulnerability within our codebase, please follow our [responsible disclosure guidelines](https://modrinth.com/legal/security).
-
-## Support
-
-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).
-
-## License
-
-All packages in this repository are licensed under their respective licenses. Refer to the LICENSE file in each package for more information.
+![ar_logo](https://github.com/DIDIRUS4/AstralRinth/assets/77334306/43d4acb0-546c-4dff-834d-83fb2ba6ad6f)
+
+# AR • Theseus core Empowering Your Minecraft Adventure with AstralRinth • Fork of Modrinth
+Welcome to AR • Fork of Modrinth, the ultimate game launcher designed to enhance your Minecraft experience through the Modrinth platform and their API. Whether you're a command-line connoisseur, a graphical interface enthusiast, or a developer integrating Modrinth projects, Theseus core is your gateway to a new level of Minecraft gaming.
+
+# AR • About software 🌌
+Introducing AstralRinth, a specialized variant of Theseus dedicated to implementing offline authorization for an even more flexible and user-centric Minecraft Modrinth experience. Roam the Minecraft realms without the constraints of online authentication, thanks to AstralRinth.
+
+For seekers of a visually intuitive experience, Theseus-GUI delivers a sleek and user-friendly interface to explore, manage, and play Minecraft with Modrinth projects. Uncover the full potential of Modrinth effortlessly with Theseus-GUI.
+
+# AR • Unlocking Minecraft's Boundless Horizon
+
+Dive into the extraordinary world of AstralRinth, a fork of the original project with a unique focus on providing a free trial experience for Minecraft, all without the need for a license. Currently boasting:
+
+# Install instructions
+- To install our application, you need to download a file for your operating system from our available releases or development builds • [Download variants here](https://github.com/DIDIRUS4/AstralRinth/releases)
+- After you have downloaded the required executable file or archive, then open it
+
+### Available file extensions (Also used in Auto-updater)
+- `.msi` format for Windows OS system _(Supported popular latest versions of Microsoft Windows)_
+- `.dmg` format for MacOS system _(Works on Macos Ventura / Sonoma, but it should be works on older OS builds)_
+- `.deb` format for Linux OS systems _(Since there are quite a few distributions, we do not guarantee 
+
+### Additional information about installation subject
+- Builds in releases that are signed with the prefix `DEV_BUILD__{name when building the project}` means that this build is for development and may contain errors, we recommend downloading the archives. `zip`, as they are the final versions.
+- Auto-updating takes place through parsing special versions from releases, so we also distribute clean types of `.msi, .dmg and .deb`
+
+## Features
+### Featured enhancement in AR
+- AstralRinth offers a range of authorization options, giving users the flexibility to log in with valid licenses or even a pirate account without auth credentials breaks (_Unlike MultiMC Cracked and similar software_). Experience Minecraft on your terms, breaking free from traditional licensing constraints (_Popular in Russian Federation_).
+### Easy to use
+- Using the launcher is intuitive, any user can figure it out.
+### Update notifies
+- We have implemented notifications about the release of new updates on our Github. The launcher can also download them for you and try to install them.
+### Additional Enhancements in AR:
+- Custom .SVG vectors for a personalized touch.
+- Improved compatibility for both pirate and licensed accounts.
+- Beautiful Discord RPC with random messages while playing, along with an in-game timer and AFK counter.
+- Forced disabling of statistics collection (modrinch metrics) with a hard patch from AstralRinth, ensuring it remains deactivated regardless of the configuration setting.
+- Removal of advertisements from all launcher categories.
+- Visual fixes and enhancements for an improved user experience.
+- Optimization of packages (archives).
+- Automatic updates, facilitating the seamless download of the latest version.
+- And more...
+## Getting Started
+To begin your AstralRinth adventure, follow these steps:
+1. **Download your OS version in releases** • [Download variants here](https://github.com/DIDIRUS4/AstralRinth/releases)
+
+2. **Select Your Language:** Choose between available languages in settings by configuring your language preferences.
+
+3. **Authentication:** Enjoy the freedom to log in using a valid license or, for testing purposes, explore AstralRinth with a pirate account.
+
+4. **Launch Minecraft:** Fire up Minecraft through AstralRinth and explore the vast landscapes and adventures that await you.
+# Disclaimer
+**Notice:** 
+- AstralRinth is a project intended for experimentation and educational purposes only. It does not endorse or support piracy, and users are encouraged to obtain valid licenses for a fully-supported Minecraft experience.
+
+- Users are reminded to respect licensing agreements and support the developers of Minecraft.
+
+# Support our Project (Crypto Wallets)
+- BTC (Telegram): 15aYoq3eSop2qKt5YMyB6YrmhScccJVNKp
+- USDT TRC20 (Telegram): TGwr98NV8c9iJweaDXX3CEthn3sYmMJiDR
+- TONCOIN (Telegram): UQDO0i-91bIlf1MdRM1iNOTITdsFpApDa1adX7xDpMptiJqq
+- TONCOIN Space (Telegram): UQCG0a2fm5YzKzIm6E8M3_CqBQ5Q1RT95MU60c9UPjKn_NEN
diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json
index 5fbc35e9..c5283845 100644
--- a/apps/app-frontend/package.json
+++ b/apps/app-frontend/package.json
@@ -1,7 +1,8 @@
 {
   "name": "@modrinth/app-frontend",
   "private": true,
-  "version": "0.8.5",
+  "version": "0.8.501",
+  "development_build": true,
   "type": "module",
   "scripts": {
     "dev": "vite",
diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue
index f5cd667b..c74d4d5b 100644
--- a/apps/app-frontend/src/App.vue
+++ b/apps/app-frontend/src/App.vue
@@ -8,7 +8,7 @@ import {
   PlusIcon,
   SettingsIcon,
   XIcon,
-  DownloadIcon,
+  // DownloadIcon,
 } from '@modrinth/assets'
 import { Button, Notifications } from '@modrinth/ui'
 import { useLoading, useTheming } from '@/store/state'
@@ -24,7 +24,7 @@ import { handleError, useNotifications } from '@/store/notifications.js'
 import { command_listener, warning_listener } from '@/helpers/events.js'
 import { MinimizeIcon, MaximizeIcon } from '@/assets/icons'
 import { type } from '@tauri-apps/plugin-os'
-import { isDev, getOS, restartApp } from '@/helpers/utils.js'
+import { isDev, getOS } from '@/helpers/utils.js'
 import { initAnalytics, debugAnalytics, optOutAnalytics, trackEvent } from '@/helpers/analytics'
 import { getCurrentWindow } from '@tauri-apps/api/window'
 import { getVersion } from '@tauri-apps/api/app'
@@ -42,7 +42,7 @@ import { get_opening_command, initialize_state } from '@/helpers/state'
 import { saveWindowState, StateFlags } from '@tauri-apps/plugin-window-state'
 import { renderString } from '@modrinth/utils'
 import { useFetch } from '@/helpers/fetch.js'
-import { check } from '@tauri-apps/plugin-updater'
+// import { check } from '@tauri-apps/plugin-updater'
 
 const themeStore = useTheming()
 
@@ -99,6 +99,7 @@ async function setupApp() {
 
   initAnalytics()
   if (!telemetry) {
+    console.info("[AstralRinth] Telemetry disabled by default (Hard patched in code).")
     optOutAnalytics()
   }
   if (dev) debugAnalytics()
@@ -121,18 +122,18 @@ async function setupApp() {
     }),
   )
 
-  useFetch(
-    `https://api.modrinth.com/appCriticalAnnouncement.json?version=${version}`,
-    'criticalAnnouncements',
-    true,
-  ).then((res) => {
-    if (res && res.header && res.body) {
-      criticalErrorMessage.value = res
-    }
-  })
+  // useFetch(
+  //   `https://api.modrinth.com/appCriticalAnnouncement.json?version=${version}`,
+  //   'criticalAnnouncements',
+  //   true,
+  // ).then((res) => {
+  //   if (res && res.header && res.body) {
+  //     criticalErrorMessage.value = res
+  //   }
+  // })
 
   get_opening_command().then(handleCommand)
-  checkUpdates()
+  // checkUpdates()
 }
 
 const stateFailed = ref(false)
@@ -243,19 +244,19 @@ async function handleCommand(e) {
   }
 }
 
-const updateAvailable = ref(false)
-async function checkUpdates() {
-  const update = await check()
-  console.log(update)
-  updateAvailable.value = !!update
-
-  setTimeout(
-    () => {
-      checkUpdates()
-    },
-    5 * 1000 * 60,
-  )
-}
+// const updateAvailable = ref(false)
+// async function checkUpdates() {
+//   const update = await check()
+//   console.log(update)
+//   updateAvailable.value = !!update
+
+//   setTimeout(
+//     () => {
+//       checkUpdates()
+//     },
+//     5 * 1000 * 60,
+//   )
+// }
 </script>
 
 <template>
@@ -289,14 +290,14 @@ async function checkUpdates() {
         </div>
       </div>
       <div class="settings pages-list">
-        <button
+        <!-- <button
           v-if="updateAvailable"
           v-tooltip="'Install update'"
           class="btn btn-outline btn-primary icon-only collapsed-button"
           @click="restartApp()"
         >
           <DownloadIcon />
-        </button>
+        </button> -->
         <Button
           v-tooltip="'Create profile'"
           class="sleek-primary collapsed-button"
diff --git a/apps/app-frontend/src/assets/icons/index.js b/apps/app-frontend/src/assets/icons/index.js
index 185e498b..1b8ac0df 100644
--- a/apps/app-frontend/src/assets/icons/index.js
+++ b/apps/app-frontend/src/assets/icons/index.js
@@ -12,3 +12,6 @@ export { default as NewInstanceImage } from './new-instance.svg'
 export { default as MenuIcon } from './menu.svg'
 export { default as BugIcon } from './bug.svg'
 export { default as ChatIcon } from './messages-square.svg'
+export { default as Pirate } from './pirate.svg'
+export { default as Microsoft } from './microsoft.svg'
+export { default as PirateShip } from './pirate-ship.svg'
diff --git a/apps/app-frontend/src/assets/icons/microsoft.svg b/apps/app-frontend/src/assets/icons/microsoft.svg
new file mode 100644
index 00000000..d7b84e94
--- /dev/null
+++ b/apps/app-frontend/src/assets/icons/microsoft.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="10mm" height="10mm" viewBox="0 0 10 10" version="1.1" id="svg26662" inkscape:version="1.2.2 (732a01da63, 2022-12-09)" sodipodi:docname="lic.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+   <sodipodi:namedview id="namedview26664" pagecolor="#505050" bordercolor="#eeeeee" borderopacity="1" inkscape:showpageshadow="0" inkscape:pageopacity="0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#505050" inkscape:document-units="mm" showgrid="false" inkscape:zoom="14.638496" inkscape:cx="17.112414" inkscape:cy="34.258984" inkscape:window-width="1488" inkscape:window-height="1230" inkscape:window-x="2794" inkscape:window-y="123" inkscape:window-maximized="0" inkscape:current-layer="layer1" />
+   <defs id="defs26659" />
+   <g inkscape:label="Слой 1" inkscape:groupmode="layer" id="layer1">
+      <g id="g26657" transform="matrix(3.9940568,0,0,3.954914,-1082.6556,16143.384)">
+         <path id="path26649" style="fill:#05a6f0;fill-opacity:1;stroke-width:0.18168;stroke-miterlimit:5.8;paint-order:fill markers stroke" d="m 271.06666,-4080.4646 v 0.8986 c 0,0.1289 0.0997,0.2334 0.22634,0.2398 h 0.91261 v -1.1384 z" />
+         <path id="path26651" style="fill:#ffba08;fill-opacity:1;stroke-width:0.18168;stroke-miterlimit:5.8;paint-order:fill markers stroke" d="m 272.43195,-4080.4646 v 1.1384 h 0.89917 0.0124 c 0.12669,-0.01 0.22686,-0.1109 0.22686,-0.2398 v -0.8986 z" />
+         <path id="path26653" style="fill:#e25127;fill-opacity:1;stroke-width:0.18168;stroke-miterlimit:5.8;paint-order:fill markers stroke" d="m 271.3054,-4081.8547 c -0.13246,0 -0.23874,0.1073 -0.23874,0.2403 v 0.8955 h 1.13895 v -1.1358 z" />
+         <path id="path26655" style="fill:#81bc06;fill-opacity:1;stroke:none;stroke-width:0.184849;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:5.8;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" d="m 272.43195,-4081.8547 v 1.1358 h 1.13843 v -0.8955 c 0,-0.133 -0.1068,-0.2403 -0.23926,-0.2403 z" />
+      </g>
+   </g>
+</svg>
diff --git a/apps/app-frontend/src/assets/icons/pirate-ship.svg b/apps/app-frontend/src/assets/icons/pirate-ship.svg
new file mode 100644
index 00000000..26857b89
--- /dev/null
+++ b/apps/app-frontend/src/assets/icons/pirate-ship.svg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<svg height="800px" width="800px" version="1.1" id="Layer_1"
+	xmlns="http://www.w3.org/2000/svg"
+	xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 511.672 511.672" xml:space="preserve">
+	<path style="fill:#ED5564;" d="M227.674,44.901c0,0,0.047-0.031,0.141-0.109c-0.031,0.031-3.342,2.437-9.088,3.514
+	c-7.745,1.437-16.208-0.109-25.14-4.591c-31.386-15.771-68.175-0.968-69.721-0.344l0.016,0.062c-3.88,1.593-6.621,5.403-6.621,9.869
+	c0,5.887,4.771,10.649,10.657,10.649c1.694,0,3.295-0.406,4.716-1.109c4.466-1.624,30.816-10.416,51.381-0.078
+	c10.954,5.497,20.706,7.371,28.919,7.371c17.028,0,27.42-8.073,28.044-8.573L227.674,44.901z"/>
+	<g>
+		<path style="fill:#7F4545;" d="M234.514,31.973c-5.887,0-10.657,4.778-10.657,10.665v351.704h21.322V42.638
+		C245.179,36.751,240.401,31.973,234.514,31.973z"/>
+		<path style="fill:#7F4545;" d="M511.672,319.655c0-5.887-4.777-10.665-10.648-10.665c-1.031,0-2.016,0.156-2.951,0.422l0,0
+		l-0.234,0.062l0,0l-108.213,31.073l5.871,20.487l108.463-31.137l0,0C508.408,328.618,511.672,324.512,511.672,319.655z"/>
+	</g>
+	<path style="fill:#A85D5D;" d="M10.689,308.99l99.725,33.385c0,0,39.116,41.239,124.1,41.239c85,0,106.611-29.138,106.611-29.138
+	l85.258-24.484c9.588,160.21-122.656,149.561-122.656,149.561H115.294c-86.171-5.996-73.633-88.568-73.633-88.568l-13.187-9.728
+	l-4.208-18.021L0,351.635L10.689,308.99z"/>
+	<path style="fill:#965353;" d="M426.664,335.317c-5.871,132.337-122.938,122.905-122.938,122.905H115.294
+	c-57.409-3.981-71.001-41.973-73.68-66.879c-0.765,5.84-9.205,82.432,73.68,88.209h188.433
+	C303.727,479.553,433.004,489.968,426.664,335.317z"/>
+	<g>
+		<path style="fill:#434A54;" d="M277.166,415.594c0,5.887,4.763,10.649,10.649,10.649c5.888,0,10.649-4.763,10.649-10.649
+		s-4.762-10.665-10.649-10.665C281.929,404.929,277.166,409.707,277.166,415.594z"/>
+		<path style="fill:#434A54;" d="M234.514,415.594c0,5.887,4.778,10.649,10.665,10.649s10.657-4.763,10.657-10.649
+		s-4.77-10.665-10.657-10.665S234.514,409.707,234.514,415.594z"/>
+		<path style="fill:#434A54;" d="M191.877,415.594c0,5.887,4.771,10.649,10.657,10.649s10.665-4.763,10.665-10.649
+		s-4.778-10.665-10.665-10.665S191.877,409.707,191.877,415.594z"/>
+		<path style="fill:#434A54;" d="M149.24,415.594c0,5.887,4.771,10.649,10.657,10.649s10.657-4.763,10.657-10.649
+		s-4.771-10.665-10.657-10.665S149.24,409.707,149.24,415.594z"/>
+		<path style="fill:#434A54;" d="M99.569,330.305C114.942,207.719,74.616,95.869,74.616,95.869h260.169
+		c80.105,93.783,24.953,234.561,24.953,234.561C262.832,285.849,99.569,330.305,99.569,330.305z"/>
+	</g>
+	<g style="opacity:0.1;">
+		<path style="fill:#FFFFFF;" d="M334.785,95.869h-21.314c69.206,81.026,37.445,197.147,27.529,227.222
+		c6.434,2.123,12.695,4.56,18.738,7.339C359.738,330.43,414.891,189.652,334.785,95.869z"/>
+	</g>
+	<path style="fill:#E6E9ED;" d="M170.555,196.477c0-35.321,28.638-63.959,63.959-63.959c35.329,0,63.951,28.638,63.951,63.959
+	c0,18.941-8.213,35.961-21.299,47.672v26.952h-85.289v-26.952C178.792,232.438,170.555,215.418,170.555,196.477z"/>
+	<g>
+		<path style="fill:#434A54;" d="M250.503,196.477c0,5.887,4.778,10.665,10.665,10.665c5.888,0,10.658-4.778,10.658-10.665
+		s-4.771-10.665-10.658-10.665C255.282,185.812,250.503,190.59,250.503,196.477z"/>
+		<path style="fill:#434A54;" d="M197.21,196.477c0,5.887,4.771,10.665,10.657,10.665s10.657-4.778,10.657-10.665
+		s-4.771-10.665-10.657-10.665S197.21,190.59,197.21,196.477z"/>
+	</g>
+	<g>
+		<path style="fill:#CCD1D9;" d="M277.166,271.085c-0.016-5.871-4.777-10.649-10.673-10.649c-5.887,0-10.657,4.778-10.657,10.665
+		h21.33V271.085z"/>
+		<path style="fill:#CCD1D9;" d="M255.836,271.085c0-5.871-4.77-10.649-10.657-10.649s-10.665,4.778-10.665,10.665h21.322V271.085z" />
+		<path style="fill:#CCD1D9;" d="M234.514,271.085c0-5.871-4.771-10.649-10.657-10.649s-10.657,4.778-10.657,10.665h21.314V271.085z" />
+		<path style="fill:#CCD1D9;" d="M213.199,271.085c-0.008-5.871-4.778-10.649-10.665-10.649s-10.657,4.778-10.657,10.665h21.322
+		L213.199,271.085L213.199,271.085z"/>
+	</g>
+</svg>
\ No newline at end of file
diff --git a/apps/app-frontend/src/assets/icons/pirate.svg b/apps/app-frontend/src/assets/icons/pirate.svg
new file mode 100644
index 00000000..486774da
--- /dev/null
+++ b/apps/app-frontend/src/assets/icons/pirate.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="10mm" height="10mm" viewBox="0 0 10 10" version="1.1" id="svg26662" inkscape:version="1.2.2 (732a01da63, 2022-12-09)" sodipodi:docname="pir.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+   <sodipodi:namedview id="namedview26664" pagecolor="#505050" bordercolor="#eeeeee" borderopacity="1" inkscape:showpageshadow="0" inkscape:pageopacity="0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#505050" inkscape:document-units="mm" showgrid="false" inkscape:zoom="10.35098" inkscape:cx="16.375261" inkscape:cy="42.073312" inkscape:window-width="1488" inkscape:window-height="1230" inkscape:window-x="2794" inkscape:window-y="123" inkscape:window-maximized="0" inkscape:current-layer="layer1" />
+   <defs id="defs26659" />
+   <g inkscape:label="Слой 1" inkscape:groupmode="layer" id="layer1">
+      <path id="path26647" style="fill:#e7f9fb;fill-opacity:1;stroke:none;stroke-width:0.734686;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:5.8;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" d="M 0.953646,0 C 0.4245958,0 0,0.42377 0,0.950056 V 9.051658 C 0,9.577943 0.4245958,9.9999995 0.953646,9.9999995 H 9.044545 C 9.573595,9.9999995 10,9.577943 10,9.051658 V 0.950056 C 10,0.42377 9.573595,0 9.044545,0 Z m 4.0319653,0.680202 c 0.7122257,0 1.1971907,0.171336 1.6235677,0.587681 C 7.149602,1.795597 7.303455,2.529484 7.076165,3.503527 6.954393,4.024672 6.743646,4.411034 6.384675,4.767983 6.046182,5.105514 5.7597,5.274565 5.369942,5.364516 4.7470347,5.510152 4.177518,5.313116 3.618915,4.763985 3.260174,4.411034 3.0504322,4.028385 2.9274247,3.503527 2.6985267,2.5272 2.8504547,1.797596 3.392573,1.267883 3.8051351,0.866387 4.2970505,0.680202 4.9856113,0.680202 Z M 4.1253339,2.785916 C 3.7727965,2.786202 3.5578276,2.980097 3.5578276,3.29821 c 0,0.197035 0.074385,0.320683 0.2711164,0.455467 C 4.0618628,3.91359 4.4444125,3.833637 4.5886441,3.596619 4.6788251,3.450984 4.6839941,3.154002 4.6001321,3.01265 4.5082281,2.855593 4.3583101,2.784203 4.1277751,2.784203 Z m 1.7295441,0 c -0.20506,0 -0.404923,0.09423 -0.493868,0.26557 C 5.226026,3.311345 5.34091,3.641452 5.60714,3.779948 5.859588,3.90845 6.185962,3.822778 6.372268,3.574345 6.463308,3.45441 6.469338,3.164568 6.383758,3.033211 6.273759,2.864731 6.062581,2.784774 5.85752,2.784774 Z M 1.8659927,5.307119 c 0.00862,-5.71e-4 0.020104,0 0.03073,0 0.2179844,2.86e-4 0.5876389,0.16848 1.6846262,0.695051 C 4.3488321,6.369399 4.9972712,6.669808 5.018122,6.669808 5.038222,6.669237 5.68049,6.371113 6.440564,6.008738 7.200522,5.64465 7.88377,5.323396 7.958155,5.323396 8.14742,5.283416 8.403142,5.409066 8.509492,5.577544 8.663431,5.82598 8.604552,6.167795 8.374795,6.361404 8.316205,6.409954 6.898963,7.091579 5.226428,7.875439 2.6791977,9.069933 2.1554033,9.312944 1.9972712,9.312944 c -0.2153996,0 -0.2679571,0 -0.3915391,-0.114223 C 1.3150575,8.936006 1.3506989,8.509952 1.6827021,8.264656 1.7519171,8.213256 2.1996325,7.990519 2.6777048,7.764356 3.1557197,7.54162 3.5582872,7.334304 3.5756915,7.334304 c 0.01436,0 -0.3826933,-0.217025 -0.8872167,-0.448042 C 2.1839513,6.654959 1.7142365,6.421657 1.646802,6.369971 1.4819495,6.24718 1.4026824,6.080128 1.4026824,5.863103 c 0,-0.219881 0.09535,-0.394643 0.2731268,-0.491448 0.063758,-0.03141 0.1203366,-0.05711 0.1901261,-0.06282 z M 7.094115,7.62329 7.661622,7.905994 c 0.784456,0.383506 0.930354,0.522573 0.930354,0.881807 0,0.219881 -0.105403,0.397498 -0.280307,0.480311 -0.151641,0.06568 -0.331859,0.06853 -0.513628,0 C 7.59815,9.193862 5.819639,8.388875 5.788334,8.354036 c -0.01436,0 0.273414,-0.182758 0.639363,-0.378651 z" />
+   </g>
+</svg>
diff --git a/apps/app-frontend/src/components/ui/AccountsCard.vue b/apps/app-frontend/src/components/ui/AccountsCard.vue
index 4a0a05a7..5d7908a9 100644
--- a/apps/app-frontend/src/components/ui/AccountsCard.vue
+++ b/apps/app-frontend/src/components/ui/AccountsCard.vue
@@ -1,68 +1,89 @@
 <template>
-  <div
-    v-if="mode !== 'isolated'"
-    ref="button"
-    v-tooltip.right="'Minecraft accounts'"
-    class="button-base avatar-button"
-    :class="{ expanded: mode === 'expanded' }"
-    @click="toggleMenu"
-  >
-    <Avatar
-      :size="mode === 'expanded' ? 'xs' : 'sm'"
-      :src="
-        selectedAccount
-          ? `https://mc-heads.net/avatar/${selectedAccount.id}/128`
-          : 'https://launcher-files.modrinth.com/assets/steve_head.png'
-      "
-    />
+  <div v-if="mode !== 'isolated'" ref="button" v-tooltip.right="'Minecraft accounts'" class="button-base avatar-button"
+    :class="{ expanded: mode === 'expanded' }" @click="toggleMenu">
+    <Avatar :size="mode === 'expanded' ? 'xs' : 'sm'" :src="selectedAccount
+      ? `https://mc-heads.net/avatar/${selectedAccount.username}/128`
+      : 'https://launcher-files.modrinth.com/assets/steve_head.png'
+      " />
   </div>
   <transition name="fade">
-    <Card
-      v-if="showCard || mode === 'isolated'"
-      ref="card"
-      class="account-card"
-      :class="{ expanded: mode === 'expanded', isolated: mode === 'isolated' }"
-    >
+    <Card v-if="showCard || mode === 'isolated'" ref="card" class="account-card"
+      :class="{ expanded: mode === 'expanded', isolated: mode === 'isolated' }">
       <div v-if="selectedAccount" class="selected account">
-        <Avatar size="xs" :src="`https://mc-heads.net/avatar/${selectedAccount.id}/128`" />
+        <Avatar size="xs" :src="`https://mc-heads.net/avatar/${selectedAccount.username}/128`" />
         <div>
-          <h4>{{ selectedAccount.username }}</h4>
+          <h4>
+            <component :is="getAccountType(selectedAccount)" class="vector-icon" /> {{ selectedAccount.username }}
+          </h4>
           <p>Selected</p>
         </div>
         <Button v-tooltip="'Log out'" icon-only color="raised" @click="logout(selectedAccount.id)">
           <TrashIcon />
         </Button>
       </div>
-      <div v-else class="logged-out account">
+      <div v-else class="login-section account">
         <h4>Not signed in</h4>
-        <Button v-tooltip="'Log in'" icon-only color="primary" @click="login()">
-          <LogInIcon />
+        <Button v-tooltip="'Log in'" icon-only @click="login()">
+          <MicrosoftIcon />
+        </Button>
+        <Button v-tooltip="'Add offline'" icon-only @click="tryOfflineLogin()">
+          <PirateIcon />
         </Button>
       </div>
       <div v-if="displayAccounts.length > 0" class="account-group">
         <div v-for="account in displayAccounts" :key="account.id" class="account-row">
           <Button class="option account" @click="setAccount(account)">
-            <Avatar :src="`https://mc-heads.net/avatar/${account.id}/128`" class="icon" />
-            <p>{{ account.username }}</p>
+            <Avatar :src="`https://mc-heads.net/avatar/${account.username}/128`" class="icon" />
+            <p class="account-type">
+              <component :is="getAccountType(account)" class="vector-icon" />
+              {{ account.username }}
+            </p>
           </Button>
           <Button v-tooltip="'Log out'" icon-only @click="logout(account.id)">
             <TrashIcon />
           </Button>
         </div>
       </div>
-      <Button v-if="accounts.length > 0" @click="login()">
-        <PlusIcon />
-        Add account
-      </Button>
+      <div v-if="accounts.length > 0" class="login-section account centered">
+        <Button v-tooltip="'Log in'" icon-only @click="login()">
+          <MicrosoftIcon />
+        </Button>
+        <Button v-tooltip="'Add offline'" icon-only @click="tryOfflineLogin()">
+          <PirateIcon />
+        </Button>
+      </div>
     </Card>
   </transition>
+  <ModalWrapper ref="loginOfflineModal" class="modal" header="Offline auth">
+    <div class="modal-body">
+      <div class="label">Offline account</div>
+      <input type="text" v-model="playerName" placeholder="Provide offline player name" />
+      <Button icon-only color="secondary" @click="offlineLoginFinally()">
+        Continue
+      </Button>
+    </div>
+  </ModalWrapper>
+  <ModalWrapper ref="loginErrorModal" class="modal" header="Error while proceed">
+    <div class="modal-body">
+      <div class="label">Error occurred while adding offline account</div>
+      <Button color="primary" @click="retryOfflineLogin()">
+        Try again
+      </Button>
+    </div>
+  </ModalWrapper>
+  <ModalWrapper ref="unexpectedErrorModal" class="modal" header="Ошибка">
+    <div class="modal-body">
+      <div class="label">Unexcepted error</div>
+    </div>
+  </ModalWrapper>
 </template>
 
 <script setup>
-import { PlusIcon, TrashIcon, LogInIcon } from '@modrinth/assets'
+import { PlusIcon, TrashIcon, LogInIcon, PirateIcon as Offline, MicrosoftIcon as License, MicrosoftIcon, PirateIcon } from '@modrinth/assets'
 import { Avatar, Button, Card } from '@modrinth/ui'
 import { ref, computed, onMounted, onBeforeUnmount, onUnmounted } from 'vue'
 import {
+  offline_login,
   users,
   remove_user,
   set_default_user,
@@ -73,7 +94,7 @@ import { handleError } from '@/store/state.js'
 import { trackEvent } from '@/helpers/analytics'
 import { process_listener } from '@/helpers/events'
 import { handleSevereError } from '@/store/error.js'
-import { show_ads_window, hide_ads_window } from '@/helpers/ads.js'
+import ModalWrapper from './modal/ModalWrapper.vue'
 
 defineProps({
   mode: {
@@ -87,6 +108,46 @@ const emit = defineEmits(['change'])
 
 const accounts = ref({})
 const defaultUser = ref()
+const loginOfflineModal = ref(null)
+const loginErrorModal = ref(null)
+const unexpectedErrorModal = ref(null)
+const playerName = ref('')
+
+async function tryOfflineLogin() { // Patched
+  loginOfflineModal.value.show()
+}
+
+async function offlineLoginFinally() { // Patched
+  let name = playerName.value
+  if (name.length > 1 && name.length < 20 && name !== '') {
+    const loggedIn = await offline_login(name).catch(handleError)
+    loginOfflineModal.value.hide()
+    if (loggedIn) {
+      await setAccount(loggedIn)
+      await refreshValues()
+    } else {
+      unexpectedErrorModal.value.show()
+    }
+    playerName.value = ''
+  } else {
+    playerName.value = ''
+    loginOfflineModal.value.hide()
+    loginErrorModal.value.show()
+  }
+}
+
+function retryOfflineLogin() { // Patched
+  loginErrorModal.value.hide()
+  tryOfflineLogin()
+}
+
+function getAccountType(account) { // Patched
+  if (account.access_token != "null" && account.access_token != null && account.access_token != "") {
+    return License
+  } else {
+    return Offline
+  }
+}
 
 async function refreshValues() {
   defaultUser.value = await get_default_user().catch(handleError)
@@ -151,13 +212,8 @@ const handleClickOutside = (event) => {
 
 function toggleMenu(override = true) {
   if (showCard.value || !override) {
-    if (showCard.value) {
-      show_ads_window()
-    }
-
     showCard.value = false
   } else {
-    hide_ads_window()
     showCard.value = true
   }
 }
@@ -189,12 +245,18 @@ onUnmounted(() => {
   gap: 1rem;
 }
 
-.logged-out {
+.login-section {
   background: var(--color-bg);
   border-radius: var(--radius-lg);
   gap: 1rem;
 }
 
+
+.vector-icon {
+  width: 12px;
+  height: 12px;
+}
+
 .account {
   width: max-content;
   display: flex;
@@ -255,6 +317,12 @@ onUnmounted(() => {
   font-weight: bolder;
 }
 
+.centered {
+  display: flex;
+  gap: 1rem;
+  margin: auto;
+}
+
 .account-group {
   width: 100%;
   display: flex;
diff --git a/apps/app-frontend/src/components/ui/ContextMenu.vue b/apps/app-frontend/src/components/ui/ContextMenu.vue
index 9614d3fe..b3370fa0 100644
--- a/apps/app-frontend/src/components/ui/ContextMenu.vue
+++ b/apps/app-frontend/src/components/ui/ContextMenu.vue
@@ -1,21 +1,13 @@
 <template>
   <transition name="fade">
-    <div
-      v-show="shown"
-      ref="contextMenu"
-      class="context-menu"
-      :style="{
-        left: left,
-        top: top,
-      }"
-    >
+    <div v-show="shown" ref="contextMenu" class="context-menu" :style="{
+      left: left,
+      top: top,
+    }">
       <div v-for="(option, index) in options" :key="index" @click.stop="optionClicked(option.name)">
         <hr v-if="option.type === 'divider'" class="divider" />
-        <div
-          v-else-if="!(isLinkedData(item) && option.name === `add_content`)"
-          class="item clickable"
-          :class="[option.color ?? 'base']"
-        >
+        <div v-else-if="!(isLinkedData(item) && option.name === `add_content`)" class="item clickable"
+          :class="[option.color ?? 'base']">
           <slot :name="option.name" />
         </div>
       </div>
@@ -25,7 +17,6 @@
 
 <script setup>
 import { onBeforeUnmount, onMounted, ref } from 'vue'
-import { show_ads_window, hide_ads_window } from '@/helpers/ads.js'
 
 const emit = defineEmits(['menu-closed', 'option-clicked'])
 
@@ -38,7 +29,6 @@ const shown = ref(false)
 
 defineExpose({
   showMenu: (event, passedItem, passedOptions) => {
-    hide_ads_window()
     item.value = passedItem
     options.value = passedOptions
 
@@ -71,9 +61,6 @@ const isLinkedData = (item) => {
 }
 
 const hideContextMenu = () => {
-  if (shown.value) {
-    show_ads_window()
-  }
   shown.value = false
   emit('menu-closed')
 }
diff --git a/apps/app-frontend/src/components/ui/PromotionWrapper.vue b/apps/app-frontend/src/components/ui/PromotionWrapper.vue
deleted file mode 100644
index 87a6d621..00000000
--- a/apps/app-frontend/src/components/ui/PromotionWrapper.vue
+++ /dev/null
@@ -1,121 +0,0 @@
-<script setup>
-import { ref, onMounted, onUnmounted } from 'vue'
-import { get as getCreds } from '@/helpers/mr_auth.js'
-import { handleError } from '@/store/notifications.js'
-import { get_user } from '@/helpers/cache.js'
-import { ChevronRightIcon } from '@modrinth/assets'
-import { init_ads_window } from '@/helpers/ads.js'
-import { listen } from '@tauri-apps/api/event'
-
-const showAd = ref(true)
-
-defineExpose({
-  scroll() {
-    updateAdPosition()
-  },
-})
-
-const creds = await getCreds().catch(handleError)
-if (creds && creds.user_id) {
-  const user = await get_user(creds.user_id).catch(handleError)
-
-  const MIDAS_BITFLAG = 1 << 0
-  if (user && (user.badges & MIDAS_BITFLAG) === MIDAS_BITFLAG) {
-    showAd.value = false
-  }
-}
-
-const adsWrapper = ref(null)
-let resizeObserver
-let scrollHandler
-let intersectionObserver
-let mutationObserver
-onMounted(() => {
-  if (showAd.value) {
-    updateAdPosition(true)
-
-    resizeObserver = new ResizeObserver(() => updateAdPosition())
-    resizeObserver.observe(adsWrapper.value)
-
-    intersectionObserver = new IntersectionObserver(() => updateAdPosition())
-    intersectionObserver.observe(adsWrapper.value)
-
-    mutationObserver = new MutationObserver(() => updateAdPosition())
-    mutationObserver.observe(adsWrapper.value, { attributes: true, childList: true, subtree: true })
-
-    // Add scroll event listener
-    scrollHandler = () => {
-      requestAnimationFrame(() => updateAdPosition())
-    }
-    window.addEventListener('scroll', scrollHandler, { passive: true })
-  }
-})
-
-function updateAdPosition(overrideShown = false) {
-  if (adsWrapper.value) {
-    const rect = adsWrapper.value.getBoundingClientRect()
-
-    let y = rect.top + window.scrollY
-    let height = rect.bottom - rect.top
-
-    // Prevent ad from overlaying the app bar
-    if (y <= 52) {
-      y = 52
-      height = rect.bottom - 52
-
-      if (height < 0) {
-        height = 0
-        y = -1000
-      }
-    }
-
-    init_ads_window(rect.left + window.scrollX, y, rect.right - rect.left, height, overrideShown)
-  }
-}
-
-const unlisten = await listen('ads-scroll', (event) => {
-  if (adsWrapper.value) {
-    adsWrapper.value.parentNode.scrollTop += event.payload.scroll
-    updateAdPosition()
-  }
-})
-
-onUnmounted(() => {
-  if (resizeObserver) {
-    resizeObserver.disconnect()
-  }
-  if (intersectionObserver) {
-    intersectionObserver.disconnect()
-  }
-  if (mutationObserver) {
-    mutationObserver.disconnect()
-  }
-  if (scrollHandler) {
-    window.removeEventListener('scroll', scrollHandler)
-  }
-
-  unlisten()
-})
-</script>
-
-<template>
-  <div
-    v-if="showAd"
-    ref="adsWrapper"
-    class="ad-parent relative mb-3 flex w-full justify-center rounded-2xl bg-bg-raised cursor-pointer"
-  >
-    <div class="flex max-h-[250px] min-h-[250px] min-w-[300px] max-w-[300px] flex-col gap-4 p-6">
-      <p class="m-0 text-2xl font-bold text-contrast">90% of ad revenue goes to creators</p>
-      <a
-        href="https://modrinth.com/plus"
-        class="mt-auto items-center gap-1 text-purple hover:underline"
-      >
-        <span>
-          Support creators and Modrinth ad-free with
-          <span class="font-bold">Modrinth+</span>
-        </span>
-        <ChevronRightIcon class="relative top-[3px] h-5 w-5" />
-      </a>
-    </div>
-  </div>
-</template>
diff --git a/apps/app-frontend/src/components/ui/RunningAppBar.vue b/apps/app-frontend/src/components/ui/RunningAppBar.vue
index ad600fc7..2b512d64 100644
--- a/apps/app-frontend/src/components/ui/RunningAppBar.vue
+++ b/apps/app-frontend/src/components/ui/RunningAppBar.vue
@@ -4,13 +4,8 @@
       <ChatIcon />
       <span> Get support </span>
     </a>
-    <Button
-      v-if="currentLoadingBars.length > 0"
-      ref="infoButton"
-      icon-only
-      class="icon-button show-card-icon"
-      @click="toggleCard()"
-    >
+    <Button v-if="currentLoadingBars.length > 0" ref="infoButton" icon-only class="icon-button show-card-icon"
+      @click="toggleCard()">
       <DownloadIcon />
     </Button>
     <div v-if="offline" class="status">
@@ -25,33 +20,19 @@
         <router-link :to="`/instance/${encodeURIComponent(selectedProcess.profile.path)}`">
           {{ selectedProcess.profile.name }}
         </router-link>
-        <div
-          v-if="currentProcesses.length > 1"
-          class="arrow button-base"
-          :class="{ rotate: showProfiles }"
-          @click="toggleProfiles()"
-        >
+        <div v-if="currentProcesses.length > 1" class="arrow button-base" :class="{ rotate: showProfiles }"
+          @click="toggleProfiles()">
           <DropdownIcon />
         </div>
       </div>
-      <Button
-        v-tooltip="'Stop instance'"
-        icon-only
-        class="icon-button stop"
-        @click="stop(selectedProcess)"
-      >
+      <Button v-tooltip="'Stop instance'" icon-only class="icon-button stop" @click="stop(selectedProcess)">
         <StopCircleIcon />
       </Button>
       <Button v-tooltip="'View logs'" icon-only class="icon-button" @click="goToTerminal()">
         <TerminalSquareIcon />
       </Button>
-      <Button
-        v-if="currentLoadingBars.length > 0"
-        ref="infoButton"
-        icon-only
-        class="icon-button show-card-icon"
-        @click="toggleCard()"
-      >
+      <Button v-if="currentLoadingBars.length > 0" ref="infoButton" icon-only class="icon-button show-card-icon"
+        @click="toggleCard()">
         <DownloadIcon />
       </Button>
     </div>
@@ -59,6 +40,40 @@
       <span class="circle stopped" />
       <span class="running-text"> No instances running </span>
     </div>
+    <div v-if="updateState">
+      <a>
+        <Button class="download" :disabled="installState" @click="confirmUpdating(), getRemote(false, false)">
+          <DownloadIcon />
+          {{
+            installState
+              ? "Downloading new update..."
+              : "Download new update"
+          }}
+        </Button>
+      </a>
+    </div>
+    <ModalWrapper ref="confirmUpdate" :has-to-type="false" header="Request to update the AstralRinth launcher">
+      <div class="modal-body">
+        <div class="markdown-body">
+          <p>
+            Before updating, make sure that you have saved all running instances and made a backup copy of the instances
+            that are valuable to you. Remember that the authors of the product are not responsible for the breakdown of
+            your files, so you should always make copies of them and keep them in a safe place.
+          </p>
+        </div>
+        <span>Version on remote server • <p id="releaseData" class="cosmic inline-fix"></p></span>
+        <span>Version on local device •
+          <p class="cosmic inline-fix">v{{ version }}</p>
+        </span>
+        <div class="button-group push-right">
+          <Button class="download-modal" @click="confirmUpdate.hide()">
+            Decline</Button>
+          <Button class="download-modal" @click="approvedUpdating()">
+            Accept
+          </Button>
+        </div>
+      </div>
+    </ModalWrapper>
   </div>
   <transition name="download">
     <Card v-if="showCard === true && currentLoadingBars.length > 0" ref="card" class="info-card">
@@ -74,32 +89,14 @@
     </Card>
   </transition>
   <transition name="download">
-    <Card
-      v-if="showProfiles === true && currentProcesses.length > 0"
-      ref="profiles"
-      class="profile-card"
-    >
-      <Button
-        v-for="process in currentProcesses"
-        :key="process.uuid"
-        class="profile-button"
-        @click="selectProcess(process)"
-      >
+    <Card v-if="showProfiles === true && currentProcesses.length > 0" ref="profiles" class="profile-card">
+      <Button v-for="process in currentProcesses" :key="process.uuid" class="profile-button"
+        @click="selectProcess(process)">
         <div class="text"><span class="circle running" /> {{ process.profile.name }}</div>
-        <Button
-          v-tooltip="'Stop instance'"
-          icon-only
-          class="icon-button stop"
-          @click.stop="stop(process)"
-        >
+        <Button v-tooltip="'Stop instance'" icon-only class="icon-button stop" @click.stop="stop(process)">
           <StopCircleIcon />
         </Button>
-        <Button
-          v-tooltip="'View logs'"
-          icon-only
-          class="icon-button"
-          @click.stop="goToTerminal(process.profile.path)"
-        >
+        <Button v-tooltip="'View logs'" icon-only class="icon-button" @click.stop="goToTerminal(process.profile.path)">
           <TerminalSquareIcon />
         </Button>
       </Button>
@@ -120,6 +117,23 @@ import { handleError } from '@/store/notifications.js'
 import { ChatIcon } from '@/assets/icons'
 import { get_many } from '@/helpers/profile.js'
 import { trackEvent } from '@/helpers/analytics'
+import { version } from '../../../package.json'
+
+import { installState, getRemote, updateState } from '@/helpers/update.js'
+import ModalWrapper from './modal/ModalWrapper.vue'
+
+const confirmUpdate = ref(null)
+
+const confirmUpdating = async () => {
+  confirmUpdate.value.show()
+}
+
+const approvedUpdating = async () => {
+  confirmUpdate.value.hide()
+  await getRemote(true, true)
+}
+
+await getRemote(true, false)
 
 const router = useRouter()
 const card = ref(null)
@@ -277,6 +291,101 @@ onBeforeUnmount(() => {
 </script>
 
 <style scoped lang="scss">
+.inline-fix {
+  display: inline-flex;
+  margin-top: -2rem;
+  margin-bottom: -2rem;
+  //margin-left: 0.3rem;
+}
+
+.cosmic {
+  color: #3e8cde;
+  text-decoration: none;
+  text-shadow:
+    0 0 4px rgba(79, 173, 255, 0.5),
+    0 0 8px rgba(14, 98, 204, 0.5),
+    0 0 12px rgba(122, 31, 199, 0.5);
+  transition: color 0.35s ease;
+}
+
+.markdown-body {
+  :deep(table) {
+    width: auto;
+  }
+
+  :deep(hr),
+  :deep(h1),
+  :deep(h2) {
+    max-width: max(60rem, 90%);
+  }
+
+  :deep(ul),
+  :deep(ol) {
+    margin-left: 2rem;
+  }
+}
+
+.modal-body {
+  display: flex;
+  flex-direction: column;
+  gap: 1rem;
+  padding: var(--gap-lg);
+  text-align: left;
+
+  .button-group {
+    display: flex;
+    justify-content: flex-end;
+    gap: 0.5rem;
+  }
+
+  strong {
+    color: var(--color-contrast);
+  }
+}
+
+.download {
+  color: #3e8cde;
+  border-radius: var(--radius-md);
+  border: 1px solid var(--color-button-bg);
+  // padding: var(--gap-sm) var(--gap-lg);
+  background-color: rgba(0, 0, 0, 0);
+  text-decoration: none;
+  text-shadow:
+    0 0 4px rgba(79, 173, 255, 0.5),
+    0 0 8px rgba(14, 98, 204, 0.5),
+    0 0 12px rgba(122, 31, 199, 0.5);
+  transition: color 0.35s ease;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  gap: 0.5rem;
+}
+
+.download:hover,
+.download:focus,
+.download:active {
+  color: #10fae5;
+  text-shadow: #26065e;
+}
+
+.download-modal {
+  color: #3e8cde;
+  padding: var(--gap-sm) var(--gap-lg);
+  text-decoration: none;
+  text-shadow:
+    0 0 4px rgba(79, 173, 255, 0.5),
+    0 0 8px rgba(14, 98, 204, 0.5),
+    0 0 12px rgba(122, 31, 199, 0.5);
+  transition: color 0.35s ease;
+}
+
+.download-modal:hover,
+.download-modal:focus,
+.download-modal:active {
+  color: #10fae5;
+  text-shadow: #26065e;
+}
+
 .action-groups {
   display: flex;
   flex-direction: row;
@@ -288,6 +397,7 @@ onBeforeUnmount(() => {
   transition: transform 0.2s ease-in-out;
   display: flex;
   align-items: center;
+
   &.rotate {
     transform: rotate(180deg);
   }
@@ -309,8 +419,10 @@ onBeforeUnmount(() => {
   gap: var(--gap-xs);
   white-space: nowrap;
   overflow: hidden;
-  -webkit-user-select: none; /* Safari */
-  -ms-user-select: none; /* IE 10 and IE 11 */
+  -webkit-user-select: none;
+  /* Safari */
+  -ms-user-select: none;
+  /* IE 10 and IE 11 */
   user-select: none;
 
   &.clickable:hover {
diff --git a/apps/app-frontend/src/components/ui/modal/ConfirmModalWrapper.vue b/apps/app-frontend/src/components/ui/modal/ConfirmModalWrapper.vue
index d9e7f63f..1a290416 100644
--- a/apps/app-frontend/src/components/ui/modal/ConfirmModalWrapper.vue
+++ b/apps/app-frontend/src/components/ui/modal/ConfirmModalWrapper.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { ref } from 'vue'
 import { ConfirmModal } from '@modrinth/ui'
-import { show_ads_window, hide_ads_window } from '@/helpers/ads.js'
+
 import { useTheming } from '@/store/theme.js'
 
 const themeStore = useTheming()
@@ -36,7 +36,6 @@ const modal = ref(null)
 
 defineExpose({
   show: () => {
-    hide_ads_window()
     modal.value.show()
   },
   hide: () => {
@@ -45,25 +44,13 @@ defineExpose({
   },
 })
 
-function onModalHide() {
-  show_ads_window()
-}
-
 function proceed() {
   emit('proceed')
 }
 </script>
 
 <template>
-  <ConfirmModal
-    ref="modal"
-    :confirmation-text="confirmationText"
-    :has-to-type="hasToType"
-    :title="title"
-    :description="description"
-    :proceed-label="proceedLabel"
-    :on-hide="onModalHide"
-    :noblur="!themeStore.advancedRendering"
-    @proceed="proceed"
-  />
+  <ConfirmModal ref="modal" :confirmation-text="confirmationText" :has-to-type="hasToType" :title="title"
+    :description="description" :proceed-label="proceedLabel" :on-hide="onModalHide"
+    :noblur="!themeStore.advancedRendering" @proceed="proceed" />
 </template>
diff --git a/apps/app-frontend/src/components/ui/modal/ModalWrapper.vue b/apps/app-frontend/src/components/ui/modal/ModalWrapper.vue
index a1b26e33..fdbca9e5 100644
--- a/apps/app-frontend/src/components/ui/modal/ModalWrapper.vue
+++ b/apps/app-frontend/src/components/ui/modal/ModalWrapper.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { ref } from 'vue'
 import { Modal } from '@modrinth/ui'
-import { show_ads_window, hide_ads_window } from '@/helpers/ads.js'
+
 import { useTheming } from '@/store/theme.js'
 
 const themeStore = useTheming()
@@ -18,7 +18,7 @@ const props = defineProps({
   onHide: {
     type: Function,
     default() {
-      return () => {}
+      return () => { }
     },
   },
 })
@@ -27,7 +27,6 @@ const modal = ref(null)
 
 defineExpose({
   show: () => {
-    hide_ads_window()
     modal.value.show()
   },
   hide: () => {
@@ -37,7 +36,6 @@ defineExpose({
 })
 
 function onModalHide() {
-  show_ads_window()
   props.onHide()
 }
 </script>
diff --git a/apps/app-frontend/src/components/ui/modal/ShareModalWrapper.vue b/apps/app-frontend/src/components/ui/modal/ShareModalWrapper.vue
index ad127713..65fd776e 100644
--- a/apps/app-frontend/src/components/ui/modal/ShareModalWrapper.vue
+++ b/apps/app-frontend/src/components/ui/modal/ShareModalWrapper.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { ref } from 'vue'
 import { ShareModal } from '@modrinth/ui'
-import { show_ads_window, hide_ads_window } from '@/helpers/ads.js'
+
 import { useTheming } from '@/store/theme.js'
 
 const themeStore = useTheming()
@@ -33,7 +33,6 @@ const modal = ref(null)
 
 defineExpose({
   show: (passedContent) => {
-    hide_ads_window()
     modal.value.show(passedContent)
   },
   hide: () => {
@@ -41,21 +40,9 @@ defineExpose({
     modal.value.hide()
   },
 })
-
-function onModalHide() {
-  show_ads_window()
-}
 </script>
 
 <template>
-  <ShareModal
-    ref="modal"
-    :header="header"
-    :share-title="shareTitle"
-    :share-text="shareText"
-    :link="link"
-    :open-in-new-tab="openInNewTab"
-    :on-hide="onModalHide"
-    :noblur="!themeStore.advancedRendering"
-  />
+  <ShareModal ref="modal" :header="header" :share-title="shareTitle" :share-text="shareText" :link="link"
+    :open-in-new-tab="openInNewTab" :on-hide="onModalHide" :noblur="!themeStore.advancedRendering" />
 </template>
diff --git a/apps/app-frontend/src/helpers/ads.js b/apps/app-frontend/src/helpers/ads.js
deleted file mode 100644
index df9375f6..00000000
--- a/apps/app-frontend/src/helpers/ads.js
+++ /dev/null
@@ -1,13 +0,0 @@
-import { invoke } from '@tauri-apps/api/core'
-
-export async function init_ads_window(x, y, width, height, overrideShown = false) {
-  return await invoke('plugin:ads|init_ads_window', { x, y, width, height, overrideShown })
-}
-
-export async function show_ads_window() {
-  return await invoke('plugin:ads|show_ads_window')
-}
-
-export async function hide_ads_window(reset) {
-  return await invoke('plugin:ads|hide_ads_window', { reset })
-}
diff --git a/apps/app-frontend/src/helpers/auth.js b/apps/app-frontend/src/helpers/auth.js
index d97ce552..b55ee4e8 100644
--- a/apps/app-frontend/src/helpers/auth.js
+++ b/apps/app-frontend/src/helpers/auth.js
@@ -13,6 +13,10 @@ import { invoke } from '@tauri-apps/api/core'
 //   await authenticate_await_completion()
 // }
 
+export async function offline_login(name) {
+  return await invoke('plugin:auth|offline_login', { name: name })
+}
+
 /**
  * Authenticate a user with Hydra - part 1.
  * This begins the authentication flow quasi-synchronously.
diff --git a/apps/app-frontend/src/helpers/update.js b/apps/app-frontend/src/helpers/update.js
new file mode 100644
index 00000000..f3b8295f
--- /dev/null
+++ b/apps/app-frontend/src/helpers/update.js
@@ -0,0 +1,176 @@
+import { ref } from 'vue'
+import { version } from '../../package.json'
+import { getArtifact, getOS } from '@/helpers/utils.js'
+
+export const allowState = ref(false)
+export const installState = ref(false)
+export const updateState = ref(false)
+export const latestBetaCommitTruncatedSha = ref('')
+export const latestBetaCommitLink = ref('')
+export const launcherUrl = 'https://www.astralium.su/get/ar'
+
+const os = ref('')
+const releaseLink = `https://api.github.com/repos/DIDIRUS4/AstralRinth/releases/latest`
+const branchesLink = `https://api.github.com/repos/DIDIRUS4/AstralRinth/branches`
+const failedFetch = [`Failed to fetch remote releases:`, `Failed to fetch remote commits:`]
+const localVersion = `v${version}`
+const betaBranch = `beta` // Github repository beta branch
+const osNames = ['macos', 'windows', 'linux']
+const macExtension = `.dmg` // MacOS file type for download
+const windowsExtension = `.msi` // Windows file type for download
+const blacklistedBuilds = [
+  `dev`,
+  `nightly`,
+  `dirty`,
+  `dirty-dev`,
+  `dirty-nightly`,
+  `dirty_dev`,
+  `dirty_nightly`,
+] // This is blacklisted builds for download. For example, file.startsWith('dev') is not allowed.
+
+/**
+ * Asynchronously fetches branches and their latest commit information from the specified URLs.
+ *
+ * @return {Promise<void>} This function does not return anything directly but updates the latestBetaCommitTruncatedSha and latestBetaCommitLink values.
+ */
+export async function getBranches() {
+  fetch(branchesLink)
+    .then(async (response) => {
+      if (response.ok) {
+        response.json().then((data) => {
+          const branches = data.map((branch) => branch)
+          branches.forEach((branch) => {
+            fetch(branch.commit.url).then(async (data) => {
+              if (data.ok) {
+                data.json().then((data) => {
+                  const truncatedSha = data.sha.slice(0, 7)
+                  const commitLink = data.html_url
+                  if (branch.name.toLowerCase() == betaBranch) {
+                    latestBetaCommitTruncatedSha.value = truncatedSha
+                    latestBetaCommitLink.value = commitLink
+                  }
+                })
+              } else {
+                throw new Error(data.status)
+              }
+            })
+          })
+        })
+      } else {
+        throw new Error(response.status)
+      }
+    })
+    .catch((error) => {
+      latestBetaCommitTruncatedSha.value = error.message
+      latestBetaCommitLink.value = undefined
+      console.error(failedFetch[1], error)
+    })
+}
+
+/**
+ * Asynchronous function to get remote data and handle updates and downloads.
+ *
+ * @param {boolean} elementIdBool - Indicates whether to disable an element ID.
+ * @param {boolean} downloadArtifactBool - Indicates whether to download an artifact.
+ */
+export async function getRemote(elementIdBool, downloadArtifactBool) {
+  fetch(releaseLink)
+    .then((response) => {
+      if (!response.ok) {
+        throw new Error(response.status)
+      }
+      return response.json()
+    })
+    .then(async (data) => {
+      os.value = await getOS()
+      const latestRelease = data.name
+      let remoteVersion = undefined
+
+      if (!elementIdBool) {
+        const releaseData = document.getElementById('releaseData')
+        if (releaseData == null) {
+          console.error('Release data element not found.')
+          return false
+        }
+        releaseData.textContent = latestRelease
+        remoteVersion = `${releaseData.textContent}`
+      } else {
+        remoteVersion = latestRelease
+      }
+      if (osNames.includes(os.value.toLowerCase())) {
+        if (remoteVersion.startsWith(localVersion)) {
+          updateState.value = false
+          allowState.value = false
+        } else {
+          updateState.value = true
+          allowState.value = true
+        }
+      } else {
+        updateState.value = false
+        allowState.value = false
+      }
+      console.log('Update available state is', updateState.value)
+      console.log('Remote version is', remoteVersion)
+      console.log('Local version is', localVersion)
+      console.log('Operating System is', os.value)
+
+      if (downloadArtifactBool) {
+        installState.value = true
+        const builds = data.assets
+        const fileName = getInstaller(getExtension(), builds)
+        if (fileName != null) {
+          await getArtifact(fileName[1], fileName[0], os.value, true)
+        }
+        installState.value = false
+      }
+    })
+    .catch((error) => {
+      console.error(failedFetch[0], error)
+      if (!elementIdBool) {
+        const errorData = document.getElementById('releaseData')
+        if (errorData) {
+          errorData.textContent = `${error.message}`
+        }
+        updateState.value = false
+        allowState.value = false
+        installState.value = false
+      }
+    })
+}
+
+/**
+ * Retrieves the installer for a specific operating system.
+ *
+ * @param {string} osExtension - The file extension of the installer.
+ * @param {Array} builds - The list of builds.
+ * @return {Array|null} An array containing the installer name and URL if found, or null if not found.
+ */
+function getInstaller(osExtension, builds) {
+  for (let i of builds) {
+    let blacklistedItem = false
+    blacklistedBuilds.forEach((item) => {
+      if (i.name.startsWith(item)) {
+        return (blacklistedItem = true)
+      }
+    })
+    if (i.name.endsWith(osExtension) && !blacklistedItem) {
+      console.log(i.browser_download_url)
+      return [i.name, i.browser_download_url]
+    }
+  }
+  return null
+}
+
+/**
+ * A function to get the extension based on the operating system.
+ *
+ * @return {string} The extension based on the operating system.
+ */
+function getExtension() {
+  if (os.value.toLowerCase() == osNames[0]) {
+    return macExtension
+  } else if (os.value.toLowerCase() == osNames[1]) {
+    return windowsExtension
+  }
+  return null
+}
\ No newline at end of file
diff --git a/apps/app-frontend/src/helpers/utils.js b/apps/app-frontend/src/helpers/utils.js
index 55dd8b64..d4650acb 100644
--- a/apps/app-frontend/src/helpers/utils.js
+++ b/apps/app-frontend/src/helpers/utils.js
@@ -10,6 +10,11 @@ export async function getOS() {
   return await invoke('plugin:utils|get_os')
 }
 
+export async function getArtifact(downloadurl, filename, ostype, autoupdatesupported) {
+  console.log('Downloading build', downloadurl, filename, ostype, autoupdatesupported)
+  return await invoke('plugin:utils|get_artifact', { downloadurl, filename, ostype, autoupdatesupported })
+}
+
 export async function openPath(path) {
   return await invoke('plugin:utils|open_path', { path })
 }
diff --git a/apps/app-frontend/src/pages/Browse.vue b/apps/app-frontend/src/pages/Browse.vue
index 6b9e9f6a..237d7dbd 100644
--- a/apps/app-frontend/src/pages/Browse.vue
+++ b/apps/app-frontend/src/pages/Browse.vue
@@ -22,7 +22,6 @@ import { get as getInstance, get_projects as getInstanceProjects } from '@/helpe
 import { convertFileSrc } from '@tauri-apps/api/core'
 import { get_search_results } from '@/helpers/cache.js'
 import { debounce } from '@/helpers/utils.js'
-import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
 
 const router = useRouter()
 const route = useRoute()
@@ -529,7 +528,6 @@ const isModProject = computed(() => ['modpack', 'mod'].includes(projectType.valu
 <template>
   <div ref="searchWrapper" class="search-container">
     <aside class="filter-panel" @scroll="$refs.promo.scroll()">
-      <PromotionWrapper ref="promo" />
       <Card v-if="instanceContext" class="small-instance">
         <router-link :to="`/instance/${encodeURIComponent(instanceContext.path)}`" class="instance">
           <Avatar
diff --git a/apps/app-frontend/src/pages/Index.vue b/apps/app-frontend/src/pages/Index.vue
index dc066a52..3a01cc01 100644
--- a/apps/app-frontend/src/pages/Index.vue
+++ b/apps/app-frontend/src/pages/Index.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { ref, onMounted, onUnmounted, computed } from 'vue'
+import { ref, onUnmounted, computed } from 'vue'
 import { useRoute } from 'vue-router'
 import RowDisplay from '@/components/RowDisplay.vue'
 import { list } from '@/helpers/profile.js'
@@ -8,11 +8,6 @@ import { useBreadcrumbs } from '@/store/breadcrumbs'
 import { handleError } from '@/store/notifications.js'
 import dayjs from 'dayjs'
 import { get_search_results } from '@/helpers/cache.js'
-import { hide_ads_window } from '@/helpers/ads.js'
-
-onMounted(() => {
-  hide_ads_window(true)
-})
 
 const featuredModpacks = ref({})
 const featuredMods = ref({})
@@ -105,31 +100,27 @@ onUnmounted(() => {
 
 <template>
   <div class="page-container">
-    <RowDisplay
-      v-if="total > 0"
-      :instances="[
-        {
-          label: 'Jump back in',
-          route: '/library',
-          instances: recentInstances,
-          instance: true,
-          downloaded: true,
-        },
-        {
-          label: 'Popular packs',
-          route: '/browse/modpack',
-          instances: featuredModpacks,
-          downloaded: false,
-        },
-        {
-          label: 'Popular mods',
-          route: '/browse/mod',
-          instances: featuredMods,
-          downloaded: false,
-        },
-      ]"
-      :can-paginate="true"
-    />
+    <RowDisplay v-if="total > 0" :instances="[
+      {
+        label: 'Jump back in',
+        route: '/library',
+        instances: recentInstances,
+        instance: true,
+        downloaded: true,
+      },
+      {
+        label: 'Popular packs',
+        route: '/browse/modpack',
+        instances: featuredModpacks,
+        downloaded: false,
+      },
+      {
+        label: 'Popular mods',
+        route: '/browse/mod',
+        instances: featuredMods,
+        downloaded: false,
+      },
+    ]" :can-paginate="true" />
   </div>
 </template>
 
diff --git a/apps/app-frontend/src/pages/Library.vue b/apps/app-frontend/src/pages/Library.vue
index 147a711e..03b8970a 100644
--- a/apps/app-frontend/src/pages/Library.vue
+++ b/apps/app-frontend/src/pages/Library.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { onMounted, onUnmounted, ref, shallowRef } from 'vue'
+import { onUnmounted, ref, shallowRef } from 'vue'
 import GridDisplay from '@/components/GridDisplay.vue'
 import { list } from '@/helpers/profile.js'
 import { useRoute } from 'vue-router'
@@ -10,11 +10,6 @@ import { Button } from '@modrinth/ui'
 import { PlusIcon } from '@modrinth/assets'
 import InstanceCreationModal from '@/components/ui/InstanceCreationModal.vue'
 import { NewInstanceImage } from '@/assets/icons'
-import { hide_ads_window } from '@/helpers/ads.js'
-
-onMounted(() => {
-  hide_ads_window(true)
-})
 
 const route = useRoute()
 const breadcrumbs = useBreadcrumbs()
diff --git a/apps/app-frontend/src/pages/Settings.vue b/apps/app-frontend/src/pages/Settings.vue
index 1e14efc0..afee22be 100644
--- a/apps/app-frontend/src/pages/Settings.vue
+++ b/apps/app-frontend/src/pages/Settings.vue
@@ -1,6 +1,6 @@
 <script setup>
-import { ref, watch, onMounted } from 'vue'
-import { LogOutIcon, LogInIcon, BoxIcon, FolderSearchIcon, TrashIcon } from '@modrinth/assets'
+import { ref, watch } from 'vue'
+import { LogOutIcon, LogInIcon, BoxIcon, FolderSearchIcon, TrashIcon, PirateShipIcon, UpdatedIcon } from '@modrinth/assets'
 import { Card, Slider, DropdownSelect, Toggle, Button } from '@modrinth/ui'
 import { handleError, useTheming } from '@/store/state'
 import { get, set } from '@/helpers/settings'
@@ -8,24 +8,27 @@ import { get_java_versions, get_max_memory, set_java_version } from '@/helpers/j
 import { get as getCreds, logout } from '@/helpers/mr_auth.js'
 import JavaSelector from '@/components/ui/JavaSelector.vue'
 import ModrinthLoginScreen from '@/components/ui/tutorial/ModrinthLoginScreen.vue'
-import { optOutAnalytics, optInAnalytics } from '@/helpers/analytics'
+import { optOutAnalytics } from '@/helpers/analytics'
 import { open } from '@tauri-apps/plugin-dialog'
 import { getOS } from '@/helpers/utils.js'
-import { getVersion } from '@tauri-apps/api/app'
+// import { getVersion } from '@tauri-apps/api/app'
 import { get_user, purge_cache_types } from '@/helpers/cache.js'
-import { hide_ads_window } from '@/helpers/ads.js'
+
 import ConfirmModalWrapper from '@/components/ui/modal/ConfirmModalWrapper.vue'
 
-onMounted(() => {
-  hide_ads_window()
-})
+import { version, development_build } from '../../package.json'
+import {
+  getRemote,
+  getBranches,
+  launcherUrl,
+  latestBetaCommitLink,
+  latestBetaCommitTruncatedSha,
+} from '@/helpers/update.js'
 
 const pageOptions = ['Home', 'Library']
 
 const themeStore = useTheming()
 
-const version = await getVersion()
-
 const accessSettings = async () => {
   const settings = await get()
 
@@ -51,7 +54,7 @@ watch(
     const setSettings = JSON.parse(JSON.stringify(newSettings))
 
     if (setSettings.telemetry) {
-      optInAnalytics()
+      // optInAnalytics()
     } else {
       optOutAnalytics()
     }
@@ -147,6 +150,9 @@ async function purgeCache() {
     'search_results',
   ]).catch(handleError)
 }
+
+await getRemote(false, false)
+await getBranches()
 </script>
 
 <template>
@@ -175,14 +181,9 @@ async function purgeCache() {
           Sign in
         </button>
       </div>
-      <ConfirmModalWrapper
-        ref="purgeCacheConfirmModal"
-        title="Are you sure you want to purge the cache?"
+      <ConfirmModalWrapper ref="purgeCacheConfirmModal" title="Are you sure you want to purge the cache?"
         description="If you proceed, your entire cache will be purged. This may slow down the app temporarily."
-        :has-to-type="false"
-        proceed-label="Purge cache"
-        @proceed="purgeCache"
-      />
+        :has-to-type="false" proceed-label="Purge cache" @proceed="purgeCache" />
       <div class="adjacent-input">
         <label for="purge-cache">
           <span class="label__title">App cache</span>
@@ -225,20 +226,12 @@ async function purgeCache() {
           <span class="label__title">Color theme</span>
           <span class="label__description">Change the global launcher color theme.</span>
         </label>
-        <DropdownSelect
-          id="theme"
-          name="Theme dropdown"
-          :options="themeStore.themeOptions"
-          :default-value="settings.theme"
-          :model-value="settings.theme"
-          class="theme-dropdown"
-          @change="
-            (e) => {
+        <DropdownSelect id="theme" name="Theme dropdown" :options="themeStore.themeOptions"
+          :default-value="settings.theme" :model-value="settings.theme" class="theme-dropdown" @change="(e) => {
               themeStore.setThemeState(e.option.toLowerCase())
               settings.theme = themeStore.selectedTheme
             }
-          "
-        />
+            " />
       </div>
       <div class="adjacent-input">
         <label for="advanced-rendering">
@@ -248,70 +241,45 @@ async function purgeCache() {
             without hardware-accelerated rendering.
           </span>
         </label>
-        <Toggle
-          id="advanced-rendering"
-          :model-value="themeStore.advancedRendering"
-          :checked="themeStore.advancedRendering"
-          @update:model-value="
-            (e) => {
+        <Toggle id="advanced-rendering" :model-value="themeStore.advancedRendering"
+          :checked="themeStore.advancedRendering" @update:model-value="(e) => {
               themeStore.advancedRendering = e
               settings.advanced_rendering = themeStore.advancedRendering
             }
-          "
-        />
+            " />
       </div>
       <div class="adjacent-input">
         <label for="minimize-launcher">
           <span class="label__title">Minimize launcher</span>
-          <span class="label__description"
-            >Minimize the launcher when a Minecraft process starts.</span
-          >
+          <span class="label__description">Minimize the launcher when a Minecraft process starts.</span>
         </label>
-        <Toggle
-          id="minimize-launcher"
-          :model-value="settings.hide_on_process_start"
-          :checked="settings.hide_on_process_start"
-          @update:model-value="
-            (e) => {
+        <Toggle id="minimize-launcher" :model-value="settings.hide_on_process_start"
+          :checked="settings.hide_on_process_start" @update:model-value="(e) => {
               settings.hide_on_process_start = e
             }
-          "
-        />
+            " />
       </div>
       <div v-if="getOS() != 'MacOS'" class="adjacent-input">
         <label for="native-decorations">
           <span class="label__title">Native decorations</span>
           <span class="label__description">Use system window frame (app restart required).</span>
         </label>
-        <Toggle
-          id="native-decorations"
-          :model-value="settings.native_decorations"
-          :checked="settings.native_decorations"
-          @update:model-value="
-            (e) => {
+        <Toggle id="native-decorations" :model-value="settings.native_decorations"
+          :checked="settings.native_decorations" @update:model-value="(e) => {
               settings.native_decorations = e
             }
-          "
-        />
+            " />
       </div>
       <div class="adjacent-input">
         <label for="opening-page">
           <span class="label__title">Default landing page</span>
           <span class="label__description">Change the page to which the launcher opens on.</span>
         </label>
-        <DropdownSelect
-          id="opening-page"
-          name="Opening page dropdown"
-          :options="pageOptions"
-          :default-value="settings.default_page"
-          :model-value="settings.default_page"
-          class="opening-page"
-          @change="
-            (e) => {
+        <DropdownSelect id="opening-page" name="Opening page dropdown" :options="pageOptions"
+          :default-value="settings.default_page" :model-value="settings.default_page" class="opening-page" @change="(e) => {
               settings.default_page = e.option
             }
-          "
-        />
+            " />
       </div>
     </Card>
     <Card>
@@ -330,13 +298,7 @@ async function purgeCache() {
             effect)
           </span>
         </label>
-        <Slider
-          id="max-downloads"
-          v-model="settings.max_concurrent_downloads"
-          :min="1"
-          :max="10"
-          :step="1"
-        />
+        <Slider id="max-downloads" v-model="settings.max_concurrent_downloads" :min="1" :max="10" :step="1" />
       </div>
 
       <div class="adjacent-input">
@@ -348,13 +310,7 @@ async function purgeCache() {
             effect)
           </span>
         </label>
-        <Slider
-          id="max-writes"
-          v-model="settings.max_concurrent_writes"
-          :min="1"
-          :max="50"
-          :step="1"
-        />
+        <Slider id="max-writes" v-model="settings.max_concurrent_writes" :min="1" :max="50" :step="1" />
       </div>
     </Card>
     <Card>
@@ -367,21 +323,16 @@ async function purgeCache() {
         <label for="opt-out-analytics">
           <span class="label__title">Telemetry</span>
           <span class="label__description">
-            Modrinth collects anonymized analytics and usage data to improve our user experience and
+            (Always disabled by AstralRinth) • Modrinth collects anonymized analytics and usage data to improve our user experience and
             customize your experience. By disabling this option, you opt out and your data will no
-            longer be collected.
+            longer be collected. 
           </span>
         </label>
-        <Toggle
-          id="opt-out-analytics"
-          :model-value="settings.telemetry"
-          :checked="settings.telemetry"
-          @update:model-value="
-            (e) => {
+        <Toggle id="opt-out-analytics" :model-value="settings.telemetry" :disabled="!settings.telemetry" :checked="settings.telemetry"
+          @update:model-value="(e) => {
               settings.telemetry = e
             }
-          "
-        />
+            " />
       </div>
       <div class="adjacent-input">
         <label for="disable-discord-rpc">
@@ -393,11 +344,7 @@ async function purgeCache() {
             mods. (app restart required to take effect)
           </span>
         </label>
-        <Toggle
-          id="disable-discord-rpc"
-          v-model="settings.discord_rpc"
-          :checked="settings.discord_rpc"
-        />
+        <Toggle id="disable-discord-rpc" v-model="settings.discord_rpc" :checked="settings.discord_rpc" />
       </div>
     </Card>
     <Card>
@@ -410,36 +357,20 @@ async function purgeCache() {
         <label :for="'java-' + version">
           <span class="label__title">Java {{ version }} location</span>
         </label>
-        <JavaSelector
-          :id="'java-selector-' + version"
-          v-model="javaVersions[version]"
-          :version="version"
-          @update:model-value="updateJavaVersion"
-        />
+        <JavaSelector :id="'java-selector-' + version" v-model="javaVersions[version]" :version="version"
+          @update:model-value="updateJavaVersion" />
       </template>
       <hr class="card-divider" />
       <label for="java-args">
         <span class="label__title">Java arguments</span>
       </label>
-      <input
-        id="java-args"
-        v-model="settings.launchArgs"
-        autocomplete="off"
-        type="text"
-        class="installation-input"
-        placeholder="Enter java arguments..."
-      />
+      <input id="java-args" v-model="settings.launchArgs" autocomplete="off" type="text" class="installation-input"
+        placeholder="Enter java arguments..." />
       <label for="env-vars">
         <span class="label__title">Environmental variables</span>
       </label>
-      <input
-        id="env-vars"
-        v-model="settings.envVars"
-        autocomplete="off"
-        type="text"
-        class="installation-input"
-        placeholder="Enter environmental variables..."
-      />
+      <input id="env-vars" v-model="settings.envVars" autocomplete="off" type="text" class="installation-input"
+        placeholder="Enter environmental variables..." />
       <hr class="card-divider" />
       <div class="adjacent-input">
         <label for="max-memory">
@@ -448,14 +379,7 @@ async function purgeCache() {
             The memory allocated to each instance when it is ran.
           </span>
         </label>
-        <Slider
-          id="max-memory"
-          v-model="settings.memory.maximum"
-          :min="8"
-          :max="maxMemory"
-          :step="64"
-          unit="mb"
-        />
+        <Slider id="max-memory" v-model="settings.memory.maximum" :min="8" :max="maxMemory" :step="64" unit="mb" />
       </div>
     </Card>
     <Card>
@@ -469,39 +393,24 @@ async function purgeCache() {
           <span class="label__title">Pre launch</span>
           <span class="label__description"> Ran before the instance is launched. </span>
         </label>
-        <input
-          id="pre-launch"
-          v-model="settings.hooks.pre_launch"
-          autocomplete="off"
-          type="text"
-          placeholder="Enter pre-launch command..."
-        />
+        <input id="pre-launch" v-model="settings.hooks.pre_launch" autocomplete="off" type="text"
+          placeholder="Enter pre-launch command..." />
       </div>
       <div class="adjacent-input">
         <label for="wrapper">
           <span class="label__title">Wrapper</span>
           <span class="label__description"> Wrapper command for launching Minecraft. </span>
         </label>
-        <input
-          id="wrapper"
-          v-model="settings.hooks.wrapper"
-          autocomplete="off"
-          type="text"
-          placeholder="Enter wrapper command..."
-        />
+        <input id="wrapper" v-model="settings.hooks.wrapper" autocomplete="off" type="text"
+          placeholder="Enter wrapper command..." />
       </div>
       <div class="adjacent-input">
         <label for="post-exit">
           <span class="label__title">Post exit</span>
           <span class="label__description"> Ran after the game closes. </span>
         </label>
-        <input
-          id="post-exit"
-          v-model="settings.hooks.post_exit"
-          autocomplete="off"
-          type="text"
-          placeholder="Enter post-exit command..."
-        />
+        <input id="post-exit" v-model="settings.hooks.post_exit" autocomplete="off" type="text"
+          placeholder="Enter post-exit command..." />
       </div>
     </Card>
     <Card>
@@ -517,58 +426,71 @@ async function purgeCache() {
             Overwrites the options.txt file to start in full screen when launched.
           </span>
         </label>
-        <Toggle
-          id="fullscreen"
-          :model-value="settings.force_fullscreen"
-          :checked="settings.force_fullscreen"
-          @update:model-value="
-            (e) => {
+        <Toggle id="fullscreen" :model-value="settings.force_fullscreen" :checked="settings.force_fullscreen"
+          @update:model-value="(e) => {
               settings.force_fullscreen = e
             }
-          "
-        />
+            " />
       </div>
       <div class="adjacent-input">
         <label for="width">
           <span class="label__title">Width</span>
           <span class="label__description"> The width of the game window when launched. </span>
         </label>
-        <input
-          id="width"
-          v-model="settings.game_resolution[0]"
-          :disabled="settings.force_fullscreen"
-          autocomplete="off"
-          type="number"
-          placeholder="Enter width..."
-        />
+        <input id="width" v-model="settings.game_resolution[0]" :disabled="settings.force_fullscreen" autocomplete="off"
+          type="number" placeholder="Enter width..." />
       </div>
       <div class="adjacent-input">
         <label for="height">
           <span class="label__title">Height</span>
           <span class="label__description"> The height of the game window when launched. </span>
         </label>
-        <input
-          id="height"
-          v-model="settings.game_resolution[1]"
-          :disabled="settings.force_fullscreen"
-          autocomplete="off"
-          type="number"
-          class="input"
-          placeholder="Enter height..."
-        />
+        <input id="height" v-model="settings.game_resolution[1]" :disabled="settings.force_fullscreen"
+          autocomplete="off" type="number" class="input" placeholder="Enter height..." />
       </div>
     </Card>
     <Card>
-      <div class="label">
+      <div class="label inline-fix">
         <h3>
-          <span class="label__title size-card-header">About</span>
+          <span class="label__title size-card-header in"
+            > About
+            <p v-if="development_build" class="development option">
+              You are using a development version, there may be errors.
+            </p>
+          </span>
         </h3>
       </div>
       <div>
         <label>
-          <span class="label__title">App version</span>
-          <span class="label__description">Modrinth App v{{ version }} </span>
+          <span class="label__title inl">AstralRinth <PirateShipIcon /> Version • {{ version }}</span>
+
+          <span class="label__description"
+            >Latest beta commit • 
+            <a class="github" :href="latestBetaCommitLink">{{
+              latestBetaCommitTruncatedSha
+            }}</a></span
+          >
+          <span class="label__description"
+            >All latest versions always published on GitHub
+            <a class="github" :href="launcherUrl">Our GitHub repository</a></span
+          >
+
+          <span class="label__title">Update Checker</span>
+
+          <span class="label__description"
+            >Version on remote server • 
+            <p id="releaseData" class="cosmic inline-fix"></p>
+          </span>
+          <span class="label__description"
+            >Version on local device • 
+            <p class="cosmic inline-fix">v{{ version }}</p></span
+          >
         </label>
+        <div class="inline-item-group">
+          <Button icon-only @click="getRemote(false, false), getBranches()">
+            <UpdatedIcon /> Check for updates
+          </Button>
+        </div>
       </div>
     </Card>
   </div>
@@ -606,4 +528,112 @@ async function purgeCache() {
     }
   }
 }
+
+.development {
+  color: #ff6a00;
+  text-decoration: none;
+  text-shadow:
+    0 0 4px rgba(79, 173, 255, 0.5),
+    0 0 8px rgba(14, 98, 204, 0.5),
+    0 0 12px rgba(122, 31, 199, 0.5);
+  transition: color 1.5s ease;
+}
+.development:hover,
+.development:focus,
+.development:active {
+  color: #4800d3;
+  text-shadow: #801313;
+}
+
+.cosmic {
+  color: #3e8cde;
+  text-decoration: none;
+  text-shadow:
+    0 0 4px rgba(79, 173, 255, 0.5),
+    0 0 8px rgba(14, 98, 204, 0.5),
+    0 0 12px rgba(122, 31, 199, 0.5);
+  transition: color 0.35s ease;
+}
+.cosmic:hover,
+.cosmic:focus,
+.cosmic:active {
+  color: #10fae5;
+  text-shadow: #26065e;
+}
+
+.download {
+  color: #3e8cde;
+  border: none;
+  padding: var(--gap-sm) var(--gap-lg);
+  //background-color: rgba(0, 0, 0, 0.0);
+  text-decoration: none;
+  text-shadow:
+    0 0 4px rgba(79, 173, 255, 0.5),
+    0 0 8px rgba(14, 98, 204, 0.5),
+    0 0 12px rgba(122, 31, 199, 0.5);
+  transition: color 0.35s ease;
+}
+.download:hover,
+.download:focus,
+.download:active {
+  color: #10fae5;
+  text-shadow: #26065e;
+}
+
+a.github {
+  color: #3e8cde;
+  text-decoration: none;
+  text-shadow:
+    0 0 4px rgba(79, 173, 255, 0.5),
+    0 0 8px rgba(14, 98, 204, 0.5),
+    0 0 12px rgba(122, 31, 199, 0.5);
+  transition: color 0.35s ease;
+}
+
+a.github:hover,
+a.github:focus,
+a.github:active {
+  color: #10fae5;
+  text-shadow: #26065e;
+}
+
+.inline-item-group {
+  display: inline-flex;
+  gap: 0.25rem;
+}
+
+.inline-fix {
+  display: inline-flex;
+  margin-top: -2rem;
+  margin-bottom: -2rem;
+}
+
+.download-modal {
+  color: #3e8cde;
+  padding: var(--gap-sm) var(--gap-lg);
+  text-decoration: none;
+  text-shadow:
+    0 0 4px rgba(79, 173, 255, 0.5),
+    0 0 8px rgba(14, 98, 204, 0.5),
+    0 0 12px rgba(122, 31, 199, 0.5);
+  transition: color 0.35s ease;
+}
+.download-modal:hover,
+.download-modal:focus,
+.download-modal:active {
+  color: #10fae5;
+  text-shadow: #26065e;
+}
+
+.option {
+  background: var(--color-bg);
+  border-radius: var(--radius-lg);
+  width: auto;
+  display: inline-flex;
+  align-items: center;
+  margin-top: auto;
+  margin-left: 0.5rem;
+  font-size: 1rem;
+  padding: 0.5rem;
+}
 </style>
diff --git a/apps/app-frontend/src/pages/instance/Index.vue b/apps/app-frontend/src/pages/instance/Index.vue
index eb691919..4d87e09f 100644
--- a/apps/app-frontend/src/pages/instance/Index.vue
+++ b/apps/app-frontend/src/pages/instance/Index.vue
@@ -61,7 +61,6 @@
           </RouterLink>
         </div>
       </Card>
-      <PromotionWrapper ref="promo" class="mt-4" />
     </div>
     <div class="content">
       <RouterView v-slot="{ Component }">
@@ -136,7 +135,6 @@ import { convertFileSrc } from '@tauri-apps/api/core'
 import { handleSevereError } from '@/store/error.js'
 import { get_project, get_version_many } from '@/helpers/cache.js'
 import dayjs from 'dayjs'
-import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
 
 const route = useRoute()
 
diff --git a/apps/app-frontend/src/pages/project/Index.vue b/apps/app-frontend/src/pages/project/Index.vue
index 3e97d973..218e3061 100644
--- a/apps/app-frontend/src/pages/project/Index.vue
+++ b/apps/app-frontend/src/pages/project/Index.vue
@@ -62,7 +62,6 @@
           </a>
         </div>
       </Card>
-      <PromotionWrapper ref="promo" />
       <Card class="sidebar-card">
         <div class="stats">
           <div class="stat">
@@ -262,7 +261,6 @@ import { convertFileSrc } from '@tauri-apps/api/core'
 import ContextMenu from '@/components/ui/ContextMenu.vue'
 import { install as installVersion } from '@/store/install.js'
 import { get_project, get_project_many, get_team, get_version_many } from '@/helpers/cache.js'
-import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
 
 dayjs.extend(relativeTime)
 
diff --git a/apps/app/Info.plist b/apps/app/Info.plist
index 2e875fe1..a3069984 100644
--- a/apps/app/Info.plist
+++ b/apps/app/Info.plist
@@ -6,11 +6,11 @@
         <array>
             <dict>
                 <key>CFBundleURLName</key>
-                <string>ModrinthApp</string>
+                <string>AstralRinthApp</string>
                 <key>CFBundleURLSchemes</key>
                 <array>
-                    <string>modrinth</string>
-                    <string>modrinthscheme</string>
+                    <string>astralrinth</string>
+                    <string>astralrinthscheme</string>
                 </array>
             </dict>
         </array>
diff --git a/apps/app/build.rs b/apps/app/build.rs
index 818964f5..39d14a9c 100644
--- a/apps/app/build.rs
+++ b/apps/app/build.rs
@@ -12,6 +12,7 @@ fn main() {
                 "auth",
                 InlinedPlugin::new()
                     .commands(&[
+                        "offline_login",
                         "login",
                         "remove_user",
                         "get_default_user",
@@ -206,6 +207,7 @@ fn main() {
                 "utils",
                 InlinedPlugin::new()
                     .commands(&[
+                        "get_artifact",
                         "get_os",
                         "should_disable_mouseover",
                         "highlight_in_folder",
@@ -217,19 +219,6 @@ fn main() {
                     .default_permission(
                         DefaultPermissionRule::AllowAllCommands,
                     ),
-            )
-            .plugin(
-                "ads",
-                InlinedPlugin::new()
-                    .commands(&[
-                        "init_ads_window",
-                        "hide_ads_window",
-                        "scroll_ads_window",
-                        "show_ads_window",
-                    ])
-                    .default_permission(
-                        DefaultPermissionRule::AllowAllCommands,
-                    ),
             ),
     )
     .expect("Failed to run tauri-build");
diff --git a/apps/app/capabilities/ads.json b/apps/app/capabilities/ads.json
deleted file mode 100644
index 437e5400..00000000
--- a/apps/app/capabilities/ads.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "identifier": "ads",
-  "description": "",
-  "local": false,
-  "remote": {
-    "urls": ["https://modrinth.com/*", "http://localhost:3000/*"]
-  },
-  "webviews": [
-    "ads-window"
-  ],
-  "permissions": [
-    "shell:allow-open",
-    "ads:default"
-  ]
-}
\ No newline at end of file
diff --git a/apps/app/capabilities/plugins.json b/apps/app/capabilities/plugins.json
index 126febf0..efca87b7 100644
--- a/apps/app/capabilities/plugins.json
+++ b/apps/app/capabilities/plugins.json
@@ -35,7 +35,6 @@
     "cache:default",
     "settings:default",
     "tags:default",
-    "utils:default",
-    "ads:default"
+    "utils:default"
   ]
 }
diff --git a/apps/app/gen/schemas/acl-manifests.json b/apps/app/gen/schemas/acl-manifests.json
index f347a07f..79f2156f 100644
--- a/apps/app/gen/schemas/acl-manifests.json
+++ b/apps/app/gen/schemas/acl-manifests.json
@@ -1 +1 @@
-{"ads":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-init-ads-window","allow-hide-ads-window","allow-scroll-ads-window","allow-show-ads-window"]},"permissions":{"allow-hide-ads-window":{"identifier":"allow-hide-ads-window","description":"Enables the hide_ads_window command without any pre-configured scope.","commands":{"allow":["hide_ads_window"],"deny":[]}},"allow-init-ads-window":{"identifier":"allow-init-ads-window","description":"Enables the init_ads_window command without any pre-configured scope.","commands":{"allow":["init_ads_window"],"deny":[]}},"allow-scroll-ads-window":{"identifier":"allow-scroll-ads-window","description":"Enables the scroll_ads_window command without any pre-configured scope.","commands":{"allow":["scroll_ads_window"],"deny":[]}},"allow-show-ads-window":{"identifier":"allow-show-ads-window","description":"Enables the show_ads_window command without any pre-configured scope.","commands":{"allow":["show_ads_window"],"deny":[]}},"deny-hide-ads-window":{"identifier":"deny-hide-ads-window","description":"Denies the hide_ads_window command without any pre-configured scope.","commands":{"allow":[],"deny":["hide_ads_window"]}},"deny-init-ads-window":{"identifier":"deny-init-ads-window","description":"Denies the init_ads_window command without any pre-configured scope.","commands":{"allow":[],"deny":["init_ads_window"]}},"deny-scroll-ads-window":{"identifier":"deny-scroll-ads-window","description":"Denies the scroll_ads_window command without any pre-configured scope.","commands":{"allow":[],"deny":["scroll_ads_window"]}},"deny-show-ads-window":{"identifier":"deny-show-ads-window","description":"Denies the show_ads_window command without any pre-configured scope.","commands":{"allow":[],"deny":["show_ads_window"]}}},"permission_sets":{},"global_scope_schema":null},"auth":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-login","allow-remove-user","allow-get-default-user","allow-set-default-user","allow-get-users"]},"permissions":{"allow-get-default-user":{"identifier":"allow-get-default-user","description":"Enables the get_default_user command without any pre-configured scope.","commands":{"allow":["get_default_user"],"deny":[]}},"allow-get-users":{"identifier":"allow-get-users","description":"Enables the get_users command without any pre-configured scope.","commands":{"allow":["get_users"],"deny":[]}},"allow-login":{"identifier":"allow-login","description":"Enables the login command without any pre-configured scope.","commands":{"allow":["login"],"deny":[]}},"allow-remove-user":{"identifier":"allow-remove-user","description":"Enables the remove_user command without any pre-configured scope.","commands":{"allow":["remove_user"],"deny":[]}},"allow-set-default-user":{"identifier":"allow-set-default-user","description":"Enables the set_default_user command without any pre-configured scope.","commands":{"allow":["set_default_user"],"deny":[]}},"deny-get-default-user":{"identifier":"deny-get-default-user","description":"Denies the get_default_user command without any pre-configured scope.","commands":{"allow":[],"deny":["get_default_user"]}},"deny-get-users":{"identifier":"deny-get-users","description":"Denies the get_users command without any pre-configured scope.","commands":{"allow":[],"deny":["get_users"]}},"deny-login":{"identifier":"deny-login","description":"Denies the login command without any pre-configured scope.","commands":{"allow":[],"deny":["login"]}},"deny-remove-user":{"identifier":"deny-remove-user","description":"Denies the remove_user command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_user"]}},"deny-set-default-user":{"identifier":"deny-set-default-user","description":"Denies the set_default_user command without any pre-configured scope.","commands":{"allow":[],"deny":["set_default_user"]}}},"permission_sets":{},"global_scope_schema":null},"cache":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-get-project","allow-get-project-many","allow-get-version","allow-get-version-many","allow-get-user","allow-get-user-many","allow-get-team","allow-get-team-many","allow-get-organization","allow-get-organization-many","allow-get-search-results","allow-get-search-results-many","allow-purge-cache-types"]},"permissions":{"allow-get-organization":{"identifier":"allow-get-organization","description":"Enables the get_organization command without any pre-configured scope.","commands":{"allow":["get_organization"],"deny":[]}},"allow-get-organization-many":{"identifier":"allow-get-organization-many","description":"Enables the get_organization_many command without any pre-configured scope.","commands":{"allow":["get_organization_many"],"deny":[]}},"allow-get-project":{"identifier":"allow-get-project","description":"Enables the get_project command without any pre-configured scope.","commands":{"allow":["get_project"],"deny":[]}},"allow-get-project-many":{"identifier":"allow-get-project-many","description":"Enables the get_project_many command without any pre-configured scope.","commands":{"allow":["get_project_many"],"deny":[]}},"allow-get-search-results":{"identifier":"allow-get-search-results","description":"Enables the get_search_results command without any pre-configured scope.","commands":{"allow":["get_search_results"],"deny":[]}},"allow-get-search-results-many":{"identifier":"allow-get-search-results-many","description":"Enables the get_search_results_many command without any pre-configured scope.","commands":{"allow":["get_search_results_many"],"deny":[]}},"allow-get-team":{"identifier":"allow-get-team","description":"Enables the get_team command without any pre-configured scope.","commands":{"allow":["get_team"],"deny":[]}},"allow-get-team-many":{"identifier":"allow-get-team-many","description":"Enables the get_team_many command without any pre-configured scope.","commands":{"allow":["get_team_many"],"deny":[]}},"allow-get-user":{"identifier":"allow-get-user","description":"Enables the get_user command without any pre-configured scope.","commands":{"allow":["get_user"],"deny":[]}},"allow-get-user-many":{"identifier":"allow-get-user-many","description":"Enables the get_user_many command without any pre-configured scope.","commands":{"allow":["get_user_many"],"deny":[]}},"allow-get-version":{"identifier":"allow-get-version","description":"Enables the get_version command without any pre-configured scope.","commands":{"allow":["get_version"],"deny":[]}},"allow-get-version-many":{"identifier":"allow-get-version-many","description":"Enables the get_version_many command without any pre-configured scope.","commands":{"allow":["get_version_many"],"deny":[]}},"allow-purge-cache-types":{"identifier":"allow-purge-cache-types","description":"Enables the purge_cache_types command without any pre-configured scope.","commands":{"allow":["purge_cache_types"],"deny":[]}},"deny-get-organization":{"identifier":"deny-get-organization","description":"Denies the get_organization command without any pre-configured scope.","commands":{"allow":[],"deny":["get_organization"]}},"deny-get-organization-many":{"identifier":"deny-get-organization-many","description":"Denies the get_organization_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_organization_many"]}},"deny-get-project":{"identifier":"deny-get-project","description":"Denies the get_project command without any pre-configured scope.","commands":{"allow":[],"deny":["get_project"]}},"deny-get-project-many":{"identifier":"deny-get-project-many","description":"Denies the get_project_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_project_many"]}},"deny-get-search-results":{"identifier":"deny-get-search-results","description":"Denies the get_search_results command without any pre-configured scope.","commands":{"allow":[],"deny":["get_search_results"]}},"deny-get-search-results-many":{"identifier":"deny-get-search-results-many","description":"Denies the get_search_results_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_search_results_many"]}},"deny-get-team":{"identifier":"deny-get-team","description":"Denies the get_team command without any pre-configured scope.","commands":{"allow":[],"deny":["get_team"]}},"deny-get-team-many":{"identifier":"deny-get-team-many","description":"Denies the get_team_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_team_many"]}},"deny-get-user":{"identifier":"deny-get-user","description":"Denies the get_user command without any pre-configured scope.","commands":{"allow":[],"deny":["get_user"]}},"deny-get-user-many":{"identifier":"deny-get-user-many","description":"Denies the get_user_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_user_many"]}},"deny-get-version":{"identifier":"deny-get-version","description":"Denies the get_version command without any pre-configured scope.","commands":{"allow":[],"deny":["get_version"]}},"deny-get-version-many":{"identifier":"deny-get-version-many","description":"Denies the get_version_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_version_many"]}},"deny-purge-cache-types":{"identifier":"deny-purge-cache-types","description":"Denies the purge_cache_types command without any pre-configured scope.","commands":{"allow":[],"deny":["purge_cache_types"]}}},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"deep-link":{"default_permission":{"identifier":"default","description":"Allows reading the opened deep link via the get_current command","permissions":["allow-get-current"]},"permissions":{"allow-get-current":{"identifier":"allow-get-current","description":"Enables the get_current command without any pre-configured scope.","commands":{"allow":["get_current"],"deny":[]}},"allow-is-registered":{"identifier":"allow-is-registered","description":"Enables the is_registered command without any pre-configured scope.","commands":{"allow":["is_registered"],"deny":[]}},"allow-register":{"identifier":"allow-register","description":"Enables the register command without any pre-configured scope.","commands":{"allow":["register"],"deny":[]}},"allow-unregister":{"identifier":"allow-unregister","description":"Enables the unregister command without any pre-configured scope.","commands":{"allow":["unregister"],"deny":[]}},"deny-get-current":{"identifier":"deny-get-current","description":"Denies the get_current command without any pre-configured scope.","commands":{"allow":[],"deny":["get_current"]}},"deny-is-registered":{"identifier":"deny-is-registered","description":"Denies the is_registered command without any pre-configured scope.","commands":{"allow":[],"deny":["is_registered"]}},"deny-register":{"identifier":"deny-register","description":"Denies the register command without any pre-configured scope.","commands":{"allow":[],"deny":["register"]}},"deny-unregister":{"identifier":"deny-unregister","description":"Denies the unregister command without any pre-configured scope.","commands":{"allow":[],"deny":["unregister"]}}},"permission_sets":{},"global_scope_schema":null},"dialog":{"default_permission":{"identifier":"default","description":"This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n","permissions":["allow-ask","allow-confirm","allow-message","allow-save","allow-open"]},"permissions":{"allow-ask":{"identifier":"allow-ask","description":"Enables the ask command without any pre-configured scope.","commands":{"allow":["ask"],"deny":[]}},"allow-confirm":{"identifier":"allow-confirm","description":"Enables the confirm command without any pre-configured scope.","commands":{"allow":["confirm"],"deny":[]}},"allow-message":{"identifier":"allow-message","description":"Enables the message command without any pre-configured scope.","commands":{"allow":["message"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-save":{"identifier":"allow-save","description":"Enables the save command without any pre-configured scope.","commands":{"allow":["save"],"deny":[]}},"deny-ask":{"identifier":"deny-ask","description":"Denies the ask command without any pre-configured scope.","commands":{"allow":[],"deny":["ask"]}},"deny-confirm":{"identifier":"deny-confirm","description":"Denies the confirm command without any pre-configured scope.","commands":{"allow":[],"deny":["confirm"]}},"deny-message":{"identifier":"deny-message","description":"Denies the message command without any pre-configured scope.","commands":{"allow":[],"deny":["message"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-save":{"identifier":"deny-save","description":"Denies the save command without any pre-configured scope.","commands":{"allow":[],"deny":["save"]}}},"permission_sets":{},"global_scope_schema":null},"import":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-get-importable-instances","allow-import-instance","allow-is-valid-importable-instance","allow-get-default-launcher-path"]},"permissions":{"allow-get-default-launcher-path":{"identifier":"allow-get-default-launcher-path","description":"Enables the get_default_launcher_path command without any pre-configured scope.","commands":{"allow":["get_default_launcher_path"],"deny":[]}},"allow-get-importable-instances":{"identifier":"allow-get-importable-instances","description":"Enables the get_importable_instances command without any pre-configured scope.","commands":{"allow":["get_importable_instances"],"deny":[]}},"allow-import-instance":{"identifier":"allow-import-instance","description":"Enables the import_instance command without any pre-configured scope.","commands":{"allow":["import_instance"],"deny":[]}},"allow-is-valid-importable-instance":{"identifier":"allow-is-valid-importable-instance","description":"Enables the is_valid_importable_instance command without any pre-configured scope.","commands":{"allow":["is_valid_importable_instance"],"deny":[]}},"deny-get-default-launcher-path":{"identifier":"deny-get-default-launcher-path","description":"Denies the get_default_launcher_path command without any pre-configured scope.","commands":{"allow":[],"deny":["get_default_launcher_path"]}},"deny-get-importable-instances":{"identifier":"deny-get-importable-instances","description":"Denies the get_importable_instances command without any pre-configured scope.","commands":{"allow":[],"deny":["get_importable_instances"]}},"deny-import-instance":{"identifier":"deny-import-instance","description":"Denies the import_instance command without any pre-configured scope.","commands":{"allow":[],"deny":["import_instance"]}},"deny-is-valid-importable-instance":{"identifier":"deny-is-valid-importable-instance","description":"Denies the is_valid_importable_instance command without any pre-configured scope.","commands":{"allow":[],"deny":["is_valid_importable_instance"]}}},"permission_sets":{},"global_scope_schema":null},"jre":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-get-java-versions","allow-set-java-version","allow-jre-find-filtered-jres","allow-jre-get-jre","allow-jre-test-jre","allow-jre-auto-install-java","allow-jre-get-max-memory"]},"permissions":{"allow-get-java-versions":{"identifier":"allow-get-java-versions","description":"Enables the get_java_versions command without any pre-configured scope.","commands":{"allow":["get_java_versions"],"deny":[]}},"allow-jre-auto-install-java":{"identifier":"allow-jre-auto-install-java","description":"Enables the jre_auto_install_java command without any pre-configured scope.","commands":{"allow":["jre_auto_install_java"],"deny":[]}},"allow-jre-find-filtered-jres":{"identifier":"allow-jre-find-filtered-jres","description":"Enables the jre_find_filtered_jres command without any pre-configured scope.","commands":{"allow":["jre_find_filtered_jres"],"deny":[]}},"allow-jre-get-jre":{"identifier":"allow-jre-get-jre","description":"Enables the jre_get_jre command without any pre-configured scope.","commands":{"allow":["jre_get_jre"],"deny":[]}},"allow-jre-get-max-memory":{"identifier":"allow-jre-get-max-memory","description":"Enables the jre_get_max_memory command without any pre-configured scope.","commands":{"allow":["jre_get_max_memory"],"deny":[]}},"allow-jre-test-jre":{"identifier":"allow-jre-test-jre","description":"Enables the jre_test_jre command without any pre-configured scope.","commands":{"allow":["jre_test_jre"],"deny":[]}},"allow-set-java-version":{"identifier":"allow-set-java-version","description":"Enables the set_java_version command without any pre-configured scope.","commands":{"allow":["set_java_version"],"deny":[]}},"deny-get-java-versions":{"identifier":"deny-get-java-versions","description":"Denies the get_java_versions command without any pre-configured scope.","commands":{"allow":[],"deny":["get_java_versions"]}},"deny-jre-auto-install-java":{"identifier":"deny-jre-auto-install-java","description":"Denies the jre_auto_install_java command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_auto_install_java"]}},"deny-jre-find-filtered-jres":{"identifier":"deny-jre-find-filtered-jres","description":"Denies the jre_find_filtered_jres command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_find_filtered_jres"]}},"deny-jre-get-jre":{"identifier":"deny-jre-get-jre","description":"Denies the jre_get_jre command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_get_jre"]}},"deny-jre-get-max-memory":{"identifier":"deny-jre-get-max-memory","description":"Denies the jre_get_max_memory command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_get_max_memory"]}},"deny-jre-test-jre":{"identifier":"deny-jre-test-jre","description":"Denies the jre_test_jre command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_test_jre"]}},"deny-set-java-version":{"identifier":"deny-set-java-version","description":"Denies the set_java_version command without any pre-configured scope.","commands":{"allow":[],"deny":["set_java_version"]}}},"permission_sets":{},"global_scope_schema":null},"logs":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-logs-get-logs","allow-logs-get-logs-by-filename","allow-logs-get-output-by-filename","allow-logs-delete-logs","allow-logs-delete-logs-by-filename","allow-logs-get-latest-log-cursor"]},"permissions":{"allow-logs-delete-logs":{"identifier":"allow-logs-delete-logs","description":"Enables the logs_delete_logs command without any pre-configured scope.","commands":{"allow":["logs_delete_logs"],"deny":[]}},"allow-logs-delete-logs-by-filename":{"identifier":"allow-logs-delete-logs-by-filename","description":"Enables the logs_delete_logs_by_filename command without any pre-configured scope.","commands":{"allow":["logs_delete_logs_by_filename"],"deny":[]}},"allow-logs-get-latest-log-cursor":{"identifier":"allow-logs-get-latest-log-cursor","description":"Enables the logs_get_latest_log_cursor command without any pre-configured scope.","commands":{"allow":["logs_get_latest_log_cursor"],"deny":[]}},"allow-logs-get-logs":{"identifier":"allow-logs-get-logs","description":"Enables the logs_get_logs command without any pre-configured scope.","commands":{"allow":["logs_get_logs"],"deny":[]}},"allow-logs-get-logs-by-filename":{"identifier":"allow-logs-get-logs-by-filename","description":"Enables the logs_get_logs_by_filename command without any pre-configured scope.","commands":{"allow":["logs_get_logs_by_filename"],"deny":[]}},"allow-logs-get-output-by-filename":{"identifier":"allow-logs-get-output-by-filename","description":"Enables the logs_get_output_by_filename command without any pre-configured scope.","commands":{"allow":["logs_get_output_by_filename"],"deny":[]}},"deny-logs-delete-logs":{"identifier":"deny-logs-delete-logs","description":"Denies the logs_delete_logs command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_delete_logs"]}},"deny-logs-delete-logs-by-filename":{"identifier":"deny-logs-delete-logs-by-filename","description":"Denies the logs_delete_logs_by_filename command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_delete_logs_by_filename"]}},"deny-logs-get-latest-log-cursor":{"identifier":"deny-logs-get-latest-log-cursor","description":"Denies the logs_get_latest_log_cursor command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_get_latest_log_cursor"]}},"deny-logs-get-logs":{"identifier":"deny-logs-get-logs","description":"Denies the logs_get_logs command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_get_logs"]}},"deny-logs-get-logs-by-filename":{"identifier":"deny-logs-get-logs-by-filename","description":"Denies the logs_get_logs_by_filename command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_get_logs_by_filename"]}},"deny-logs-get-output-by-filename":{"identifier":"deny-logs-get-output-by-filename","description":"Denies the logs_get_output_by_filename command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_get_output_by_filename"]}}},"permission_sets":{},"global_scope_schema":null},"metadata":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-metadata-get-game-versions","allow-metadata-get-loader-versions"]},"permissions":{"allow-metadata-get-game-versions":{"identifier":"allow-metadata-get-game-versions","description":"Enables the metadata_get_game_versions command without any pre-configured scope.","commands":{"allow":["metadata_get_game_versions"],"deny":[]}},"allow-metadata-get-loader-versions":{"identifier":"allow-metadata-get-loader-versions","description":"Enables the metadata_get_loader_versions command without any pre-configured scope.","commands":{"allow":["metadata_get_loader_versions"],"deny":[]}},"deny-metadata-get-game-versions":{"identifier":"deny-metadata-get-game-versions","description":"Denies the metadata_get_game_versions command without any pre-configured scope.","commands":{"allow":[],"deny":["metadata_get_game_versions"]}},"deny-metadata-get-loader-versions":{"identifier":"deny-metadata-get-loader-versions","description":"Denies the metadata_get_loader_versions command without any pre-configured scope.","commands":{"allow":[],"deny":["metadata_get_loader_versions"]}}},"permission_sets":{},"global_scope_schema":null},"mr-auth":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-login-pass","allow-login-2fa","allow-create-account","allow-logout","allow-get"]},"permissions":{"allow-create-account":{"identifier":"allow-create-account","description":"Enables the create_account command without any pre-configured scope.","commands":{"allow":["create_account"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-login-2fa":{"identifier":"allow-login-2fa","description":"Enables the login_2fa command without any pre-configured scope.","commands":{"allow":["login_2fa"],"deny":[]}},"allow-login-pass":{"identifier":"allow-login-pass","description":"Enables the login_pass command without any pre-configured scope.","commands":{"allow":["login_pass"],"deny":[]}},"allow-logout":{"identifier":"allow-logout","description":"Enables the logout command without any pre-configured scope.","commands":{"allow":["logout"],"deny":[]}},"deny-create-account":{"identifier":"deny-create-account","description":"Denies the create_account command without any pre-configured scope.","commands":{"allow":[],"deny":["create_account"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-login-2fa":{"identifier":"deny-login-2fa","description":"Denies the login_2fa command without any pre-configured scope.","commands":{"allow":[],"deny":["login_2fa"]}},"deny-login-pass":{"identifier":"deny-login-pass","description":"Denies the login_pass command without any pre-configured scope.","commands":{"allow":[],"deny":["login_pass"]}},"deny-logout":{"identifier":"deny-logout","description":"Denies the logout command without any pre-configured scope.","commands":{"allow":[],"deny":["logout"]}}},"permission_sets":{},"global_scope_schema":null},"os":{"default_permission":{"identifier":"default","description":"This permission set configures which\noperating system information are available\nto gather from the frontend.\n\n#### Granted Permissions\n\nAll information except the host name are available.\n\n","permissions":["allow-arch","allow-exe-extension","allow-family","allow-locale","allow-os-type","allow-platform","allow-version"]},"permissions":{"allow-arch":{"identifier":"allow-arch","description":"Enables the arch command without any pre-configured scope.","commands":{"allow":["arch"],"deny":[]}},"allow-exe-extension":{"identifier":"allow-exe-extension","description":"Enables the exe_extension command without any pre-configured scope.","commands":{"allow":["exe_extension"],"deny":[]}},"allow-family":{"identifier":"allow-family","description":"Enables the family command without any pre-configured scope.","commands":{"allow":["family"],"deny":[]}},"allow-hostname":{"identifier":"allow-hostname","description":"Enables the hostname command without any pre-configured scope.","commands":{"allow":["hostname"],"deny":[]}},"allow-locale":{"identifier":"allow-locale","description":"Enables the locale command without any pre-configured scope.","commands":{"allow":["locale"],"deny":[]}},"allow-os-type":{"identifier":"allow-os-type","description":"Enables the os_type command without any pre-configured scope.","commands":{"allow":["os_type"],"deny":[]}},"allow-platform":{"identifier":"allow-platform","description":"Enables the platform command without any pre-configured scope.","commands":{"allow":["platform"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-arch":{"identifier":"deny-arch","description":"Denies the arch command without any pre-configured scope.","commands":{"allow":[],"deny":["arch"]}},"deny-exe-extension":{"identifier":"deny-exe-extension","description":"Denies the exe_extension command without any pre-configured scope.","commands":{"allow":[],"deny":["exe_extension"]}},"deny-family":{"identifier":"deny-family","description":"Denies the family command without any pre-configured scope.","commands":{"allow":[],"deny":["family"]}},"deny-hostname":{"identifier":"deny-hostname","description":"Denies the hostname command without any pre-configured scope.","commands":{"allow":[],"deny":["hostname"]}},"deny-locale":{"identifier":"deny-locale","description":"Denies the locale command without any pre-configured scope.","commands":{"allow":[],"deny":["locale"]}},"deny-os-type":{"identifier":"deny-os-type","description":"Denies the os_type command without any pre-configured scope.","commands":{"allow":[],"deny":["os_type"]}},"deny-platform":{"identifier":"deny-platform","description":"Denies the platform command without any pre-configured scope.","commands":{"allow":[],"deny":["platform"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"pack":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-pack-install","allow-pack-get-profile-from-pack"]},"permissions":{"allow-pack-get-profile-from-pack":{"identifier":"allow-pack-get-profile-from-pack","description":"Enables the pack_get_profile_from_pack command without any pre-configured scope.","commands":{"allow":["pack_get_profile_from_pack"],"deny":[]}},"allow-pack-install":{"identifier":"allow-pack-install","description":"Enables the pack_install command without any pre-configured scope.","commands":{"allow":["pack_install"],"deny":[]}},"deny-pack-get-profile-from-pack":{"identifier":"deny-pack-get-profile-from-pack","description":"Denies the pack_get_profile_from_pack command without any pre-configured scope.","commands":{"allow":[],"deny":["pack_get_profile_from_pack"]}},"deny-pack-install":{"identifier":"deny-pack-install","description":"Denies the pack_install command without any pre-configured scope.","commands":{"allow":[],"deny":["pack_install"]}}},"permission_sets":{},"global_scope_schema":null},"process":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-process-get-all","allow-process-get-by-profile-path","allow-process-kill","allow-process-wait-for"]},"permissions":{"allow-process-get-all":{"identifier":"allow-process-get-all","description":"Enables the process_get_all command without any pre-configured scope.","commands":{"allow":["process_get_all"],"deny":[]}},"allow-process-get-by-profile-path":{"identifier":"allow-process-get-by-profile-path","description":"Enables the process_get_by_profile_path command without any pre-configured scope.","commands":{"allow":["process_get_by_profile_path"],"deny":[]}},"allow-process-kill":{"identifier":"allow-process-kill","description":"Enables the process_kill command without any pre-configured scope.","commands":{"allow":["process_kill"],"deny":[]}},"allow-process-wait-for":{"identifier":"allow-process-wait-for","description":"Enables the process_wait_for command without any pre-configured scope.","commands":{"allow":["process_wait_for"],"deny":[]}},"deny-process-get-all":{"identifier":"deny-process-get-all","description":"Denies the process_get_all command without any pre-configured scope.","commands":{"allow":[],"deny":["process_get_all"]}},"deny-process-get-by-profile-path":{"identifier":"deny-process-get-by-profile-path","description":"Denies the process_get_by_profile_path command without any pre-configured scope.","commands":{"allow":[],"deny":["process_get_by_profile_path"]}},"deny-process-kill":{"identifier":"deny-process-kill","description":"Denies the process_kill command without any pre-configured scope.","commands":{"allow":[],"deny":["process_kill"]}},"deny-process-wait-for":{"identifier":"deny-process-wait-for","description":"Denies the process_wait_for command without any pre-configured scope.","commands":{"allow":[],"deny":["process_wait_for"]}}},"permission_sets":{},"global_scope_schema":null},"profile":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-profile-remove","allow-profile-get","allow-profile-get-many","allow-profile-get-projects","allow-profile-get-optimal-jre-key","allow-profile-get-full-path","allow-profile-get-mod-full-path","allow-profile-list","allow-profile-check-installed","allow-profile-install","allow-profile-update-all","allow-profile-update-project","allow-profile-add-project-from-version","allow-profile-add-project-from-path","allow-profile-toggle-disable-project","allow-profile-remove-project","allow-profile-update-managed-modrinth-version","allow-profile-repair-managed-modrinth","allow-profile-run","allow-profile-run-credentials","allow-profile-kill","allow-profile-edit","allow-profile-edit-icon","allow-profile-export-mrpack","allow-profile-get-pack-export-candidates"]},"permissions":{"allow-profile-add-project-from-path":{"identifier":"allow-profile-add-project-from-path","description":"Enables the profile_add_project_from_path command without any pre-configured scope.","commands":{"allow":["profile_add_project_from_path"],"deny":[]}},"allow-profile-add-project-from-version":{"identifier":"allow-profile-add-project-from-version","description":"Enables the profile_add_project_from_version command without any pre-configured scope.","commands":{"allow":["profile_add_project_from_version"],"deny":[]}},"allow-profile-check-installed":{"identifier":"allow-profile-check-installed","description":"Enables the profile_check_installed command without any pre-configured scope.","commands":{"allow":["profile_check_installed"],"deny":[]}},"allow-profile-edit":{"identifier":"allow-profile-edit","description":"Enables the profile_edit command without any pre-configured scope.","commands":{"allow":["profile_edit"],"deny":[]}},"allow-profile-edit-icon":{"identifier":"allow-profile-edit-icon","description":"Enables the profile_edit_icon command without any pre-configured scope.","commands":{"allow":["profile_edit_icon"],"deny":[]}},"allow-profile-export-mrpack":{"identifier":"allow-profile-export-mrpack","description":"Enables the profile_export_mrpack command without any pre-configured scope.","commands":{"allow":["profile_export_mrpack"],"deny":[]}},"allow-profile-get":{"identifier":"allow-profile-get","description":"Enables the profile_get command without any pre-configured scope.","commands":{"allow":["profile_get"],"deny":[]}},"allow-profile-get-full-path":{"identifier":"allow-profile-get-full-path","description":"Enables the profile_get_full_path command without any pre-configured scope.","commands":{"allow":["profile_get_full_path"],"deny":[]}},"allow-profile-get-many":{"identifier":"allow-profile-get-many","description":"Enables the profile_get_many command without any pre-configured scope.","commands":{"allow":["profile_get_many"],"deny":[]}},"allow-profile-get-mod-full-path":{"identifier":"allow-profile-get-mod-full-path","description":"Enables the profile_get_mod_full_path command without any pre-configured scope.","commands":{"allow":["profile_get_mod_full_path"],"deny":[]}},"allow-profile-get-optimal-jre-key":{"identifier":"allow-profile-get-optimal-jre-key","description":"Enables the profile_get_optimal_jre_key command without any pre-configured scope.","commands":{"allow":["profile_get_optimal_jre_key"],"deny":[]}},"allow-profile-get-pack-export-candidates":{"identifier":"allow-profile-get-pack-export-candidates","description":"Enables the profile_get_pack_export_candidates command without any pre-configured scope.","commands":{"allow":["profile_get_pack_export_candidates"],"deny":[]}},"allow-profile-get-projects":{"identifier":"allow-profile-get-projects","description":"Enables the profile_get_projects command without any pre-configured scope.","commands":{"allow":["profile_get_projects"],"deny":[]}},"allow-profile-install":{"identifier":"allow-profile-install","description":"Enables the profile_install command without any pre-configured scope.","commands":{"allow":["profile_install"],"deny":[]}},"allow-profile-kill":{"identifier":"allow-profile-kill","description":"Enables the profile_kill command without any pre-configured scope.","commands":{"allow":["profile_kill"],"deny":[]}},"allow-profile-list":{"identifier":"allow-profile-list","description":"Enables the profile_list command without any pre-configured scope.","commands":{"allow":["profile_list"],"deny":[]}},"allow-profile-remove":{"identifier":"allow-profile-remove","description":"Enables the profile_remove command without any pre-configured scope.","commands":{"allow":["profile_remove"],"deny":[]}},"allow-profile-remove-project":{"identifier":"allow-profile-remove-project","description":"Enables the profile_remove_project command without any pre-configured scope.","commands":{"allow":["profile_remove_project"],"deny":[]}},"allow-profile-repair-managed-modrinth":{"identifier":"allow-profile-repair-managed-modrinth","description":"Enables the profile_repair_managed_modrinth command without any pre-configured scope.","commands":{"allow":["profile_repair_managed_modrinth"],"deny":[]}},"allow-profile-run":{"identifier":"allow-profile-run","description":"Enables the profile_run command without any pre-configured scope.","commands":{"allow":["profile_run"],"deny":[]}},"allow-profile-run-credentials":{"identifier":"allow-profile-run-credentials","description":"Enables the profile_run_credentials command without any pre-configured scope.","commands":{"allow":["profile_run_credentials"],"deny":[]}},"allow-profile-toggle-disable-project":{"identifier":"allow-profile-toggle-disable-project","description":"Enables the profile_toggle_disable_project command without any pre-configured scope.","commands":{"allow":["profile_toggle_disable_project"],"deny":[]}},"allow-profile-update-all":{"identifier":"allow-profile-update-all","description":"Enables the profile_update_all command without any pre-configured scope.","commands":{"allow":["profile_update_all"],"deny":[]}},"allow-profile-update-managed-modrinth-version":{"identifier":"allow-profile-update-managed-modrinth-version","description":"Enables the profile_update_managed_modrinth_version command without any pre-configured scope.","commands":{"allow":["profile_update_managed_modrinth_version"],"deny":[]}},"allow-profile-update-project":{"identifier":"allow-profile-update-project","description":"Enables the profile_update_project command without any pre-configured scope.","commands":{"allow":["profile_update_project"],"deny":[]}},"deny-profile-add-project-from-path":{"identifier":"deny-profile-add-project-from-path","description":"Denies the profile_add_project_from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_add_project_from_path"]}},"deny-profile-add-project-from-version":{"identifier":"deny-profile-add-project-from-version","description":"Denies the profile_add_project_from_version command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_add_project_from_version"]}},"deny-profile-check-installed":{"identifier":"deny-profile-check-installed","description":"Denies the profile_check_installed command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_check_installed"]}},"deny-profile-edit":{"identifier":"deny-profile-edit","description":"Denies the profile_edit command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_edit"]}},"deny-profile-edit-icon":{"identifier":"deny-profile-edit-icon","description":"Denies the profile_edit_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_edit_icon"]}},"deny-profile-export-mrpack":{"identifier":"deny-profile-export-mrpack","description":"Denies the profile_export_mrpack command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_export_mrpack"]}},"deny-profile-get":{"identifier":"deny-profile-get","description":"Denies the profile_get command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get"]}},"deny-profile-get-full-path":{"identifier":"deny-profile-get-full-path","description":"Denies the profile_get_full_path command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_full_path"]}},"deny-profile-get-many":{"identifier":"deny-profile-get-many","description":"Denies the profile_get_many command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_many"]}},"deny-profile-get-mod-full-path":{"identifier":"deny-profile-get-mod-full-path","description":"Denies the profile_get_mod_full_path command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_mod_full_path"]}},"deny-profile-get-optimal-jre-key":{"identifier":"deny-profile-get-optimal-jre-key","description":"Denies the profile_get_optimal_jre_key command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_optimal_jre_key"]}},"deny-profile-get-pack-export-candidates":{"identifier":"deny-profile-get-pack-export-candidates","description":"Denies the profile_get_pack_export_candidates command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_pack_export_candidates"]}},"deny-profile-get-projects":{"identifier":"deny-profile-get-projects","description":"Denies the profile_get_projects command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_projects"]}},"deny-profile-install":{"identifier":"deny-profile-install","description":"Denies the profile_install command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_install"]}},"deny-profile-kill":{"identifier":"deny-profile-kill","description":"Denies the profile_kill command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_kill"]}},"deny-profile-list":{"identifier":"deny-profile-list","description":"Denies the profile_list command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_list"]}},"deny-profile-remove":{"identifier":"deny-profile-remove","description":"Denies the profile_remove command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_remove"]}},"deny-profile-remove-project":{"identifier":"deny-profile-remove-project","description":"Denies the profile_remove_project command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_remove_project"]}},"deny-profile-repair-managed-modrinth":{"identifier":"deny-profile-repair-managed-modrinth","description":"Denies the profile_repair_managed_modrinth command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_repair_managed_modrinth"]}},"deny-profile-run":{"identifier":"deny-profile-run","description":"Denies the profile_run command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_run"]}},"deny-profile-run-credentials":{"identifier":"deny-profile-run-credentials","description":"Denies the profile_run_credentials command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_run_credentials"]}},"deny-profile-toggle-disable-project":{"identifier":"deny-profile-toggle-disable-project","description":"Denies the profile_toggle_disable_project command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_toggle_disable_project"]}},"deny-profile-update-all":{"identifier":"deny-profile-update-all","description":"Denies the profile_update_all command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_update_all"]}},"deny-profile-update-managed-modrinth-version":{"identifier":"deny-profile-update-managed-modrinth-version","description":"Denies the profile_update_managed_modrinth_version command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_update_managed_modrinth_version"]}},"deny-profile-update-project":{"identifier":"deny-profile-update-project","description":"Denies the profile_update_project command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_update_project"]}}},"permission_sets":{},"global_scope_schema":null},"profile-create":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-profile-create","allow-profile-duplicate"]},"permissions":{"allow-profile-create":{"identifier":"allow-profile-create","description":"Enables the profile_create command without any pre-configured scope.","commands":{"allow":["profile_create"],"deny":[]}},"allow-profile-duplicate":{"identifier":"allow-profile-duplicate","description":"Enables the profile_duplicate command without any pre-configured scope.","commands":{"allow":["profile_duplicate"],"deny":[]}},"deny-profile-create":{"identifier":"deny-profile-create","description":"Denies the profile_create command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_create"]}},"deny-profile-duplicate":{"identifier":"deny-profile-duplicate","description":"Denies the profile_duplicate command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_duplicate"]}}},"permission_sets":{},"global_scope_schema":null},"settings":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-settings-get","allow-settings-set","allow-cancel-directory-change"]},"permissions":{"allow-cancel-directory-change":{"identifier":"allow-cancel-directory-change","description":"Enables the cancel_directory_change command without any pre-configured scope.","commands":{"allow":["cancel_directory_change"],"deny":[]}},"allow-settings-get":{"identifier":"allow-settings-get","description":"Enables the settings_get command without any pre-configured scope.","commands":{"allow":["settings_get"],"deny":[]}},"allow-settings-set":{"identifier":"allow-settings-set","description":"Enables the settings_set command without any pre-configured scope.","commands":{"allow":["settings_set"],"deny":[]}},"deny-cancel-directory-change":{"identifier":"deny-cancel-directory-change","description":"Denies the cancel_directory_change command without any pre-configured scope.","commands":{"allow":[],"deny":["cancel_directory_change"]}},"deny-settings-get":{"identifier":"deny-settings-get","description":"Denies the settings_get command without any pre-configured scope.","commands":{"allow":[],"deny":["settings_get"]}},"deny-settings-set":{"identifier":"deny-settings-set","description":"Denies the settings_set command without any pre-configured scope.","commands":{"allow":[],"deny":["settings_set"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","definitions":{"ShellAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"raw":{"default":false,"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","type":"boolean"},"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: <https://docs.rs/regex/latest/regex/#syntax>","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"A command allowed to be executed by the webview API.","properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellAllowedArgs"}],"description":"The allowed arguments for the command execution."},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["args","cmd","name","sidecar"],"title":"Entry","type":"object"}},"tags":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-tags-get-categories","allow-tags-get-report-types","allow-tags-get-loaders","allow-tags-get-game-versions","allow-tags-get-donation-platforms"]},"permissions":{"allow-tags-get-categories":{"identifier":"allow-tags-get-categories","description":"Enables the tags_get_categories command without any pre-configured scope.","commands":{"allow":["tags_get_categories"],"deny":[]}},"allow-tags-get-donation-platforms":{"identifier":"allow-tags-get-donation-platforms","description":"Enables the tags_get_donation_platforms command without any pre-configured scope.","commands":{"allow":["tags_get_donation_platforms"],"deny":[]}},"allow-tags-get-game-versions":{"identifier":"allow-tags-get-game-versions","description":"Enables the tags_get_game_versions command without any pre-configured scope.","commands":{"allow":["tags_get_game_versions"],"deny":[]}},"allow-tags-get-loaders":{"identifier":"allow-tags-get-loaders","description":"Enables the tags_get_loaders command without any pre-configured scope.","commands":{"allow":["tags_get_loaders"],"deny":[]}},"allow-tags-get-report-types":{"identifier":"allow-tags-get-report-types","description":"Enables the tags_get_report_types command without any pre-configured scope.","commands":{"allow":["tags_get_report_types"],"deny":[]}},"deny-tags-get-categories":{"identifier":"deny-tags-get-categories","description":"Denies the tags_get_categories command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_categories"]}},"deny-tags-get-donation-platforms":{"identifier":"deny-tags-get-donation-platforms","description":"Denies the tags_get_donation_platforms command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_donation_platforms"]}},"deny-tags-get-game-versions":{"identifier":"deny-tags-get-game-versions","description":"Denies the tags_get_game_versions command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_game_versions"]}},"deny-tags-get-loaders":{"identifier":"deny-tags-get-loaders","description":"Denies the tags_get_loaders command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_loaders"]}},"deny-tags-get-report-types":{"identifier":"deny-tags-get-report-types","description":"Denies the tags_get_report_types command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_report_types"]}}},"permission_sets":{},"global_scope_schema":null},"updater":{"default_permission":{"identifier":"default","description":"This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n","permissions":["allow-check","allow-download","allow-install","allow-download-and-install"]},"permissions":{"allow-check":{"identifier":"allow-check","description":"Enables the check command without any pre-configured scope.","commands":{"allow":["check"],"deny":[]}},"allow-download":{"identifier":"allow-download","description":"Enables the download command without any pre-configured scope.","commands":{"allow":["download"],"deny":[]}},"allow-download-and-install":{"identifier":"allow-download-and-install","description":"Enables the download_and_install command without any pre-configured scope.","commands":{"allow":["download_and_install"],"deny":[]}},"allow-install":{"identifier":"allow-install","description":"Enables the install command without any pre-configured scope.","commands":{"allow":["install"],"deny":[]}},"deny-check":{"identifier":"deny-check","description":"Denies the check command without any pre-configured scope.","commands":{"allow":[],"deny":["check"]}},"deny-download":{"identifier":"deny-download","description":"Denies the download command without any pre-configured scope.","commands":{"allow":[],"deny":["download"]}},"deny-download-and-install":{"identifier":"deny-download-and-install","description":"Denies the download_and_install command without any pre-configured scope.","commands":{"allow":[],"deny":["download_and_install"]}},"deny-install":{"identifier":"deny-install","description":"Denies the install command without any pre-configured scope.","commands":{"allow":[],"deny":["install"]}}},"permission_sets":{},"global_scope_schema":null},"utils":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-get-os","allow-should-disable-mouseover","allow-highlight-in-folder","allow-open-path","allow-show-launcher-logs-folder","allow-progress-bars-list","allow-get-opening-command"]},"permissions":{"allow-get-opening-command":{"identifier":"allow-get-opening-command","description":"Enables the get_opening_command command without any pre-configured scope.","commands":{"allow":["get_opening_command"],"deny":[]}},"allow-get-os":{"identifier":"allow-get-os","description":"Enables the get_os command without any pre-configured scope.","commands":{"allow":["get_os"],"deny":[]}},"allow-highlight-in-folder":{"identifier":"allow-highlight-in-folder","description":"Enables the highlight_in_folder command without any pre-configured scope.","commands":{"allow":["highlight_in_folder"],"deny":[]}},"allow-open-path":{"identifier":"allow-open-path","description":"Enables the open_path command without any pre-configured scope.","commands":{"allow":["open_path"],"deny":[]}},"allow-progress-bars-list":{"identifier":"allow-progress-bars-list","description":"Enables the progress_bars_list command without any pre-configured scope.","commands":{"allow":["progress_bars_list"],"deny":[]}},"allow-should-disable-mouseover":{"identifier":"allow-should-disable-mouseover","description":"Enables the should_disable_mouseover command without any pre-configured scope.","commands":{"allow":["should_disable_mouseover"],"deny":[]}},"allow-show-launcher-logs-folder":{"identifier":"allow-show-launcher-logs-folder","description":"Enables the show_launcher_logs_folder command without any pre-configured scope.","commands":{"allow":["show_launcher_logs_folder"],"deny":[]}},"deny-get-opening-command":{"identifier":"deny-get-opening-command","description":"Denies the get_opening_command command without any pre-configured scope.","commands":{"allow":[],"deny":["get_opening_command"]}},"deny-get-os":{"identifier":"deny-get-os","description":"Denies the get_os command without any pre-configured scope.","commands":{"allow":[],"deny":["get_os"]}},"deny-highlight-in-folder":{"identifier":"deny-highlight-in-folder","description":"Denies the highlight_in_folder command without any pre-configured scope.","commands":{"allow":[],"deny":["highlight_in_folder"]}},"deny-open-path":{"identifier":"deny-open-path","description":"Denies the open_path command without any pre-configured scope.","commands":{"allow":[],"deny":["open_path"]}},"deny-progress-bars-list":{"identifier":"deny-progress-bars-list","description":"Denies the progress_bars_list command without any pre-configured scope.","commands":{"allow":[],"deny":["progress_bars_list"]}},"deny-should-disable-mouseover":{"identifier":"deny-should-disable-mouseover","description":"Denies the should_disable_mouseover command without any pre-configured scope.","commands":{"allow":[],"deny":["should_disable_mouseover"]}},"deny-show-launcher-logs-folder":{"identifier":"deny-show-launcher-logs-folder","description":"Denies the show_launcher_logs_folder command without any pre-configured scope.","commands":{"allow":[],"deny":["show_launcher_logs_folder"]}}},"permission_sets":{},"global_scope_schema":null},"window-state":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n","permissions":["allow-filename","allow-restore-state","allow-save-window-state"]},"permissions":{"allow-filename":{"identifier":"allow-filename","description":"Enables the filename command without any pre-configured scope.","commands":{"allow":["filename"],"deny":[]}},"allow-restore-state":{"identifier":"allow-restore-state","description":"Enables the restore_state command without any pre-configured scope.","commands":{"allow":["restore_state"],"deny":[]}},"allow-save-window-state":{"identifier":"allow-save-window-state","description":"Enables the save_window_state command without any pre-configured scope.","commands":{"allow":["save_window_state"],"deny":[]}},"deny-filename":{"identifier":"deny-filename","description":"Denies the filename command without any pre-configured scope.","commands":{"allow":[],"deny":["filename"]}},"deny-restore-state":{"identifier":"deny-restore-state","description":"Denies the restore_state command without any pre-configured scope.","commands":{"allow":[],"deny":["restore_state"]}},"deny-save-window-state":{"identifier":"deny-save-window-state","description":"Denies the save_window_state command without any pre-configured scope.","commands":{"allow":[],"deny":["save_window_state"]}}},"permission_sets":{},"global_scope_schema":null}}
\ No newline at end of file
+{"auth":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-offline-login","allow-login","allow-remove-user","allow-get-default-user","allow-set-default-user","allow-get-users"]},"permissions":{"allow-get-default-user":{"identifier":"allow-get-default-user","description":"Enables the get_default_user command without any pre-configured scope.","commands":{"allow":["get_default_user"],"deny":[]}},"allow-get-users":{"identifier":"allow-get-users","description":"Enables the get_users command without any pre-configured scope.","commands":{"allow":["get_users"],"deny":[]}},"allow-login":{"identifier":"allow-login","description":"Enables the login command without any pre-configured scope.","commands":{"allow":["login"],"deny":[]}},"allow-offline-login":{"identifier":"allow-offline-login","description":"Enables the offline_login command without any pre-configured scope.","commands":{"allow":["offline_login"],"deny":[]}},"allow-remove-user":{"identifier":"allow-remove-user","description":"Enables the remove_user command without any pre-configured scope.","commands":{"allow":["remove_user"],"deny":[]}},"allow-set-default-user":{"identifier":"allow-set-default-user","description":"Enables the set_default_user command without any pre-configured scope.","commands":{"allow":["set_default_user"],"deny":[]}},"deny-get-default-user":{"identifier":"deny-get-default-user","description":"Denies the get_default_user command without any pre-configured scope.","commands":{"allow":[],"deny":["get_default_user"]}},"deny-get-users":{"identifier":"deny-get-users","description":"Denies the get_users command without any pre-configured scope.","commands":{"allow":[],"deny":["get_users"]}},"deny-login":{"identifier":"deny-login","description":"Denies the login command without any pre-configured scope.","commands":{"allow":[],"deny":["login"]}},"deny-offline-login":{"identifier":"deny-offline-login","description":"Denies the offline_login command without any pre-configured scope.","commands":{"allow":[],"deny":["offline_login"]}},"deny-remove-user":{"identifier":"deny-remove-user","description":"Denies the remove_user command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_user"]}},"deny-set-default-user":{"identifier":"deny-set-default-user","description":"Denies the set_default_user command without any pre-configured scope.","commands":{"allow":[],"deny":["set_default_user"]}}},"permission_sets":{},"global_scope_schema":null},"cache":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-get-project","allow-get-project-many","allow-get-version","allow-get-version-many","allow-get-user","allow-get-user-many","allow-get-team","allow-get-team-many","allow-get-organization","allow-get-organization-many","allow-get-search-results","allow-get-search-results-many","allow-purge-cache-types"]},"permissions":{"allow-get-organization":{"identifier":"allow-get-organization","description":"Enables the get_organization command without any pre-configured scope.","commands":{"allow":["get_organization"],"deny":[]}},"allow-get-organization-many":{"identifier":"allow-get-organization-many","description":"Enables the get_organization_many command without any pre-configured scope.","commands":{"allow":["get_organization_many"],"deny":[]}},"allow-get-project":{"identifier":"allow-get-project","description":"Enables the get_project command without any pre-configured scope.","commands":{"allow":["get_project"],"deny":[]}},"allow-get-project-many":{"identifier":"allow-get-project-many","description":"Enables the get_project_many command without any pre-configured scope.","commands":{"allow":["get_project_many"],"deny":[]}},"allow-get-search-results":{"identifier":"allow-get-search-results","description":"Enables the get_search_results command without any pre-configured scope.","commands":{"allow":["get_search_results"],"deny":[]}},"allow-get-search-results-many":{"identifier":"allow-get-search-results-many","description":"Enables the get_search_results_many command without any pre-configured scope.","commands":{"allow":["get_search_results_many"],"deny":[]}},"allow-get-team":{"identifier":"allow-get-team","description":"Enables the get_team command without any pre-configured scope.","commands":{"allow":["get_team"],"deny":[]}},"allow-get-team-many":{"identifier":"allow-get-team-many","description":"Enables the get_team_many command without any pre-configured scope.","commands":{"allow":["get_team_many"],"deny":[]}},"allow-get-user":{"identifier":"allow-get-user","description":"Enables the get_user command without any pre-configured scope.","commands":{"allow":["get_user"],"deny":[]}},"allow-get-user-many":{"identifier":"allow-get-user-many","description":"Enables the get_user_many command without any pre-configured scope.","commands":{"allow":["get_user_many"],"deny":[]}},"allow-get-version":{"identifier":"allow-get-version","description":"Enables the get_version command without any pre-configured scope.","commands":{"allow":["get_version"],"deny":[]}},"allow-get-version-many":{"identifier":"allow-get-version-many","description":"Enables the get_version_many command without any pre-configured scope.","commands":{"allow":["get_version_many"],"deny":[]}},"allow-purge-cache-types":{"identifier":"allow-purge-cache-types","description":"Enables the purge_cache_types command without any pre-configured scope.","commands":{"allow":["purge_cache_types"],"deny":[]}},"deny-get-organization":{"identifier":"deny-get-organization","description":"Denies the get_organization command without any pre-configured scope.","commands":{"allow":[],"deny":["get_organization"]}},"deny-get-organization-many":{"identifier":"deny-get-organization-many","description":"Denies the get_organization_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_organization_many"]}},"deny-get-project":{"identifier":"deny-get-project","description":"Denies the get_project command without any pre-configured scope.","commands":{"allow":[],"deny":["get_project"]}},"deny-get-project-many":{"identifier":"deny-get-project-many","description":"Denies the get_project_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_project_many"]}},"deny-get-search-results":{"identifier":"deny-get-search-results","description":"Denies the get_search_results command without any pre-configured scope.","commands":{"allow":[],"deny":["get_search_results"]}},"deny-get-search-results-many":{"identifier":"deny-get-search-results-many","description":"Denies the get_search_results_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_search_results_many"]}},"deny-get-team":{"identifier":"deny-get-team","description":"Denies the get_team command without any pre-configured scope.","commands":{"allow":[],"deny":["get_team"]}},"deny-get-team-many":{"identifier":"deny-get-team-many","description":"Denies the get_team_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_team_many"]}},"deny-get-user":{"identifier":"deny-get-user","description":"Denies the get_user command without any pre-configured scope.","commands":{"allow":[],"deny":["get_user"]}},"deny-get-user-many":{"identifier":"deny-get-user-many","description":"Denies the get_user_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_user_many"]}},"deny-get-version":{"identifier":"deny-get-version","description":"Denies the get_version command without any pre-configured scope.","commands":{"allow":[],"deny":["get_version"]}},"deny-get-version-many":{"identifier":"deny-get-version-many","description":"Denies the get_version_many command without any pre-configured scope.","commands":{"allow":[],"deny":["get_version_many"]}},"deny-purge-cache-types":{"identifier":"deny-purge-cache-types","description":"Denies the purge_cache_types command without any pre-configured scope.","commands":{"allow":[],"deny":["purge_cache_types"]}}},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"deep-link":{"default_permission":{"identifier":"default","description":"Allows reading the opened deep link via the get_current command","permissions":["allow-get-current"]},"permissions":{"allow-get-current":{"identifier":"allow-get-current","description":"Enables the get_current command without any pre-configured scope.","commands":{"allow":["get_current"],"deny":[]}},"allow-is-registered":{"identifier":"allow-is-registered","description":"Enables the is_registered command without any pre-configured scope.","commands":{"allow":["is_registered"],"deny":[]}},"allow-register":{"identifier":"allow-register","description":"Enables the register command without any pre-configured scope.","commands":{"allow":["register"],"deny":[]}},"allow-unregister":{"identifier":"allow-unregister","description":"Enables the unregister command without any pre-configured scope.","commands":{"allow":["unregister"],"deny":[]}},"deny-get-current":{"identifier":"deny-get-current","description":"Denies the get_current command without any pre-configured scope.","commands":{"allow":[],"deny":["get_current"]}},"deny-is-registered":{"identifier":"deny-is-registered","description":"Denies the is_registered command without any pre-configured scope.","commands":{"allow":[],"deny":["is_registered"]}},"deny-register":{"identifier":"deny-register","description":"Denies the register command without any pre-configured scope.","commands":{"allow":[],"deny":["register"]}},"deny-unregister":{"identifier":"deny-unregister","description":"Denies the unregister command without any pre-configured scope.","commands":{"allow":[],"deny":["unregister"]}}},"permission_sets":{},"global_scope_schema":null},"dialog":{"default_permission":{"identifier":"default","description":"This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n","permissions":["allow-ask","allow-confirm","allow-message","allow-save","allow-open"]},"permissions":{"allow-ask":{"identifier":"allow-ask","description":"Enables the ask command without any pre-configured scope.","commands":{"allow":["ask"],"deny":[]}},"allow-confirm":{"identifier":"allow-confirm","description":"Enables the confirm command without any pre-configured scope.","commands":{"allow":["confirm"],"deny":[]}},"allow-message":{"identifier":"allow-message","description":"Enables the message command without any pre-configured scope.","commands":{"allow":["message"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-save":{"identifier":"allow-save","description":"Enables the save command without any pre-configured scope.","commands":{"allow":["save"],"deny":[]}},"deny-ask":{"identifier":"deny-ask","description":"Denies the ask command without any pre-configured scope.","commands":{"allow":[],"deny":["ask"]}},"deny-confirm":{"identifier":"deny-confirm","description":"Denies the confirm command without any pre-configured scope.","commands":{"allow":[],"deny":["confirm"]}},"deny-message":{"identifier":"deny-message","description":"Denies the message command without any pre-configured scope.","commands":{"allow":[],"deny":["message"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-save":{"identifier":"deny-save","description":"Denies the save command without any pre-configured scope.","commands":{"allow":[],"deny":["save"]}}},"permission_sets":{},"global_scope_schema":null},"import":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-get-importable-instances","allow-import-instance","allow-is-valid-importable-instance","allow-get-default-launcher-path"]},"permissions":{"allow-get-default-launcher-path":{"identifier":"allow-get-default-launcher-path","description":"Enables the get_default_launcher_path command without any pre-configured scope.","commands":{"allow":["get_default_launcher_path"],"deny":[]}},"allow-get-importable-instances":{"identifier":"allow-get-importable-instances","description":"Enables the get_importable_instances command without any pre-configured scope.","commands":{"allow":["get_importable_instances"],"deny":[]}},"allow-import-instance":{"identifier":"allow-import-instance","description":"Enables the import_instance command without any pre-configured scope.","commands":{"allow":["import_instance"],"deny":[]}},"allow-is-valid-importable-instance":{"identifier":"allow-is-valid-importable-instance","description":"Enables the is_valid_importable_instance command without any pre-configured scope.","commands":{"allow":["is_valid_importable_instance"],"deny":[]}},"deny-get-default-launcher-path":{"identifier":"deny-get-default-launcher-path","description":"Denies the get_default_launcher_path command without any pre-configured scope.","commands":{"allow":[],"deny":["get_default_launcher_path"]}},"deny-get-importable-instances":{"identifier":"deny-get-importable-instances","description":"Denies the get_importable_instances command without any pre-configured scope.","commands":{"allow":[],"deny":["get_importable_instances"]}},"deny-import-instance":{"identifier":"deny-import-instance","description":"Denies the import_instance command without any pre-configured scope.","commands":{"allow":[],"deny":["import_instance"]}},"deny-is-valid-importable-instance":{"identifier":"deny-is-valid-importable-instance","description":"Denies the is_valid_importable_instance command without any pre-configured scope.","commands":{"allow":[],"deny":["is_valid_importable_instance"]}}},"permission_sets":{},"global_scope_schema":null},"jre":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-get-java-versions","allow-set-java-version","allow-jre-find-filtered-jres","allow-jre-get-jre","allow-jre-test-jre","allow-jre-auto-install-java","allow-jre-get-max-memory"]},"permissions":{"allow-get-java-versions":{"identifier":"allow-get-java-versions","description":"Enables the get_java_versions command without any pre-configured scope.","commands":{"allow":["get_java_versions"],"deny":[]}},"allow-jre-auto-install-java":{"identifier":"allow-jre-auto-install-java","description":"Enables the jre_auto_install_java command without any pre-configured scope.","commands":{"allow":["jre_auto_install_java"],"deny":[]}},"allow-jre-find-filtered-jres":{"identifier":"allow-jre-find-filtered-jres","description":"Enables the jre_find_filtered_jres command without any pre-configured scope.","commands":{"allow":["jre_find_filtered_jres"],"deny":[]}},"allow-jre-get-jre":{"identifier":"allow-jre-get-jre","description":"Enables the jre_get_jre command without any pre-configured scope.","commands":{"allow":["jre_get_jre"],"deny":[]}},"allow-jre-get-max-memory":{"identifier":"allow-jre-get-max-memory","description":"Enables the jre_get_max_memory command without any pre-configured scope.","commands":{"allow":["jre_get_max_memory"],"deny":[]}},"allow-jre-test-jre":{"identifier":"allow-jre-test-jre","description":"Enables the jre_test_jre command without any pre-configured scope.","commands":{"allow":["jre_test_jre"],"deny":[]}},"allow-set-java-version":{"identifier":"allow-set-java-version","description":"Enables the set_java_version command without any pre-configured scope.","commands":{"allow":["set_java_version"],"deny":[]}},"deny-get-java-versions":{"identifier":"deny-get-java-versions","description":"Denies the get_java_versions command without any pre-configured scope.","commands":{"allow":[],"deny":["get_java_versions"]}},"deny-jre-auto-install-java":{"identifier":"deny-jre-auto-install-java","description":"Denies the jre_auto_install_java command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_auto_install_java"]}},"deny-jre-find-filtered-jres":{"identifier":"deny-jre-find-filtered-jres","description":"Denies the jre_find_filtered_jres command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_find_filtered_jres"]}},"deny-jre-get-jre":{"identifier":"deny-jre-get-jre","description":"Denies the jre_get_jre command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_get_jre"]}},"deny-jre-get-max-memory":{"identifier":"deny-jre-get-max-memory","description":"Denies the jre_get_max_memory command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_get_max_memory"]}},"deny-jre-test-jre":{"identifier":"deny-jre-test-jre","description":"Denies the jre_test_jre command without any pre-configured scope.","commands":{"allow":[],"deny":["jre_test_jre"]}},"deny-set-java-version":{"identifier":"deny-set-java-version","description":"Denies the set_java_version command without any pre-configured scope.","commands":{"allow":[],"deny":["set_java_version"]}}},"permission_sets":{},"global_scope_schema":null},"logs":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-logs-get-logs","allow-logs-get-logs-by-filename","allow-logs-get-output-by-filename","allow-logs-delete-logs","allow-logs-delete-logs-by-filename","allow-logs-get-latest-log-cursor"]},"permissions":{"allow-logs-delete-logs":{"identifier":"allow-logs-delete-logs","description":"Enables the logs_delete_logs command without any pre-configured scope.","commands":{"allow":["logs_delete_logs"],"deny":[]}},"allow-logs-delete-logs-by-filename":{"identifier":"allow-logs-delete-logs-by-filename","description":"Enables the logs_delete_logs_by_filename command without any pre-configured scope.","commands":{"allow":["logs_delete_logs_by_filename"],"deny":[]}},"allow-logs-get-latest-log-cursor":{"identifier":"allow-logs-get-latest-log-cursor","description":"Enables the logs_get_latest_log_cursor command without any pre-configured scope.","commands":{"allow":["logs_get_latest_log_cursor"],"deny":[]}},"allow-logs-get-logs":{"identifier":"allow-logs-get-logs","description":"Enables the logs_get_logs command without any pre-configured scope.","commands":{"allow":["logs_get_logs"],"deny":[]}},"allow-logs-get-logs-by-filename":{"identifier":"allow-logs-get-logs-by-filename","description":"Enables the logs_get_logs_by_filename command without any pre-configured scope.","commands":{"allow":["logs_get_logs_by_filename"],"deny":[]}},"allow-logs-get-output-by-filename":{"identifier":"allow-logs-get-output-by-filename","description":"Enables the logs_get_output_by_filename command without any pre-configured scope.","commands":{"allow":["logs_get_output_by_filename"],"deny":[]}},"deny-logs-delete-logs":{"identifier":"deny-logs-delete-logs","description":"Denies the logs_delete_logs command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_delete_logs"]}},"deny-logs-delete-logs-by-filename":{"identifier":"deny-logs-delete-logs-by-filename","description":"Denies the logs_delete_logs_by_filename command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_delete_logs_by_filename"]}},"deny-logs-get-latest-log-cursor":{"identifier":"deny-logs-get-latest-log-cursor","description":"Denies the logs_get_latest_log_cursor command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_get_latest_log_cursor"]}},"deny-logs-get-logs":{"identifier":"deny-logs-get-logs","description":"Denies the logs_get_logs command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_get_logs"]}},"deny-logs-get-logs-by-filename":{"identifier":"deny-logs-get-logs-by-filename","description":"Denies the logs_get_logs_by_filename command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_get_logs_by_filename"]}},"deny-logs-get-output-by-filename":{"identifier":"deny-logs-get-output-by-filename","description":"Denies the logs_get_output_by_filename command without any pre-configured scope.","commands":{"allow":[],"deny":["logs_get_output_by_filename"]}}},"permission_sets":{},"global_scope_schema":null},"metadata":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-metadata-get-game-versions","allow-metadata-get-loader-versions"]},"permissions":{"allow-metadata-get-game-versions":{"identifier":"allow-metadata-get-game-versions","description":"Enables the metadata_get_game_versions command without any pre-configured scope.","commands":{"allow":["metadata_get_game_versions"],"deny":[]}},"allow-metadata-get-loader-versions":{"identifier":"allow-metadata-get-loader-versions","description":"Enables the metadata_get_loader_versions command without any pre-configured scope.","commands":{"allow":["metadata_get_loader_versions"],"deny":[]}},"deny-metadata-get-game-versions":{"identifier":"deny-metadata-get-game-versions","description":"Denies the metadata_get_game_versions command without any pre-configured scope.","commands":{"allow":[],"deny":["metadata_get_game_versions"]}},"deny-metadata-get-loader-versions":{"identifier":"deny-metadata-get-loader-versions","description":"Denies the metadata_get_loader_versions command without any pre-configured scope.","commands":{"allow":[],"deny":["metadata_get_loader_versions"]}}},"permission_sets":{},"global_scope_schema":null},"mr-auth":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-login-pass","allow-login-2fa","allow-create-account","allow-logout","allow-get"]},"permissions":{"allow-create-account":{"identifier":"allow-create-account","description":"Enables the create_account command without any pre-configured scope.","commands":{"allow":["create_account"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-login-2fa":{"identifier":"allow-login-2fa","description":"Enables the login_2fa command without any pre-configured scope.","commands":{"allow":["login_2fa"],"deny":[]}},"allow-login-pass":{"identifier":"allow-login-pass","description":"Enables the login_pass command without any pre-configured scope.","commands":{"allow":["login_pass"],"deny":[]}},"allow-logout":{"identifier":"allow-logout","description":"Enables the logout command without any pre-configured scope.","commands":{"allow":["logout"],"deny":[]}},"deny-create-account":{"identifier":"deny-create-account","description":"Denies the create_account command without any pre-configured scope.","commands":{"allow":[],"deny":["create_account"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-login-2fa":{"identifier":"deny-login-2fa","description":"Denies the login_2fa command without any pre-configured scope.","commands":{"allow":[],"deny":["login_2fa"]}},"deny-login-pass":{"identifier":"deny-login-pass","description":"Denies the login_pass command without any pre-configured scope.","commands":{"allow":[],"deny":["login_pass"]}},"deny-logout":{"identifier":"deny-logout","description":"Denies the logout command without any pre-configured scope.","commands":{"allow":[],"deny":["logout"]}}},"permission_sets":{},"global_scope_schema":null},"os":{"default_permission":{"identifier":"default","description":"This permission set configures which\noperating system information are available\nto gather from the frontend.\n\n#### Granted Permissions\n\nAll information except the host name are available.\n\n","permissions":["allow-arch","allow-exe-extension","allow-family","allow-locale","allow-os-type","allow-platform","allow-version"]},"permissions":{"allow-arch":{"identifier":"allow-arch","description":"Enables the arch command without any pre-configured scope.","commands":{"allow":["arch"],"deny":[]}},"allow-exe-extension":{"identifier":"allow-exe-extension","description":"Enables the exe_extension command without any pre-configured scope.","commands":{"allow":["exe_extension"],"deny":[]}},"allow-family":{"identifier":"allow-family","description":"Enables the family command without any pre-configured scope.","commands":{"allow":["family"],"deny":[]}},"allow-hostname":{"identifier":"allow-hostname","description":"Enables the hostname command without any pre-configured scope.","commands":{"allow":["hostname"],"deny":[]}},"allow-locale":{"identifier":"allow-locale","description":"Enables the locale command without any pre-configured scope.","commands":{"allow":["locale"],"deny":[]}},"allow-os-type":{"identifier":"allow-os-type","description":"Enables the os_type command without any pre-configured scope.","commands":{"allow":["os_type"],"deny":[]}},"allow-platform":{"identifier":"allow-platform","description":"Enables the platform command without any pre-configured scope.","commands":{"allow":["platform"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-arch":{"identifier":"deny-arch","description":"Denies the arch command without any pre-configured scope.","commands":{"allow":[],"deny":["arch"]}},"deny-exe-extension":{"identifier":"deny-exe-extension","description":"Denies the exe_extension command without any pre-configured scope.","commands":{"allow":[],"deny":["exe_extension"]}},"deny-family":{"identifier":"deny-family","description":"Denies the family command without any pre-configured scope.","commands":{"allow":[],"deny":["family"]}},"deny-hostname":{"identifier":"deny-hostname","description":"Denies the hostname command without any pre-configured scope.","commands":{"allow":[],"deny":["hostname"]}},"deny-locale":{"identifier":"deny-locale","description":"Denies the locale command without any pre-configured scope.","commands":{"allow":[],"deny":["locale"]}},"deny-os-type":{"identifier":"deny-os-type","description":"Denies the os_type command without any pre-configured scope.","commands":{"allow":[],"deny":["os_type"]}},"deny-platform":{"identifier":"deny-platform","description":"Denies the platform command without any pre-configured scope.","commands":{"allow":[],"deny":["platform"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"pack":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-pack-install","allow-pack-get-profile-from-pack"]},"permissions":{"allow-pack-get-profile-from-pack":{"identifier":"allow-pack-get-profile-from-pack","description":"Enables the pack_get_profile_from_pack command without any pre-configured scope.","commands":{"allow":["pack_get_profile_from_pack"],"deny":[]}},"allow-pack-install":{"identifier":"allow-pack-install","description":"Enables the pack_install command without any pre-configured scope.","commands":{"allow":["pack_install"],"deny":[]}},"deny-pack-get-profile-from-pack":{"identifier":"deny-pack-get-profile-from-pack","description":"Denies the pack_get_profile_from_pack command without any pre-configured scope.","commands":{"allow":[],"deny":["pack_get_profile_from_pack"]}},"deny-pack-install":{"identifier":"deny-pack-install","description":"Denies the pack_install command without any pre-configured scope.","commands":{"allow":[],"deny":["pack_install"]}}},"permission_sets":{},"global_scope_schema":null},"process":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-process-get-all","allow-process-get-by-profile-path","allow-process-kill","allow-process-wait-for"]},"permissions":{"allow-process-get-all":{"identifier":"allow-process-get-all","description":"Enables the process_get_all command without any pre-configured scope.","commands":{"allow":["process_get_all"],"deny":[]}},"allow-process-get-by-profile-path":{"identifier":"allow-process-get-by-profile-path","description":"Enables the process_get_by_profile_path command without any pre-configured scope.","commands":{"allow":["process_get_by_profile_path"],"deny":[]}},"allow-process-kill":{"identifier":"allow-process-kill","description":"Enables the process_kill command without any pre-configured scope.","commands":{"allow":["process_kill"],"deny":[]}},"allow-process-wait-for":{"identifier":"allow-process-wait-for","description":"Enables the process_wait_for command without any pre-configured scope.","commands":{"allow":["process_wait_for"],"deny":[]}},"deny-process-get-all":{"identifier":"deny-process-get-all","description":"Denies the process_get_all command without any pre-configured scope.","commands":{"allow":[],"deny":["process_get_all"]}},"deny-process-get-by-profile-path":{"identifier":"deny-process-get-by-profile-path","description":"Denies the process_get_by_profile_path command without any pre-configured scope.","commands":{"allow":[],"deny":["process_get_by_profile_path"]}},"deny-process-kill":{"identifier":"deny-process-kill","description":"Denies the process_kill command without any pre-configured scope.","commands":{"allow":[],"deny":["process_kill"]}},"deny-process-wait-for":{"identifier":"deny-process-wait-for","description":"Denies the process_wait_for command without any pre-configured scope.","commands":{"allow":[],"deny":["process_wait_for"]}}},"permission_sets":{},"global_scope_schema":null},"profile":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-profile-remove","allow-profile-get","allow-profile-get-many","allow-profile-get-projects","allow-profile-get-optimal-jre-key","allow-profile-get-full-path","allow-profile-get-mod-full-path","allow-profile-list","allow-profile-check-installed","allow-profile-install","allow-profile-update-all","allow-profile-update-project","allow-profile-add-project-from-version","allow-profile-add-project-from-path","allow-profile-toggle-disable-project","allow-profile-remove-project","allow-profile-update-managed-modrinth-version","allow-profile-repair-managed-modrinth","allow-profile-run","allow-profile-run-credentials","allow-profile-kill","allow-profile-edit","allow-profile-edit-icon","allow-profile-export-mrpack","allow-profile-get-pack-export-candidates"]},"permissions":{"allow-profile-add-project-from-path":{"identifier":"allow-profile-add-project-from-path","description":"Enables the profile_add_project_from_path command without any pre-configured scope.","commands":{"allow":["profile_add_project_from_path"],"deny":[]}},"allow-profile-add-project-from-version":{"identifier":"allow-profile-add-project-from-version","description":"Enables the profile_add_project_from_version command without any pre-configured scope.","commands":{"allow":["profile_add_project_from_version"],"deny":[]}},"allow-profile-check-installed":{"identifier":"allow-profile-check-installed","description":"Enables the profile_check_installed command without any pre-configured scope.","commands":{"allow":["profile_check_installed"],"deny":[]}},"allow-profile-edit":{"identifier":"allow-profile-edit","description":"Enables the profile_edit command without any pre-configured scope.","commands":{"allow":["profile_edit"],"deny":[]}},"allow-profile-edit-icon":{"identifier":"allow-profile-edit-icon","description":"Enables the profile_edit_icon command without any pre-configured scope.","commands":{"allow":["profile_edit_icon"],"deny":[]}},"allow-profile-export-mrpack":{"identifier":"allow-profile-export-mrpack","description":"Enables the profile_export_mrpack command without any pre-configured scope.","commands":{"allow":["profile_export_mrpack"],"deny":[]}},"allow-profile-get":{"identifier":"allow-profile-get","description":"Enables the profile_get command without any pre-configured scope.","commands":{"allow":["profile_get"],"deny":[]}},"allow-profile-get-full-path":{"identifier":"allow-profile-get-full-path","description":"Enables the profile_get_full_path command without any pre-configured scope.","commands":{"allow":["profile_get_full_path"],"deny":[]}},"allow-profile-get-many":{"identifier":"allow-profile-get-many","description":"Enables the profile_get_many command without any pre-configured scope.","commands":{"allow":["profile_get_many"],"deny":[]}},"allow-profile-get-mod-full-path":{"identifier":"allow-profile-get-mod-full-path","description":"Enables the profile_get_mod_full_path command without any pre-configured scope.","commands":{"allow":["profile_get_mod_full_path"],"deny":[]}},"allow-profile-get-optimal-jre-key":{"identifier":"allow-profile-get-optimal-jre-key","description":"Enables the profile_get_optimal_jre_key command without any pre-configured scope.","commands":{"allow":["profile_get_optimal_jre_key"],"deny":[]}},"allow-profile-get-pack-export-candidates":{"identifier":"allow-profile-get-pack-export-candidates","description":"Enables the profile_get_pack_export_candidates command without any pre-configured scope.","commands":{"allow":["profile_get_pack_export_candidates"],"deny":[]}},"allow-profile-get-projects":{"identifier":"allow-profile-get-projects","description":"Enables the profile_get_projects command without any pre-configured scope.","commands":{"allow":["profile_get_projects"],"deny":[]}},"allow-profile-install":{"identifier":"allow-profile-install","description":"Enables the profile_install command without any pre-configured scope.","commands":{"allow":["profile_install"],"deny":[]}},"allow-profile-kill":{"identifier":"allow-profile-kill","description":"Enables the profile_kill command without any pre-configured scope.","commands":{"allow":["profile_kill"],"deny":[]}},"allow-profile-list":{"identifier":"allow-profile-list","description":"Enables the profile_list command without any pre-configured scope.","commands":{"allow":["profile_list"],"deny":[]}},"allow-profile-remove":{"identifier":"allow-profile-remove","description":"Enables the profile_remove command without any pre-configured scope.","commands":{"allow":["profile_remove"],"deny":[]}},"allow-profile-remove-project":{"identifier":"allow-profile-remove-project","description":"Enables the profile_remove_project command without any pre-configured scope.","commands":{"allow":["profile_remove_project"],"deny":[]}},"allow-profile-repair-managed-modrinth":{"identifier":"allow-profile-repair-managed-modrinth","description":"Enables the profile_repair_managed_modrinth command without any pre-configured scope.","commands":{"allow":["profile_repair_managed_modrinth"],"deny":[]}},"allow-profile-run":{"identifier":"allow-profile-run","description":"Enables the profile_run command without any pre-configured scope.","commands":{"allow":["profile_run"],"deny":[]}},"allow-profile-run-credentials":{"identifier":"allow-profile-run-credentials","description":"Enables the profile_run_credentials command without any pre-configured scope.","commands":{"allow":["profile_run_credentials"],"deny":[]}},"allow-profile-toggle-disable-project":{"identifier":"allow-profile-toggle-disable-project","description":"Enables the profile_toggle_disable_project command without any pre-configured scope.","commands":{"allow":["profile_toggle_disable_project"],"deny":[]}},"allow-profile-update-all":{"identifier":"allow-profile-update-all","description":"Enables the profile_update_all command without any pre-configured scope.","commands":{"allow":["profile_update_all"],"deny":[]}},"allow-profile-update-managed-modrinth-version":{"identifier":"allow-profile-update-managed-modrinth-version","description":"Enables the profile_update_managed_modrinth_version command without any pre-configured scope.","commands":{"allow":["profile_update_managed_modrinth_version"],"deny":[]}},"allow-profile-update-project":{"identifier":"allow-profile-update-project","description":"Enables the profile_update_project command without any pre-configured scope.","commands":{"allow":["profile_update_project"],"deny":[]}},"deny-profile-add-project-from-path":{"identifier":"deny-profile-add-project-from-path","description":"Denies the profile_add_project_from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_add_project_from_path"]}},"deny-profile-add-project-from-version":{"identifier":"deny-profile-add-project-from-version","description":"Denies the profile_add_project_from_version command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_add_project_from_version"]}},"deny-profile-check-installed":{"identifier":"deny-profile-check-installed","description":"Denies the profile_check_installed command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_check_installed"]}},"deny-profile-edit":{"identifier":"deny-profile-edit","description":"Denies the profile_edit command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_edit"]}},"deny-profile-edit-icon":{"identifier":"deny-profile-edit-icon","description":"Denies the profile_edit_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_edit_icon"]}},"deny-profile-export-mrpack":{"identifier":"deny-profile-export-mrpack","description":"Denies the profile_export_mrpack command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_export_mrpack"]}},"deny-profile-get":{"identifier":"deny-profile-get","description":"Denies the profile_get command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get"]}},"deny-profile-get-full-path":{"identifier":"deny-profile-get-full-path","description":"Denies the profile_get_full_path command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_full_path"]}},"deny-profile-get-many":{"identifier":"deny-profile-get-many","description":"Denies the profile_get_many command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_many"]}},"deny-profile-get-mod-full-path":{"identifier":"deny-profile-get-mod-full-path","description":"Denies the profile_get_mod_full_path command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_mod_full_path"]}},"deny-profile-get-optimal-jre-key":{"identifier":"deny-profile-get-optimal-jre-key","description":"Denies the profile_get_optimal_jre_key command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_optimal_jre_key"]}},"deny-profile-get-pack-export-candidates":{"identifier":"deny-profile-get-pack-export-candidates","description":"Denies the profile_get_pack_export_candidates command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_pack_export_candidates"]}},"deny-profile-get-projects":{"identifier":"deny-profile-get-projects","description":"Denies the profile_get_projects command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_get_projects"]}},"deny-profile-install":{"identifier":"deny-profile-install","description":"Denies the profile_install command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_install"]}},"deny-profile-kill":{"identifier":"deny-profile-kill","description":"Denies the profile_kill command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_kill"]}},"deny-profile-list":{"identifier":"deny-profile-list","description":"Denies the profile_list command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_list"]}},"deny-profile-remove":{"identifier":"deny-profile-remove","description":"Denies the profile_remove command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_remove"]}},"deny-profile-remove-project":{"identifier":"deny-profile-remove-project","description":"Denies the profile_remove_project command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_remove_project"]}},"deny-profile-repair-managed-modrinth":{"identifier":"deny-profile-repair-managed-modrinth","description":"Denies the profile_repair_managed_modrinth command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_repair_managed_modrinth"]}},"deny-profile-run":{"identifier":"deny-profile-run","description":"Denies the profile_run command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_run"]}},"deny-profile-run-credentials":{"identifier":"deny-profile-run-credentials","description":"Denies the profile_run_credentials command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_run_credentials"]}},"deny-profile-toggle-disable-project":{"identifier":"deny-profile-toggle-disable-project","description":"Denies the profile_toggle_disable_project command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_toggle_disable_project"]}},"deny-profile-update-all":{"identifier":"deny-profile-update-all","description":"Denies the profile_update_all command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_update_all"]}},"deny-profile-update-managed-modrinth-version":{"identifier":"deny-profile-update-managed-modrinth-version","description":"Denies the profile_update_managed_modrinth_version command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_update_managed_modrinth_version"]}},"deny-profile-update-project":{"identifier":"deny-profile-update-project","description":"Denies the profile_update_project command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_update_project"]}}},"permission_sets":{},"global_scope_schema":null},"profile-create":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-profile-create","allow-profile-duplicate"]},"permissions":{"allow-profile-create":{"identifier":"allow-profile-create","description":"Enables the profile_create command without any pre-configured scope.","commands":{"allow":["profile_create"],"deny":[]}},"allow-profile-duplicate":{"identifier":"allow-profile-duplicate","description":"Enables the profile_duplicate command without any pre-configured scope.","commands":{"allow":["profile_duplicate"],"deny":[]}},"deny-profile-create":{"identifier":"deny-profile-create","description":"Denies the profile_create command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_create"]}},"deny-profile-duplicate":{"identifier":"deny-profile-duplicate","description":"Denies the profile_duplicate command without any pre-configured scope.","commands":{"allow":[],"deny":["profile_duplicate"]}}},"permission_sets":{},"global_scope_schema":null},"settings":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-settings-get","allow-settings-set","allow-cancel-directory-change"]},"permissions":{"allow-cancel-directory-change":{"identifier":"allow-cancel-directory-change","description":"Enables the cancel_directory_change command without any pre-configured scope.","commands":{"allow":["cancel_directory_change"],"deny":[]}},"allow-settings-get":{"identifier":"allow-settings-get","description":"Enables the settings_get command without any pre-configured scope.","commands":{"allow":["settings_get"],"deny":[]}},"allow-settings-set":{"identifier":"allow-settings-set","description":"Enables the settings_set command without any pre-configured scope.","commands":{"allow":["settings_set"],"deny":[]}},"deny-cancel-directory-change":{"identifier":"deny-cancel-directory-change","description":"Denies the cancel_directory_change command without any pre-configured scope.","commands":{"allow":[],"deny":["cancel_directory_change"]}},"deny-settings-get":{"identifier":"deny-settings-get","description":"Denies the settings_get command without any pre-configured scope.","commands":{"allow":[],"deny":["settings_get"]}},"deny-settings-set":{"identifier":"deny-settings-set","description":"Denies the settings_set command without any pre-configured scope.","commands":{"allow":[],"deny":["settings_set"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","definitions":{"ShellAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"raw":{"default":false,"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","type":"boolean"},"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: <https://docs.rs/regex/latest/regex/#syntax>","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"A command allowed to be executed by the webview API.","properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellAllowedArgs"}],"description":"The allowed arguments for the command execution."},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["args","cmd","name","sidecar"],"title":"Entry","type":"object"}},"tags":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-tags-get-categories","allow-tags-get-report-types","allow-tags-get-loaders","allow-tags-get-game-versions","allow-tags-get-donation-platforms"]},"permissions":{"allow-tags-get-categories":{"identifier":"allow-tags-get-categories","description":"Enables the tags_get_categories command without any pre-configured scope.","commands":{"allow":["tags_get_categories"],"deny":[]}},"allow-tags-get-donation-platforms":{"identifier":"allow-tags-get-donation-platforms","description":"Enables the tags_get_donation_platforms command without any pre-configured scope.","commands":{"allow":["tags_get_donation_platforms"],"deny":[]}},"allow-tags-get-game-versions":{"identifier":"allow-tags-get-game-versions","description":"Enables the tags_get_game_versions command without any pre-configured scope.","commands":{"allow":["tags_get_game_versions"],"deny":[]}},"allow-tags-get-loaders":{"identifier":"allow-tags-get-loaders","description":"Enables the tags_get_loaders command without any pre-configured scope.","commands":{"allow":["tags_get_loaders"],"deny":[]}},"allow-tags-get-report-types":{"identifier":"allow-tags-get-report-types","description":"Enables the tags_get_report_types command without any pre-configured scope.","commands":{"allow":["tags_get_report_types"],"deny":[]}},"deny-tags-get-categories":{"identifier":"deny-tags-get-categories","description":"Denies the tags_get_categories command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_categories"]}},"deny-tags-get-donation-platforms":{"identifier":"deny-tags-get-donation-platforms","description":"Denies the tags_get_donation_platforms command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_donation_platforms"]}},"deny-tags-get-game-versions":{"identifier":"deny-tags-get-game-versions","description":"Denies the tags_get_game_versions command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_game_versions"]}},"deny-tags-get-loaders":{"identifier":"deny-tags-get-loaders","description":"Denies the tags_get_loaders command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_loaders"]}},"deny-tags-get-report-types":{"identifier":"deny-tags-get-report-types","description":"Denies the tags_get_report_types command without any pre-configured scope.","commands":{"allow":[],"deny":["tags_get_report_types"]}}},"permission_sets":{},"global_scope_schema":null},"updater":{"default_permission":{"identifier":"default","description":"This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n","permissions":["allow-check","allow-download","allow-install","allow-download-and-install"]},"permissions":{"allow-check":{"identifier":"allow-check","description":"Enables the check command without any pre-configured scope.","commands":{"allow":["check"],"deny":[]}},"allow-download":{"identifier":"allow-download","description":"Enables the download command without any pre-configured scope.","commands":{"allow":["download"],"deny":[]}},"allow-download-and-install":{"identifier":"allow-download-and-install","description":"Enables the download_and_install command without any pre-configured scope.","commands":{"allow":["download_and_install"],"deny":[]}},"allow-install":{"identifier":"allow-install","description":"Enables the install command without any pre-configured scope.","commands":{"allow":["install"],"deny":[]}},"deny-check":{"identifier":"deny-check","description":"Denies the check command without any pre-configured scope.","commands":{"allow":[],"deny":["check"]}},"deny-download":{"identifier":"deny-download","description":"Denies the download command without any pre-configured scope.","commands":{"allow":[],"deny":["download"]}},"deny-download-and-install":{"identifier":"deny-download-and-install","description":"Denies the download_and_install command without any pre-configured scope.","commands":{"allow":[],"deny":["download_and_install"]}},"deny-install":{"identifier":"deny-install","description":"Denies the install command without any pre-configured scope.","commands":{"allow":[],"deny":["install"]}}},"permission_sets":{},"global_scope_schema":null},"utils":{"default_permission":{"identifier":"default","description":"Default plugin permissions.","permissions":["allow-get-artifact","allow-get-os","allow-should-disable-mouseover","allow-highlight-in-folder","allow-open-path","allow-show-launcher-logs-folder","allow-progress-bars-list","allow-get-opening-command"]},"permissions":{"allow-get-artifact":{"identifier":"allow-get-artifact","description":"Enables the get_artifact command without any pre-configured scope.","commands":{"allow":["get_artifact"],"deny":[]}},"allow-get-opening-command":{"identifier":"allow-get-opening-command","description":"Enables the get_opening_command command without any pre-configured scope.","commands":{"allow":["get_opening_command"],"deny":[]}},"allow-get-os":{"identifier":"allow-get-os","description":"Enables the get_os command without any pre-configured scope.","commands":{"allow":["get_os"],"deny":[]}},"allow-highlight-in-folder":{"identifier":"allow-highlight-in-folder","description":"Enables the highlight_in_folder command without any pre-configured scope.","commands":{"allow":["highlight_in_folder"],"deny":[]}},"allow-open-path":{"identifier":"allow-open-path","description":"Enables the open_path command without any pre-configured scope.","commands":{"allow":["open_path"],"deny":[]}},"allow-progress-bars-list":{"identifier":"allow-progress-bars-list","description":"Enables the progress_bars_list command without any pre-configured scope.","commands":{"allow":["progress_bars_list"],"deny":[]}},"allow-should-disable-mouseover":{"identifier":"allow-should-disable-mouseover","description":"Enables the should_disable_mouseover command without any pre-configured scope.","commands":{"allow":["should_disable_mouseover"],"deny":[]}},"allow-show-launcher-logs-folder":{"identifier":"allow-show-launcher-logs-folder","description":"Enables the show_launcher_logs_folder command without any pre-configured scope.","commands":{"allow":["show_launcher_logs_folder"],"deny":[]}},"deny-get-artifact":{"identifier":"deny-get-artifact","description":"Denies the get_artifact command without any pre-configured scope.","commands":{"allow":[],"deny":["get_artifact"]}},"deny-get-opening-command":{"identifier":"deny-get-opening-command","description":"Denies the get_opening_command command without any pre-configured scope.","commands":{"allow":[],"deny":["get_opening_command"]}},"deny-get-os":{"identifier":"deny-get-os","description":"Denies the get_os command without any pre-configured scope.","commands":{"allow":[],"deny":["get_os"]}},"deny-highlight-in-folder":{"identifier":"deny-highlight-in-folder","description":"Denies the highlight_in_folder command without any pre-configured scope.","commands":{"allow":[],"deny":["highlight_in_folder"]}},"deny-open-path":{"identifier":"deny-open-path","description":"Denies the open_path command without any pre-configured scope.","commands":{"allow":[],"deny":["open_path"]}},"deny-progress-bars-list":{"identifier":"deny-progress-bars-list","description":"Denies the progress_bars_list command without any pre-configured scope.","commands":{"allow":[],"deny":["progress_bars_list"]}},"deny-should-disable-mouseover":{"identifier":"deny-should-disable-mouseover","description":"Denies the should_disable_mouseover command without any pre-configured scope.","commands":{"allow":[],"deny":["should_disable_mouseover"]}},"deny-show-launcher-logs-folder":{"identifier":"deny-show-launcher-logs-folder","description":"Denies the show_launcher_logs_folder command without any pre-configured scope.","commands":{"allow":[],"deny":["show_launcher_logs_folder"]}}},"permission_sets":{},"global_scope_schema":null},"window-state":{"default_permission":{"identifier":"default","description":"This permission set configures what kind of\noperations are available from the window state plugin.\n\n#### Granted Permissions\n\nAll operations are enabled by default.\n\n","permissions":["allow-filename","allow-restore-state","allow-save-window-state"]},"permissions":{"allow-filename":{"identifier":"allow-filename","description":"Enables the filename command without any pre-configured scope.","commands":{"allow":["filename"],"deny":[]}},"allow-restore-state":{"identifier":"allow-restore-state","description":"Enables the restore_state command without any pre-configured scope.","commands":{"allow":["restore_state"],"deny":[]}},"allow-save-window-state":{"identifier":"allow-save-window-state","description":"Enables the save_window_state command without any pre-configured scope.","commands":{"allow":["save_window_state"],"deny":[]}},"deny-filename":{"identifier":"deny-filename","description":"Denies the filename command without any pre-configured scope.","commands":{"allow":[],"deny":["filename"]}},"deny-restore-state":{"identifier":"deny-restore-state","description":"Denies the restore_state command without any pre-configured scope.","commands":{"allow":[],"deny":["restore_state"]}},"deny-save-window-state":{"identifier":"deny-save-window-state","description":"Denies the save_window_state command without any pre-configured scope.","commands":{"allow":[],"deny":["save_window_state"]}}},"permission_sets":{},"global_scope_schema":null}}
\ No newline at end of file
diff --git a/apps/app/gen/schemas/capabilities.json b/apps/app/gen/schemas/capabilities.json
index f041cba2..55528d3b 100644
--- a/apps/app/gen/schemas/capabilities.json
+++ b/apps/app/gen/schemas/capabilities.json
@@ -1 +1 @@
-{"ads":{"identifier":"ads","description":"","remote":{"urls":["https://modrinth.com/*","http://localhost:3000/*"]},"local":false,"webviews":["ads-window"],"permissions":["shell:allow-open","ads:default"]},"core":{"identifier":"core","description":"","local":true,"windows":["main"],"permissions":["core:default","core:path:default","core:event:default","core:window:default","core:app:default","core:resources:default","core:menu:default","core:tray:default","core:window:allow-create","core:window:allow-maximize","core:window:allow-toggle-maximize","core:window:allow-unmaximize","core:window:allow-minimize","core:window:allow-unminimize","core:window:allow-show","core:window:allow-hide","core:window:allow-close","core:window:allow-set-decorations","core:window:allow-start-dragging","core:webview:allow-set-webview-zoom"]},"plugins":{"identifier":"plugins","description":"","local":true,"windows":["main"],"permissions":["dialog:allow-open","dialog:allow-confirm","shell:allow-open","os:allow-platform","os:allow-version","os:allow-os-type","os:allow-family","os:allow-arch","os:allow-exe-extension","os:allow-locale","os:allow-hostname","deep-link:default","window-state:default","window-state:allow-restore-state","window-state:allow-save-window-state","auth:default","import:default","jre:default","logs:default","metadata:default","mr-auth:default","profile-create:default","pack:default","process:default","profile:default","cache:default","settings:default","tags:default","utils:default","ads:default"]},"updater":{"identifier":"updater","description":"","local":true,"windows":["main"],"permissions":["updater:default"]}}
\ No newline at end of file
+{"core":{"identifier":"core","description":"","local":true,"windows":["main"],"permissions":["core:default","core:path:default","core:event:default","core:window:default","core:app:default","core:resources:default","core:menu:default","core:tray:default","core:window:allow-create","core:window:allow-maximize","core:window:allow-toggle-maximize","core:window:allow-unmaximize","core:window:allow-minimize","core:window:allow-unminimize","core:window:allow-show","core:window:allow-hide","core:window:allow-close","core:window:allow-set-decorations","core:window:allow-start-dragging","core:webview:allow-set-webview-zoom"]},"plugins":{"identifier":"plugins","description":"","local":true,"windows":["main"],"permissions":["dialog:allow-open","dialog:allow-confirm","shell:allow-open","os:allow-platform","os:allow-version","os:allow-os-type","os:allow-family","os:allow-arch","os:allow-exe-extension","os:allow-locale","os:allow-hostname","deep-link:default","window-state:default","window-state:allow-restore-state","window-state:allow-save-window-state","auth:default","import:default","jre:default","logs:default","metadata:default","mr-auth:default","profile-create:default","pack:default","process:default","profile:default","cache:default","settings:default","tags:default","utils:default"]},"updater":{"identifier":"updater","description":"","local":true,"windows":["main"],"permissions":["updater:default"]}}
\ No newline at end of file
diff --git a/apps/app/gen/schemas/desktop-schema.json b/apps/app/gen/schemas/desktop-schema.json
index fb130bea..d8994515 100644
--- a/apps/app/gen/schemas/desktop-schema.json
+++ b/apps/app/gen/schemas/desktop-schema.json
@@ -299,69 +299,6 @@
     },
     "Identifier": {
       "oneOf": [
-        {
-          "description": "ads:default -> Default plugin permissions.",
-          "type": "string",
-          "enum": [
-            "ads:default"
-          ]
-        },
-        {
-          "description": "ads:allow-hide-ads-window -> Enables the hide_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:allow-hide-ads-window"
-          ]
-        },
-        {
-          "description": "ads:allow-init-ads-window -> Enables the init_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:allow-init-ads-window"
-          ]
-        },
-        {
-          "description": "ads:allow-scroll-ads-window -> Enables the scroll_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:allow-scroll-ads-window"
-          ]
-        },
-        {
-          "description": "ads:allow-show-ads-window -> Enables the show_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:allow-show-ads-window"
-          ]
-        },
-        {
-          "description": "ads:deny-hide-ads-window -> Denies the hide_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:deny-hide-ads-window"
-          ]
-        },
-        {
-          "description": "ads:deny-init-ads-window -> Denies the init_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:deny-init-ads-window"
-          ]
-        },
-        {
-          "description": "ads:deny-scroll-ads-window -> Denies the scroll_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:deny-scroll-ads-window"
-          ]
-        },
-        {
-          "description": "ads:deny-show-ads-window -> Denies the show_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:deny-show-ads-window"
-          ]
-        },
         {
           "description": "auth:default -> Default plugin permissions.",
           "type": "string",
@@ -390,6 +327,13 @@
             "auth:allow-login"
           ]
         },
+        {
+          "description": "auth:allow-offline-login -> Enables the offline_login command without any pre-configured scope.",
+          "type": "string",
+          "enum": [
+            "auth:allow-offline-login"
+          ]
+        },
         {
           "description": "auth:allow-remove-user -> Enables the remove_user command without any pre-configured scope.",
           "type": "string",
@@ -425,6 +369,13 @@
             "auth:deny-login"
           ]
         },
+        {
+          "description": "auth:deny-offline-login -> Denies the offline_login command without any pre-configured scope.",
+          "type": "string",
+          "enum": [
+            "auth:deny-offline-login"
+          ]
+        },
         {
           "description": "auth:deny-remove-user -> Denies the remove_user command without any pre-configured scope.",
           "type": "string",
@@ -3988,6 +3939,13 @@
             "utils:default"
           ]
         },
+        {
+          "description": "utils:allow-get-artifact -> Enables the get_artifact command without any pre-configured scope.",
+          "type": "string",
+          "enum": [
+            "utils:allow-get-artifact"
+          ]
+        },
         {
           "description": "utils:allow-get-opening-command -> Enables the get_opening_command command without any pre-configured scope.",
           "type": "string",
@@ -4037,6 +3995,13 @@
             "utils:allow-show-launcher-logs-folder"
           ]
         },
+        {
+          "description": "utils:deny-get-artifact -> Denies the get_artifact command without any pre-configured scope.",
+          "type": "string",
+          "enum": [
+            "utils:deny-get-artifact"
+          ]
+        },
         {
           "description": "utils:deny-get-opening-command -> Denies the get_opening_command command without any pre-configured scope.",
           "type": "string",
diff --git a/apps/app/gen/schemas/macOS-schema.json b/apps/app/gen/schemas/macOS-schema.json
index fb130bea..d8994515 100644
--- a/apps/app/gen/schemas/macOS-schema.json
+++ b/apps/app/gen/schemas/macOS-schema.json
@@ -299,69 +299,6 @@
     },
     "Identifier": {
       "oneOf": [
-        {
-          "description": "ads:default -> Default plugin permissions.",
-          "type": "string",
-          "enum": [
-            "ads:default"
-          ]
-        },
-        {
-          "description": "ads:allow-hide-ads-window -> Enables the hide_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:allow-hide-ads-window"
-          ]
-        },
-        {
-          "description": "ads:allow-init-ads-window -> Enables the init_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:allow-init-ads-window"
-          ]
-        },
-        {
-          "description": "ads:allow-scroll-ads-window -> Enables the scroll_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:allow-scroll-ads-window"
-          ]
-        },
-        {
-          "description": "ads:allow-show-ads-window -> Enables the show_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:allow-show-ads-window"
-          ]
-        },
-        {
-          "description": "ads:deny-hide-ads-window -> Denies the hide_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:deny-hide-ads-window"
-          ]
-        },
-        {
-          "description": "ads:deny-init-ads-window -> Denies the init_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:deny-init-ads-window"
-          ]
-        },
-        {
-          "description": "ads:deny-scroll-ads-window -> Denies the scroll_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:deny-scroll-ads-window"
-          ]
-        },
-        {
-          "description": "ads:deny-show-ads-window -> Denies the show_ads_window command without any pre-configured scope.",
-          "type": "string",
-          "enum": [
-            "ads:deny-show-ads-window"
-          ]
-        },
         {
           "description": "auth:default -> Default plugin permissions.",
           "type": "string",
@@ -390,6 +327,13 @@
             "auth:allow-login"
           ]
         },
+        {
+          "description": "auth:allow-offline-login -> Enables the offline_login command without any pre-configured scope.",
+          "type": "string",
+          "enum": [
+            "auth:allow-offline-login"
+          ]
+        },
         {
           "description": "auth:allow-remove-user -> Enables the remove_user command without any pre-configured scope.",
           "type": "string",
@@ -425,6 +369,13 @@
             "auth:deny-login"
           ]
         },
+        {
+          "description": "auth:deny-offline-login -> Denies the offline_login command without any pre-configured scope.",
+          "type": "string",
+          "enum": [
+            "auth:deny-offline-login"
+          ]
+        },
         {
           "description": "auth:deny-remove-user -> Denies the remove_user command without any pre-configured scope.",
           "type": "string",
@@ -3988,6 +3939,13 @@
             "utils:default"
           ]
         },
+        {
+          "description": "utils:allow-get-artifact -> Enables the get_artifact command without any pre-configured scope.",
+          "type": "string",
+          "enum": [
+            "utils:allow-get-artifact"
+          ]
+        },
         {
           "description": "utils:allow-get-opening-command -> Enables the get_opening_command command without any pre-configured scope.",
           "type": "string",
@@ -4037,6 +3995,13 @@
             "utils:allow-show-launcher-logs-folder"
           ]
         },
+        {
+          "description": "utils:deny-get-artifact -> Denies the get_artifact command without any pre-configured scope.",
+          "type": "string",
+          "enum": [
+            "utils:deny-get-artifact"
+          ]
+        },
         {
           "description": "utils:deny-get-opening-command -> Denies the get_opening_command command without any pre-configured scope.",
           "type": "string",
diff --git a/apps/app/icons/128x128.png b/apps/app/icons/128x128.png
index ed62fb0c..0e9d7da3 100644
Binary files a/apps/app/icons/128x128.png and b/apps/app/icons/128x128.png differ
diff --git a/apps/app/icons/128x128@2x.png b/apps/app/icons/128x128@2x.png
index c8fe8fc3..e00bf3ad 100644
Binary files a/apps/app/icons/128x128@2x.png and b/apps/app/icons/128x128@2x.png differ
diff --git a/apps/app/icons/Square107x107Logo.png b/apps/app/icons/Square107x107Logo.png
index f51ee724..4579dcf7 100644
Binary files a/apps/app/icons/Square107x107Logo.png and b/apps/app/icons/Square107x107Logo.png differ
diff --git a/apps/app/icons/Square142x142Logo.png b/apps/app/icons/Square142x142Logo.png
index e553ffdb..7ddb3bfd 100644
Binary files a/apps/app/icons/Square142x142Logo.png and b/apps/app/icons/Square142x142Logo.png differ
diff --git a/apps/app/icons/Square150x150Logo.png b/apps/app/icons/Square150x150Logo.png
index 82bbb433..b268418f 100644
Binary files a/apps/app/icons/Square150x150Logo.png and b/apps/app/icons/Square150x150Logo.png differ
diff --git a/apps/app/icons/Square284x284Logo.png b/apps/app/icons/Square284x284Logo.png
index eb36c3e2..e838c0ac 100644
Binary files a/apps/app/icons/Square284x284Logo.png and b/apps/app/icons/Square284x284Logo.png differ
diff --git a/apps/app/icons/Square30x30Logo.png b/apps/app/icons/Square30x30Logo.png
index c6542785..adc19b0e 100644
Binary files a/apps/app/icons/Square30x30Logo.png and b/apps/app/icons/Square30x30Logo.png differ
diff --git a/apps/app/icons/Square310x310Logo.png b/apps/app/icons/Square310x310Logo.png
index 23c18a86..11ef2e71 100644
Binary files a/apps/app/icons/Square310x310Logo.png and b/apps/app/icons/Square310x310Logo.png differ
diff --git a/apps/app/icons/Square44x44Logo.png b/apps/app/icons/Square44x44Logo.png
index 2a1af8d1..bbfd78b7 100644
Binary files a/apps/app/icons/Square44x44Logo.png and b/apps/app/icons/Square44x44Logo.png differ
diff --git a/apps/app/icons/Square71x71Logo.png b/apps/app/icons/Square71x71Logo.png
index 7da0aaf6..bcaecd52 100644
Binary files a/apps/app/icons/Square71x71Logo.png and b/apps/app/icons/Square71x71Logo.png differ
diff --git a/apps/app/icons/Square89x89Logo.png b/apps/app/icons/Square89x89Logo.png
index ac944047..241bd666 100644
Binary files a/apps/app/icons/Square89x89Logo.png and b/apps/app/icons/Square89x89Logo.png differ
diff --git a/apps/app/icons/StoreLogo.png b/apps/app/icons/StoreLogo.png
index 7007585b..97c9c13a 100644
Binary files a/apps/app/icons/StoreLogo.png and b/apps/app/icons/StoreLogo.png differ
diff --git a/apps/app/icons/favicon.ico b/apps/app/icons/favicon.ico
index c2ccbab9..81e0afa7 100644
Binary files a/apps/app/icons/favicon.ico and b/apps/app/icons/favicon.ico differ
diff --git a/apps/app/icons/icon (1).png b/apps/app/icons/icon (1).png
new file mode 100644
index 00000000..fc7a899f
Binary files /dev/null and b/apps/app/icons/icon (1).png differ
diff --git a/apps/app/icons/icon.icns b/apps/app/icons/icon.icns
index 198f4106..7e4a5657 100644
Binary files a/apps/app/icons/icon.icns and b/apps/app/icons/icon.icns differ
diff --git a/apps/app/icons/icon.ico b/apps/app/icons/icon.ico
index 8a6c96ef..69eec6cf 100644
Binary files a/apps/app/icons/icon.ico and b/apps/app/icons/icon.ico differ
diff --git a/apps/app/icons/icon.png b/apps/app/icons/icon.png
deleted file mode 100644
index 4431edb5..00000000
Binary files a/apps/app/icons/icon.png and /dev/null differ
diff --git a/apps/app/src/api/ads-init.js b/apps/app/src/api/ads-init.js
deleted file mode 100644
index 23291a89..00000000
--- a/apps/app/src/api/ads-init.js
+++ /dev/null
@@ -1,20 +0,0 @@
-if (!window.modrinthClickListener) {
-  window.modrinthClickListener = true
-  document.addEventListener('click', function (e) {
-    let target = e.target
-    while (target != null) {
-      if (target.matches('a')) {
-        e.preventDefault()
-        if (target.href) {
-          window.top.postMessage({ modrinthOpenUrl: target.href }, 'https://modrinth.com')
-        }
-        break
-      }
-      target = target.parentElement
-    }
-  })
-}
-
-window.open = (url, target, features) => {
-  window.top.postMessage({ modrinthOpenUrl: url }, 'https://modrinth.com')
-}
diff --git a/apps/app/src/api/ads.rs b/apps/app/src/api/ads.rs
deleted file mode 100644
index 707dbf19..00000000
--- a/apps/app/src/api/ads.rs
+++ /dev/null
@@ -1,143 +0,0 @@
-use serde::Serialize;
-use tauri::plugin::TauriPlugin;
-use tauri::{Emitter, LogicalPosition, LogicalSize, Manager, Runtime};
-use tokio::sync::RwLock;
-
-pub struct AdsState {
-    pub shown: bool,
-    pub size: Option<LogicalSize<f32>>,
-    pub position: Option<LogicalPosition<f32>>,
-}
-
-pub fn init<R: Runtime>() -> TauriPlugin<R> {
-    tauri::plugin::Builder::<R>::new("ads")
-        .setup(|app, _api| {
-            app.manage(RwLock::new(AdsState {
-                shown: true,
-                size: None,
-                position: None,
-            }));
-
-            Ok(())
-        })
-        .invoke_handler(tauri::generate_handler![
-            init_ads_window,
-            hide_ads_window,
-            scroll_ads_window,
-            show_ads_window,
-        ])
-        .build()
-}
-
-#[tauri::command]
-#[cfg(not(target_os = "linux"))]
-pub async fn init_ads_window<R: Runtime>(
-    app: tauri::AppHandle<R>,
-    x: f32,
-    y: f32,
-    width: f32,
-    height: f32,
-    override_shown: bool,
-) -> crate::api::Result<()> {
-    use tauri::WebviewUrl;
-    const LINK_SCRIPT: &str = include_str!("ads-init.js");
-
-    let state = app.state::<RwLock<AdsState>>();
-    let mut state = state.write().await;
-    state.size = Some(LogicalSize::new(width, height));
-    state.position = Some(LogicalPosition::new(x, y));
-
-    if override_shown {
-        state.shown = true;
-    }
-
-    if let Some(webview) = app.webviews().get("ads-window") {
-        if state.shown {
-            let _ = webview.set_position(LogicalPosition::new(x, y));
-            let _ = webview.set_size(LogicalSize::new(width, height));
-        }
-    } else if let Some(window) = app.get_window("main") {
-        let _ = window.add_child(
-            tauri::webview::WebviewBuilder::new(
-                "ads-window",
-                WebviewUrl::External(
-                    "https://modrinth.com/wrapper/app-ads".parse().unwrap(),
-                ),
-            )
-            .initialization_script(LINK_SCRIPT)
-            .user_agent("ModrinthApp Ads Webview")
-            .zoom_hotkeys_enabled(false)
-            .transparent(true),
-            if state.shown {
-                LogicalPosition::new(x, y)
-            } else {
-                LogicalPosition::new(-1000.0, -1000.0)
-            },
-            LogicalSize::new(width, height),
-        );
-    }
-
-    Ok(())
-}
-
-// TODO: make ads work on linux
-#[tauri::command]
-#[cfg(target_os = "linux")]
-pub async fn init_ads_window() {}
-
-#[tauri::command]
-pub async fn show_ads_window<R: Runtime>(
-    app: tauri::AppHandle<R>,
-) -> crate::api::Result<()> {
-    if let Some(webview) = app.webviews().get("ads-window") {
-        let state = app.state::<RwLock<AdsState>>();
-        let mut state = state.write().await;
-
-        state.shown = true;
-        if let Some(size) = state.size {
-            let _ = webview.set_size(size);
-        }
-
-        if let Some(position) = state.position {
-            let _ = webview.set_position(position);
-        }
-    }
-
-    Ok(())
-}
-
-#[tauri::command]
-pub async fn hide_ads_window<R: Runtime>(
-    app: tauri::AppHandle<R>,
-    reset: Option<bool>,
-) -> crate::api::Result<()> {
-    if let Some(webview) = app.webviews().get("ads-window") {
-        let state = app.state::<RwLock<AdsState>>();
-        let mut state = state.write().await;
-        state.shown = false;
-
-        if reset.unwrap_or(false) {
-            state.size = None;
-            state.position = None;
-        }
-
-        let _ = webview.set_position(LogicalPosition::new(-1000, -1000));
-    }
-
-    Ok(())
-}
-
-#[derive(Serialize, Clone)]
-struct ScrollEvent {
-    scroll: f32,
-}
-
-#[tauri::command]
-pub async fn scroll_ads_window<R: Runtime>(
-    app: tauri::AppHandle<R>,
-    scroll: f32,
-) -> crate::api::Result<()> {
-    let _ = app.emit("ads-scroll", ScrollEvent { scroll });
-
-    Ok(())
-}
diff --git a/apps/app/src/api/auth.rs b/apps/app/src/api/auth.rs
index b084feb4..ae59a66b 100644
--- a/apps/app/src/api/auth.rs
+++ b/apps/app/src/api/auth.rs
@@ -7,6 +7,7 @@ use theseus::prelude::*;
 pub fn init<R: Runtime>() -> TauriPlugin<R> {
     tauri::plugin::Builder::<R>::new("auth")
         .invoke_handler(tauri::generate_handler![
+            offline_login,
             login,
             remove_user,
             get_default_user,
@@ -16,6 +17,14 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
         .build()
 }
 
+/// Create new offline user
+/// This is custom function from Astralium Org.
+#[tauri::command]
+pub async fn offline_login(name: &str) -> Result<Credentials> {
+    let credentials = minecraft_auth::offline_auth(name).await?;
+    Ok(credentials)
+}
+
 /// Authenticate a user with Hydra - part 1
 /// This begins the authentication flow quasi-synchronously, returning a URL to visit (that the user will sign in at)
 #[tauri::command]
diff --git a/apps/app/src/api/mod.rs b/apps/app/src/api/mod.rs
index 46efa755..81f4b407 100644
--- a/apps/app/src/api/mod.rs
+++ b/apps/app/src/api/mod.rs
@@ -16,7 +16,6 @@ pub mod settings;
 pub mod tags;
 pub mod utils;
 
-pub mod ads;
 pub mod cache;
 
 pub type Result<T> = std::result::Result<T, TheseusSerializableError>;
diff --git a/apps/app/src/api/utils.rs b/apps/app/src/api/utils.rs
index 391ea50f..063c2937 100644
--- a/apps/app/src/api/utils.rs
+++ b/apps/app/src/api/utils.rs
@@ -11,6 +11,7 @@ use std::path::PathBuf;
 pub fn init<R: tauri::Runtime>() -> tauri::plugin::TauriPlugin<R> {
     tauri::plugin::Builder::new("utils")
         .invoke_handler(tauri::generate_handler![
+            get_artifact,
             get_os,
             should_disable_mouseover,
             highlight_in_folder,
@@ -22,6 +23,12 @@ pub fn init<R: tauri::Runtime>() -> tauri::plugin::TauriPlugin<R> {
         .build()
 }
 
+#[tauri::command]
+pub async fn get_artifact(downloadurl: &str, filename: &str, ostype: &str, autoupdatesupported: bool) -> Result<()> {
+    theseus::download::init_download(downloadurl, filename, ostype, autoupdatesupported).await;
+    Ok(())
+}
+
 /// Gets OS
 #[tauri::command]
 pub fn get_os() -> OS {
diff --git a/apps/app/src/main.rs b/apps/app/src/main.rs
index 8f97fcd7..6d429ffb 100644
--- a/apps/app/src/main.rs
+++ b/apps/app/src/main.rs
@@ -27,61 +27,61 @@ extern crate objc;
 async fn initialize_state(app: tauri::AppHandle) -> api::Result<()> {
     theseus::EventState::init(app.clone()).await?;
 
-    #[cfg(feature = "updater")]
-    {
-        use tauri_plugin_updater::UpdaterExt;
-
-        let updater = app.updater_builder().build()?;
-
-        let update_fut = updater.check();
-
-        State::init().await?;
-
-        let check_bar = theseus::init_loading(
-            theseus::LoadingBarType::CheckingForUpdates,
-            1.0,
-            "Checking for updates...",
-        )
-        .await?;
-
-        let update = update_fut.await;
-
-        drop(check_bar);
-
-        if let Some(update) = update.ok().flatten() {
-            tracing::info!("Update found: {:?}", update.download_url);
-            let loader_bar_id = theseus::init_loading(
-                theseus::LoadingBarType::LauncherUpdate {
-                    version: update.version.clone(),
-                    current_version: update.current_version.clone(),
-                },
-                1.0,
-                "Updating Modrinth App...",
-            )
-            .await?;
-
-            // 100 MiB
-            const DEFAULT_CONTENT_LENGTH: u64 = 1024 * 1024 * 100;
-
-            update
-                .download_and_install(
-                    |chunk_length, content_length| {
-                        let _ = theseus::emit_loading(
-                            &loader_bar_id,
-                            (chunk_length as f64)
-                                / (content_length
-                                    .unwrap_or(DEFAULT_CONTENT_LENGTH)
-                                    as f64),
-                            None,
-                        );
-                    },
-                    || {},
-                )
-                .await?;
-
-            app.restart();
-        }
-    }
+    // #[cfg(feature = "updater")]
+    // {
+    //     use tauri_plugin_updater::UpdaterExt;
+
+    //     let updater = app.updater_builder().build()?;
+
+    //     let update_fut = updater.check();
+
+    //     State::init().await?;
+
+    //     let check_bar = theseus::init_loading(
+    //         theseus::LoadingBarType::CheckingForUpdates,
+    //         1.0,
+    //         "Checking for updates...",
+    //     )
+    //     .await?;
+
+    //     let update = update_fut.await;
+
+    //     drop(check_bar);
+
+    //     if let Some(update) = update.ok().flatten() {
+    //         tracing::info!("Update found: {:?}", update.download_url);
+    //         let loader_bar_id = theseus::init_loading(
+    //             theseus::LoadingBarType::LauncherUpdate {
+    //                 version: update.version.clone(),
+    //                 current_version: update.current_version.clone(),
+    //             },
+    //             1.0,
+    //             "Updating Modrinth App...",
+    //         )
+    //         .await?;
+
+    //         // 100 MiB
+    //         const DEFAULT_CONTENT_LENGTH: u64 = 1024 * 1024 * 100;
+
+    //         update
+    //             .download_and_install(
+    //                 |chunk_length, content_length| {
+    //                     let _ = theseus::emit_loading(
+    //                         &loader_bar_id,
+    //                         (chunk_length as f64)
+    //                             / (content_length
+    //                                 .unwrap_or(DEFAULT_CONTENT_LENGTH)
+    //                                 as f64),
+    //                         None,
+    //                     );
+    //                 },
+    //                 || {},
+    //             )
+    //             .await?;
+
+    //         app.restart();
+    //     }
+    // }
 
     #[cfg(not(feature = "updater"))]
     {
@@ -259,7 +259,6 @@ fn main() {
         .plugin(api::tags::init())
         .plugin(api::utils::init())
         .plugin(api::cache::init())
-        .plugin(api::ads::init())
         .invoke_handler(tauri::generate_handler![
             initialize_state,
             is_dev,
diff --git a/apps/app/tauri-release.conf.json b/apps/app/tauri-release.conf.json
index 32b8a348..2057adc7 100644
--- a/apps/app/tauri-release.conf.json
+++ b/apps/app/tauri-release.conf.json
@@ -7,7 +7,7 @@
   },
   "app": {
     "security": {
-      "capabilities": ["ads", "core", "plugins", "updater"]
+      "capabilities": ["core", "plugins", "updater"]
     }
   },
   "plugins": {
diff --git a/apps/app/tauri.conf.json b/apps/app/tauri.conf.json
index d28d2c41..9cc3f11c 100644
--- a/apps/app/tauri.conf.json
+++ b/apps/app/tauri.conf.json
@@ -47,9 +47,9 @@
       }
     ]
   },
-  "productName": "Modrinth App",
+  "productName": "AstralRinth App",
   "version": "0.8.5",
-  "identifier": "ModrinthApp",
+  "identifier": "AstralRinth",
   "plugins": {
     "deep-link": {
       "desktop": {
@@ -68,7 +68,7 @@
         "fullscreen": false,
         "height": 800,
         "resizable": true,
-        "title": "Modrinth App",
+        "title": "AstralRinth",
         "width": 1280,
         "minHeight": 750,
         "minWidth": 1100,
@@ -86,10 +86,10 @@
         ],
         "enable": true
       },
-      "capabilities": ["ads", "core", "plugins"],
+      "capabilities": ["core", "plugins"],
       "csp": {
         "default-src": "'self' customprotocol: asset:",
-        "connect-src": "ipc: http://ipc.localhost https://modrinth.com https://*.modrinth.com https://*.posthog.com https://*.sentry.io https://*.cloudflare.com https://api.mclo.gs https://cmp.inmobi.com",
+        "connect-src": "https://api.github.com ipc: http://ipc.localhost https://modrinth.com https://*.modrinth.com https://*.posthog.com https://*.sentry.io https://*.cloudflare.com https://api.mclo.gs https://cmp.inmobi.com",
         "font-src": [
           "https://cdn-raw.modrinth.com/fonts/inter/"
         ],
diff --git a/apps/app/tauri.macos.conf.json b/apps/app/tauri.macos.conf.json
index d618f322..36a54d5c 100644
--- a/apps/app/tauri.macos.conf.json
+++ b/apps/app/tauri.macos.conf.json
@@ -7,7 +7,7 @@
         "fullscreen": false,
         "height": 800,
         "resizable": true,
-        "title": "Modrinth App",
+        "title": "AstralRinth",
         "width": 1280,
         "minHeight": 700,
         "minWidth": 1100,
diff --git a/packages/app-lib/migrations/20240711194701_init.sql b/packages/app-lib/migrations/20240711194701_init.sql
index 574e8227..5abc4e8a 100644
--- a/packages/app-lib/migrations/20240711194701_init.sql
+++ b/packages/app-lib/migrations/20240711194701_init.sql
@@ -4,13 +4,13 @@ CREATE TABLE settings (
     max_concurrent_downloads INTEGER NOT NULL DEFAULT 10,
     max_concurrent_writes INTEGER NOT NULL DEFAULT 10,
 
-    theme TEXT NOT NULL DEFAULT 'dark',
+    theme TEXT NOT NULL DEFAULT 'oled',
     default_page TEXT NOT NULL DEFAULT 'home',
     collapsed_navigation INTEGER NOT NULL DEFAULT TRUE,
     advanced_rendering INTEGER NOT NULL DEFAULT TRUE,
     native_decorations INTEGER NOT NULL DEFAULT FALSE,
 
-    telemetry INTEGER NOT NULL DEFAULT TRUE,
+    telemetry INTEGER NOT NULL DEFAULT FALSE,
     discord_rpc INTEGER NOT NULL DEFAULT TRUE,
     developer_mode INTEGER NOT NULL DEFAULT FALSE,
 
diff --git a/packages/app-lib/src/api/download.rs b/packages/app-lib/src/api/download.rs
new file mode 100644
index 00000000..bac7cdc5
--- /dev/null
+++ b/packages/app-lib/src/api/download.rs
@@ -0,0 +1,55 @@
+use std::process::exit;
+
+use reqwest;
+use tokio::fs::File as AsyncFile;
+use tokio::io::AsyncWriteExt;
+use tokio::process::Command;
+
+async fn download_file(download_url: &str, local_filename: &str, os_type: &str, auto_update_supported: bool) -> Result<(), Box<dyn std::error::Error>> {
+    let download_dir = dirs::download_dir().ok_or("[download_file] • Failed to determine download directory")?;
+    let full_path = download_dir.join(local_filename);
+    let response = reqwest::get(download_url).await?;
+    let bytes = response.bytes().await?;
+    let mut dest_file = AsyncFile::create(&full_path).await?;
+    dest_file.write_all(&bytes).await?;
+    println!("[download_file] • File downloaded to: {:?}", full_path);
+    if auto_update_supported {
+        let status;
+        if os_type.to_lowercase() == "Windows".to_lowercase() {
+            status = Command::new("explorer")
+                .arg(download_dir.display().to_string())
+                .status()
+                .await
+                .expect("[download_file] • Failed to open downloads folder");
+        } else if os_type.to_lowercase() == "MacOS".to_lowercase() {
+            status = Command::new("open")
+                .arg(full_path.to_str().unwrap_or_default())
+                .status()
+                .await
+                .expect("[download_file] • Failed to execute command");
+        } else {
+            status = Command::new(".")
+                .arg(full_path.to_str().unwrap_or_default())
+                .status()
+                .await
+                .expect("[download_file] • Failed to execute command");
+        }
+        if status.success() {
+            println!("[download_file] • File opened successfully!");
+        } else {
+            eprintln!("[download_file] • Failed to open the file. Exit code: {:?}", status.code());
+        }
+    }
+    Ok(())
+}
+
+pub async fn init_download(download_url: &str, local_filename: &str, os_type: &str, auto_update_supported: bool) {
+    println!("[init_download] • Initialize downloading from • {:?}", download_url);
+    println!("[init_download] • Save local file name • {:?}", local_filename);
+    if let Err(e) = download_file(download_url, local_filename, os_type, auto_update_supported).await {
+        eprintln!("[init_download] • An error occurred! Failed to download the file: {}", e);
+    } else {
+        println!("[init_download] • Code finishes without errors.");
+        exit(0)
+    }
+}
\ No newline at end of file
diff --git a/packages/app-lib/src/api/minecraft_auth.rs b/packages/app-lib/src/api/minecraft_auth.rs
index 9f4a87ad..eb8b02d0 100644
--- a/packages/app-lib/src/api/minecraft_auth.rs
+++ b/packages/app-lib/src/api/minecraft_auth.rs
@@ -20,6 +20,14 @@ pub async fn finish_login(
     crate::state::login_finish(code, flow, &state.pool).await
 }
 
+#[tracing::instrument]
+pub async fn offline_auth(
+    name: &str
+) -> crate::Result<Credentials> {
+    let state = State::get().await?;
+    crate::state::offline_auth(name, &state.pool).await
+}
+
 #[tracing::instrument]
 pub async fn get_default_user() -> crate::Result<Option<uuid::Uuid>> {
     let state = State::get().await?;
diff --git a/packages/app-lib/src/api/mod.rs b/packages/app-lib/src/api/mod.rs
index dab9dab7..d0c24fc3 100644
--- a/packages/app-lib/src/api/mod.rs
+++ b/packages/app-lib/src/api/mod.rs
@@ -11,6 +11,7 @@ pub mod process;
 pub mod profile;
 pub mod settings;
 pub mod tags;
+pub mod download;
 
 pub mod data {
     pub use crate::state::{
diff --git a/packages/app-lib/src/launcher/mod.rs b/packages/app-lib/src/launcher/mod.rs
index 0c8f21c8..478db2c4 100644
--- a/packages/app-lib/src/launcher/mod.rs
+++ b/packages/app-lib/src/launcher/mod.rs
@@ -16,6 +16,7 @@ use chrono::Utc;
 use daedalus as d;
 use daedalus::minecraft::{RuleAction, VersionInfo};
 use daedalus::modded::LoaderVersion;
+use rand::seq::SliceRandom;
 use st::Profile;
 use std::collections::HashMap;
 use tokio::process::Command;
@@ -24,6 +25,8 @@ mod args;
 
 pub mod download;
 
+use crate::state::ACTIVE_STATE;
+
 // All nones -> disallowed
 // 1+ true -> allowed
 // 1+ false -> disallowed
@@ -672,10 +675,11 @@ pub async fn launch_minecraft(
         }
     }
 
-    let _ = state
-        .discord_rpc
-        .set_activity(&format!("Playing {}", profile.name), true)
-        .await;
+    let selected_phrase = ACTIVE_STATE.choose(&mut rand::thread_rng()).unwrap();
+        let _ = state
+            .discord_rpc
+            .set_activity(&format!("{} {}", selected_phrase, profile.name), true)
+            .await;
 
     // Create Minecraft child by inserting it into the state
     // This also spawns the process and prepares the subsequent processes
diff --git a/packages/app-lib/src/state/dirs.rs b/packages/app-lib/src/state/dirs.rs
index 6a7c3ae7..96148a91 100644
--- a/packages/app-lib/src/state/dirs.rs
+++ b/packages/app-lib/src/state/dirs.rs
@@ -24,7 +24,7 @@ impl DirectoryInfo {
     // init() is not needed for this function
     pub fn get_initial_settings_dir() -> Option<PathBuf> {
         Self::env_path("THESEUS_CONFIG_DIR")
-            .or_else(|| Some(dirs::data_dir()?.join("ModrinthApp")))
+            .or_else(|| Some(dirs::data_dir()?.join("AstralRinthApp")))
     }
 
     /// Get all paths needed for Theseus to operate properly
diff --git a/packages/app-lib/src/state/discord.rs b/packages/app-lib/src/state/discord.rs
index 0c1ee726..d5803cd2 100644
--- a/packages/app-lib/src/state/discord.rs
+++ b/packages/app-lib/src/state/discord.rs
@@ -1,12 +1,17 @@
-use std::sync::{atomic::AtomicBool, Arc};
+use std::{
+    sync::{atomic::AtomicBool, Arc},
+    time::{SystemTime, UNIX_EPOCH},
+};
 
 use discord_rich_presence::{
-    activity::{Activity, Assets},
+    activity::{Activity, Assets, Timestamps},
     DiscordIpc, DiscordIpcClient,
 };
+use rand::seq::SliceRandom;
 use tokio::sync::RwLock;
 
-use crate::state::Profile;
+// use crate::state::Profile;
+use crate::util::utils;
 use crate::State;
 
 pub struct DiscordGuard {
@@ -14,12 +19,29 @@ pub struct DiscordGuard {
     connected: Arc<AtomicBool>,
 }
 
+pub(crate) const ACTIVE_STATE: [&str; 6] = [
+    "Explores",
+    "Travels with",
+    "Pirating",
+    "Investigating the",
+    "Engaged in",
+    "Conducting",
+];
+pub(crate) const INACTIVE_STATE: [&str; 6] = [
+    "Idling...",
+    "Waiting for the pirate team...",
+    "Taking a break...",
+    "Resting...",
+    "On standby...",
+    "In a holding pattern...",
+];
+
 impl DiscordGuard {
     /// Initialize discord IPC client, and attempt to connect to it
     /// If it fails, it will still return a DiscordGuard, but the client will be unconnected
     pub fn init() -> crate::Result<DiscordGuard> {
         let dipc =
-            DiscordIpcClient::new("1123683254248148992").map_err(|e| {
+            DiscordIpcClient::new("1190718475832918136").map_err(|e| {
                 crate::ErrorKind::OtherError(format!(
                     "Could not create Discord client {}",
                     e,
@@ -77,11 +99,32 @@ impl DiscordGuard {
             return Ok(());
         }
 
-        let activity = Activity::new().state(msg).assets(
-            Assets::new()
-                .large_image("modrinth_simple")
-                .large_text("Modrinth Logo"),
-        );
+        // let activity = Activity::new().state(msg).assets(
+        //     Assets::new()
+        //         .large_image("modrinth_simple")
+        //         .large_text("Modrinth Logo"),
+        // );
+
+        let launcher =
+            utils::read_package_json().expect("Failed to read package.json");
+
+        let build_info = format!("AR • v{}", launcher.version);
+        let build_download = "https://astralium.su/get/ar";
+
+        let time = SystemTime::now()
+            .duration_since(UNIX_EPOCH)
+            .expect("Failed to get system time")
+            .as_secs() as i64;
+        let activity = Activity::new()
+            .state(msg)
+            .assets(
+                Assets::new()
+                    .large_image("astralrinth_logo")
+                    .large_text(&build_info)
+                    .small_image("astralrinth_logo")
+                    .small_text(&build_download),
+            )
+            .timestamps(Timestamps::new().start(time));
 
         // Attempt to set the activity
         // If the existing connection fails, attempt to reconnect and try again
@@ -167,20 +210,10 @@ impl DiscordGuard {
             return self.clear_activity(true).await;
         }
 
-        let running_profiles = state.process_manager.get_all();
-        if let Some(existing_child) = running_profiles.first() {
-            let prof =
-                Profile::get(&existing_child.profile_path, &state.pool).await?;
-            if let Some(prof) = prof {
-                self.set_activity(
-                    &format!("Playing {}", prof.name),
-                    reconnect_if_fail,
-                )
-                .await?;
-            }
-        } else {
-            self.set_activity("Idling...", reconnect_if_fail).await?;
-        }
+        let selected_phrase =
+            INACTIVE_STATE.choose(&mut rand::thread_rng()).unwrap();
+        self.set_activity(&format!("{}", selected_phrase), reconnect_if_fail)
+            .await?;
         Ok(())
     }
 }
diff --git a/packages/app-lib/src/state/minecraft_auth.rs b/packages/app-lib/src/state/minecraft_auth.rs
index e1c204aa..cecb95fc 100644
--- a/packages/app-lib/src/state/minecraft_auth.rs
+++ b/packages/app-lib/src/state/minecraft_auth.rs
@@ -197,6 +197,29 @@ pub async fn login_finish(
     Ok(credentials)
 }
 
+#[tracing::instrument]
+pub async fn offline_auth(
+    name: &str,
+    exec: impl sqlx::Executor<'_, Database = sqlx::Sqlite> + Copy,
+) -> crate::Result<Credentials> {
+    let random_uuid = Uuid::new_v4();
+    let access_token = "null".to_string();
+    let refresh_token = "null".to_string();
+
+    let credentials = Credentials {
+        id: random_uuid,
+        username: name.to_string(),
+        access_token: access_token,
+        refresh_token: refresh_token,
+        expires: Utc::now() + Duration::days(365 * 99),
+        active: true,
+    };
+
+    credentials.upsert(exec).await?;
+
+    Ok(credentials)
+}
+
 #[derive(Serialize, Deserialize, Clone, Debug)]
 pub struct Credentials {
     pub id: Uuid,
diff --git a/packages/app-lib/src/util/mod.rs b/packages/app-lib/src/util/mod.rs
index 813ec149..407456b4 100644
--- a/packages/app-lib/src/util/mod.rs
+++ b/packages/app-lib/src/util/mod.rs
@@ -3,6 +3,7 @@ pub mod fetch;
 pub mod io;
 pub mod jre;
 pub mod platform;
+pub mod utils;
 
 /// Wrap a builder which uses a mut reference into one which outputs an owned value
 macro_rules! wrap_ref_builder {
diff --git a/packages/app-lib/src/util/utils.rs b/packages/app-lib/src/util/utils.rs
new file mode 100644
index 00000000..1b7636b9
--- /dev/null
+++ b/packages/app-lib/src/util/utils.rs
@@ -0,0 +1,18 @@
+use serde::{Deserialize, Serialize};
+use tokio::io;
+
+const PACKAGE_JSON_CONTENT: &str =
+    include_str!("../../../../apps/app-frontend/package.json");
+
+#[derive(Serialize, Deserialize)]
+pub struct Launcher {
+    pub version: String,
+    pub development_build: bool,
+}
+
+pub fn read_package_json() -> io::Result<Launcher> {
+    // Deserialize the content of package.json into a Launcher struct
+    let launcher: Launcher = serde_json::from_str(PACKAGE_JSON_CONTENT)?;
+
+    Ok(launcher)
+}
diff --git a/packages/assets/icons/microsoft.svg b/packages/assets/icons/microsoft.svg
new file mode 100644
index 00000000..d7b84e94
--- /dev/null
+++ b/packages/assets/icons/microsoft.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="10mm" height="10mm" viewBox="0 0 10 10" version="1.1" id="svg26662" inkscape:version="1.2.2 (732a01da63, 2022-12-09)" sodipodi:docname="lic.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+   <sodipodi:namedview id="namedview26664" pagecolor="#505050" bordercolor="#eeeeee" borderopacity="1" inkscape:showpageshadow="0" inkscape:pageopacity="0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#505050" inkscape:document-units="mm" showgrid="false" inkscape:zoom="14.638496" inkscape:cx="17.112414" inkscape:cy="34.258984" inkscape:window-width="1488" inkscape:window-height="1230" inkscape:window-x="2794" inkscape:window-y="123" inkscape:window-maximized="0" inkscape:current-layer="layer1" />
+   <defs id="defs26659" />
+   <g inkscape:label="Слой 1" inkscape:groupmode="layer" id="layer1">
+      <g id="g26657" transform="matrix(3.9940568,0,0,3.954914,-1082.6556,16143.384)">
+         <path id="path26649" style="fill:#05a6f0;fill-opacity:1;stroke-width:0.18168;stroke-miterlimit:5.8;paint-order:fill markers stroke" d="m 271.06666,-4080.4646 v 0.8986 c 0,0.1289 0.0997,0.2334 0.22634,0.2398 h 0.91261 v -1.1384 z" />
+         <path id="path26651" style="fill:#ffba08;fill-opacity:1;stroke-width:0.18168;stroke-miterlimit:5.8;paint-order:fill markers stroke" d="m 272.43195,-4080.4646 v 1.1384 h 0.89917 0.0124 c 0.12669,-0.01 0.22686,-0.1109 0.22686,-0.2398 v -0.8986 z" />
+         <path id="path26653" style="fill:#e25127;fill-opacity:1;stroke-width:0.18168;stroke-miterlimit:5.8;paint-order:fill markers stroke" d="m 271.3054,-4081.8547 c -0.13246,0 -0.23874,0.1073 -0.23874,0.2403 v 0.8955 h 1.13895 v -1.1358 z" />
+         <path id="path26655" style="fill:#81bc06;fill-opacity:1;stroke:none;stroke-width:0.184849;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:5.8;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" d="m 272.43195,-4081.8547 v 1.1358 h 1.13843 v -0.8955 c 0,-0.133 -0.1068,-0.2403 -0.23926,-0.2403 z" />
+      </g>
+   </g>
+</svg>
diff --git a/packages/assets/icons/pirate-ship.svg b/packages/assets/icons/pirate-ship.svg
new file mode 100644
index 00000000..26857b89
--- /dev/null
+++ b/packages/assets/icons/pirate-ship.svg
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<svg height="800px" width="800px" version="1.1" id="Layer_1"
+	xmlns="http://www.w3.org/2000/svg"
+	xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 511.672 511.672" xml:space="preserve">
+	<path style="fill:#ED5564;" d="M227.674,44.901c0,0,0.047-0.031,0.141-0.109c-0.031,0.031-3.342,2.437-9.088,3.514
+	c-7.745,1.437-16.208-0.109-25.14-4.591c-31.386-15.771-68.175-0.968-69.721-0.344l0.016,0.062c-3.88,1.593-6.621,5.403-6.621,9.869
+	c0,5.887,4.771,10.649,10.657,10.649c1.694,0,3.295-0.406,4.716-1.109c4.466-1.624,30.816-10.416,51.381-0.078
+	c10.954,5.497,20.706,7.371,28.919,7.371c17.028,0,27.42-8.073,28.044-8.573L227.674,44.901z"/>
+	<g>
+		<path style="fill:#7F4545;" d="M234.514,31.973c-5.887,0-10.657,4.778-10.657,10.665v351.704h21.322V42.638
+		C245.179,36.751,240.401,31.973,234.514,31.973z"/>
+		<path style="fill:#7F4545;" d="M511.672,319.655c0-5.887-4.777-10.665-10.648-10.665c-1.031,0-2.016,0.156-2.951,0.422l0,0
+		l-0.234,0.062l0,0l-108.213,31.073l5.871,20.487l108.463-31.137l0,0C508.408,328.618,511.672,324.512,511.672,319.655z"/>
+	</g>
+	<path style="fill:#A85D5D;" d="M10.689,308.99l99.725,33.385c0,0,39.116,41.239,124.1,41.239c85,0,106.611-29.138,106.611-29.138
+	l85.258-24.484c9.588,160.21-122.656,149.561-122.656,149.561H115.294c-86.171-5.996-73.633-88.568-73.633-88.568l-13.187-9.728
+	l-4.208-18.021L0,351.635L10.689,308.99z"/>
+	<path style="fill:#965353;" d="M426.664,335.317c-5.871,132.337-122.938,122.905-122.938,122.905H115.294
+	c-57.409-3.981-71.001-41.973-73.68-66.879c-0.765,5.84-9.205,82.432,73.68,88.209h188.433
+	C303.727,479.553,433.004,489.968,426.664,335.317z"/>
+	<g>
+		<path style="fill:#434A54;" d="M277.166,415.594c0,5.887,4.763,10.649,10.649,10.649c5.888,0,10.649-4.763,10.649-10.649
+		s-4.762-10.665-10.649-10.665C281.929,404.929,277.166,409.707,277.166,415.594z"/>
+		<path style="fill:#434A54;" d="M234.514,415.594c0,5.887,4.778,10.649,10.665,10.649s10.657-4.763,10.657-10.649
+		s-4.77-10.665-10.657-10.665S234.514,409.707,234.514,415.594z"/>
+		<path style="fill:#434A54;" d="M191.877,415.594c0,5.887,4.771,10.649,10.657,10.649s10.665-4.763,10.665-10.649
+		s-4.778-10.665-10.665-10.665S191.877,409.707,191.877,415.594z"/>
+		<path style="fill:#434A54;" d="M149.24,415.594c0,5.887,4.771,10.649,10.657,10.649s10.657-4.763,10.657-10.649
+		s-4.771-10.665-10.657-10.665S149.24,409.707,149.24,415.594z"/>
+		<path style="fill:#434A54;" d="M99.569,330.305C114.942,207.719,74.616,95.869,74.616,95.869h260.169
+		c80.105,93.783,24.953,234.561,24.953,234.561C262.832,285.849,99.569,330.305,99.569,330.305z"/>
+	</g>
+	<g style="opacity:0.1;">
+		<path style="fill:#FFFFFF;" d="M334.785,95.869h-21.314c69.206,81.026,37.445,197.147,27.529,227.222
+		c6.434,2.123,12.695,4.56,18.738,7.339C359.738,330.43,414.891,189.652,334.785,95.869z"/>
+	</g>
+	<path style="fill:#E6E9ED;" d="M170.555,196.477c0-35.321,28.638-63.959,63.959-63.959c35.329,0,63.951,28.638,63.951,63.959
+	c0,18.941-8.213,35.961-21.299,47.672v26.952h-85.289v-26.952C178.792,232.438,170.555,215.418,170.555,196.477z"/>
+	<g>
+		<path style="fill:#434A54;" d="M250.503,196.477c0,5.887,4.778,10.665,10.665,10.665c5.888,0,10.658-4.778,10.658-10.665
+		s-4.771-10.665-10.658-10.665C255.282,185.812,250.503,190.59,250.503,196.477z"/>
+		<path style="fill:#434A54;" d="M197.21,196.477c0,5.887,4.771,10.665,10.657,10.665s10.657-4.778,10.657-10.665
+		s-4.771-10.665-10.657-10.665S197.21,190.59,197.21,196.477z"/>
+	</g>
+	<g>
+		<path style="fill:#CCD1D9;" d="M277.166,271.085c-0.016-5.871-4.777-10.649-10.673-10.649c-5.887,0-10.657,4.778-10.657,10.665
+		h21.33V271.085z"/>
+		<path style="fill:#CCD1D9;" d="M255.836,271.085c0-5.871-4.77-10.649-10.657-10.649s-10.665,4.778-10.665,10.665h21.322V271.085z" />
+		<path style="fill:#CCD1D9;" d="M234.514,271.085c0-5.871-4.771-10.649-10.657-10.649s-10.657,4.778-10.657,10.665h21.314V271.085z" />
+		<path style="fill:#CCD1D9;" d="M213.199,271.085c-0.008-5.871-4.778-10.649-10.665-10.649s-10.657,4.778-10.657,10.665h21.322
+		L213.199,271.085L213.199,271.085z"/>
+	</g>
+</svg>
\ No newline at end of file
diff --git a/packages/assets/icons/pirate.svg b/packages/assets/icons/pirate.svg
new file mode 100644
index 00000000..486774da
--- /dev/null
+++ b/packages/assets/icons/pirate.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="10mm" height="10mm" viewBox="0 0 10 10" version="1.1" id="svg26662" inkscape:version="1.2.2 (732a01da63, 2022-12-09)" sodipodi:docname="pir.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+   <sodipodi:namedview id="namedview26664" pagecolor="#505050" bordercolor="#eeeeee" borderopacity="1" inkscape:showpageshadow="0" inkscape:pageopacity="0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#505050" inkscape:document-units="mm" showgrid="false" inkscape:zoom="10.35098" inkscape:cx="16.375261" inkscape:cy="42.073312" inkscape:window-width="1488" inkscape:window-height="1230" inkscape:window-x="2794" inkscape:window-y="123" inkscape:window-maximized="0" inkscape:current-layer="layer1" />
+   <defs id="defs26659" />
+   <g inkscape:label="Слой 1" inkscape:groupmode="layer" id="layer1">
+      <path id="path26647" style="fill:#e7f9fb;fill-opacity:1;stroke:none;stroke-width:0.734686;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:5.8;stroke-dasharray:none;stroke-opacity:1;paint-order:normal" d="M 0.953646,0 C 0.4245958,0 0,0.42377 0,0.950056 V 9.051658 C 0,9.577943 0.4245958,9.9999995 0.953646,9.9999995 H 9.044545 C 9.573595,9.9999995 10,9.577943 10,9.051658 V 0.950056 C 10,0.42377 9.573595,0 9.044545,0 Z m 4.0319653,0.680202 c 0.7122257,0 1.1971907,0.171336 1.6235677,0.587681 C 7.149602,1.795597 7.303455,2.529484 7.076165,3.503527 6.954393,4.024672 6.743646,4.411034 6.384675,4.767983 6.046182,5.105514 5.7597,5.274565 5.369942,5.364516 4.7470347,5.510152 4.177518,5.313116 3.618915,4.763985 3.260174,4.411034 3.0504322,4.028385 2.9274247,3.503527 2.6985267,2.5272 2.8504547,1.797596 3.392573,1.267883 3.8051351,0.866387 4.2970505,0.680202 4.9856113,0.680202 Z M 4.1253339,2.785916 C 3.7727965,2.786202 3.5578276,2.980097 3.5578276,3.29821 c 0,0.197035 0.074385,0.320683 0.2711164,0.455467 C 4.0618628,3.91359 4.4444125,3.833637 4.5886441,3.596619 4.6788251,3.450984 4.6839941,3.154002 4.6001321,3.01265 4.5082281,2.855593 4.3583101,2.784203 4.1277751,2.784203 Z m 1.7295441,0 c -0.20506,0 -0.404923,0.09423 -0.493868,0.26557 C 5.226026,3.311345 5.34091,3.641452 5.60714,3.779948 5.859588,3.90845 6.185962,3.822778 6.372268,3.574345 6.463308,3.45441 6.469338,3.164568 6.383758,3.033211 6.273759,2.864731 6.062581,2.784774 5.85752,2.784774 Z M 1.8659927,5.307119 c 0.00862,-5.71e-4 0.020104,0 0.03073,0 0.2179844,2.86e-4 0.5876389,0.16848 1.6846262,0.695051 C 4.3488321,6.369399 4.9972712,6.669808 5.018122,6.669808 5.038222,6.669237 5.68049,6.371113 6.440564,6.008738 7.200522,5.64465 7.88377,5.323396 7.958155,5.323396 8.14742,5.283416 8.403142,5.409066 8.509492,5.577544 8.663431,5.82598 8.604552,6.167795 8.374795,6.361404 8.316205,6.409954 6.898963,7.091579 5.226428,7.875439 2.6791977,9.069933 2.1554033,9.312944 1.9972712,9.312944 c -0.2153996,0 -0.2679571,0 -0.3915391,-0.114223 C 1.3150575,8.936006 1.3506989,8.509952 1.6827021,8.264656 1.7519171,8.213256 2.1996325,7.990519 2.6777048,7.764356 3.1557197,7.54162 3.5582872,7.334304 3.5756915,7.334304 c 0.01436,0 -0.3826933,-0.217025 -0.8872167,-0.448042 C 2.1839513,6.654959 1.7142365,6.421657 1.646802,6.369971 1.4819495,6.24718 1.4026824,6.080128 1.4026824,5.863103 c 0,-0.219881 0.09535,-0.394643 0.2731268,-0.491448 0.063758,-0.03141 0.1203366,-0.05711 0.1901261,-0.06282 z M 7.094115,7.62329 7.661622,7.905994 c 0.784456,0.383506 0.930354,0.522573 0.930354,0.881807 0,0.219881 -0.105403,0.397498 -0.280307,0.480311 -0.151641,0.06568 -0.331859,0.06853 -0.513628,0 C 7.59815,9.193862 5.819639,8.388875 5.788334,8.354036 c -0.01436,0 0.273414,-0.182758 0.639363,-0.378651 z" />
+   </g>
+</svg>
diff --git a/packages/assets/index.ts b/packages/assets/index.ts
index 1eca3e5b..1b5c156e 100644
--- a/packages/assets/index.ts
+++ b/packages/assets/index.ts
@@ -175,6 +175,18 @@ import _Heading3Icon from './icons/heading-3.svg?component'
 
 import './omorphia.scss'
 
+// AstralRinth Icons
+
+import _PirateIcon from './icons/pirate.svg?component'
+import _MicrosoftIcon from './icons/microsoft.svg?component'
+import _PirateShipIcon from './icons/pirate-ship.svg?component'
+
+// AstralRinth Exports
+
+export const PirateIcon = _PirateIcon
+export const MicrosoftIcon = _MicrosoftIcon
+export const PirateShipIcon = _PirateShipIcon
+
 export const ModrinthIcon = _ModrinthIcon
 export const FourOhFourNotFound = _FourOhFourNotFound
 export const ModrinthPlusIcon = _ModrinthPlusIcon
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 92d9040b..faf5b04f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -76,7 +76,7 @@ importers:
         version: 1.11.11
       floating-vue:
         specifier: ^5.2.2
-        version: 5.2.2(@nuxt/kit@3.12.3)(vue@3.4.31(typescript@5.5.3))
+        version: 5.2.2(@nuxt/kit@3.12.3(magicast@0.3.4)(rollup@4.18.0))(vue@3.4.31(typescript@5.5.3))
       ofetch:
         specifier: ^1.3.4
         version: 1.3.4
@@ -337,7 +337,7 @@ importers:
         version: 1.11.11
       floating-vue:
         specifier: 2.0.0-beta.24
-        version: 2.0.0-beta.24(@nuxt/kit@3.12.3(rollup@3.29.4))(vue@3.4.31(typescript@5.5.3))
+        version: 2.0.0-beta.24(@nuxt/kit@3.12.3(magicast@0.3.4)(rollup@3.29.4))(vue@3.4.31(typescript@5.5.3))
       highlight.js:
         specifier: ^11.9.0
         version: 11.9.0
@@ -365,7 +365,7 @@ importers:
         version: 6.2.12(@vue/compiler-core@3.4.31)(vue@3.4.31(typescript@5.5.3))
       '@vintl/unplugin':
         specifier: ^1.5.1
-        version: 1.5.2(@vue/compiler-core@3.4.31)(rollup@3.29.4)(vite@4.5.3)(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1)
+        version: 1.5.2(@vue/compiler-core@3.4.31)(rollup@3.29.4)(vite@4.5.3(@types/node@22.5.1)(sass@1.77.6)(terser@5.31.6))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1)
       '@vintl/vintl':
         specifier: ^4.4.1
         version: 4.4.1(typescript@5.5.3)(vue@3.4.31(typescript@5.5.3))
@@ -2109,6 +2109,9 @@ packages:
   '@types/eslint@9.6.0':
     resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==}
 
+  '@types/eslint@9.6.1':
+    resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
+
   '@types/estree@1.0.5':
     resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
 
@@ -2148,6 +2151,9 @@ packages:
   '@types/node@22.4.1':
     resolution: {integrity: sha512-1tbpb9325+gPnKK0dMm+/LMriX0vKxf6RnB0SZUqfyVkQ4fMgUSySqhxE/y8Jvs4NyF1yHzTfG9KlnkIODxPKg==}
 
+  '@types/node@22.5.1':
+    resolution: {integrity: sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==}
+
   '@types/normalize-package-data@2.4.4':
     resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
 
@@ -2791,8 +2797,8 @@ packages:
   caniuse-lite@1.0.30001642:
     resolution: {integrity: sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==}
 
-  caniuse-lite@1.0.30001651:
-    resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==}
+  caniuse-lite@1.0.30001655:
+    resolution: {integrity: sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==}
 
   chalk@2.4.2:
     resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
@@ -3204,8 +3210,8 @@ packages:
   electron-to-chromium@1.4.829:
     resolution: {integrity: sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==}
 
-  electron-to-chromium@1.5.11:
-    resolution: {integrity: sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew==}
+  electron-to-chromium@1.5.13:
+    resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==}
 
   emoji-regex@8.0.0:
     resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -4921,6 +4927,10 @@ packages:
     resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==}
     engines: {node: ^10 || ^12 || >=14}
 
+  postcss@8.4.42:
+    resolution: {integrity: sha512-hywKUQB9Ra4dR1mGhldy5Aj1X3MWDSIA1cEi+Uy0CjheLvP6Ual5RlwMCh8i/X121yEDLDIKBsrCQ8ba3FDMfQ==}
+    engines: {node: ^10 || ^12 || >=14}
+
   posthog-js@1.158.2:
     resolution: {integrity: sha512-ovb7GHHRNDf6vmuL+8lbDukewzDzQlLZXg3d475hrfHSBgidYeTxtLGtoBcUz4x6558BLDFjnSip+f3m4rV9LA==}
 
@@ -5665,8 +5675,8 @@ packages:
   undici-types@5.26.5:
     resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
 
-  undici-types@6.19.6:
-    resolution: {integrity: sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==}
+  undici-types@6.19.8:
+    resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
 
   undici@5.28.4:
     resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==}
@@ -7098,9 +7108,9 @@ snapshots:
       - supports-color
       - utf-8-validate
 
-  '@nuxt/kit@3.12.3':
+  '@nuxt/kit@3.12.3(magicast@0.3.4)(rollup@3.29.4)':
     dependencies:
-      '@nuxt/schema': 3.12.3
+      '@nuxt/schema': 3.12.3(rollup@3.29.4)
       c12: 1.11.1(magicast@0.3.4)
       consola: 3.2.3
       defu: 6.1.4
@@ -7118,7 +7128,7 @@ snapshots:
       semver: 7.6.2
       ufo: 1.5.3
       unctx: 2.3.1
-      unimport: 3.7.2
+      unimport: 3.7.2(rollup@3.29.4)
       untyped: 1.4.2
     transitivePeerDependencies:
       - magicast
@@ -7153,53 +7163,6 @@ snapshots:
       - rollup
       - supports-color
 
-  '@nuxt/kit@3.12.3(rollup@3.29.4)':
-    dependencies:
-      '@nuxt/schema': 3.12.3(rollup@3.29.4)
-      c12: 1.11.1(magicast@0.3.4)
-      consola: 3.2.3
-      defu: 6.1.4
-      destr: 2.0.3
-      globby: 14.0.2
-      hash-sum: 2.0.0
-      ignore: 5.3.1
-      jiti: 1.21.6
-      klona: 2.0.6
-      knitwork: 1.1.0
-      mlly: 1.7.1
-      pathe: 1.1.2
-      pkg-types: 1.1.3
-      scule: 1.3.0
-      semver: 7.6.2
-      ufo: 1.5.3
-      unctx: 2.3.1
-      unimport: 3.7.2(rollup@3.29.4)
-      untyped: 1.4.2
-    transitivePeerDependencies:
-      - magicast
-      - rollup
-      - supports-color
-    optional: true
-
-  '@nuxt/schema@3.12.3':
-    dependencies:
-      compatx: 0.1.8
-      consola: 3.2.3
-      defu: 6.1.4
-      hookable: 5.5.3
-      pathe: 1.1.2
-      pkg-types: 1.1.3
-      scule: 1.3.0
-      std-env: 3.7.0
-      ufo: 1.5.3
-      uncrypto: 0.1.3
-      unimport: 3.7.2
-      untyped: 1.4.2
-    transitivePeerDependencies:
-      - rollup
-      - supports-color
-    optional: true
-
   '@nuxt/schema@3.12.3(rollup@3.29.4)':
     dependencies:
       compatx: 0.1.8
@@ -7904,7 +7867,7 @@ snapshots:
 
   '@types/eslint-scope@3.7.7':
     dependencies:
-      '@types/eslint': 9.6.0
+      '@types/eslint': 9.6.1
       '@types/estree': 1.0.5
     optional: true
 
@@ -7914,6 +7877,12 @@ snapshots:
       '@types/json-schema': 7.0.15
     optional: true
 
+  '@types/eslint@9.6.1':
+    dependencies:
+      '@types/estree': 1.0.5
+      '@types/json-schema': 7.0.15
+    optional: true
+
   '@types/estree@1.0.5': {}
 
   '@types/fs-extra@9.0.13':
@@ -7951,7 +7920,12 @@ snapshots:
 
   '@types/node@22.4.1':
     dependencies:
-      undici-types: 6.19.6
+      undici-types: 6.19.8
+    optional: true
+
+  '@types/node@22.5.1':
+    dependencies:
+      undici-types: 6.19.8
     optional: true
 
   '@types/normalize-package-data@2.4.4': {}
@@ -8220,7 +8194,7 @@ snapshots:
       - vue
       - webpack
 
-  '@vintl/unplugin@1.5.2(@vue/compiler-core@3.4.31)(rollup@3.29.4)(vite@4.5.3)(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1)':
+  '@vintl/unplugin@1.5.2(@vue/compiler-core@3.4.31)(rollup@3.29.4)(vite@4.5.3(@types/node@22.5.1)(sass@1.77.6)(terser@5.31.6))(vue@3.4.31(typescript@5.5.3))(webpack@5.92.1)':
     dependencies:
       '@formatjs/cli-lib': 6.4.2(@vue/compiler-core@3.4.31)(vue@3.4.31(typescript@5.5.3))
       '@formatjs/icu-messageformat-parser': 2.7.8
@@ -8231,7 +8205,7 @@ snapshots:
       unplugin: 1.11.0
     optionalDependencies:
       rollup: 3.29.4
-      vite: 4.5.3
+      vite: 4.5.3(@types/node@22.5.1)(sass@1.77.6)(terser@5.31.6)
       webpack: 5.92.1
     transitivePeerDependencies:
       - '@glimmer/env'
@@ -8816,8 +8790,8 @@ snapshots:
 
   browserslist@4.23.3:
     dependencies:
-      caniuse-lite: 1.0.30001651
-      electron-to-chromium: 1.5.11
+      caniuse-lite: 1.0.30001655
+      electron-to-chromium: 1.5.13
       node-releases: 2.0.18
       update-browserslist-db: 1.1.0(browserslist@4.23.3)
     optional: true
@@ -8885,7 +8859,7 @@ snapshots:
 
   caniuse-lite@1.0.30001642: {}
 
-  caniuse-lite@1.0.30001651:
+  caniuse-lite@1.0.30001655:
     optional: true
 
   chalk@2.4.2:
@@ -9248,7 +9222,7 @@ snapshots:
 
   electron-to-chromium@1.4.829: {}
 
-  electron-to-chromium@1.5.11:
+  electron-to-chromium@1.5.13:
     optional: true
 
   emoji-regex@8.0.0: {}
@@ -9478,7 +9452,7 @@ snapshots:
   eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint-plugin-n@15.7.0(eslint@8.57.0))(eslint-plugin-promise@6.4.0(eslint@8.57.0))(eslint@8.57.0):
     dependencies:
       eslint: 8.57.0
-      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
+      eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)
       eslint-plugin-n: 15.7.0(eslint@8.57.0)
       eslint-plugin-promise: 6.4.0(eslint@8.57.0)
 
@@ -9500,7 +9474,7 @@ snapshots:
       debug: 4.3.5
       enhanced-resolve: 5.17.0
       eslint: 8.57.0
-      eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
+      eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
       eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.16.1(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)
       fast-glob: 3.3.2
       get-tsconfig: 4.7.5
@@ -9512,13 +9486,12 @@ snapshots:
       - eslint-import-resolver-webpack
       - supports-color
 
-  eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0):
+  eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0):
     dependencies:
       debug: 3.2.7
     optionalDependencies:
       '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.3)
       eslint: 8.57.0
-      eslint-import-resolver-node: 0.3.9
       eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0)
     transitivePeerDependencies:
       - supports-color
@@ -9899,21 +9872,21 @@ snapshots:
       vue: 3.4.31(typescript@5.5.3)
       vue-resize: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3))
 
-  floating-vue@2.0.0-beta.24(@nuxt/kit@3.12.3(rollup@3.29.4))(vue@3.4.31(typescript@5.5.3)):
+  floating-vue@2.0.0-beta.24(@nuxt/kit@3.12.3(magicast@0.3.4)(rollup@3.29.4))(vue@3.4.31(typescript@5.5.3)):
     dependencies:
       '@floating-ui/dom': 1.1.1
       vue: 3.4.31(typescript@5.5.3)
       vue-resize: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3))
     optionalDependencies:
-      '@nuxt/kit': 3.12.3(rollup@3.29.4)
+      '@nuxt/kit': 3.12.3(magicast@0.3.4)(rollup@3.29.4)
 
-  floating-vue@5.2.2(@nuxt/kit@3.12.3)(vue@3.4.31(typescript@5.5.3)):
+  floating-vue@5.2.2(@nuxt/kit@3.12.3(magicast@0.3.4)(rollup@4.18.0))(vue@3.4.31(typescript@5.5.3)):
     dependencies:
       '@floating-ui/dom': 1.1.1
       vue: 3.4.31(typescript@5.5.3)
       vue-resize: 2.0.0-alpha.1(vue@3.4.31(typescript@5.5.3))
     optionalDependencies:
-      '@nuxt/kit': 3.12.3
+      '@nuxt/kit': 3.12.3(magicast@0.3.4)(rollup@4.18.0)
 
   for-each@0.3.3:
     dependencies:
@@ -10394,7 +10367,7 @@ snapshots:
 
   jest-worker@27.5.1:
     dependencies:
-      '@types/node': 20.14.11
+      '@types/node': 22.5.1
       merge-stream: 2.0.0
       supports-color: 8.1.1
     optional: true
@@ -11348,6 +11321,13 @@ snapshots:
       picocolors: 1.0.1
       source-map-js: 1.2.0
 
+  postcss@8.4.42:
+    dependencies:
+      nanoid: 3.3.7
+      picocolors: 1.0.1
+      source-map-js: 1.2.0
+    optional: true
+
   posthog-js@1.158.2:
     dependencies:
       fflate: 0.4.8
@@ -12113,7 +12093,7 @@ snapshots:
 
   undici-types@5.26.5: {}
 
-  undici-types@6.19.6:
+  undici-types@6.19.8:
     optional: true
 
   undici@5.28.4:
@@ -12137,25 +12117,6 @@ snapshots:
 
   unicorn-magic@0.1.0: {}
 
-  unimport@3.7.2:
-    dependencies:
-      '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
-      acorn: 8.12.1
-      escape-string-regexp: 5.0.0
-      estree-walker: 3.0.3
-      fast-glob: 3.3.2
-      local-pkg: 0.5.0
-      magic-string: 0.30.10
-      mlly: 1.7.1
-      pathe: 1.1.2
-      pkg-types: 1.1.3
-      scule: 1.3.0
-      strip-literal: 2.1.0
-      unplugin: 1.11.0
-    transitivePeerDependencies:
-      - rollup
-    optional: true
-
   unimport@3.7.2(rollup@3.29.4):
     dependencies:
       '@rollup/pluginutils': 5.1.0(rollup@3.29.4)
@@ -12384,13 +12345,16 @@ snapshots:
       svgo: 3.3.2
       vue: 3.4.31(typescript@5.5.3)
 
-  vite@4.5.3:
+  vite@4.5.3(@types/node@22.5.1)(sass@1.77.6)(terser@5.31.6):
     dependencies:
       esbuild: 0.18.20
-      postcss: 8.4.41
+      postcss: 8.4.42
       rollup: 3.29.4
     optionalDependencies:
+      '@types/node': 22.5.1
       fsevents: 2.3.3
+      sass: 1.77.6
+      terser: 5.31.6
     optional: true
 
   vite@5.3.3(@types/node@20.14.9)(sass@1.77.6)(terser@5.31.6):
