From 74deabd4b1ede8dfdd9c7a35dc601d388b7a5072 Mon Sep 17 00:00:00 2001 From: tony Date: Wed, 12 Aug 2026 10:10:26 +0000 Subject: [PATCH] feat: add Cleanflix Connector Tauri desktop app Move the Mac Tauri UI (pro.cleanflix.connector) into this repo under desktop/. Bundled Node runtime stays gitignored; package scripts fetch it when building. --- .gitignore | 8 + desktop/.gitignore | 27 + desktop/.vscode/extensions.json | 3 + desktop/README.md | 7 + desktop/package-lock.json | 232 + desktop/package.json | 13 + desktop/scripts/prepare-sidecar.sh | 18 + .../distribution-common/config.env.example | 6 + .../distribution-common/start-connector.sh | 18 + desktop/sidecar/hash-password.js | 7 + desktop/sidecar/library.js | 197 + desktop/sidecar/package-lock.json | 69 + desktop/sidecar/package.json | 15 + desktop/sidecar/server.js | 198 + desktop/src-tauri/.gitignore | 7 + desktop/src-tauri/Cargo.lock | 5131 +++++++++++++++++ desktop/src-tauri/Cargo.toml | 26 + desktop/src-tauri/build.rs | 3 + desktop/src-tauri/capabilities/default.json | 10 + desktop/src-tauri/icons/128x128.png | Bin 0 -> 3512 bytes desktop/src-tauri/icons/128x128@2x.png | Bin 0 -> 7012 bytes desktop/src-tauri/icons/32x32.png | Bin 0 -> 974 bytes desktop/src-tauri/icons/Square107x107Logo.png | Bin 0 -> 2863 bytes desktop/src-tauri/icons/Square142x142Logo.png | Bin 0 -> 3858 bytes desktop/src-tauri/icons/Square150x150Logo.png | Bin 0 -> 3966 bytes desktop/src-tauri/icons/Square284x284Logo.png | Bin 0 -> 7737 bytes desktop/src-tauri/icons/Square30x30Logo.png | Bin 0 -> 903 bytes desktop/src-tauri/icons/Square310x310Logo.png | Bin 0 -> 8591 bytes desktop/src-tauri/icons/Square44x44Logo.png | Bin 0 -> 1299 bytes desktop/src-tauri/icons/Square71x71Logo.png | Bin 0 -> 2011 bytes desktop/src-tauri/icons/Square89x89Logo.png | Bin 0 -> 2468 bytes desktop/src-tauri/icons/StoreLogo.png | Bin 0 -> 1523 bytes desktop/src-tauri/icons/icon.icns | Bin 0 -> 98451 bytes desktop/src-tauri/icons/icon.ico | Bin 0 -> 86642 bytes desktop/src-tauri/icons/icon.png | Bin 0 -> 14183 bytes desktop/src-tauri/src/lib.rs | 143 + desktop/src-tauri/src/main.rs | 6 + desktop/src-tauri/tauri.conf.json | 35 + desktop/src/assets/connector-background.jpg | Bin 0 -> 166239 bytes desktop/src/assets/javascript.svg | 1 + desktop/src/assets/tauri.svg | 6 + desktop/src/index.html | 1 + desktop/src/main.js | 37 + desktop/src/styles.css | 1 + 44 files changed, 6225 insertions(+) create mode 100644 desktop/.gitignore create mode 100644 desktop/.vscode/extensions.json create mode 100644 desktop/README.md create mode 100644 desktop/package-lock.json create mode 100644 desktop/package.json create mode 100755 desktop/scripts/prepare-sidecar.sh create mode 100644 desktop/sidecar/distribution-common/config.env.example create mode 100755 desktop/sidecar/distribution-common/start-connector.sh create mode 100644 desktop/sidecar/hash-password.js create mode 100644 desktop/sidecar/library.js create mode 100644 desktop/sidecar/package-lock.json create mode 100644 desktop/sidecar/package.json create mode 100644 desktop/sidecar/server.js create mode 100644 desktop/src-tauri/.gitignore create mode 100644 desktop/src-tauri/Cargo.lock create mode 100644 desktop/src-tauri/Cargo.toml create mode 100644 desktop/src-tauri/build.rs create mode 100644 desktop/src-tauri/capabilities/default.json create mode 100644 desktop/src-tauri/icons/128x128.png create mode 100644 desktop/src-tauri/icons/128x128@2x.png create mode 100644 desktop/src-tauri/icons/32x32.png create mode 100644 desktop/src-tauri/icons/Square107x107Logo.png create mode 100644 desktop/src-tauri/icons/Square142x142Logo.png create mode 100644 desktop/src-tauri/icons/Square150x150Logo.png create mode 100644 desktop/src-tauri/icons/Square284x284Logo.png create mode 100644 desktop/src-tauri/icons/Square30x30Logo.png create mode 100644 desktop/src-tauri/icons/Square310x310Logo.png create mode 100644 desktop/src-tauri/icons/Square44x44Logo.png create mode 100644 desktop/src-tauri/icons/Square71x71Logo.png create mode 100644 desktop/src-tauri/icons/Square89x89Logo.png create mode 100644 desktop/src-tauri/icons/StoreLogo.png create mode 100644 desktop/src-tauri/icons/icon.icns create mode 100644 desktop/src-tauri/icons/icon.ico create mode 100644 desktop/src-tauri/icons/icon.png create mode 100644 desktop/src-tauri/src/lib.rs create mode 100644 desktop/src-tauri/src/main.rs create mode 100644 desktop/src-tauri/tauri.conf.json create mode 100644 desktop/src/assets/connector-background.jpg create mode 100644 desktop/src/assets/javascript.svg create mode 100644 desktop/src/assets/tauri.svg create mode 100644 desktop/src/index.html create mode 100644 desktop/src/main.js create mode 100644 desktop/src/styles.css diff --git a/.gitignore b/.gitignore index 4c49bd7..c1c3c33 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,9 @@ .env + +# Tauri desktop +desktop/node_modules/ +desktop/src-tauri/target/ +desktop/sidecar/node/ +desktop/dist/ +._* +**/.DS_Store diff --git a/desktop/.gitignore b/desktop/.gitignore new file mode 100644 index 0000000..787e560 --- /dev/null +++ b/desktop/.gitignore @@ -0,0 +1,27 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +sidecar/node/ +src-tauri/target/ diff --git a/desktop/.vscode/extensions.json b/desktop/.vscode/extensions.json new file mode 100644 index 0000000..24d7cc6 --- /dev/null +++ b/desktop/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] +} diff --git a/desktop/README.md b/desktop/README.md new file mode 100644 index 0000000..441faf7 --- /dev/null +++ b/desktop/README.md @@ -0,0 +1,7 @@ +# Tauri + Vanilla + +This template should help get you started developing with Tauri in vanilla HTML, CSS and Javascript. + +## Recommended IDE Setup + +- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer) diff --git a/desktop/package-lock.json b/desktop/package-lock.json new file mode 100644 index 0000000..746f345 --- /dev/null +++ b/desktop/package-lock.json @@ -0,0 +1,232 @@ +{ + "name": "desktop", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "desktop", + "version": "0.1.0", + "devDependencies": { + "@tauri-apps/cli": "^2" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.11.4.tgz", + "integrity": "sha512-R8xGtMpwyetawSqm9kYOuMmEqkhUbvcUy8n0aNXIxollKBLESUu5f4Fx+64hgASYm1H+jSWq6jCW6zqTnH6hqQ==", + "dev": true, + "license": "Apache-2.0 OR MIT", + "bin": { + "tauri": "tauri.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "2.11.4", + "@tauri-apps/cli-darwin-x64": "2.11.4", + "@tauri-apps/cli-linux-arm-gnueabihf": "2.11.4", + "@tauri-apps/cli-linux-arm64-gnu": "2.11.4", + "@tauri-apps/cli-linux-arm64-musl": "2.11.4", + "@tauri-apps/cli-linux-riscv64-gnu": "2.11.4", + "@tauri-apps/cli-linux-x64-gnu": "2.11.4", + "@tauri-apps/cli-linux-x64-musl": "2.11.4", + "@tauri-apps/cli-win32-arm64-msvc": "2.11.4", + "@tauri-apps/cli-win32-ia32-msvc": "2.11.4", + "@tauri-apps/cli-win32-x64-msvc": "2.11.4" + } + }, + "node_modules/@tauri-apps/cli-darwin-arm64": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.11.4.tgz", + "integrity": "sha512-1ryOF3ZhpZ/nemHV5zVwBQBz9jDGKmKPvWPADOhc83ig0P4bMc2iER4NbC6r9sjeIZ6RVQ4g3RZIYvezhcl4TQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-darwin-x64": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.11.4.tgz", + "integrity": "sha512-uFsGQAAfuyz1k/yGLmkWfkBlgKAqZfxqlHmLWx81QU27RJWfmbNHCIq8T8w1e+VClleIuZUjpHWfoE4E3DLo3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.11.4.tgz", + "integrity": "sha512-IaHZn5CdBL21oUmjiVOS1ctw6Ip1O0pjp70FwOWmYz1myWe0SY96ZIj2FYf7pT0m8bI2h/hrs5ZbEXXh44/MkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.11.4.tgz", + "integrity": "sha512-N41/ukTRVe6XSuUTESuFdGeOW2i7k62tK+6gHK5Kd5/q5RPvvi19GaWAVPPb9u95HSGmTChSolBfzynUsssFaA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-musl": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.11.4.tgz", + "integrity": "sha512-v277UnT/fB64xAfSroL5N3Km3tLmvATWqJJw/wRI+g6o+HkeD0slyE7gOhNs1MbjE41R7bQOTxMVoL3aomUJmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-riscv64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.11.4.tgz", + "integrity": "sha512-qqgNkQ2u1yZHxjhxsZaxUtRDW8dIqIYm33rx/mzwQv0SfY9x1B+iraj8vWeFiXjjSVVhEMepXSOts1TqPzvXNQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.11.4.tgz", + "integrity": "sha512-2VRNWl84FOH0m2giiDkO2h0QXlcMJeX+zJDpI5kDIQAx6s+geF3v48F4DXfJez4GS/FdoDGnPnw1C2iYGbQ7bQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.11.4.tgz", + "integrity": "sha512-o9GyhYor/nc7xarmwDE3ka2szuW3uuZzXjHWh64Q8YX5AtSgxdQkFWzrY4O8KiGtVNvFBI14H3Q49Qj5TOIP/A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-arm64-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.11.4.tgz", + "integrity": "sha512-ld5Ehb598m0VkYyylRPNeCFsBe/km0jxis6KgMpl3IGY6I/i1RwQXO05I1AsXUXO2WC6AvB/Lw4qTf/asiuEiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-ia32-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.11.4.tgz", + "integrity": "sha512-12Hxi0XX/H5VFxO/bGgHkFWhml9VMgEOu9CidjeCeTNQ1l6fpUlbiGgSP7CLI3PFtW9/FfbeHieZ+kyWK5H7CA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-x64-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.11.4.tgz", + "integrity": "sha512-+vDiqBIU5dMISg/wNvX3sF+ZHfgJGJ5T0AcO+EHNXV9GGAG+P5fzodlDXD3QdKCRgZxMoCm5PPvj3BqLNjBthw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + } + } +} diff --git a/desktop/package.json b/desktop/package.json new file mode 100644 index 0000000..715555d --- /dev/null +++ b/desktop/package.json @@ -0,0 +1,13 @@ +{ + "name": "desktop", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "prepare:sidecar": "sh scripts/prepare-sidecar.sh", + "tauri": "tauri" + }, + "devDependencies": { + "@tauri-apps/cli": "^2" + } +} diff --git a/desktop/scripts/prepare-sidecar.sh b/desktop/scripts/prepare-sidecar.sh new file mode 100755 index 0000000..1e2ffa7 --- /dev/null +++ b/desktop/scripts/prepare-sidecar.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env sh +set -eu +ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd) +OUT="$ROOT/desktop/sidecar" +NODE_VERSION=${NODE_VERSION:-22.14.0} +rm -rf "$OUT" +mkdir -p "$OUT" +cp "$ROOT/server.js" "$ROOT/library.js" "$ROOT/hash-password.js" "$ROOT/package.json" "$OUT/" +cp -R "$ROOT/distribution/common" "$OUT/distribution-common" +case "$(uname -s)-$(uname -m)" in + Darwin-arm64) ARCHIVE="node-v$NODE_VERSION-darwin-arm64" ;; + Darwin-x86_64) ARCHIVE="node-v$NODE_VERSION-darwin-x64" ;; + Linux-x86_64) ARCHIVE="node-v$NODE_VERSION-linux-x64" ;; + *) echo "Unsupported build platform" >&2; exit 1 ;; +esac +curl -fsSL "https://nodejs.org/dist/v$NODE_VERSION/$ARCHIVE.tar.gz" | tar -xz -C "$OUT" +mv "$OUT/$ARCHIVE" "$OUT/node" +"$OUT/node/bin/npm" install --omit=dev --prefix "$OUT" diff --git a/desktop/sidecar/distribution-common/config.env.example b/desktop/sidecar/distribution-common/config.env.example new file mode 100644 index 0000000..d77b2b6 --- /dev/null +++ b/desktop/sidecar/distribution-common/config.env.example @@ -0,0 +1,6 @@ +PORT=8787 +MEDIA_ROOT=/absolute/path/to/your/media +PUBLIC_BASE_URL=https://connector.example.home +APPROVAL_BASE_URL=https://connector.example.home +# Generate with: node hash-password.js "a-long-private-password" +PAIRING_PASSWORD_HASH= diff --git a/desktop/sidecar/distribution-common/start-connector.sh b/desktop/sidecar/distribution-common/start-connector.sh new file mode 100755 index 0000000..82c58bd --- /dev/null +++ b/desktop/sidecar/distribution-common/start-connector.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env sh +set -eu + +CONFIG_PATH=${CLEANFLIX_CONFIG_PATH:?CLEANFLIX_CONFIG_PATH is required} +APP_ROOT=${CLEANFLIX_APP_ROOT:?CLEANFLIX_APP_ROOT is required} +[ -f "$CONFIG_PATH" ] || { printf '%s\n' "Missing configuration: $CONFIG_PATH" >&2; exit 1; } + +set -a +. "$CONFIG_PATH" +set +a + +: "${MEDIA_ROOT:?Set MEDIA_ROOT in config.env}" +: "${PAIRING_PASSWORD_HASH:?Set PAIRING_PASSWORD_HASH in config.env}" +: "${PUBLIC_BASE_URL:?Set PUBLIC_BASE_URL in config.env}" + +export TOKEN_STORE_PATH="${TOKEN_STORE_PATH:-$(dirname "$CONFIG_PATH")/data/tokens.json}" +export LIBRARY_INDEX_PATH="${LIBRARY_INDEX_PATH:-$(dirname "$CONFIG_PATH")/data/library-index.json}" +exec "$CLEANFLIX_NODE" "$APP_ROOT/server.js" diff --git a/desktop/sidecar/hash-password.js b/desktop/sidecar/hash-password.js new file mode 100644 index 0000000..e8bd8ff --- /dev/null +++ b/desktop/sidecar/hash-password.js @@ -0,0 +1,7 @@ +import crypto from 'node:crypto'; + +const password = process.argv[2]; +if (!password) throw new Error('Usage: node hash-password.js '); +const salt = crypto.randomBytes(16).toString('base64url'); +const hash = crypto.scryptSync(password, salt, 32).toString('base64url'); +console.log(`${salt}:${hash}`); diff --git a/desktop/sidecar/library.js b/desktop/sidecar/library.js new file mode 100644 index 0000000..a7cc4d8 --- /dev/null +++ b/desktop/sidecar/library.js @@ -0,0 +1,197 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { guessit } from 'guessit-js'; + +const video = /\.(mkv|mp4|webm|m4v)$/i; +const text = (source, tag) => source.match(new RegExp(`<${tag}[^>]*>([^<]+)`, 'i'))?.[1]?.trim(); +const firstText = value => Array.isArray(value) + ? value.find(item => typeof item === 'string' && item.trim()) || '' + : typeof value === 'string' ? value : ''; +const year = value => { + const parsed = Number(Array.isArray(value) ? value[0] : value); + return Number.isInteger(parsed) ? parsed : null; +}; +const mapWithConcurrency = async (items, limit, mapper) => { + const results = new Array(items.length); + let next = 0; + const worker = async () => { + while (next < items.length) { + const index = next++; + results[index] = await mapper(items[index]); + } + }; + await Promise.all(Array.from({ length: Math.min(limit, items.length) }, worker)); + return results; +}; +const nfoFor = (mediaRoot, file) => { + const directory = path.dirname(path.join(mediaRoot, file)); + const stem = path.basename(file, path.extname(file)); + const nfoPath = [path.join(directory, `${stem}.nfo`), path.join(directory, 'movie.nfo')].find(fs.existsSync); + if (!nfoPath) return {}; + try { + const source = fs.readFileSync(nfoPath, 'utf8'); + return { + title: text(source, 'title'), + year: Number(text(source, 'year')) || null, + imdbId: source.match(/]*type=["']imdb["'][^>]*>(tt\d{7,10})<\/uniqueid>/i)?.[1] || text(source, 'id')?.match(/^tt\d{7,10}$/i)?.[0]?.toLowerCase(), + }; + } catch { return {}; } +}; + +export function createLibrary(mediaRoot, indexPath, tmdbApiKey) { + const metadataCache = new Map(); + let catalogCache = null; + let catalogRefresh = null; + const load = () => { + try { return JSON.parse(fs.readFileSync(indexPath, 'utf8')); } catch { return { mappings: {} }; } + }; + const save = index => { + fs.mkdirSync(path.dirname(indexPath), { recursive: true }); + fs.writeFileSync(indexPath, `${JSON.stringify(index, null, 2)}\n`); + }; + const discover = async item => { + if (item.imdbId || !tmdbApiKey || !item.title) return item; + const type = item.type === 'episode' ? 'tv' : 'movie'; + const query = new URLSearchParams({ api_key: tmdbApiKey, query: item.title }); + if (item.year) query.set(type === 'movie' ? 'year' : 'first_air_date_year', item.year); + const results = await fetch(`https://api.themoviedb.org/3/search/${type}?${query}`).then(res => res.ok ? res.json() : { results: [] }); + const candidate = results.results?.[0]; + if (!candidate) return item; + const candidateTitle = candidate.title || candidate.name || ''; + const candidateYear = (candidate.release_date || candidate.first_air_date || '').slice(0, 4); + const normalize = value => value.toLowerCase().replace(/[^a-z0-9]/g, ''); + const confident = Boolean(item.year) && normalize(candidateTitle) === normalize(item.title) && candidateYear === String(item.year); + if (!confident) return { ...item, candidate: { title: candidateTitle, year: candidateYear, tmdbId: candidate.id } }; + const external = await fetch(`https://api.themoviedb.org/3/${type}/${candidate.id}/external_ids?api_key=${tmdbApiKey}`).then(res => res.ok ? res.json() : {}); + return { ...item, suggestedImdbId: external.imdb_id || null, autoMapped: Boolean(external.imdb_id), candidate: { title: candidateTitle, year: candidateYear, tmdbId: candidate.id } }; + }; + const tmdb = async (endpoint, query = {}) => { + if (!tmdbApiKey) return null; + const params = new URLSearchParams({ api_key: tmdbApiKey, ...query }); + const response = await fetch(`https://api.themoviedb.org/3${endpoint}?${params}`); + return response.ok ? response.json() : null; + }; + const imageUrl = (image, size) => image ? `https://image.tmdb.org/t/p/${size}${image}` : null; + const metadataFor = async item => { + const key = `${item.imdbId || ''}:${item.title}:${item.year || ''}:${item.type}`; + if (metadataCache.has(key)) return metadataCache.get(key); + const pending = (async () => { + if (!tmdbApiKey) return item; + const type = item.type === 'episode' ? 'tv' : 'movie'; + let result; + if (item.imdbId) { + const external = await tmdb(`/find/${item.imdbId}`, { external_source: 'imdb_id' }); + result = external?.[type === 'tv' ? 'tv_results' : 'movie_results']?.[0]; + } + if (!result) { + const query = { query: item.title }; + if (item.year) query[type === 'tv' ? 'first_air_date_year' : 'year'] = item.year; + result = (await tmdb(`/search/${type}`, query))?.results?.[0]; + } + if (!result?.id) return item; + const detail = await tmdb(`/${type}/${result.id}`, { append_to_response: 'external_ids' }); + if (!detail) return item; + const releaseDate = detail.release_date || detail.first_air_date || ''; + return { + ...item, + imdbId: item.imdbId || detail.external_ids?.imdb_id || null, + posterUrl: imageUrl(detail.poster_path, 'w500'), + backgroundUrl: imageUrl(detail.backdrop_path, 'w1280'), + overview: detail.overview || null, + description: detail.overview || item.description || null, + runtime: detail.runtime || detail.episode_run_time?.[0] || null, + genres: detail.genres?.map(genre => genre.name).filter(Boolean) || [], + releaseYear: Number(releaseDate.slice(0, 4)) || item.year || null, + rating: typeof detail.vote_average === 'number' ? detail.vote_average : null, + }; + })().catch(() => item); + metadataCache.set(key, pending); + return pending; + }; + const scan = async () => { + const index = load(); + const files = fs.existsSync(mediaRoot) + ? (await fs.promises.readdir(mediaRoot, { recursive: true })).filter(file => video.test(file)) + : []; + const present = new Set(files); + let changed = false; + for (const file of Object.keys(index.mappings)) { + if (!present.has(file) && !index.mappings[file].missing) { index.mappings[file].missing = true; changed = true; } + } + const items = await mapWithConcurrency(files, 16, async file => { + const stat = await fs.promises.stat(path.join(mediaRoot, file)); + const fingerprint = `${stat.size}:${Math.round(stat.mtimeMs)}`; + const parsed = guessit(path.basename(file)); + const previous = Object.entries(index.mappings).find(([oldPath, value]) => oldPath !== file && value.missing && value.fingerprint === fingerprint)?.[1]; + const mapping = index.mappings[file] || previous || {}; + const nfo = nfoFor(mediaRoot, file); + if (mapping.fingerprint !== fingerprint || mapping.missing) { + index.mappings[file] = { ...mapping, fingerprint, missing: false, updatedAt: mapping.updatedAt || new Date().toISOString() }; + changed = true; + } + return { + file, + id: Buffer.from(file).toString('base64url'), + title: firstText(mapping.title) || firstText(nfo.title) || firstText(parsed.title) || path.basename(file, path.extname(file)), + year: year(mapping.year) || year(nfo.year) || year(parsed.year), + imdbId: mapping.imdbId || nfo.imdbId || parsed.imdb_id || file.match(/\btt\d{7,10}\b/i)?.[0]?.toLowerCase() || null, + type: parsed.type === 'episode' ? 'episode' : 'video', + season: mapping.season || parsed.season || null, + episode: mapping.episode || parsed.episode || null, + mapped: Boolean(mapping.imdbId), + }; + }); + const discovered = await Promise.all(items.map(discover)); + for (const item of discovered) { + if (!item.autoMapped || index.mappings[item.file]?.imdbId) continue; + index.mappings[item.file] = { + title: item.title, + year: item.year, + imdbId: item.suggestedImdbId, + source: 'tmdb-auto', + confidence: 'high', + missing: false, + fingerprint: index.mappings[item.file]?.fingerprint, + updatedAt: new Date().toISOString(), + }; + changed = true; + } + if (changed) save(index); + return discovered; + }; + const refreshCatalog = async () => { + if (catalogRefresh) return catalogRefresh; + catalogRefresh = (async () => { + const items = await Promise.all((await scan()).map(metadataFor)); + catalogCache = items; + return items; + })().finally(() => { catalogRefresh = null; }); + return catalogRefresh; + }; + return { + scan, + startReconciler(seconds = 900) { + const refresh = () => refreshCatalog().catch(error => console.error('Library reconciliation failed', error)); + // Let the server start before scanning a large remote-backed library. + setImmediate(refresh); + setInterval(refresh, seconds * 1000).unref(); + try { + let pending; + fs.watch(mediaRoot, () => { clearTimeout(pending); pending = setTimeout(refresh, 1_000); }); + } catch (error) { + console.warn('Library watcher unavailable; periodic reconciliation remains active', error.message); + } + }, + saveMapping(file, mapping) { + const index = load(); + index.mappings[file] = { ...index.mappings[file], ...mapping, missing: false, updatedAt: new Date().toISOString() }; + save(index); + }, + async catalog() { + return catalogCache || refreshCatalog(); + }, + async metadata(id) { + return (await this.catalog()).find(item => item.id === id) || null; + }, + }; +} diff --git a/desktop/sidecar/package-lock.json b/desktop/sidecar/package-lock.json new file mode 100644 index 0000000..38bc804 --- /dev/null +++ b/desktop/sidecar/package-lock.json @@ -0,0 +1,69 @@ +{ + "name": "cleanstream-media-connector-reference", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "cleanstream-media-connector-reference", + "dependencies": { + "guessit-js": "^4.0.0", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/guessit-js": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/guessit-js/-/guessit-js-4.5.0.tgz", + "integrity": "sha512-S/HPInVu+UcIjjO2SVZXMzbwr6WovS9K4wAzH3Tx7ZTS8xQ+m3DHxjBfgyjf4L90cY6Wb2owQNEO2ZJNML6wpQ==", + "license": "LGPL-3.0", + "dependencies": { + "rebulk-js": "^3.3.1" + } + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/rebulk-js": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/rebulk-js/-/rebulk-js-3.3.1.tgz", + "integrity": "sha512-xohP5vyrQoFFCyhNdK7CNtXRf87SkyB/1kfJHOUw8XiSGxFgFRI8QAMt8RGboCQQR+1mnbLJy28oJJrYrXXW+w==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" + } + } +} diff --git a/desktop/sidecar/package.json b/desktop/sidecar/package.json new file mode 100644 index 0000000..684a983 --- /dev/null +++ b/desktop/sidecar/package.json @@ -0,0 +1,15 @@ +{ + "name": "cleanstream-media-connector-reference", + "private": true, + "type": "module", + "scripts": { + "start": "node server.js", + "package:macos": "sh scripts/build-desktop-package.sh macos", + "package:linux": "sh scripts/build-desktop-package.sh linux", + "package:windows": "sh scripts/build-desktop-package.sh windows" + }, + "dependencies": { + "guessit-js": "^4.0.0", + "multicast-dns": "^7.2.5" + } +} diff --git a/desktop/sidecar/server.js b/desktop/sidecar/server.js new file mode 100644 index 0000000..3e43f32 --- /dev/null +++ b/desktop/sidecar/server.js @@ -0,0 +1,198 @@ +import crypto from 'node:crypto'; +import fs from 'node:fs'; +import http from 'node:http'; +import os from 'node:os'; +import path from 'node:path'; +import multicastDns from 'multicast-dns'; +import { createLibrary } from './library.js'; + +const port = Number(process.env.PORT || 8787); +const mediaRoot = path.resolve(process.env.MEDIA_ROOT || './media'); +const publicBaseUrl = (process.env.PUBLIC_BASE_URL || `http://localhost:${port}`).replace(/\/$/, ''); +const approvalBaseUrl = (process.env.APPROVAL_BASE_URL || publicBaseUrl).replace(/\/$/, ''); +const cleanflixApiUrl = process.env.CLEANFLIX_API_URL?.replace(/\/$/, ''); +const pairingSecret = process.env.PAIRING_SECRET; +const pairingPasswordHash = process.env.PAIRING_PASSWORD_HASH; +const demoStreamUrl = process.env.DEMO_STREAM_URL; +const catalogLimit = Math.max(0, Number(process.env.CATALOG_LIMIT || 0)); +const mdnsHostname = new URL(publicBaseUrl).hostname; +const library = createLibrary(mediaRoot, path.resolve(process.env.LIBRARY_INDEX_PATH || './data/library-index.json'), process.env.TMDB_API_KEY); +const tokenPath = path.resolve(process.env.TOKEN_STORE_PATH || './data/tokens.json'); +library.startReconciler(Number(process.env.LIBRARY_RECONCILE_SECONDS || 900)); +if (!pairingSecret && !pairingPasswordHash) throw new Error('PAIRING_PASSWORD_HASH or PAIRING_SECRET is required'); + +const sessions = new Map(); +const accountLinkSessions = new Map(); +const accountTokenLifetime = 365 * 24 * 60 * 60 * 1000; +const loadTokens = () => { + try { return new Map(Object.entries(JSON.parse(fs.readFileSync(tokenPath, 'utf8')))); } catch { return new Map(); } +}; +const tokens = loadTokens(); +const localAddress = () => Object.values(os.networkInterfaces()).flat().find(address => + address && address.family === 'IPv4' && !address.internal, +)?.address; +const advertiseConnector = () => { + if (!mdnsHostname.endsWith('.local')) return () => {}; + const address = localAddress(); + if (!address) return () => {}; + const mdns = multicastDns(); + const hostname = `${mdnsHostname}.`; + const service = 'Cleanflix Connector._cleanflix-connector._tcp.local.'; + const records = [ + { name: hostname, type: 'A', ttl: 120, data: address }, + { name: '_cleanflix-connector._tcp.local.', type: 'PTR', ttl: 120, data: service }, + { name: service, type: 'SRV', ttl: 120, data: { port, target: hostname } }, + { name: service, type: 'TXT', ttl: 120, data: ['path=/'] }, + ]; + const respond = () => mdns.respond(records); + mdns.on('query', query => { + if (query.questions.some(question => question.name === hostname || question.name === '_cleanflix-connector._tcp.local.')) respond(); + }); + respond(); + const interval = setInterval(respond, 60_000); + console.log(`mDNS available at http://${mdnsHostname}:${port}`); + return () => { clearInterval(interval); mdns.destroy(); }; +}; +const saveTokens = () => { + fs.mkdirSync(path.dirname(tokenPath), { recursive: true }); + fs.writeFileSync(tokenPath, `${JSON.stringify(Object.fromEntries(tokens))}\n`, { mode: 0o600 }); +}; +const videos = async () => { + const items = (await library.catalog()).map(item => ({ ...item, imdbId: item.imdbId || item.suggestedImdbId, description: item.description || item.file })); + const limited = catalogLimit > 0 ? items.slice(0, catalogLimit) : items; + return [...limited, ...(demoStreamUrl ? [{ id: 'demo-stream', title: 'Connector playback test', type: 'video', description: 'Staging test stream' }] : [])]; +}; +// Responses can contain pairing and stream tokens; never write their bodies to logs. +const json = (res, code, value) => { const body = JSON.stringify(value); console.log(code); res.writeHead(code, { 'content-type': 'application/json' }); res.end(body); }; +const readJson = req => new Promise((resolve, reject) => { let raw = ''; req.on('data', d => raw += d); req.on('end', () => { try { resolve(JSON.parse(raw || '{}')); } catch { reject(new Error('Invalid JSON')); } }); }); +const bearer = req => req.headers.authorization?.replace(/^Bearer\s+/i, ''); +const authenticated = req => { + const token = bearer(req); + const expiresAt = Number(tokens.get(token)); + if (expiresAt > Date.now()) return true; + if (token) { tokens.delete(token); saveTokens(); } + return false; +}; +const id = () => crypto.randomBytes(24).toString('base64url'); +const passwordMatches = value => { + if (pairingPasswordHash) { + const [salt, expected] = pairingPasswordHash.split(':'); + if (!salt || !expected) return false; + const actual = crypto.scryptSync(value, salt, 32).toString('base64url'); + return crypto.timingSafeEqual(Buffer.from(actual), Buffer.from(expected)); + } + const actual = Buffer.from(value); + const expected = Buffer.from(pairingSecret || ''); + return Boolean(pairingSecret) && actual.length === expected.length && crypto.timingSafeEqual(actual, expected); +}; +const admin = req => { + const raw = req.headers.authorization?.replace(/^Basic\s+/i, ''); + return Boolean(raw) && passwordMatches(Buffer.from(raw, 'base64').toString().split(':').slice(1).join(':')); +}; +const html = value => String(value).replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('"', '"'); +const accountLinkPage = (title, message) => `${html(title)}

${html(title)}

${html(message)}

`; +const libraryPage = items => `CleanStream Library

Library review

Confirm titles and IMDb IDs. Original files are never renamed or moved.

${items.map(item => `
${html(item.file)}${item.candidate ? ` · TMDB: ${html(item.candidate.title)} (${html(item.candidate.year)})` : ''}
`).join('')}`; + +const server = http.createServer(async (req, res) => { + const url = new URL(req.url, publicBaseUrl); + console.log(`${req.method} ${url.pathname}`); + if (req.method === 'GET' && url.pathname === '/library') { + if (!admin(req)) { res.writeHead(401, { 'www-authenticate': 'Basic realm="CleanStream Library"' }); return res.end('Authentication required'); } + res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' }); return res.end(libraryPage(await library.scan())); + } + if (req.method === 'POST' && url.pathname === '/library/mapping') { + if (!admin(req)) return json(res, 401, { error: 'Unauthorized' }); + let raw = ''; req.on('data', d => raw += d); req.on('end', () => { const body = new URLSearchParams(raw); const file = decodeURIComponent(body.get('file') || ''); if (!file || file.includes('..')) return json(res, 400, { error: 'Invalid file' }); library.saveMapping(file, { title: body.get('title') || undefined, imdbId: body.get('imdbId') || undefined, year: Number(body.get('year')) || undefined }); res.writeHead(303, { location: '/library' }); res.end(); }); return; + } + if (req.method === 'GET' && url.pathname === '/account/link') { + if (!cleanflixApiUrl) return json(res, 503, { error: 'CLEANFLIX_API_URL is required for account linking' }); + const state = url.searchParams.get('state'); + const linkToken = url.searchParams.get('linkToken'); + if (!state && !linkToken) { + const linkState = id(); + accountLinkSessions.set(linkState, { expires: Date.now() + 600000 }); + const handoff = new URL('/connector/link', cleanflixApiUrl); + handoff.searchParams.set('returnUrl', `${publicBaseUrl}/account/link?state=${encodeURIComponent(linkState)}`); + handoff.searchParams.set('connectorUrl', publicBaseUrl); + res.writeHead(302, { location: handoff.toString() }); + return res.end(); + } + const session = state && accountLinkSessions.get(state); + accountLinkSessions.delete(state); + if (!session || session.expires < Date.now() || !linkToken) { + res.writeHead(400, { 'content-type': 'text/html; charset=utf-8' }); + return res.end(accountLinkPage('Account link failed', 'This account-link request is invalid or has expired. Start again from your connector.')); + } + const accessToken = id(); + const expiresAt = Date.now() + accountTokenLifetime; + tokens.set(accessToken, expiresAt); + saveTokens(); + try { + const response = await fetch(`${cleanflixApiUrl}/api/sync/connector/link`, { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ linkToken, connectorUrl: publicBaseUrl, accessToken, expiresAt: new Date(expiresAt).toISOString() }), + signal: AbortSignal.timeout(10000), + }); + if (!response.ok) throw new Error(`Cleanflix returned ${response.status}`); + } catch (error) { + tokens.delete(accessToken); + saveTokens(); + console.error(`Account link completion failed: ${error.message}`); + res.writeHead(502, { 'content-type': 'text/html; charset=utf-8' }); + return res.end(accountLinkPage('Account link failed', 'Cleanflix could not complete the account link. Please start again.')); + } + res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' }); + return res.end(accountLinkPage('Account linked', 'This connector is now linked to your Cleanflix account. You can close this window.')); + } + if (req.method === 'GET' && url.pathname === '/.well-known/cleanstream-connector.json') return json(res, 200, { + protocolVersion: 1, id: 'reference.home-library', name: 'Reference Home Library', capabilities: ['catalog', 'metadata', 'stream'], + endpoints: { catalog: '/v1/catalog', metadata: '/v1/metadata', stream: '/v1/stream', pairStart: '/v1/pair/start', pairStatus: '/v1/pair/{sessionId}', pairToken: '/v1/pair/token', accountLink: '/account/link' } + }); + if (req.method === 'POST' && url.pathname === '/v1/pair/start') { + const body = await readJson(req); if ((body.codeChallengeMethod || 'S256') !== 'S256' || !body.codeChallenge) return json(res, 400, { error: 'PKCE S256 required' }); + const sessionId = id(); sessions.set(sessionId, { challenge: body.codeChallenge, expires: Date.now() + 300000 }); + return json(res, 200, { sessionId, approvalUri: `${approvalBaseUrl}/pair/approve?session=${sessionId}`, expiresAt: new Date(Date.now() + 300000).toISOString(), pollIntervalSeconds: 2 }); + } + if (req.method === 'GET' && url.pathname === '/pair/approve') { res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' }); return res.end('
'); } + if (req.method === 'POST' && url.pathname === '/pair/approve') { let raw=''; req.on('data', d => raw += d); req.on('end', () => { const session=sessions.get(url.searchParams.get('session')); if (!session || !passwordMatches(new URLSearchParams(raw).get('secret') || '')) { res.statusCode=403; return res.end('Denied'); } session.code=id(); res.end('Approved. Return to your TV.'); }); return; } + if (req.method === 'GET' && url.pathname.startsWith('/v1/pair/')) { const session=sessions.get(url.pathname.split('/').pop()); if (!session || session.expires < Date.now()) return json(res, 200, { status: 'expired' }); return json(res, 200, session.code ? { status: 'approved', authorizationCode: session.code } : { status: 'pending' }); } + if (req.method === 'POST' && url.pathname === '/v1/pair/token') { const body=await readJson(req), session=sessions.get(body.sessionId); const challenge=crypto.createHash('sha256').update(body.codeVerifier || '').digest('base64url'); if (!session || session.code !== body.authorizationCode || session.challenge !== challenge) return json(res, 403, { error: 'Invalid pairing exchange' }); const token=id(); tokens.set(token, Date.now()+2592000000); saveTokens(); sessions.delete(body.sessionId); return json(res, 200, { accessToken: token, expiresAt: new Date(tokens.get(token)).toISOString(), scopes: ['catalog','stream'] }); } + if (req.method === 'GET' && url.pathname === '/v1/catalog') return authenticated(req) ? json(res, 200, { items: await videos() }) : json(res, 401, { error: 'Unauthorized' }); + if (req.method === 'GET' && url.pathname === '/v1/metadata') { + if (!authenticated(req)) return json(res, 401, { error: 'Unauthorized' }); + const item = await library.metadata(url.searchParams.get('id') || ''); + return item ? json(res, 200, { item: { ...item, imdbId: item.imdbId || item.suggestedImdbId, description: item.description || item.file } }) : json(res, 404, { error: 'Not found' }); + } + if (req.method === 'POST' && url.pathname === '/v1/stream') { if (!authenticated(req)) return json(res,401,{error:'Unauthorized'}); const body=await readJson(req); if (body.id === 'demo-stream' && demoStreamUrl) return json(res,200,{streams:[{id:'demo-stream',url:demoStreamUrl,filename:'demo.m3u8',headers:{}}]}); const file=Buffer.from(body.id || '', 'base64url').toString(); if (!(await videos()).some(v => v.id === body.id) || file.includes('..')) return json(res,404,{error:'Not found'}); return json(res,200,{streams:[{id:body.id,url:`${publicBaseUrl}/v1/media/${body.id}?token=${bearer(req)}`,filename:path.basename(file),headers:{}}]}); } + if (req.method === 'GET' && url.pathname.startsWith('/v1/media/')) { + const token = url.searchParams.get('token'); + const file = Buffer.from(url.pathname.split('/').pop(), 'base64url').toString(); + const target = path.resolve(mediaRoot, file); + if (!tokens.has(token) || !target.startsWith(`${mediaRoot}${path.sep}`) || !fs.existsSync(target)) return json(res, 404, { error: 'Not found' }); + const size = fs.statSync(target).size; + const match = req.headers.range?.match(/^bytes=(\d*)-(\d*)$/); + const start = Number(match?.[1] || 0); + const end = Math.min(Number(match?.[2] || size - 1), size - 1); + if (match && (start > end || start >= size)) { + res.writeHead(416, { 'content-range': `bytes */${size}` }); + return res.end(); + } + const headers = { 'content-type': 'application/octet-stream', 'accept-ranges': 'bytes', 'content-length': end - start + 1 }; + if (match) headers['content-range'] = `bytes ${start}-${end}/${size}`; + res.writeHead(match ? 206 : 200, headers); + const stream = fs.createReadStream(target, { start, end }); + stream.on('error', error => { + console.error(`Media read failed: ${error.message}`); + if (!res.headersSent) json(res, 502, { error: 'Media read failed' }); + else res.destroy(error); + }); + return stream.pipe(res); + } + json(res, 404, { error: 'Not found' }); +}); +server.listen(port, process.env.HOST, () => { + const stopAdvertising = advertiseConnector(); + server.once('close', stopAdvertising); + console.log(`Connector listening on ${publicBaseUrl}`); +}); diff --git a/desktop/src-tauri/.gitignore b/desktop/src-tauri/.gitignore new file mode 100644 index 0000000..b21bd68 --- /dev/null +++ b/desktop/src-tauri/.gitignore @@ -0,0 +1,7 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Generated by Tauri +# will have schema files for capabilities auto-completion +/gen/schemas diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock new file mode 100644 index 0000000..5fc4d0f --- /dev/null +++ b/desktop/src-tauri/Cargo.lock @@ -0,0 +1,5131 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android_system_properties" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" + +[[package]] +name = "ashpd" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f3f79755c74fd155000314eb349864caa787c6592eace6c6882dad873d9c39" +dependencies = [ + "async-fs", + "async-net", + "enumflags2", + "futures-channel", + "futures-util", + "rand", + "raw-window-handle", + "serde", + "serde_repr", + "url", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "zbus", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-net" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" +dependencies = [ + "async-io", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "async-signal" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "brotli" +version = "8.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "bytemuck" +version = "1.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.13.1", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb1307f12aa967b5a58416e87b3653360e0fd614a016b6e970db08fecbb1b80d" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.19", +] + +[[package]] +name = "cargo_toml" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +dependencies = [ + "serde", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "cc" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9066c49992464636f92905fa096ec58baaa4d57ec19a5c096c68d3e25ef3d136" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" +dependencies = [ + "bitflags 2.13.1", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.13.1", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "ctor" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" +dependencies = [ + "ctor-proc-macro", + "dtor", +] + +[[package]] +name = "ctor-proc-macro" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.119", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "dbus" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab69f03cc8c4340c9c8e315114e1658e6775a9b16a04357973aa21cec22b32e" +dependencies = [ + "libc", + "libdbus-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "serde_core", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.119", +] + +[[package]] +name = "desktop" +version = "0.1.0" +dependencies = [ + "if-addrs", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-opener", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.13.1", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "dlib" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" +dependencies = [ + "libloading", +] + +[[package]] +name = "dlopen2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "dom_query" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" +dependencies = [ + "bit-set", + "cssparser", + "foldhash", + "html5ever", + "precomputed-hash", + "selectors", + "tendril", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dtor" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" +dependencies = [ + "dtor-proc-macro", +] + +[[package]] +name = "dtor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "embed-resource" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbfdaacccebec3b28e4866b8973543c7647797db5ada1bdab552e48fe665fbbd" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 1.1.4+spec-1.1.0", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "endi" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "5.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" +dependencies = [ + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea5190182e6915eb873ddbc16e23b711b6eb1f9c00a0d0a3a91b5f6228475225" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" + +[[package]] +name = "futures-executor" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "futures-sink" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" + +[[package]] +name = "futures-task" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" + +[[package]] +name = "futures-util" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", +] + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.13.1", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" +dependencies = [ + "log", + "markup5ever", +] + +[[package]] +name = "http" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" +dependencies = [ + "byteorder", + "png 0.17.16", +] + +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "if-addrs" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b2eeee38fef3aa9b4cc5f1beea8a2444fc00e7377cafae396de3f5c2065e24" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", + "serde", + "serde_core", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "ipnet" +version = "2.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a756c3fac73139e83f14c2d742155dd2b78d3ee56597b419a0579b7bdd6dd78" + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "js-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.13.1", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "libdbus-sys" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2026a5056764a10b2bf5d56488cba40da507f5493a6a429340e2004d9ed085fa" +dependencies = [ + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "markup5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" +dependencies = [ + "log", + "tendril", + "web_atoms", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "muda" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "once_cell", + "png 0.18.1", + "serde", + "thiserror 2.0.19", + "windows-sys 0.61.2", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.13.1", + "jni-sys 0.3.1", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys 0.3.1", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.13.1", + "block2", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.13.1", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.13.1", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-location" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.13.1", + "block2", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.13.1", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.13.1", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-location", + "objc2-core-text", + "objc2-foundation", + "objc2-quartz-core", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" +dependencies = [ + "bitflags 2.13.1", + "block2", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "open" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cfef937e9c486488c7e3d949ae31c0f1d06bdacd75b99c086cb35356e30408" +dependencies = [ + "dunce", + "is-wsl", + "libc", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros", + "phf_shared", + "serde", +] + +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "piper" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plist" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1d65da6dd5d1e44199ac0f58712d241c0f439f80adea8924d832384087f85" +dependencies = [ + "base64 0.22.1", + "indexmap 2.14.0", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.13.1", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "pollster" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.13+spec-1.1.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.1", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.19", +] + +[[package]] +name = "ref-cast" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216e8f773d7923bcba9ceb86a86c93cabb3903a11872fc3f138c49630e50b96d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9283685feec7d69af75fb0e858d5e7378f33fe4fc699383b2916ab9273e03c" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "reqwest" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "rfd" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2bee61e6cffa4635c72d7d81a84294e28f0930db0ddcb0f66d10244674ebed" +dependencies = [ + "ashpd", + "block2", + "dispatch2", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "pollster", + "raw-window-handle", + "urlencoding", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.13.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.119", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +dependencies = [ + "bitflags 2.13.1", + "cssparser", + "derive_more", + "log", + "new_debug_unreachable", + "phf", + "phf_codegen", + "precomputed-hash", + "rustc-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_with" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" +dependencies = [ + "base64 0.22.1", + "bs58", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.0", + "schemars 0.9.0", + "schemars 1.2.2", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "servo_arc" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" + +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "bytemuck", + "js-sys", + "ndk", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "tracing", + "wasm-bindgen", + "web-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "string_cache_codegen" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.35.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1c93047acf68669466a34690ac58cca7010bd1b201e1ec86f1fd0a75d3dd4a9" +dependencies = [ + "bitflags 2.13.1", + "block2", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dbus", + "dispatch2", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "libc", + "log", + "ndk", + "ndk-sys", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "once_cell", + "parking_lot", + "percent-encoding", + "raw-window-handle", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7eeb6d99155545da6150a1795945f16ac9c178deb2a5f2e74d776107bd5849" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "667b20e2726d572dea2de7370da16e188eb06008faf9a92fab7cdc46791190b5" +dependencies = [ + "anyhow", + "bytes", + "cookie", + "dirs", + "dunce", + "embed_plist", + "getrandom 0.3.4", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.19", + "tokio", + "tray-icon", + "url", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9ce40b16101cb6ea63d3e221567affd1c3a9205f95d7bc574941a10636b632" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars 0.8.22", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08279169ff42f8fc45a1dbc9dcae888893ba95288142e5880c59b93a26d2cfc5" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png 0.17.16", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.119", + "tauri-utils", + "thiserror 2.0.19", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b394794f399a421811d06966343e7933fcae92d59f5180b9388d1174497a45" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74be5dd4bed9afbd145e5716b5fa2ec28cbc29c34ffa61c258c9273d896c8020" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri-utils", + "walkdir", +] + +[[package]] +name = "tauri-plugin-opener" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17e1bea14edce6b793a04e2417e3fd924b9bc4faae83cdee7d714156cceeed29" +dependencies = [ + "dunce", + "glob", + "objc2-app-kit", + "objc2-foundation", + "open", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.19", + "url", + "windows", + "zbus", +] + +[[package]] +name = "tauri-runtime" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0b4bc95aed361b0019067d189a1174a603d460d0f6c72606512d59fc9c12ec8" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2", + "objc2-ui-kit", + "objc2-web-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.19", + "url", + "webkit2gtk", + "webview2-com", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e6fac707727b7a2f48e4ded90976324267371073edbb415ffb73bb0458d203f" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dom_query", + "dunce", + "glob", + "http", + "infer", + "json-patch", + "log", + "memchr", + "phf", + "plist", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.19", + "toml 1.1.4+spec-1.1.0", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6" +dependencies = [ + "dunce", + "embed-resource", + "toml 1.1.4+spec-1.1.0", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "tendril" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fed54709c5b3a53d09bb1c113ea4f5ceafd1e772ddcb0030a82e1d56c087b08" +dependencies = [ + "new_debug_unreachable", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" +dependencies = [ + "thiserror-impl 2.0.19", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "time" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "time-macros" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-util" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml" +version = "1.1.4+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 1.0.4", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.14.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.25.13+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.4", +] + +[[package]] +name = "toml_parser" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" +dependencies = [ + "winnow 1.0.4", +] + +[[package]] +name = "toml_writer" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "bitflags 2.13.1", + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "045979e3f037cd18ad1cb2a419dfda133c5c29c9f3453370079f2255d46c257e" +dependencies = [ + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "once_cell", + "png 0.18.1", + "serde", + "thiserror 2.0.19", + "windows-sys 0.61.2", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "uds_windows" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" +dependencies = [ + "memoffset", + "tempfile", + "windows-sys 0.61.2", +] + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" +dependencies = [ + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "version-compare" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.119", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wayland-backend" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016ccf01d1c58b6f8999612813e17c9b2390f7d70671428869913310f83f54b8" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" +dependencies = [ + "bitflags 2.13.1", + "rustix", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" +dependencies = [ + "dlib", + "log", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web_atoms" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "075474b12bcb3d2e3d4546580e9de478eeeead668a1761e2a8860c836b7ef297" +dependencies = [ + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core 0.61.2", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "webview2-com-sys" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" +dependencies = [ + "thiserror 2.0.19", + "windows", + "windows-core 0.61.2", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + +[[package]] +name = "winnow" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "wry" +version = "0.55.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514" +dependencies = [ + "base64 0.22.1", + "block2", + "cookie", + "crossbeam-channel", + "dirs", + "dom_query", + "dpi", + "dunce", + "gdkx11", + "gtk", + "http", + "javascriptcore-rs", + "jni", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.19", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "synstructure", +] + +[[package]] +name = "zbus" +version = "5.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe18fb60dc696039e738717b76eaea21e7a4489bbb1885020b43c94236d7e98a" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "libc", + "ordered-stream", + "rustix", + "serde", + "serde_repr", + "tracing", + "uds_windows", + "uuid", + "windows-sys 0.61.2", + "winnow 1.0.4", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe96480bed92df2b442a1a30df364e12d08eed03aeb061f2b8dc6afb2be91119" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8bf88b4a3ff53e883001e0e0115b297a9d53c31b9c1edd2bfdd853e3428624e" +dependencies = [ + "serde", + "winnow 1.0.4", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zvariant" +version = "5.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee2a0bcd2a907786a456fff45aaaaf54c9ba5f50b71ae9ec1a4edd200c94911" +dependencies = [ + "endi", + "enumflags2", + "serde", + "url", + "winnow 1.0.4", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38a708216a18780796770bfe3f4739c7c83a3e8f789b755534bbbc06e4e23e12" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90cb9383f9b45290407a1258b202d3f8f01db719eb60b4e4055c6375af4fc7c7" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn 2.0.119", + "winnow 1.0.4", +] diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml new file mode 100644 index 0000000..9663379 --- /dev/null +++ b/desktop/src-tauri/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "desktop" +version = "0.1.0" +description = "A Tauri App" +authors = ["you"] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +# The `_lib` suffix may seem redundant but it is necessary +# to make the lib name unique and wouldn't conflict with the bin name. +# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 +name = "desktop_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = [] } +tauri-plugin-opener = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +rfd = "0.15" +if-addrs = "0.13" diff --git a/desktop/src-tauri/build.rs b/desktop/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/desktop/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/desktop/src-tauri/capabilities/default.json b/desktop/src-tauri/capabilities/default.json new file mode 100644 index 0000000..4cdbf49 --- /dev/null +++ b/desktop/src-tauri/capabilities/default.json @@ -0,0 +1,10 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Capability for the main window", + "windows": ["main"], + "permissions": [ + "core:default", + "opener:default" + ] +} diff --git a/desktop/src-tauri/icons/128x128.png b/desktop/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..6be5e50e9b9ae84d9e2ee433f32ef446495eaf3b GIT binary patch literal 3512 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 literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/128x128@2x.png b/desktop/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e81becee571e96f76aa5667f9324c05e5e7a4479 GIT binary patch literal 7012 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 Sh@|Ye~|0>}wMPLT8jm@Y!H33Sz}5aFI6 zM9Lzqz|;A*0sGs=2A1uU!1nk2dGF7knQwr99SAFen)x(eCO;F8y2C~0FD1YxRTPcy zPWVxkUYmeuz}Tv?7&Fe-!UE{)ZW)Mb;H)^#eHDv$`dkZGguJz@^MA!ZNGAUqt{|0H zpZ7Ch9S`q5!>R%}>}62!+(T^evyO+ImSo2wpu)su4^3nw5(%)KD%gbSev^*HZZ&3( z#&c@Z0gH|}Ck)w6fh0&NBJ62ib%R}(3@$VFl*_#l2W$wQ-~4RmZZAt5O*^2Q5}Xr8Hy@c`#pM?kc?hFWxRXr*mUfUCXf4ka5DD~ zat6d85COB05l#(P9*cQZ3EC8fVdS~?&vN#rce(aF9@xp80O2{{FBvU+{X>Hoh;xI` z{$e^Nw1y*VbO8wv`8|-m?NwNaKGTGaF{P^JLB^DbOYWIbn%eT`*!^C1H36=O8Z-M> zkD~88ry`eSo`tEBN4>w7OWZwUzlh{WM1m8R6zepqGcGMaV7vWY9b?K4b6~|HVG)ec wi>I@ws#sZo7or4_*4M>7;p5{nr2pZ?Uu4>Krr0kU)&Kwi07*qoM6N<$f)&@lf&c&j literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/Square107x107Logo.png b/desktop/src-tauri/icons/Square107x107Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca4f27198838968bd60ed7d371bfa23496b7fe5 GIT binary patch literal 2863 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 Y2S8W#vM)6=T>t<807*qoM6N<$f*y@n<^TWy literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/Square284x284Logo.png b/desktop/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c021d2ba76619c08969ab688db3b27f29257aa6f GIT binary patch literal 7737 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 literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/Square30x30Logo.png b/desktop/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..621970023096ed9f494ba18ace15421a45cd65fa GIT binary patch literal 903 zcmV;219<$2P)2 z+CUKPMqaqGiH;zb!R4$B-WXS^YzQr=@UH>k4?*L)&R=zYjBrZenKdc9|JlS$SO*RJ zKt8FSTDAdk1g_WPAO!p^V!AuL;Lm;uQyV;zKq)J3i(;q*;k+pD%f3eltU`PYdy9(k0&%` zuWAPcV6|-y?|?7O1W!KSK}pbk8#~!|FA@(VJkt^V@0lio{afoAeo*f&$W2s6${5!1eKvAGD2$GZwSB98L2ZVS- zKn8ENRkZ*sb!@QugOrQNK3(sy1v%J#m|rpB+h|Nkqa3FRT>74xSs{#&saU2Lf!_Iq zKmuKAESh`gs!fneGWn+nf}l?7jE$HW!Af&vE5=G!QU)U2v&HLIBGXKk4nQx{hsHjL zLPMAo5=*uInFbq7(aa`Y2VX5wCmaeqvECOFv)a>0t>ZaEb*cJccER=BB?KFZhV$c^ znL*l8x*UYZv4WK|j?~Jt6~~F%{pk~z5A*>^M`?r5m9@RJ_x|uEtX(6Vk@Y()MVto* z93wr)%3m%|#OZ~srm>zF(JvDuTq*@;d&^>_BJm5hOU`3FjG70L#Vzv9I?`<7$T@

jU?lMi@tgxr7CqX_r3uw^y4tVU3Pm0sw;|1WSUO%?=bG`*Kmz6u4{#ti;T7AWIBAEh!(Y zz>O01&#X?Ds@L)Sb{CkG#Yz4$3o d@96)?#cz^xWoA}>B$xmI002ovPDHLkV1l3&k#zt7 literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/Square310x310Logo.png b/desktop/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bc04839491e66c07b16ab03743c0c53b4109cc GIT binary patch literal 8591 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 JPDHLkV1lm|RXG3v literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/Square71x71Logo.png b/desktop/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..63440d7984936a9caa89275928d8dce97e4d033b GIT binary patch literal 2011 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∓t$dRJGIadE?vc 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 Kx8Vjl{{H|h@<;Lj literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/icon.ico b/desktop/src-tauri/icons/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b3636e4b22ba65db9061cd60a77b02c92022dfd6 GIT binary patch literal 86642 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 AKmY&$ literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/icon.png b/desktop/src-tauri/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e1cd2619e0b5ec089cbba5ec7b03ddf2b1dfceb6 GIT binary patch literal 14183 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

5l#v3A#xI3*z~1~fvo9Q(N^(==!|_FZ z*duZ=+M1~)8E|otX8KNZlr?qels#x_1Xq@9IIw~@9uAREJVH)Xw^}UclF6327}E42 zT)E&?U%TK?(+K7%R!`H5oX0i)4Qn5??Iw3p5J~6_u+aWehY{DSn}3V2p$bgjnAu?o)v@iC254fXeMv50$9YrpU`N?u@QIWs)T?SP|fa}(|9 zqAX+!7`cx=4)cCBg5h~pu(?@9`)aCr#oyz$ld=#RFxYCNZCZls@4v2~*e-t6PEVvV z&bbK3b3wt(Coc!ufAbXXC<**#HQ%J9k`New6iG<5RjtO4XVO?dCvwxD{kJ#tfQr(X zg^NTwF-FwAeS_{V4bfel8l`~NbfrTR2s!G>WduFWxH(t~aK4q=6rEE^$+Uox>gJO2 z{L<;6Q6nHa5#ZEM>H58not!)z(6*_=^~8}jWf*IG$AUKVWOZ4?)GfF z+BM#*wKKmLFD7E~W3U!$IVm$k_k1f&Kz6WV8@55P?r~bcg-Za-!rvW?ns&)KOGT2~ zlkAyqhQj=P$Eg3w#K~}zH@J5bo-BfHjInKSz$@?+Z)NPD4pHj^_Qxmi`UqoTy=`sV zLVxrXGuBr=QRm|}wg75yetQQK4fY3#P_~J}zEfPnb2C4Wo!E(d*(cA;b?7$g2in<( zPn)ghX}nzJPmb6(3Dpeg_GW~Hc}Lt=lgsSZz z!5QXyz7KaR;D`3Ee}d`af{H>WWZ|Io1QI3~4Ll_`g1(cRnhLK73Ro)7zPCd={1W2x zRp%Xlvv4>!<2@}$hz|!V{T}_eHx2xkLl^hQoZTCnsjCl|W_@5Fx2(+j0ogy&Y+;L- z<)G$*CiN7hOm^s!{U>1F7U=iNk{+u~dAC!eDz%=|glFW0jEZU1&o(G_c#wTxUjnG} z#cg3>jEpUi#Mlq@t?Msg_#geK^Lx@DyHWf7=AS5vVyM7YOjvUVCfcpVR<(+5!H?9- zySI6s>o3m&*zr||=wcPGyBkQV`EWJl@bH8qobjOp+sXL*)=&yX)8aAbf~tGv?a2SN zu^Ddo-z?DWk9h9Yz#5p^NU#x~wYSd?H@w@!2Gb4G)6-utEMV~~M85Br5ff(v5O1|T z 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 Result { + let address = get_if_addrs().map_err(|_| "Could not determine this computer's LAN address.".to_string())? + .into_iter() + .filter_map(|interface| match interface.addr { + IfAddr::V4(address) if address.ip.is_private() && !matches!(address.ip.octets()[3], 0 | 255) => Some((interface.name, address.ip)), + _ => None, + }) + .filter(|(name, _)| !["bridge", "docker", "veth", "utun", "lo"].iter().any(|prefix| name.starts_with(prefix))) + // Prefer common home-LAN subnets over container bridge networks. + .max_by_key(|(name, address)| ( + if name.starts_with("en") { 1 } else { 0 }, + match address.octets() { + [192, 168, ..] => 3, + [172, second, ..] if (16..=31).contains(&second) => 2, + [10, ..] => 1, + _ => 0, + }, + )) + .map(|(_, address)| address) + .ok_or_else(|| "Connect this computer to your home network first.".to_string())?; + Ok(format!("http://{address}:{CONNECTOR_PORT}")) +} + +fn connector_command(app: &tauri::AppHandle) -> Result { + let resource_dir = app.path().resource_dir().map_err(|e| e.to_string())?.join("sidecar"); + let config = app.path().app_data_dir().map_err(|e| e.to_string())?.join("config.env"); + let mut command = Command::new(resource_dir.join("distribution-common/start-connector.sh")); + command + .env("CLEANFLIX_APP_ROOT", &resource_dir) + .env("CLEANFLIX_CONFIG_PATH", config) + .env("CLEANFLIX_NODE", resource_dir.join("node/bin/node")) + // TVs discover the connector through an IPv4 LAN address. + .env("HOST", "0.0.0.0") + .env("PORT", CONNECTOR_PORT.to_string()); + Ok(command) +} + +#[tauri::command] +fn pick_media_folder() -> Option { + rfd::FileDialog::new().pick_folder().map(|path| path.display().to_string()) +} + +#[tauri::command] +fn get_connector_setup(app: tauri::AppHandle) -> Result { + let config = app.path().app_data_dir().map_err(|e| e.to_string())?.join("config.env"); + let content = fs::read_to_string(config).unwrap_or_default(); + let value = |key: &str| content.lines() + .find_map(|line| line.strip_prefix(&format!("{key}="))) + .unwrap_or_default() + .to_string(); + Ok(ConnectorSetup { + media_root: value("MEDIA_ROOT"), + password_configured: !value("PAIRING_PASSWORD_HASH").is_empty(), + public_base_url: value("PUBLIC_BASE_URL"), + }) +} + +#[tauri::command] +fn get_cleanflix_link_url(app: tauri::AppHandle) -> Result { + let setup = get_connector_setup(app)?; + if setup.media_root.is_empty() || !setup.password_configured { + return Err("Save your media folder and pairing password before signing in.".into()); + } + if setup.public_base_url.is_empty() { return Err("Start the connector before signing in.".into()); } + Ok(format!("{}/account/link", setup.public_base_url)) +} + +#[tauri::command] +fn save_connector_config(app: tauri::AppHandle, config: ConnectorConfig) -> Result<(), String> { + if config.media_root.trim().is_empty() { + return Err("Choose a media folder.".into()); + } + let dir = app.path().app_data_dir().map_err(|e| e.to_string())?; + fs::create_dir_all(&dir).map_err(|e| e.to_string())?; + let config_path = dir.join("config.env"); + let existing = fs::read_to_string(&config_path).unwrap_or_default(); + let existing_hash = existing.lines().find_map(|line| line.strip_prefix("PAIRING_PASSWORD_HASH=")).unwrap_or_default(); + let resource_dir = app.path().resource_dir().map_err(|e| e.to_string())?.join("sidecar"); + let password_hash = if config.pairing_password.is_empty() { + if existing_hash.is_empty() { return Err("Choose a password of at least 12 characters.".into()); } + existing_hash.to_string() + } else { + if config.pairing_password.len() < 12 { return Err("Choose a password of at least 12 characters.".into()); } + let hash = Command::new(resource_dir.join("node/bin/node")) + .arg("hash-password.js") + .arg(&config.pairing_password) + .current_dir(&resource_dir) + .output() + .map_err(|_| "The bundled connector runtime is unavailable.".to_string())?; + if !hash.status.success() { return Err("Could not secure the pairing password.".into()); } + String::from_utf8(hash.stdout).map_err(|e| e.to_string())?.trim().to_string() + }; + let public_base_url = public_base_url()?; + let content = format!("MEDIA_ROOT={}\nPUBLIC_BASE_URL={}\nAPPROVAL_BASE_URL={}\nCLEANFLIX_API_URL=https://cleanflix.pro\nPAIRING_PASSWORD_HASH={}\n", config.media_root, public_base_url, public_base_url, password_hash); + fs::write(config_path, content).map_err(|e| e.to_string()) +} + +#[tauri::command] +fn start_connector(app: tauri::AppHandle) -> Result<(), String> { + connector_command(&app)?.spawn().map_err(|e| e.to_string())?; + Ok(()) +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .plugin(tauri_plugin_opener::init()) + .invoke_handler(tauri::generate_handler![pick_media_folder, get_connector_setup, get_cleanflix_link_url, save_connector_config, start_connector]) + .setup(|app| { + let config = app.path().app_data_dir()?.join("config.env"); + if config.exists() { + let content = fs::read_to_string(&config)?; + let mut updated = content.lines().map(|line| { + if line.starts_with("PUBLIC_BASE_URL=") || line.starts_with("APPROVAL_BASE_URL=") { + format!("{}={}",&line[..line.find('=').unwrap()], public_base_url().unwrap_or_else(|_| "http://cleanflix-connector.local:8787".into())) + } else { line.to_string() } + }).collect::>(); + if !updated.iter().any(|line| line.starts_with("CLEANFLIX_API_URL=")) { + updated.push("CLEANFLIX_API_URL=https://cleanflix.pro".into()); + } + fs::write(&config, format!("{}\n", updated.join("\n")))?; + connector_command(&app.handle()).map_err(std::io::Error::other)?.spawn()?; + } + Ok(()) + }) + .run(tauri::generate_context!()) + .expect("error while running Tauri application"); +} diff --git a/desktop/src-tauri/src/main.rs b/desktop/src-tauri/src/main.rs new file mode 100644 index 0000000..bea3c23 --- /dev/null +++ b/desktop/src-tauri/src/main.rs @@ -0,0 +1,6 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + desktop_lib::run() +} diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json new file mode 100644 index 0000000..7e9a3c3 --- /dev/null +++ b/desktop/src-tauri/tauri.conf.json @@ -0,0 +1,35 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "productName": "Cleanflix Connector", + "version": "0.1.0", + "identifier": "pro.cleanflix.connector", + "build": { + "frontendDist": "../src" + }, + "app": { + "withGlobalTauri": true, + "windows": [ + { + "title": "Cleanflix Connector", + "width": 900, + "height": 780, + "minHeight": 700 + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": "all", + "resources": {"../sidecar": "sidecar"}, + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ] + } +} diff --git a/desktop/src/assets/connector-background.jpg b/desktop/src/assets/connector-background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2409f90a35f768f8c024254026302dda20889fa GIT binary patch literal 166239 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. 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 O@OQq}#B2Ps_P+qhNXTXY literal 0 HcmV?d00001 diff --git a/desktop/src/assets/javascript.svg b/desktop/src/assets/javascript.svg new file mode 100644 index 0000000..f9abb2b --- /dev/null +++ b/desktop/src/assets/javascript.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/desktop/src/assets/tauri.svg b/desktop/src/assets/tauri.svg new file mode 100644 index 0000000..31b62c9 --- /dev/null +++ b/desktop/src/assets/tauri.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/desktop/src/index.html b/desktop/src/index.html new file mode 100644 index 0000000..a1fb31f --- /dev/null +++ b/desktop/src/index.html @@ -0,0 +1 @@ +Cleanflix Connector

Cleanflix Connector

Your library.
Your TV.

Choose the folder you want to share. Cleanflix finds this connector automatically on your home network.

diff --git a/desktop/src/main.js b/desktop/src/main.js new file mode 100644 index 0000000..8cfd9cb --- /dev/null +++ b/desktop/src/main.js @@ -0,0 +1,37 @@ +const form = document.querySelector('#connector-form'); +const status = document.querySelector('#status'); +const mediaRoot = form.elements.namedItem('mediaRoot'); +const pairingPassword = form.elements.namedItem('pairingPassword'); +const linkAccount = document.querySelector('#link-account'); + +document.querySelector('#browse-folder').addEventListener('click', async () => { + const folder = await window.__TAURI__.core.invoke('pick_media_folder'); + if (folder) mediaRoot.value = folder; +}); + +form.addEventListener('submit', async (event) => { + event.preventDefault(); + status.textContent = 'Saving your connector setup…'; + const config = Object.fromEntries(new FormData(form)); + try { + await window.__TAURI__.core.invoke('save_connector_config', { config }); + localStorage.setItem('cleanflix.connector.mediaRoot', config.mediaRoot); + await window.__TAURI__.core.invoke('start_connector'); + status.textContent = 'Saved securely. The connector is running and ready to pair.'; + } catch (error) { status.textContent = error; } +}); + +linkAccount.addEventListener('click', async () => { + try { + const linkUrl = await window.__TAURI__.core.invoke('get_cleanflix_link_url'); + await window.__TAURI__.opener.openUrl(linkUrl); + status.textContent = 'Finish signing in with Cleanflix in your browser.'; + } catch (error) { status.textContent = error; } +}); + +const setup = await window.__TAURI__.core.invoke('get_connector_setup'); +if (setup.mediaRoot) mediaRoot.value = setup.mediaRoot; +if (setup.passwordConfigured) { + pairingPassword.placeholder = 'Password already set (enter only to change it)'; + status.textContent = 'Saved connector setup is running.'; +} diff --git a/desktop/src/styles.css b/desktop/src/styles.css new file mode 100644 index 0000000..9daeffd --- /dev/null +++ b/desktop/src/styles.css @@ -0,0 +1 @@ +:root{font-family:Inter,system-ui;background:#000;color:#fff}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:#000 url('./assets/connector-background.jpg') center/cover no-repeat}main{max-width:720px;min-height:100vh;padding:88px 10vw;text-shadow:0 2px 18px #000}.eyebrow{color:#e50914;font-weight:800;letter-spacing:.16em;text-transform:uppercase;font-size:12px}h1{font-size:clamp(48px,8vw,82px);line-height:.92;letter-spacing:-.07em;margin:18px 0}.lead{color:#c9c9c9;font-size:18px;max-width:520px}form{display:grid;gap:16px;margin-top:42px;max-width:520px}label{display:grid;gap:7px;font-weight:700}.folder{display:flex;gap:8px}.folder input{min-width:0;flex:1}input{background:rgb(12 12 12 / .86);border:1px solid #555;border-radius:9px;color:#fff;padding:14px;font:inherit}button{background:#e50914;border:0;border-radius:9px;color:#fff;font:700 16px inherit;padding:15px;cursor:pointer}button:hover{background:#f6121d}#browse-folder,.secondary{background:rgb(32 32 32 / .9);white-space:nowrap}.secondary{display:block;margin-top:12px;width:100%;border:1px solid #666}#status{color:#d0d0d0;margin-top:18px}@media(max-width:640px){body{background-position:62% center}main{padding:56px 24px}.folder{display:grid}.folder input{width:100%}}