From 86ed1bbb1eaf654b188e18bce189db0266583da0 Mon Sep 17 00:00:00 2001 From: Philip Peterson <1326208+philip-peterson@users.noreply.github.com> Date: Mon, 24 Aug 2026 20:49:04 -0800 Subject: [PATCH] desktop app --- desktop/README.md | 112 + desktop/scripts/build.sh | 44 + desktop/scripts/gen_icon.go | 103 + desktop/src-tauri/.gitignore | 4 + desktop/src-tauri/Cargo.lock | 4709 +++++++++++++++++ desktop/src-tauri/Cargo.toml | 27 + desktop/src-tauri/build.rs | 3 + desktop/src-tauri/capabilities/default.json | 7 + desktop/src-tauri/icons/128x128.png | Bin 0 -> 5198 bytes desktop/src-tauri/icons/128x128@2x.png | Bin 0 -> 10152 bytes desktop/src-tauri/icons/32x32.png | Bin 0 -> 1342 bytes desktop/src-tauri/icons/64x64.png | Bin 0 -> 2708 bytes desktop/src-tauri/icons/Square107x107Logo.png | Bin 0 -> 4416 bytes desktop/src-tauri/icons/Square142x142Logo.png | Bin 0 -> 5711 bytes desktop/src-tauri/icons/Square150x150Logo.png | Bin 0 -> 5869 bytes desktop/src-tauri/icons/Square284x284Logo.png | Bin 0 -> 10951 bytes desktop/src-tauri/icons/Square30x30Logo.png | Bin 0 -> 1263 bytes desktop/src-tauri/icons/Square310x310Logo.png | Bin 0 -> 11887 bytes desktop/src-tauri/icons/Square44x44Logo.png | Bin 0 -> 1820 bytes desktop/src-tauri/icons/Square71x71Logo.png | Bin 0 -> 3040 bytes desktop/src-tauri/icons/Square89x89Logo.png | Bin 0 -> 3737 bytes desktop/src-tauri/icons/StoreLogo.png | Bin 0 -> 2121 bytes desktop/src-tauri/icons/icon.icns | Bin 0 -> 91113 bytes desktop/src-tauri/icons/icon.ico | Bin 0 -> 18921 bytes desktop/src-tauri/icons/icon.png | Bin 0 -> 20101 bytes desktop/src-tauri/src/lib.rs | 55 + desktop/src-tauri/src/main.rs | 5 + desktop/src-tauri/src/server.rs | 227 + desktop/src-tauri/tauri.conf.json | 40 + desktop/src/index.html | 85 + 30 files changed, 5421 insertions(+) create mode 100644 desktop/README.md create mode 100755 desktop/scripts/build.sh create mode 100644 desktop/scripts/gen_icon.go 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/64x64.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/src/server.rs create mode 100644 desktop/src-tauri/tauri.conf.json create mode 100644 desktop/src/index.html diff --git a/desktop/README.md b/desktop/README.md new file mode 100644 index 00000000..690e1440 --- /dev/null +++ b/desktop/README.md @@ -0,0 +1,112 @@ +# Quintodrome Desktop + +A [Tauri](https://tauri.app) desktop wrapper that hosts [Navidrome](https://www.navidrome.org) +as its own web app. + +On launch the app: + +1. Checks whether a Navidrome server is already listening on `127.0.0.1:4533` + (via its `/ping` health endpoint). If so, it reuses it as-is. +2. Otherwise it spawns the bundled `navidrome` binary as a **separate sidecar + process**, pointed at the OS app-data/music directories, and waits for it to + become ready. +3. Loads the Navidrome UI in the webview. +4. On exit, sends `SIGTERM` to the spawned server so it shuts down gracefully + (falls back to a hard kill after 3s). + +## How to launch + +From the repo root: + +```sh +# 0. one-time: make sure Node >= 24 is active (already pinned in .nvmrc) +nodenv local 24.15.0 # or `nvm use` / ensure `node --version` is v24+ + +# 1. build the Navidrome server + stage it as the sidecar +./desktop/scripts/build.sh --skip-tauri + +# 2. launch the app +cd desktop/src-tauri && cargo run +``` + +A window opens on the splash screen, the app starts Navidrome (or reuses a +running one), then loads the UI. Navidrome is reachable at + for the first-run admin setup. + +To build a standalone `.app` instead: + +```sh +./desktop/scripts/build.sh +# → desktop/src-tauri/target/release/bundle/macos/Quintodrome.app +``` + +## Layout + +``` +desktop/ +├── src/ # Splash screen shown while Navidrome boots +├── src-tauri/ +│ ├── src/ # Rust: sidecar spawn, health-check, lifecycle +│ ├── binaries/ # navidrome- sidecar (built, not committed) +│ ├── icons/ # App icons +│ ├── tauri.conf.json +│ └── Cargo.toml +└── scripts/ + ├── build.sh # Build navidrome + stage sidecar + tauri build + └── gen_icon.go # Regenerates the source icon (optional) +``` + +## Prerequisites + +- Rust (stable) with the `aarch64-apple-darwin` / `x86_64-apple-darwin` (or + matching host) target. +- Node.js >= 24 (the repo already pins this in `.nvmrc`; via `nodenv` you can + run `nodenv local 24.15.0`). +- Go >= 1.26 (for building the Navidrome binary). + +## Build + +```sh +./desktop/scripts/build.sh +``` + +This builds the Navidrome server (`make build`), stages it under +`src-tauri/binaries/navidrome-` (with the executable bit set), +then runs `npx tauri build`. The packaged app lands in +`desktop/src-tauri/target/release/bundle/`. + +To build the sidecar without running the full Tauri bundle: + +```sh +./desktop/scripts/build.sh --skip-tauri +``` + +## Run (development) + +```sh +# 1. build + stage the sidecar binary +./desktop/scripts/build.sh --skip-tauri + +# 2. run the app +cd desktop/src-tauri && cargo run +``` + +The Rust `build.rs` copies the staged sidecar next to the dev binary +(`target/debug/navidrome`) automatically, so plain `cargo run` works — no +`tauri dev` CLI needed. + +## Configuration + +Environment variables override the defaults: + +| Variable | Default | Purpose | +| --------------------------- | ------------------------ | ------------------------------- | +| `QUINTODROME_HOST` | `127.0.0.1` | Address the webview connects to | +| `QUINTODROME_PORT` | `4533` | Port for the Navidrome server | +| `QUINTODROME_MUSIC_FOLDER` | OS music dir (e.g. `~/Music`) | Where your music lives | + +The data folder (DB, cache) is always the OS app-data directory +(e.g. `~/Library/Application Support/com.quintodrome.desktop` on macOS). + +> Note: if a Navidrome server is already running on the configured host/port, +> the app simply loads it and does **not** start a second instance. diff --git a/desktop/scripts/build.sh b/desktop/scripts/build.sh new file mode 100755 index 00000000..4514466c --- /dev/null +++ b/desktop/scripts/build.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +# Build the Navidrome sidecar binary and package the Quintodrome desktop app. +# +# Usage: ./desktop/scripts/build.sh [--skip-tauri] +# +# The script: +# 1. Builds the Navidrome server for the host platform (via `make build`). +# 2. Copies it into src-tauri/binaries/ under the target-triple name that +# tauri-plugin-shell expects for a sidecar (e.g. navidrome-aarch64-apple-darwin). +# 3. Builds the Tauri application (unless --skip-tauri is passed). +set -euo pipefail + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" +DESKTOP="$ROOT/desktop" +SRC_TAURI="$DESKTOP/src-tauri" + +SKIP_TAURI=false +if [[ "${1:-}" == "--skip-tauri" ]]; then + SKIP_TAURI=true +fi + +echo "==> Building Navidrome server binary..." +(cd "$ROOT" && make build) + +TRIPLE="$(rustc -vV | sed -n 's/^host: //p')" +BIN_NAME="navidrome-$TRIPLE" +case "$TRIPLE" in + *windows*) BIN_NAME="$BIN_NAME.exe" ;; +esac + +echo "==> Staging sidecar as binaries/$BIN_NAME" +mkdir -p "$SRC_TAURI/binaries" +cp "$ROOT/navidrome" "$SRC_TAURI/binaries/$BIN_NAME" +chmod +x "$SRC_TAURI/binaries/$BIN_NAME" + +if [[ "$SKIP_TAURI" == true ]]; then + echo "==> Skipping Tauri build (--skip-tauri)." + exit 0 +fi + +echo "==> Building Quintodrome Tauri app..." +(cd "$DESKTOP" && npx tauri build) + +echo "==> Done." diff --git a/desktop/scripts/gen_icon.go b/desktop/scripts/gen_icon.go new file mode 100644 index 00000000..897990a9 --- /dev/null +++ b/desktop/scripts/gen_icon.go @@ -0,0 +1,103 @@ +//go:build ignore + +// gen_icon generates a 1024x1024 source icon for the Quintodrome app. +// Run: go run desktop/scripts/gen_icon.go +package main + +import ( + "image" + "image/color" + "image/png" + "os" +) + +const size = 1024 +const ss = 4 // supersampling factor per axis + +func lerp(a, b, t float64) float64 { return a + (b-a)*t } + +type rgb struct{ r, g, b float64 } + +func mix(a, b rgb, t float64) rgb { + return rgb{lerp(a.r, b.r, t), lerp(a.g, b.g, t), lerp(a.b, b.b, t)} +} + +var ( + bgTop = rgb{58, 42, 94} + bgBottom = rgb{23, 21, 28} + circleTop = rgb{168, 85, 247} + circleBottom = rgb{124, 58, 237} + white = rgb{255, 255, 255} +) + +func inTriangle(px, py, ax, ay, bx, by, cx, cy float64) bool { + sign := func(x1, y1, x2, y2, x3, y3 float64) float64 { + return (x1-x3)*(y2-y3) - (x2-x3)*(y1-y3) + } + d1 := sign(px, py, ax, ay, bx, by) + d2 := sign(px, py, bx, by, cx, cy) + d3 := sign(px, py, cx, cy, ax, ay) + neg := d1 < 0 || d2 < 0 || d3 < 0 + pos := d1 > 0 || d2 > 0 || d3 > 0 + return !(neg && pos) +} + +func sample(x, y float64) rgb { + // background vertical gradient + c := mix(bgTop, bgBottom, y/size) + + // centered circle + cx, cy, cr := float64(size)/2, float64(size)/2, float64(size)*0.31 + dx, dy := x-cx, y-cy + if d := dx*dx + dy*dy; d <= cr*cr { + t := (y - (cy - cr)) / (2 * cr) + circle := mix(circleTop, circleBottom, t) + c = circle + } + + // play triangle + tx := float64(size)*0.512 + ax, ay := tx-float64(size)*0.145, float64(size)*0.342 + bx, by := tx-float64(size)*0.145, float64(size)*0.658 + cxv, cyv := tx+float64(size)*0.165, float64(size)*0.5 + if inTriangle(x, y, ax, ay, bx, by, cxv, cyv) { + c = white + } + + return c +} + +func main() { + img := image.NewRGBA(image.Rect(0, 0, size, size)) + for y := 0; y < size; y++ { + for x := 0; x < size; x++ { + var acc rgb + for sy := 0; sy < ss; sy++ { + for sx := 0; sx < ss; sx++ { + fx := float64(x) + (float64(sx)+0.5)/ss + fy := float64(y) + (float64(sy)+0.5)/ss + s := sample(fx, fy) + acc.r += s.r + acc.g += s.g + acc.b += s.b + } + } + n := float64(ss * ss) + img.SetRGBA(x, y, color.RGBA{ + R: uint8(acc.r / n), + G: uint8(acc.g / n), + B: uint8(acc.b / n), + A: 255, + }) + } + } + + f, err := os.Create(os.Args[len(os.Args)-1]) + if err != nil { + panic(err) + } + defer f.Close() + if err := png.Encode(f, img); err != nil { + panic(err) + } +} diff --git a/desktop/src-tauri/.gitignore b/desktop/src-tauri/.gitignore new file mode 100644 index 00000000..07564a75 --- /dev/null +++ b/desktop/src-tauri/.gitignore @@ -0,0 +1,4 @@ +binaries/* +!binaries/.gitkeep +target/ +gen/ diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock new file mode 100644 index 00000000..465b2da4 --- /dev/null +++ b/desktop/src-tauri/Cargo.lock @@ -0,0 +1,4709 @@ +# 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 = "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 = "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.20", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" +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 = "cookie" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a373e3602691c3cdea496d2f0ee5935151e6168fe87739483c463db1b2f2f87" +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.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550" +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 = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror 2.0.20", +] + +[[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 = "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.4", +] + +[[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 = "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 = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[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 = "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.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" + +[[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.4", +] + +[[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.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-executor" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" + +[[package]] +name = "futures-macro" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "futures-sink" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +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 = "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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" +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.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" + +[[package]] +name = "icu_properties" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" + +[[package]] +name = "icu_provider" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" +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 = "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 = "jiff" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc" +dependencies = [ + "defmt", + "jiff-core", + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-link 0.2.1", +] + +[[package]] +name = "jiff-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09" +dependencies = [ + "defmt", +] + +[[package]] +name = "jiff-static" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204" +dependencies = [ + "jiff-core", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + +[[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.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" +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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d0a00925a9f930d679b6789b721e3a7f9ed110f41b86d2497caa780c3a070a" +dependencies = [ + "libc", +] + +[[package]] +name = "litemap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" + +[[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.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" + +[[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.20", + "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.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade3be4664bc1ef537ce133015f04c176b737815c2ba9fd60edf212d6e90dd55" +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 = "os_pipe" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[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_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 = "pkg-config" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" + +[[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 = "portable-atomic" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" + +[[package]] +name = "portable-atomic-util" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[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 = "quintodrome" +version = "0.1.0" +dependencies = [ + "libc", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-shell", + "thiserror 1.0.69", +] + +[[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 = "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.20", +] + +[[package]] +name = "ref-cast" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[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 = "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 = "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 = "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.4", +] + +[[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.4", +] + +[[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.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee78f1fbe43ac4a0e47aadb3dbd357b69eb0d3793e948624cd03dd2750ab1c0a" +dependencies = [ + "base64 0.22.1", + "bs58", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.0", + "jiff", + "schemars 0.9.0", + "schemars 1.2.2", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8705578779c2b6bd90d84d66eb2e206b708b1a4d7b9f17641b293545bf1c7e46" +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 = "shared_child" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e362d9935bc50f019969e2f9ecd66786612daae13e8f277be7bfb66e8bed3f7" +dependencies = [ + "libc", + "sigchld", + "windows-sys 0.60.2", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "sigchld" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1" +dependencies = [ + "libc", + "os_pipe", + "signal-hook", +] + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[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.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e45c444e496845d3f2a351146bff59aae4975b2280238df1dfaa0c7d1846f38e" +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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f" +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.20", + "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.20", + "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-shell" +version = "2.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8457dbf9e2bab1edd8df22bb2c20857a59a9868e79cb3eac5ed639eec4d0c73b" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars 0.8.22", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror 2.0.20", + "tokio", +] + +[[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.20", + "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.20", + "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 = "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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" +dependencies = [ + "thiserror-impl 2.0.20", +] + +[[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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" +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-core", +] + +[[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.20", + "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 = "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 = "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.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f053576934f05a761a402421fbbe3d425d9366f75f978806a037b3ca481abecc" +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.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.119", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" +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 = "web-sys" +version = "0.3.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web_atoms" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba8b815c1b593dc0baf78dd0f4fc8fdb2de53198fb1163738093e9a311c33fb3" +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.20", + "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.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[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 0.52.6", + "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-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[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_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[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_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[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_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[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_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[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 = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" + +[[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.20", + "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 = "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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml new file mode 100644 index 00000000..5121dc25 --- /dev/null +++ b/desktop/src-tauri/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "quintodrome" +version = "0.1.0" +description = "Desktop wrapper that hosts Navidrome" +authors = ["Quintodrome"] +edition = "2021" + +[lib] +name = "quintodrome_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = [] } +tauri-plugin-shell = "2" +serde_json = "1" +thiserror = "1" + +[target.'cfg(unix)'.dependencies] +libc = "0.2" + +[features] +# This feature is used for production builds or when `devPath` points to the +# filesystem and the built-in dev server is disabled. +custom-protocol = ["tauri/custom-protocol"] diff --git a/desktop/src-tauri/build.rs b/desktop/src-tauri/build.rs new file mode 100644 index 00000000..d860e1e6 --- /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 00000000..e409d066 --- /dev/null +++ b/desktop/src-tauri/capabilities/default.json @@ -0,0 +1,7 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Default capability for the Quintodrome desktop window", + "windows": ["main"], + "permissions": ["core:default"] +} diff --git a/desktop/src-tauri/icons/128x128.png b/desktop/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..6d32d38f1fd1e841f3077dbb7cc66e5fbcfe359d GIT binary patch literal 5198 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 IM6N<$f+4QJBLDyZ 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..80d6418983a78be1000706efbaea32fad77b8bba GIT binary patch literal 10152 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 literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/32x32.png b/desktop/src-tauri/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..db8624a1337d774029f2796363b3ce57e2d54369 GIT binary patch literal 1342 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 B+4cYc literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/Square150x150Logo.png b/desktop/src-tauri/icons/Square150x150Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..521eece291594f786782b0130497e8b82e7269cf GIT binary patch literal 5869 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 D6z(M5 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..167f1fd0d6c74f72759f9773f73b87b5e57ea575 GIT binary patch literal 10951 zcmY+KbyOTd)2|`HgA;6#AOQlwb#ZrC+%19Nw)o-+!3l1`-Gc>!6JW96?z*_U>)qsi zzwh4r$DY&MQ}wHw?lavp)lZlzNEQnNfPsL3fF&;{rH+7rNdEVSh63*)ym+;WfWQcc+01uEHZBWP1`IAmnSpTe$!2`WO746crRM@cDnt|0em*=wE|9 z5)t9Vf&%*jKAeBu|E2#|@jveWlOp7=)8DY|2(0jy)PHXDxRd1Sn0gkBi1@vyU01p* z5zj0?X12~K5&tpXNTjj_^U>F3XXI?e(~oikT`Z7**NH*;+<0ii4>;d zo5FhzK-lg|jnb`E)0$eLDSxGZW&4}W?S$LygvH*I=gRXMn!DoA_^0P!bh6J{ZJ$Sw z3-PTJ^bEt@Gm#|%3*O?3Rm%maYYR{5MrsnLDY%U>Y7V@y&BaRiHmMFR&4Ij?=HMC* zz;g@itd&6nl^mdH^|7k{PR}#6j``W`*Pn1#+%_uddyBot;;PQ(f57IhQ8+8xxF&Y# zQKh8lUuXS&TS^-~(Cz#9>oV;4_OEpj!kLk1_)q0h0qcj{JRD#3<7#f#nN#tzdR|OO zp%Wz+hlg_vrZ`FUhXpdxe2A6{$7Fb2Dra!{Y;S|a6&Po~e;j9yw>RLSW_bj3`-C&G zJ4pQm(d?EBl=G|TUZYh@kdjDz<{S5e06+Ii$*jzh+rL)ej}&^#X)QmTdv)<5HP%?^ zu*8!YXwSq-!%Qe%lCODt_F>AhM1V{38DLJ16E==^HG9-%SK1^>=r5N`6IN)$AD*gK zBj+E578|PSar8EWWKmWY)qO1N%e7_<3co^JTb_iKey0!B$<&Np>&Fg&p}43qa0Znz zkuI@sZ^kB1nVY3GW^39=w#FvO`88KOGJS#LQSJ@*Ln|}K5t&Y4X(~jy|JX1r&Q9mM zRHzcDjD}v82QY^FYLrS=Sat{ej6J{792SLhkn>w2`RVa{%IGnLgXv3L^3`xJ&O)-- zPnUV2g9r1QwN+05c31u=zstF$S^!XX(teJ((cQEDfC_q{BnsWOvu+)TpcDwHcZ`C~YQAU@u?5Ia)=W zWl+y#ErUsa>FolpZ2=ut{n%MyGq+p#&w4f7*s;9bQa7^VnRfT*SW7x6zWFI*l@49W zbX~=amE}m*G^J3sQ|N~R2#Ycbty!P zRjI8<+BXxYE;nW#Pnfboj-y+{S!Jg`cD3K`0%mY2(XdZ`yK(XBSXoRl=cT2-$(6>c zcQ#T=m8P#8Q`($l7{uj>_B8)9g~}+ zVUXv#4ctvi;;C);m`M3*TS2dU6-$GgYq?mKDR(_xUA}dsBD3D=aCdtbEz7m9BuPs0 z1Oi_!Vu|_)FRcV6?fX1k4Hjgr_1001a-3)=8Vz0^NB7&(#YUoyTpi8q4#kg*_YI2h z%y;{+t^*(UForK*iM;4&)EB{8apEfQb71_gP^SN;fUHR5Pq!0~VMN>*pG?8x8TeqUe^_Dqn}qP@<4$G3e8Oo1waFAixw5j7DPMjQ4UiD5%ZDO`VIjuxi5+wHH*tFOfDI!%Rbw6B7|Tk`tnxZrps<3UrL0 z3C7yDA8`PX7!YpIvEw(jo|_dbP1VI53wP4@F3(kp_uB*FA-rKFlJE?WC-*$WFI zGEQ9GyBeZ{tMc5*1nKIV4UPwV3|TPl{d=39-iF7QW5fCA!=1S4??qPoKU5Yb7ZwnW zzvOz3sVFh(lZbay2HkMSA0JEULhxO)9bY|O{F&LgS*5&k-zzl_MnLMFVNe}+0Bf9g zx{lP2aE?s?rl@?I?yQrf1obLbJTGtf8vVArZOD*8KdFGfm2#Yww(_-#)P}+fy=$cr z3#+b`%&o&_=PyfT1XD~ahp{EXrAgX1$!x#pC3mdprKT9myh%B?oJ>vc%(^boS(oA+ zg;Yvqb5=+O`N86Z@RlhcNLn|@y4 zE#e#3wQeqCX}kF6^VQdu+q{+;%i zvkxBC)`waKx-@~^1^dwljd7|am4I;AIeDB0S^r_f*!wHkfxSCZ}f8QqFshAxd)4b!1u z`dfBHS+exc>rUrv@wNIwg)jkmaqK)!K-a2@KUZ6286Pwo z2y(?>5*QM4^rCb81~GCJQ?L0dKmh>~cxf_SlG3n758tY^N^jq$KOLs{_wzqQ0`G!%-k}D*f}+Dv5IRzT&WU$B!&fWYPsR7#jv=!MfBnD` z4bgQXg1((#Tyzjys2Ku#W!r4#bXJqfErRKpCsBZZNJ z1%?4KdLU#|CsEZD!j-3Lo|w{KPQX2J3VM4Bi;EBMSR9*@T`r6X$zo8mBL?M?8u_7w zutC_D^4g<8mxFC?tBaRZ1x+8EOfr4bt|n=knjdTCp`Sf@+Z$4aQ@EfMuo!S(y8&i^ zORU}#0OkX^BX-U8?~@THW)~5a1=23!VWTIr_rC~m8N(PiNcGp*&id0%r(sN)cG7M( zhy(iumIb~wl#mvP>K^g7j8laGLOS3JqGcSgxsf7W^qbEB zm|W3&N-qz1CN52W_4zVcFub#~mrljU4j-Y^usCpknBNIyd`Ot4f_jOFv8IRUn=dPC zCAhj>g)wyfII~OwxRlQYJ5WZLHc>gw@IL-lLfYbsHUK3bSTMOrktHY@RM3CGw|q87 zGNfm&RGgyA{l5 zT1U4%cBw(R_Pa!UTeF`Qml}^)J{QpOBaQY!ZoH#Dy!LkPMaC>t_Nq{PEWu^}^9f|? zEl;8WwA$WCG%srLV>lpelrlLDhULK@@QxV1okgE3%m_Tz5O6~1S6uv5CO9fLX9(0{ zFZN>FK;tj{Q?jS&l(vl1Fi2+%>B$wn*&O*244@pa)Q35C)ewTF9hocnAvw090xS=2 zch+j*gO$CdP|Boqwy={Qw`p&eo(qt8*fzE&dZC?IhZcbn%2sTSx47`p3H1J0F2>v0 z)V{n`9W%~m?&KS&8R9iE`n$c7(#hZ7W23)Ckj3l5UjWKwULpV0k^)xZ_a*>SMJUh= z$^%OWM`J>O)O*Q*eA1H5+UzH66;v8J00&KmQc^+oxOIyJuwif~3o&pQH4gp*2u-IDLu}31` z3tPsf?FgsREC%gxcTPTw#>WEO5h+97sO)hPvD|t4M*b2?` zkQ1IVKY{7VY+lASeJ~YqHTbXth0tU&o_medkHa!Nk}c1 z&^GsCb|(I!!=EfKl?e39>-(Mbk$qSwLdSH*j}QWL%Y?5`>2e30*i{*Qz?KMUVd+|; zGS2wVp8H84Z|frM2VluaoRbVN&p%j1dciurYF5f&GklW{M~YFc7jGno^D+y@C*Gy1 zCQ-$u$K?_(5MImRk&b=s=svg}gK5OqX)()U-xBgXC|S|DF-uBIn`t$ky)R0X*ZagF zUH`Zbq}!)ktG+B=`iA>)Yc^4&f&Fhnm2V8iz^te5TG}m6U5#(YlMH|KRD-st*!Yr+ zJz-%pB(9ykdXV3lxi~%oAdV-Wm>^k|7S&!CFd^UGC9C(%3b49fV^$JYcDdr;2_F0(1qm6kB1h03*E+$Sv23w1*_}elD>O*HOl^$ zRGcGdYufL#vVi}hGNw0v-FO2uuO?RaYdlue3A6XRe%W2m`P=vxSg!Mc+dpACq_5~0 zxc7+u#U7VqP80h2R+Nd zMM1`0*BMM-hXL`TL*uMz7*az+SPee?lY)-1--PG9d#Jh1;BIqB9ByKa7wsVjaNm}E zb5F;KfQ)NkH65Ni=|9E3vw!mY;_if(b72#9P5UA!blch1*={o*>|!}m_9^7UR4(a7 z`!7RQn?Fn*c$LZ*&FRLaecvE^^Gf=UvQC!}?I(~@o2)*4unzELvIw4P10y+0a>N(D z!56Kl(v~k=q%FN|&_gN?g?w3#(}XpGWe2aupe{36UAxt7Dr4cYxltz<5)f9~kk$+x z2MpPuGMV-eK#F)<_V`=A<}DOU#+2y28~f;tGp!+WqRgHY`lZJrbgzSB_1c68G`h!9 zG@Px#XwfBNxbGn@vvKVUlLKP;bKqw}0R!!2e!u=$dz>WVKjI1nw>3_6^4CwE0TuU4 zoc0gKnODEH^P!*DPpu9xqb-%#O2HaHCPOSQylm17@GnN*uc>P_=@X0#7q$i8>x~U2 zA|d_5W=uFwP0>NydC#=+ua2Ye+a?9>CbM&_5GO64$R+^^tTGt>qHF}A5UzXntw9ksSMEIWg-dRt;BO5V=KyL z_8YStOg4@BcJB^qRba0>ueq`FaXGN5>>g?)Xq{9kqvcLW_Jo1O2=`SvZ&P|aI}P?zj?T9Fx9#2$U=NucXN30Sj%DSgTJD*1?6K?*3s zR2V**aAQZ`$Ub|rQt)bZ`2+@~1S$T5$wna!X^oew$AO6~ioqd_E)vL8y84p{#eR2}J!M79vXP z6kuab{>#<8FGQ4*jZEo;M_0td#j8k>=pAVxc{$ed(Zt=m9-v|+6B*#g@6i&(23sDE zn%$PDDwK;S%$01*15g5-qdU_gcjkgc;n=x8+4Tq7Q^tST9(1585NG1J5gtRCn?X(HiRc0*swvH(xs7RP)fab$&zWPyb80#MqO^@W+C$5x6XFNh%mO}a~`dM`U`+5F9E9O*_l zHu%VfY>uYiI0|h-pmsUZ+yGtFD-n8>Tf5@+S~yS_V~+wzhiBF1q+8YVXd6@7Bau%Gunpg#w!`#16H%LbZD6lPhJ0 z0xKg5vw7A{wiuxC8!Wl?560;teNdMLOGv~!o%i?hkiZ(K5e$r57Fqs5i&KCfoWAd< zge^aCB*QQ2MSb#(&9Nxy2OCjGqr0-w1T+8Ko~YSAbEe#6p5QMjZY+aFTT-WG{!9%R zIzGV*!Az)fXoe)yLJ=PJ>+Q4TTOLx^`!_)7`4JcY{F8>U$>Jua*Y*6}T8^!Qs%mm% znmCyvHC`GfoBBkg-GzOyE+n`}pQlCoVpvpRl;HWj@|)Gm?z0t?CVQ1LzFa)e;LHP7 zthL?#0hzsJ6$~Z@kzqNv<6 z8ZBM8Zw@g6Lb%SX;AMf1YCKq=H*&=Krd$H8xa4ukPu_s=Frhz;iR4+{halR;OBZ=r zE2Q2EY}JudC2~u!SBk>#7CV%VKPhrKyT?`5t*Je?rPj>BKWCK8G*C*p;Im}4d@%uH zTDWrLwn4HjJe_)-`URB6E0UbYBFc194bcmt?^cV{q)Luh_Qn4~!2xIxA3DG%I$$RB zwEb#wU%c3Ag_|*en~GTpSZ?oZ=532962Svhw8`@VB{Y~k`6GD~nxU{9v0IhMQ5xs-NzxTZjQx!39VjWdVr*catL$*|31k zUG@tz7HBWhuZaPk8>kdHb0?2ETgsy7L#py2C5wqpc^0^`-%wcdXe`l<>n69S*KRZ% zskqIE0bv%rPamv=f}R5{beV?W4>?8%tp#_eg@E2jxh@6oLq%A!uAn9wO0P8-^h{x>=C}q+;Qr5-hFtf8pn+i1TmpohJx*L zCG?9trLt>*t(wb~AFGR#kMTV-8EA^Md4%d4?yo!1Gm*`@Of@rej~xzF+4%?tqNS*E<={+h~zL?v$rdxpGMqaPva?ui1eUmgpfj>v6A_;fS$L}7?J#MxtmSik2V#ZySm!OhL|-< zn4ub2$(&8A4`X-?twt4PBV0u&TFt90-O^5G>LXrHtxMEg^C5fP8$^x%nfb)(1PQdr zUq!QgwTT(sSC0O7Y_W~-p-IK>Jz^^JG%4@x#=qOHA}P}sL=|%4Dpnm2(Ufma?w-hi zJe9xV|B4z-2!Ab5T+0sMXP`zQoq>pke!E1;_@_|^#@qS*jzmAO{cu22I_9+zyQNPZ zm(pJQ26_Uuzw-&M^H=)9d=7BgvcRC?zw3u!c1E+d>M=1Vaou}=)krf-ksoa+0OXJO z3g*#i97vmVBhI8Y2@yX`sIxYo%#+L?_OKYKE zANLtt4&lr>h4%-tPE3A5K{Ces;iNvMI`Tml*OgLMb_}`lRJn~efwBgTd#~^3#2xIb zUf#3DTs=*sWcbYNO!O<0N1Gt#Q1@aI35zxs<(Euk&Un&0E*B!na?3zT3BM#inR=Nq z!e1Dnda^0@Qb51Kh=Pio_a3481QAAWdM{?I6MJa^cmV4{pY2`p!w2N(o* zFDu{X&OJG2IzL8@%8>=2DL0gUWw0BB#<}sEI86&EN)X0p5n# zBt9YNd!X~tvV|1Tj4(BG-CVynPpJOqDCQMVB0gYLsePZBuPe}50|BDnKq!X_iOF+FGX)Zv(LQH|0M zd4tEf#VPrDU&$KwZr)Al+NW!8wq|HYs*-u11qBoLmfssk@jkz+eDCaAT|S2Nh`SFb~~!4-w9FFp3_qvQBxWY%ge)Ba&?KPA1u)du>|2fpK#C%-7(lm5it z6G!@sDES~A&J29`J9Ru_1uM2zpoXy52D;7h*HFhzHl`sRy zh;b+zl-o-v@{qQQI>YBDO68_Wm5*#FpfzmxzD;Jr3GMcyE=j0;_ckZpP?eE-W#O7> z3Am}@AZ^JpTN5=x%bf-ZTfDP$F{C@ND@&N{3m#S4lde`Ox{_&lm+sm^mamD}I@$|# zeBzH7K6dJwSjR5IzM>DrA8DRH@rhc7>8B1$CN6=7SKp%zeacErf*3oo*zZ1OI&
    ZmQ_Gg`MBd) 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 I#D{?Y101KkVgLXD 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..ad9d3737ec196da1fb4c9a52707f0bbd4d9b7b4c GIT binary patch literal 1263 zcmVfYk-mseTJ=pytkOy!`sz>U9}ol)l=`UF`XpXo z^i6E5#air(LPeq#P0~p-x6HZhyqmtSZT3F)u(%eb`i8Lqc~LBSpBrD03tnTMXUwAfFqNOv=)$e3v?ff++9gI z1uU~qatFGDZ~pp_)>*pG_b~3VsuhuR@XYjUI6Qt7?YK>mH=wLTShtFc`86UU4JaWl zp4xMQ6sh8i-`^ne!j{AiS9Sm5Ya?FA6XOe*yYDF0gF3Xf=+qs=5kV2RAwW&6Mi%3{ za?ihI8@6Q(z6NnP)@o!Idl={zCX4&=`1nhdzZOjFz%MJzEK>1Q6q+?74uBmXQbWG# zo&ydVVM}ZogRzp9+sxx|ab*{47n8&@W6x8S7U_K~fDC--)f`@Yw}?Y0sC|k^9Efe| z01=ynoNd^aF&K+6`*|EIqIDOO2GlCMF%FMMXsc9_;?NrXG)lRB?qn{ zc0k8T3MeCD!?ujUSd1w>p5b!(qve7c@uyI7#}Mf#iPj{!RBloj6cCD|3iBuPSUgk4 z?6Dl+S~ONEe>#bpZ5e~Hq5)BFmYO`#G$e}d2-U1lgeHkLjks5lZc@#LN}@cbaO6}T z$KM+gN2svLjw3gM!B~tbk!H9&lbKwO$Ygr?;=DTiY7z-=JB)0SXPxGm`&>fFM4IK= zG`URLovnBkAq@&k{i=ap)ZI(dhpq>azInso(zy^=F3WZTfjyYPF=5{?= z5iG_uX{&BIxo7~Q8U2mlniuidt`}%?;L7$S;t~~9(6YGjL4Y4V4$xS($TQ)H0^`PU zsvO<;-mqXWR>2)b|7J8`lSrbzQagtOm8a>>O^eLI*Kcp&r!PaST{j6~8leo6jB4zB zCvFM`V_BZRb4^{yA-v<=#Zhu7M{IMW3<3cdPH9>`sv6$FQN-;8zI1IEbRm0VLfixMDfF zqFcq~+WTV57{){co53BaR8RMN)0IV0*vSr~_oT;wrS?rdYPUWHBw+=nj%wi`4vs8hZ)u*S9H(^TlGd^z+Iks( zw9n(}`dO@Wt|IRYXGpieo}PTzZhzi#De9Jxl)Z5pgZoI*v1I$yH?STpQNJ#WGk!0p z+hFdU+;8vfbm_=5_cc4vokG0%Ga<{}EzbY+lz9tK(Uw=(e7u#>7~R`*_5c5$#7_Np Z`Umu4SIQY+XrKT9002ovPDHLkV1g-3Z36%R 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..70231c816139cf5f177d502dfc39a2c72f66f0e8 GIT binary patch literal 11887 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 literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/Square44x44Logo.png b/desktop/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3377c507ca95c6e71fb0143399716d05ce68abcf GIT binary patch literal 1820 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 D&?_>I literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/StoreLogo.png b/desktop/src-tauri/icons/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..aab2fb7ec8c0d365870d211cd91914a4009aa920 GIT binary patch literal 2121 zcmV-P2)6f$P)+V`3+_(I1Og;@1;I1$ z5)y=XAwohGNNtdSV(bdNR>)oB5nR|QAnVI#jv3F)Su3CY;zVdo^ z=6>hg^PTV9bH{#Q*Ap7wfFE1q8{r3RXodBNtUIz!t#1Rh^x8XO@XIh({EqSd8;fTH zYVFK7Ofpo#)ed~$rJ31aUHjgoVVNn|M!I$_*2t-wqZZ$4uz@CARY6rb$XGcHWHwewV!kTKzrPJ9-csGQ+6&75Lh#OLSw^NJa^788)(37FUUC@6NnT zQJO%`?hbROwI6G!|GUq$76}t2a^l{>Ut<5(KM5_$M3*R?lTkz5mE3S>0XnQ6+}{5% z%{!0t#p6hmbFJpC-HP{2i;{Z-_YCgC&qn@0Q793dBJ*v@Ro#Zt@x3e({Ep}3XiZ&t znkl|)fZh6(^Z_MBucy7jEEXFh>!tpjH zpcbgum9Zf^Ms?y5O2`sx#1cI?TCT>19VUKwFoS(BWwHH1;(bMnLp91Jq#Do77>vc3 zjJ;Heno%nz4^A(8%4kjA@F@ z4cAu zUUhK!qz@~-8U`+=PdT!w#k=18Su^2(7LiiSQUZN}{F_X~sKNDE?h=XDR7@ zn#fq82XF2~006+n7x+8)d~XK-@(dna0C{;EBNc|b3rx} zw6B74r6^IXw3a9^?U+VNx7H#0DlGXlH)AjsV=AqZb%;rOVx?V*NFL{k$8hXl&m(2z zmz)VH#tyX7uSX+tg6HJ98H2GHGpT(oouW|tL_5+R9KU{8R`Ex-JV~@uBFRjF)=vqw zP?n{ZCH*h6PvgXmBgmS)p%X})U{+85mSU{z4&HfRm3-2JuPN4PEMq_MvcUwoMERhZ!*>u<&Fy8k&?Cjo0dOtwj zT$QNegvP9JWJ*0btDr?E@?~!hrxxDEXV+h$KK&}47k4L8s1@xQ9p2UUaXdTY69rsS zm;Us2?8xuMXvc%p3~dvRi$pinB#)G+fa}$>m??dLGlh3?t@;&Ft23yxXA}j z#+IS)>9u=GWy-30^q_~6HQ4^>x+~~Oijk6PZAg7kYxeYN&7N2VN2NhSVUeM{(qC7x zI_0ma(*NxWa` literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/icons/icon.icns b/desktop/src-tauri/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..2e29f726ecea2dab679751aaf750952894e426c8 GIT binary patch literal 91113 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 z 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 literal 0 HcmV?d00001 diff --git a/desktop/src-tauri/src/lib.rs b/desktop/src-tauri/src/lib.rs new file mode 100644 index 00000000..b794cb5d --- /dev/null +++ b/desktop/src-tauri/src/lib.rs @@ -0,0 +1,55 @@ +mod server; + +use server::{Navidrome, ServerState}; +use tauri::{Manager, RunEvent}; + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .manage(ServerState::default()) + .setup(|app| { + let handle = app.handle().clone(); + + let host = std::env::var("QUINTODROME_HOST") + .unwrap_or_else(|_| server::DEFAULT_HOST.to_string()); + let port = std::env::var("QUINTODROME_PORT") + .ok() + .and_then(|p| p.parse::().ok()) + .unwrap_or(server::DEFAULT_PORT); + + let navidrome = Navidrome::new(host, port); + let url = navidrome.url.clone(); + + // Detect/start Navidrome off the main thread, then point the + // window at it once it is ready. + std::thread::spawn(move || { + if let Err(err) = server::ensure_running(&handle, &navidrome) { + eprintln!("quintodrome: {err}"); + let message = serde_json::to_string(&err.to_string()).unwrap(); + if let Some(window) = handle.get_webview_window("main") { + let _ = window.eval(&format!( + "document.getElementById('status').hidden = true;\ + var e = document.getElementById('error');\ + e.hidden = false;\ + e.textContent = 'Failed to start Navidrome: ' + {message};" + )); + } + return; + } + + if let Some(window) = handle.get_webview_window("main") { + let _ = window.eval(&format!("window.location.replace('{url}')")); + } + }); + + Ok(()) + }) + .build(tauri::generate_context!()) + .expect("error while building Quintodrome") + .run(|app, event| { + if let RunEvent::Exit = event { + server::shutdown(&app.state::()); + } + }); +} diff --git a/desktop/src-tauri/src/main.rs b/desktop/src-tauri/src/main.rs new file mode 100644 index 00000000..15c896cf --- /dev/null +++ b/desktop/src-tauri/src/main.rs @@ -0,0 +1,5 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + quintodrome_lib::run(); +} diff --git a/desktop/src-tauri/src/server.rs b/desktop/src-tauri/src/server.rs new file mode 100644 index 00000000..93ae8241 --- /dev/null +++ b/desktop/src-tauri/src/server.rs @@ -0,0 +1,227 @@ +use std::{ + io::{Read, Write}, + net::{TcpStream, ToSocketAddrs}, + sync::Mutex, + thread, + time::{Duration, Instant}, +}; + +use tauri::{AppHandle, Manager}; +use tauri_plugin_shell::{ + process::{CommandChild, CommandEvent}, + ShellExt, +}; +use thiserror::Error; + +pub const DEFAULT_HOST: &str = "127.0.0.1"; +pub const DEFAULT_PORT: u16 = 4533; + +const READY_TIMEOUT: Duration = Duration::from_secs(60); +const GRACEFUL_SHUTDOWN_TIMEOUT: Duration = Duration::from_secs(3); +const HEALTH_PATH: &str = "/ping"; + +#[derive(Debug, Error)] +pub enum ServerError { + #[error("could not resolve the application data folder")] + DataFolder, + #[error("could not resolve the music folder")] + MusicFolder, + #[error("failed to spawn navidrome: {0}")] + Spawn(#[from] tauri_plugin_shell::Error), + #[error("navidrome did not become ready within {READY_TIMEOUT:?}")] + Timeout, +} + +/// Holds the handle to the Navidrome child process so it can be shut down +/// gracefully when the app exits. It is `None` when Navidrome was already +/// running before the app started. +#[derive(Default)] +pub struct ServerState { + child: Mutex>, +} + +pub struct Navidrome { + pub host: String, + pub port: u16, + pub url: String, +} + +impl Navidrome { + pub fn new(host: String, port: u16) -> Self { + let url = format!("http://{host}:{port}"); + Self { host, port, url } + } +} + +/// Ensures a Navidrome server is reachable at `navidrome.url`. If one is +/// already listening, it is reused as-is. Otherwise a bundled Navidrome binary +/// is spawned as a separate child process and we wait for it to become ready. +pub fn ensure_running(handle: &AppHandle, navidrome: &Navidrome) -> Result<(), ServerError> { + if is_ready(&navidrome.host, navidrome.port) { + eprintln!( + "quintodrome: navidrome is already running at {}", + navidrome.url + ); + return Ok(()); + } + + eprintln!("quintodrome: navidrome is not running, starting it..."); + spawn(handle, navidrome)?; + wait_until_ready(&navidrome.host, navidrome.port)?; + eprintln!("quintodrome: navidrome is ready at {}", navidrome.url); + Ok(()) +} + +fn spawn(handle: &AppHandle, navidrome: &Navidrome) -> Result<(), ServerError> { + let data_folder = handle + .path() + .app_data_dir() + .map_err(|_| ServerError::DataFolder)?; + std::fs::create_dir_all(&data_folder).ok(); + + let music_folder = match std::env::var_os("QUINTODROME_MUSIC_FOLDER") { + Some(path) if !path.is_empty() => path.into(), + _ => handle + .path() + .audio_dir() + .map_err(|_| ServerError::MusicFolder)?, + }; + std::fs::create_dir_all(&music_folder).ok(); + + let data_folder = data_folder.to_string_lossy().to_string(); + let music_folder = music_folder.to_string_lossy().to_string(); + let port = navidrome.port.to_string(); + + let args = vec![ + "--nobanner".to_string(), + "--address".to_string(), + navidrome.host.clone(), + "--port".to_string(), + port, + "--datafolder".to_string(), + data_folder, + "--musicfolder".to_string(), + music_folder, + ]; + + let (mut rx, child) = handle + .shell() + .sidecar("navidrome")? + .args(args) + .spawn()?; + + let pid = child.pid(); + eprintln!("quintodrome: started navidrome (pid {pid})"); + + *handle.state::().child.lock().unwrap() = Some(child); + + // Forward Navidrome's output to our own stdout/stderr. + tauri::async_runtime::spawn(async move { + while let Some(event) = rx.recv().await { + match event { + CommandEvent::Stdout(line) => { + print!("{}", String::from_utf8_lossy(&line)); + } + CommandEvent::Stderr(line) => { + eprint!("{}", String::from_utf8_lossy(&line)); + } + CommandEvent::Terminated(payload) => { + eprintln!( + "quintodrome: navidrome exited with code {:?}", + payload.code + ); + } + _ => {} + } + } + }); + + Ok(()) +} + +fn wait_until_ready(host: &str, port: u16) -> Result<(), ServerError> { + let deadline = Instant::now() + READY_TIMEOUT; + while Instant::now() < deadline { + if is_ready(host, port) { + return Ok(()); + } + thread::sleep(Duration::from_millis(250)); + } + Err(ServerError::Timeout) +} + +/// Performs a lightweight HTTP health check against Navidrome's `/ping` +/// endpoint. A successful `200` response means the server is up and serving. +fn is_ready(host: &str, port: u16) -> bool { + let addr = match (host, port).to_socket_addrs().ok().and_then(|mut it| it.next()) { + Some(addr) => addr, + None => return false, + }; + + let mut stream = match TcpStream::connect_timeout(&addr, Duration::from_millis(500)) { + Ok(stream) => stream, + Err(_) => return false, + }; + + let _ = stream.set_read_timeout(Some(Duration::from_millis(500))); + let _ = stream.set_write_timeout(Some(Duration::from_millis(500))); + + let request = format!( + "GET {HEALTH_PATH} HTTP/1.1\r\nHost: {host}:{port}\r\nConnection: close\r\n\r\n" + ); + if stream.write_all(request.as_bytes()).is_err() { + return false; + } + + let mut response = Vec::new(); + let mut buffer = [0u8; 512]; + loop { + match stream.read(&mut buffer) { + Ok(0) => break, + Ok(n) => response.extend_from_slice(&buffer[..n]), + Err(_) => break, + } + } + + let response = String::from_utf8_lossy(&response); + response.starts_with("HTTP/1.1 200") || response.starts_with("HTTP/1.0 200") +} + +/// Sends SIGTERM to the spawned Navidrome process (so it can shut down +/// gracefully) and falls back to a hard kill if it does not exit in time. +pub fn shutdown(state: &ServerState) { + let child = match state.child.lock().unwrap().take() { + Some(child) => child, + None => return, + }; + + let pid = child.pid(); + eprintln!("quintodrome: stopping navidrome (pid {pid})"); + + #[cfg(unix)] + unsafe { + libc::kill(pid as libc::pid_t, libc::SIGTERM); + } + + let deadline = Instant::now() + GRACEFUL_SHUTDOWN_TIMEOUT; + while Instant::now() < deadline { + if !process_alive(pid) { + return; + } + thread::sleep(Duration::from_millis(100)); + } + + if let Err(err) = child.kill() { + eprintln!("quintodrome: failed to kill navidrome: {err}"); + } +} + +#[cfg(unix)] +fn process_alive(pid: u32) -> bool { + unsafe { libc::kill(pid as libc::pid_t, 0) == 0 } +} + +#[cfg(not(unix))] +fn process_alive(_pid: u32) -> bool { + true +} diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json new file mode 100644 index 00000000..ad1f46dd --- /dev/null +++ b/desktop/src-tauri/tauri.conf.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "productName": "Quintodrome", + "version": "0.1.0", + "identifier": "com.quintodrome.desktop", + "build": { + "frontendDist": "../src" + }, + "app": { + "windows": [ + { + "label": "main", + "title": "Quintodrome", + "width": 1280, + "height": 800, + "minWidth": 800, + "minHeight": 600, + "resizable": true, + "fullscreen": false, + "center": true, + "url": "index.html" + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "externalBin": ["binaries/navidrome"] + } +} diff --git a/desktop/src/index.html b/desktop/src/index.html new file mode 100644 index 00000000..aad75c81 --- /dev/null +++ b/desktop/src/index.html @@ -0,0 +1,85 @@ + + + + + + Quintodrome + + + +
    +

    Quintodrome

    +
    +

    Starting Navidrome…

    + +
    + + +